## π νμ¬ λ¬Έμ μ * νμ¬ λ‘κ·Έμμ λ²νΌ ν΄λ¦ μ λ³λμ νμΈ κ³Όμ μμ΄ μ¦μ λ‘κ·Έμμλ©λλ€. * μ€μ ν΄λ¦(μ€λμ)μΌλ‘ μΈν μκΈ°μΉ μμ λ‘κ·Έμμ λ°μ κ°λ₯μ±μ΄ μμΌλ©°, μ¬μ©μ κ²½ν(UX)μ΄ μ νλ©λλ€. * μ κ·Όμ± μΈ‘λ©΄μμλ μ€μν νκ΄΄μ μ‘μ μ λν λͺ μμ νμΈ λ¨κ³κ° νμν©λλ€. ## π οΈ ν΄κ²° λ°©μ / μ μ κΈ°λ₯ * `shadcn/ui`μ `AlertDialog` μ»΄ν¬λνΈλ₯Ό μ¬μ©ν΄ **βλ‘κ·Έμμ νμκ² μ΅λκΉ?β** νμΈ λͺ¨λ¬μ νμν©λλ€. * 문ꡬ(νκΈν): * Title: `λ‘κ·Έμμ νμκ² μ΅λκΉ?` * Description(μ ν): `λ‘κ·Έμμ μ νμ¬ μΈμ μ΄ μ’ λ£λ©λλ€.` * Cancel λ²νΌ: `μ·¨μ` * Action λ²νΌ: `λ‘κ·Έμμ` (destructive μ€νμΌ κΆμ₯) * λμ: * `AlertDialogTrigger`λ₯Ό κΈ°μ‘΄ **λ‘κ·Έμμ λ²νΌ**μ κ°μΈμ νΈλ¦¬κ±°λ‘ μ¬μ© * `AlertDialogAction` ν΄λ¦ μ κΈ°μ‘΄ λ‘κ·Έμμ λ‘μ§(μ: `logout()` λλ `signOut()` νΈμΆ) μ€ν * `AlertDialogCancel` ν΄λ¦ λλ `Esc`/μ€λ²λ μ΄ ν΄λ¦ μ λͺ¨λ¬ λ«ν * μ κ·Όμ±/UX: * ν¬μ»€μ€ νΈλ©, 첫 μμ μλ ν¬μ»€μ± νμΈ * ν€λ³΄λ μ‘°μ(Enter/Space/ESC) μ μ λμ κ²μ¦ * μ¬μ¬μ©/κ³ λν μ μ: * λμΌ ν¨ν΄μ νκ΄΄μ μ‘μ μ μ¬νμ© κ°λ₯νλλ‘ `ConfirmDialog` λνΌ λλ ν (`useConfirmDialog`)μΌλ‘ μΌλ°ν ## πββοΈ λ΄λΉμ * λ°±μλ: μ΄λ¦ * νλ‘ νΈμλ: @Chuseok22 * λμμΈ: μ΄λ¦
π νμ¬ λ¬Έμ μ
π οΈ ν΄κ²° λ°©μ / μ μ κΈ°λ₯
shadcn/uiμAlertDialogμ»΄ν¬λνΈλ₯Ό μ¬μ©ν΄ βλ‘κ·Έμμ νμκ² μ΅λκΉ?β νμΈ λͺ¨λ¬μ νμν©λλ€.문ꡬ(νκΈν):
λ‘κ·Έμμ νμκ² μ΅λκΉ?λ‘κ·Έμμ μ νμ¬ μΈμ μ΄ μ’ λ£λ©λλ€.μ·¨μλ‘κ·Έμμ(destructive μ€νμΌ κΆμ₯)λμ:
AlertDialogTriggerλ₯Ό κΈ°μ‘΄ λ‘κ·Έμμ λ²νΌμ κ°μΈμ νΈλ¦¬κ±°λ‘ μ¬μ©AlertDialogActionν΄λ¦ μ κΈ°μ‘΄ λ‘κ·Έμμ λ‘μ§(μ:logout()λλsignOut()νΈμΆ) μ€νAlertDialogCancelν΄λ¦ λλEsc/μ€λ²λ μ΄ ν΄λ¦ μ λͺ¨λ¬ λ«νμ κ·Όμ±/UX:
μ¬μ¬μ©/κ³ λν μ μ:
ConfirmDialogλνΌ λλ ν (useConfirmDialog)μΌλ‘ μΌλ°νπββοΈ λ΄λΉμ