μ΄μ©λ€λ³΄λ NEXTSTEP 리μ‘νΈ κ°μμ μλ λ―Έμ μμ λμμΈ μμ€ν μ κ°λ°νλ μ¬μ΄λ νλ‘μ νΈμ μ°Έμ¬νκ² λμλ€. λͺ©μ μ κ΅μ‘μλ€μ΄ 리μ‘νΈ νμ΅μλ§ μ§μ€ν μ μλλ‘ μ»΄ν¬λνΈλ₯Ό κ°μ Έλ€ μ¨ UI ꡬνλ₯Ό νΈλ¦¬νκ² νλλ‘ ν΄μ£ΌκΈ° μν¨μ΄μλ€!
λμμΈμμ€ν
μ΄ μ μ©λλ λ―Έμ
μ νμ΄λ¨ΌμΈ
, μ₯λ°κ΅¬λ
λ κ°μ§λ‘, λλ μ₯λ°κ΅¬λ λ―Έμ
μμ κ°λ°νμ μ§μ, μ₯λ°κ΅¬λ λ―Έμ
μ μ¬μ©λ λ²μ©μ μΈ Button
μ»΄ν¬λνΈλ₯Ό κ°λ°νκ² λμλ€!
λμμΈμμ€ν μ κΌ ν λ² λ§λ€μ΄λ³΄κ³ , μ μ©ν΄λ³΄κ³ μΆμ λ‘λ§μ κ°κ³ μμμ§λ§, λ§μ βλͺ¨λ λ²νΌβμμ μ¬μ©ν μ μλ λ²μ©μ μΈ κ³΅ν΅ λ²νΌ μ»΄ν¬λνΈλ₯Ό λ§λ€μ΄μΌνλ€κ³ μκ°νλ μ’ λΆλ΄κ°μ΄ μμλ€. μ΄μ° λλ λ΄κ° μ λλ‘λ μ»΄ν¬λνΈλ₯Ό μ 곡νμ§ λͺ»νλ©΄ λλ΄κ³ κ°μ λ£λ λΆλ€μ΄ λΆνΈμ κ²ͺκ² λλ μ μ΄λκΉ(β¦)
κ·Έλμ, λλ λλ¦ κΆμμλ μ νμ Human Interface Guidelines(μ΄ν HIG)κ³Ό, λ€λ₯Έ λμμΈμμ€ν λ€μ λ²νΌ μ»΄ν¬λνΈλ₯Ό 보며 μ²μ²ν νμ μ‘μκ°κΈ° μμνλ€.
HIGμμλ μ΄λ κ² λ§νλ€.
λ€μ¬λ€λ₯νκ³ κ³ λλ‘ μ¬μ©μ μ μν μ μλ λ²νΌμ μ¬λλ€μκ² μ±μμ μμ μ μννλ κ°λ¨νκ³ μΉμν λ°©λ²μ μ 곡ν©λλ€.Β μΌλ°μ μΌλ‘ λ²νΌμ κΈ°λ₯μ λͺ ννκ² μ λ¬νκΈ° μν΄ μΈ κ°μ§ μμ±μ κ²°ν©ν©λλ€.
- μ€νμΌ.Β ν¬κΈ°, μμ λ° λͺ¨μμ κΈ°λ°μΌλ‘ νλ μκ°μ μ€νμΌ.
- μ½ν μΈ .Β λͺ©μ μ λ¬μ μν΄ λ²νΌμ΄ νμνλ κΈ°νΈ(μΈν°νμ΄μ€ μμ΄μ½), ν μ€νΈ λ μ΄λΈ λλ λ λ€.
- μν .Β λ²νΌμ μλ―Έλ‘ μ μλ―Έλ₯Ό μλ³νκ³ λͺ¨μμ μν₯μ μ€ μ μλ μμ€ν μ μ μν .
μ΄λ₯Ό νμ₯μΈ μ½€νΌκ° λ§λ€μ΄μ¨ figmaλ₯Ό 보며 λ§λ€μ΄λ³΄κΈ° μμνλ€. μλμμ μ€νμΌ, μ½ν μΈ , μν μ κ²°ν©ν΄ λ²νΌμ λ§λ€μ΄κ°λ κ³Όμ μ νλ νλ μ΄ν΄λ³΄λλ‘ νμ!
HIGμμλ iOS, iPadOSμμ μ¬μ©λλ λ²νΌμ μ§ν©μ μ μν΄μ€λ€. 4κ°μ§μ λ²νΌ μ€νμΌκ³Ό 3κ°μ§μ μ¬μ΄μ¦λ‘ μ΄ 12κ°μ§μ λ²νΌμ΄ μ‘΄μ¬νλ€.
Filled μ€νμΌμ β보기μμ κ°μ₯ κ°λ₯μ±μ΄ λμ μμ βμ νμνλ λ²νΌμ μ¬μ©λλ€. λ§μ΄ μ’ μ΄λ €μμ μμλ₯Ό 보μ¬μ£Όμλ©΄ μλμ κ°μ μν©μ μ£Όλ‘ μ΄μΌκΈ° νλ€. κ·Έλμ μ’μ UXλ₯Ό μν΄μ Filled λ²νΌμ λ¨λ°νμ§ λ§λΌλ μ΄μΌκΈ°λ ν¨κ» μ°μ¬μλ€.
λλ variants
propsλ₯Ό μ 곡νμ¬ Filled(Primary), Gray(Secondary), Plain μ΄λ κ² μΈ κ°μ§ μ€νμΌμ μ§μνκΈ°λ‘ νλ€. Tinted μ€νμΌμ figmaμλ μμκ³ , μΆνμλ μ΄ μκ·λͺ¨ λμμΈμμ€ν
μμ μ¬μ©λ μΌμ μμ΄ λ³΄μλ€.
ν¬κΈ°κ° μλ μ€νμΌμ μ¬μ©νμ¬ μ¬λ¬ μ΅μ μ€μμ μ νΈνλ μ νμ μκ°μ μΌλ‘ ꡬλ³νμμμ€.
λ₯Ό λ§μ‘±νκΈ°μλ Secondary, PlainμΌλ‘ μΆ©λΆν κ² κ°μλ€.
λ€μμΌλ‘ μ¬μ΄μ¦λ‘ λμ΄κ°μ, widthλ κ°λ μ±μ°λλ‘ ν΄ μμ μ»΄ν¬λνΈμ μ¬μ΄μ¦μ μν₯μ λ°λλ‘ μ‘°μ νλ€. figmaμ λ²νΌλ€μ λͺ¨λ μ΄ν΄λ³΄κ³ heightλ₯Ό κΈ°μ€μΌλ‘ Large(48px), Medium(38px), Small(28px) μΈ κ°μ§ μ¬μ΄μ¦λ₯Ό μ 곡νλ€. (HIGμμλ λ²νΌμ μ¬μ΄μ¦λ μ΅μ 44x44λ₯Ό κΆμ₯νμ§λ§β¦ μ΄λ―Έ figmaκ° λμ¨ μν©μ΄λΌ μμ μμ²μ λλ¦¬κΈ°κ° μ’ κ·Έλ¬λ€.)
export declare type ButtonVariant = keyof typeof ButtonStyles.Type;
export declare type ButtonSize = keyof typeof ButtonPadding;
// ButtonVariant = 'Primary' | 'Secondary' | 'Plain'
// ButtonSize = 'Large' | 'Medium' | 'Small'
μ½ν μΈ μμ HIGκ° μ€μνκ² μκ°νλ μΈ κ°μ§λ μλμ κ°μλ€.
μ¬λλ€μ΄ λ²νΌμ κΈ°λ₯μ μ¦μ μ΄ν΄ν μ μλλ‘ λμμ£Όλ λ²νΌ μ½ν μΈ λ₯Ό λ§λλλ€.
μ μ©ν μΈλΆ μ 보λ₯Ό μ 곡νλ κ²½μ°μλ§ λ μ΄λΈ μλμ μΆκ° ν μ€νΈλ₯Ό ν¬ν¨ν©λλ€.
μ¦μ μλ£λμ§ μλ μμ μ λν νΌλλ°±μ μ 곡ν΄μΌ ν λ νλ νμκΈ°λ₯Ό νμνλλ‘ λ²νΌμ ꡬμ±ν©λλ€.
λλ λͺ¨λ κ±Έ λ§μ‘±νκ³ μΆμ΄μ μ΄λ₯Ό μν props λ€ κ°μ§λ₯Ό μ 곡νλ€. prefixIconURL
, suffix
, childrun
, loading
μ΄ μ΄ λ€ κ°μ§μ΄λ€. μλμμ νλ νλκ° λ¬΄μ¨ μν μ νλμ§ μ΄ν΄λ³΄λλ‘ νμ.
λ²νΌμ κΈ°λ₯μ μ¬μ©μκ° μ¦μ μ΄ν΄νλλ‘ childrun
μ ν΅ν΄ λ²νΌ ν
μ€νΈλ₯Ό μμ μ»΄ν¬λνΈλ‘λΆν° λ°λ κ²μ κΈ°λ³ΈμΌλ‘ νλ, prefixIconURL
μ ν΅ν΄ λ²νΌμ λ§λ μΈν°νμ΄μ€ μμ΄μ½μ μ 곡ν μ μλλ‘ νλ€. μλ₯Ό λ€μ΄ μ΄λ° λ²νΌμ λμμΈμμ€ν
μ΄μ©μκ° νΈλ¦¬νκ² μ 곡ν μ μλ€.
μ₯λ°κ΅¬λ μμ΄μ½μ μ 곡νλ€λ©΄, μ¬μ©μκ° λ²νΌμ΄ μ₯λ°κ΅¬λ λ²νΌμ΄λΌλ κ²μ ν μ€νΈλ§ μ 곡νλ κ²λ³΄λ€ λ 빨리 μ΄ν΄νλλ°μ λμμ μ€ μ μμ κ²μ΄λ€!
μ₯λ°κ΅¬λ λ²νΌ κ°μ κ²½μ°, μ₯λ°κ΅¬λμ μνμ΄ λͺ κ°λ λ€μ΄μλ μ§μ λν μ 보λ₯Ό μ¬μ©μμκ² μ 곡νλ κ²μ΄ μ’ λ μ μ©ν μ μλ€. κ·Έλ¬ν κ°λ€μ suffix
λ‘ λ°μμ λ²νΌμμ 보μ¬μ£ΌκΈ°λ‘ νλ€.
μ₯λ°κ΅¬λμ μνμ΄ λ΄κ²Όλμ§, λͺκ°λ λ΄κ²¨μλμ§ κ°μ κ°λ¨ν μ 보λ μ₯λ°κ΅¬λ νμ΄μ§κΉμ§ μ΄λνμ§ μκ³ λ μνλͺ©λ‘ νμ΄μ§ λ±μμ μ¦μ νμΈν μ μλ€λ μ₯μ μ΄ μλ€.
λ¬Όλ‘ μνλ€λ©΄ μλμ κ°μ΄ prefixIconURL
κ³Ό ν¨κ» μ¬μ©ν μλ μλ€.
μκΉ λ§νλ―μ΄ μμμ loading
μ΄λΌλ propsλ λ²νΌ μ»΄ν¬λνΈκ° λ°λλ‘ κ΅¬νν΄μ€¬λλ° API μμ²λ± μ¦μ μλ£λμ§ μλ μμ
μΌ κ²½μ° boolean
κ°μ μ κ³΅ν΄ μλμ κ°μ΄ λ²νΌ μνλ₯Ό λ³κ²½ν μ μλ€.
λ²νΌμ cursor
κ°μ not-allowed
λ‘ λ³κ²½λκ³ , opacity
κ°λ μ‘°μ λμ΄ μ½κ° ν¬λͺ
ν΄μ§λ€. μΈν°νμ΄μ€ μμ΄μ½κ³Όλ λμμ ννν μ μκ³ , λ λ€ μ 곡νλ©΄ loading
μνκ° λλλ©΄ LoadingSpinner
κ° μΈν°νμ΄μ€ μμ΄μ½μΌλ‘ λ체λλ€.
HIGμμλ λ²νΌμ λ€ κ°μ§λ‘ μν μ ꡬλΆνλ€. μΈμ©νμλ©΄ μ΄λ¬νλ€.
κ·Έλ°λ° λλκ²λ, μ₯λ°κ΅¬λ λ―Έμ μμ μ¬μ©νλ λ²νΌμλ βμ·¨μβ, βνκ΄΄μ β μν μ λ²νΌμ΄ μμλ€. κ·Έλ¦¬κ³ λͺ¨λ βPrimaryβ λ²νΌμ βμ£Όμνβ μν μ λ²νΌμ΄μλ€. νμ§λ§ μ΄ κΈμ μ°λ©΄μ κΉ¨λ¬μ μ μ, μ₯λ°κ΅¬λ μνμ μμ ν λ λͺ¨λ¬μ λ²νΌμ μλ§ βνκ΄΄μ β λ²νΌκ³Ό βμ·¨μβ λ²νΌμΌλ‘ ꡬμ±λ κ² κ°μλ€.
1μ°¨ μ€νλ¦°νΈκ° λλκ³ , 2μ°¨ μ€νλ¦°νΈλ‘ λ€μ΄κ° λ, λΆμ‘±ν role
μ μ‘°κΈ λ κ³ λ―Όν΄μ μΆκ°ν΄λ³΄λ κ²μ λͺ©νλ‘ μ‘κ³ μ§ννκΈ°λ‘ νλ€!