@uniai-fe/uds-primitives 0.1.13 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/README.md +2 -2
  2. package/dist/styles.css +1112 -385
  3. package/package.json +12 -15
  4. package/src/components/button/index.scss +1 -0
  5. package/src/components/button/markup/{ButtonRounded.tsx → Rounded.tsx} +1 -1
  6. package/src/components/button/markup/{ButtonText.tsx → Text.tsx} +1 -1
  7. package/src/components/button/markup/index.ts +3 -3
  8. package/src/components/button/styles/button.scss +113 -229
  9. package/src/components/button/styles/round-button.scss +11 -14
  10. package/src/components/button/styles/text-button.scss +23 -23
  11. package/src/components/button/styles/variables.scss +145 -0
  12. package/src/components/dropdown/index.tsx +3 -3
  13. package/src/components/dropdown/markup/Template.tsx +57 -0
  14. package/src/components/dropdown/markup/foundation/Container.tsx +125 -0
  15. package/src/components/dropdown/markup/foundation/MenuItem.tsx +107 -0
  16. package/src/components/dropdown/markup/foundation/MenuList.tsx +27 -0
  17. package/src/components/dropdown/markup/foundation/Provider.tsx +46 -0
  18. package/src/components/dropdown/markup/foundation/Root.tsx +30 -0
  19. package/src/components/dropdown/markup/foundation/Trigger.tsx +34 -0
  20. package/src/components/dropdown/markup/foundation/index.tsx +25 -0
  21. package/src/components/dropdown/markup/index.tsx +8 -2
  22. package/src/components/dropdown/styles/dropdown.scss +166 -0
  23. package/src/components/dropdown/styles/index.scss +2 -0
  24. package/src/components/dropdown/styles/variables.scss +40 -0
  25. package/src/components/dropdown/types/base.ts +31 -0
  26. package/src/components/dropdown/types/index.ts +2 -4
  27. package/src/components/dropdown/types/props.ts +170 -0
  28. package/src/components/dropdown/utils/index.ts +1 -4
  29. package/src/components/dropdown/utils/refs.ts +20 -0
  30. package/src/components/form/index.scss +1 -0
  31. package/src/components/form/index.tsx +18 -2
  32. package/src/components/form/markup/form-field/Body.tsx +18 -0
  33. package/src/components/form/markup/form-field/Container.tsx +58 -0
  34. package/src/components/form/markup/form-field/Footer.tsx +21 -0
  35. package/src/components/form/markup/form-field/Header.tsx +39 -0
  36. package/src/components/form/markup/form-field/Template.tsx +56 -0
  37. package/src/components/form/markup/form-field/index.tsx +22 -0
  38. package/src/components/form/styles/form-field/layout.scss +67 -0
  39. package/src/components/form/styles/form-field/variables.scss +17 -0
  40. package/src/components/form/styles/index.scss +2 -0
  41. package/src/components/form/types/index.ts +1 -0
  42. package/src/components/form/types/props.ts +125 -0
  43. package/src/components/form/utils/form-field.ts +42 -0
  44. package/src/components/input/hooks/index.ts +1 -4
  45. package/src/components/input/hooks/useDigitField.ts +63 -0
  46. package/src/components/input/img/calendar/calendar.svg +7 -0
  47. package/src/components/input/img/calendar/chevron-down.svg +3 -0
  48. package/src/components/input/img/calendar/chevron-left.svg +3 -0
  49. package/src/components/input/img/calendar/chevron-right.svg +3 -0
  50. package/src/components/input/img/calendar/chevron-up.svg +3 -0
  51. package/src/components/input/index.tsx +2 -1
  52. package/src/components/input/markup/calendar/Base.tsx +329 -0
  53. package/src/components/input/markup/calendar/index.tsx +8 -0
  54. package/src/components/input/markup/{text/InputUtilityButton.tsx → foundation/Button.tsx} +5 -15
  55. package/src/components/input/markup/foundation/Input.tsx +245 -0
  56. package/src/components/input/markup/foundation/SideSlot.tsx +30 -0
  57. package/src/components/input/markup/foundation/StatusIcon.tsx +21 -0
  58. package/src/components/input/markup/foundation/Utility.tsx +103 -0
  59. package/src/components/input/markup/foundation/index.tsx +15 -0
  60. package/src/components/input/markup/index.tsx +11 -1
  61. package/src/components/input/markup/text/AuthCode.tsx +41 -59
  62. package/src/components/input/markup/text/Email.tsx +25 -115
  63. package/src/components/input/markup/text/Password.tsx +30 -39
  64. package/src/components/input/markup/text/Phone.tsx +35 -122
  65. package/src/components/input/markup/text/Search.tsx +17 -18
  66. package/src/components/input/markup/text/index.ts +15 -12
  67. package/src/components/input/styles/calendar.scss +110 -0
  68. package/src/components/input/styles/foundation.scss +345 -0
  69. package/src/components/input/styles/index.scss +4 -476
  70. package/src/components/input/styles/text.scss +89 -0
  71. package/src/components/input/styles/variables.scss +41 -0
  72. package/src/components/input/types/calendar.ts +208 -0
  73. package/src/components/input/types/foundation.ts +194 -0
  74. package/src/components/input/types/hooks.ts +43 -0
  75. package/src/components/input/types/index.ts +5 -87
  76. package/src/components/input/types/text.ts +203 -0
  77. package/src/components/input/types/verification.ts +23 -0
  78. package/src/components/input/utils/index.tsx +1 -0
  79. package/src/components/input/utils/verification.tsx +35 -0
  80. package/src/components/select/hooks/index.ts +43 -2
  81. package/src/components/select/img/chevron/primary/large.svg +3 -0
  82. package/src/components/select/img/chevron/primary/medium.svg +3 -0
  83. package/src/components/select/img/chevron/primary/small.svg +3 -0
  84. package/src/components/select/img/chevron/secondary/large.svg +3 -0
  85. package/src/components/select/img/chevron/secondary/medium.svg +3 -0
  86. package/src/components/select/img/chevron/secondary/small.svg +3 -0
  87. package/src/components/select/img/remove.svg +3 -0
  88. package/src/components/select/index.scss +2 -1
  89. package/src/components/select/index.tsx +5 -0
  90. package/src/components/select/markup/Default.tsx +154 -0
  91. package/src/components/select/markup/foundation/Base.tsx +90 -0
  92. package/src/components/select/markup/foundation/Container.tsx +30 -0
  93. package/src/components/select/markup/foundation/Icon.tsx +78 -0
  94. package/src/components/select/markup/foundation/Selected.tsx +34 -0
  95. package/src/components/select/markup/foundation/index.ts +2 -0
  96. package/src/components/select/markup/index.tsx +36 -2
  97. package/src/components/select/markup/multiple/Multiple.tsx +205 -0
  98. package/src/components/select/markup/multiple/SelectedChip.tsx +58 -0
  99. package/src/components/select/markup/multiple/index.ts +2 -0
  100. package/src/components/select/styles/select.scss +316 -0
  101. package/src/components/select/styles/variables.scss +91 -0
  102. package/src/components/select/types/base.ts +34 -0
  103. package/src/components/select/types/icon.ts +45 -0
  104. package/src/components/select/types/index.ts +6 -4
  105. package/src/components/select/types/multiple.ts +57 -0
  106. package/src/components/select/types/option.ts +43 -0
  107. package/src/components/select/types/props.ts +209 -0
  108. package/src/components/select/types/trigger.ts +196 -0
  109. package/src/index.scss +3 -2
  110. package/src/components/input/markup/text/Base.tsx +0 -454
  111. package/src/components/input/utils/index.ts +0 -60
  112. package/src/components/select/styles/index.scss +0 -0
  113. /package/src/components/button/markup/{ButtonDefault.tsx → Base.tsx} +0 -0
  114. /package/src/components/form/{Provider.tsx → markup/Provider.tsx} +0 -0
@@ -0,0 +1,209 @@
1
+ import type { ReactNode } from "react";
2
+
3
+ import type {
4
+ DropdownContainerProps,
5
+ DropdownMenuListProps,
6
+ DropdownPanelWidth,
7
+ DropdownRootProps,
8
+ DropdownTemplateItem,
9
+ } from "../../dropdown/types";
10
+ import type { SelectPriority, SelectSize, SelectState } from "./base";
11
+ import type {
12
+ SelectTriggerDefaultProps,
13
+ SelectTriggerMultipleProps,
14
+ } from "./trigger";
15
+
16
+ /**
17
+ * Select; 스타일 옵션
18
+ * @property {SelectPriority} [priority] priority scale
19
+ * @property {SelectSize} [size] size scale
20
+ * @property {SelectState} [state] visual state
21
+ * @property {boolean} [block] block 여부
22
+ */
23
+ export interface SelectStyleOptions {
24
+ /**
25
+ * priority scale
26
+ */
27
+ priority?: SelectPriority;
28
+ /**
29
+ * size scale
30
+ */
31
+ size?: SelectSize;
32
+ /**
33
+ * visual state
34
+ */
35
+ state?: SelectState;
36
+ /**
37
+ * block 여부
38
+ */
39
+ block?: boolean;
40
+ }
41
+
42
+ /**
43
+ * Select; 값 옵션
44
+ * @property {ReactNode} [displayLabel] 선택된 라벨
45
+ * @property {ReactNode} [placeholder] placeholder 텍스트
46
+ * @property {ReactNode[]} [tags] multi select 태그 리스트
47
+ * @property {boolean} [multiple] multi select 여부
48
+ */
49
+ export interface SelectValueOptions {
50
+ /**
51
+ * 선택된 라벨
52
+ */
53
+ displayLabel?: ReactNode;
54
+ /**
55
+ * placeholder 텍스트
56
+ */
57
+ placeholder?: ReactNode;
58
+ /**
59
+ * multi select 태그 리스트
60
+ */
61
+ tags?: ReactNode[];
62
+ /**
63
+ * multi select 여부
64
+ */
65
+ multiple?: boolean;
66
+ }
67
+
68
+ /**
69
+ * Select; 상태 옵션
70
+ * @property {boolean} [isOpen] dropdown open 여부
71
+ */
72
+ export interface SelectComponentState {
73
+ /**
74
+ * dropdown open 여부
75
+ */
76
+ isOpen?: boolean;
77
+ }
78
+
79
+ /**
80
+ * Select container props
81
+ * @property {string} [className] 사용자 정의 className
82
+ * @property {ReactNode} children trigger/Dropdown 등 내부 콘텐츠
83
+ * @property {boolean} [block] block 여부
84
+ */
85
+ export interface SelectContainerProps {
86
+ /**
87
+ * 사용자 정의 className
88
+ */
89
+ className?: string;
90
+ /**
91
+ * trigger/Dropdown 등 내부 콘텐츠
92
+ */
93
+ children: ReactNode;
94
+ /**
95
+ * block 여부
96
+ */
97
+ block?: boolean;
98
+ }
99
+
100
+ /**
101
+ * Select root props
102
+ * @typedef {SelectStyleOptions & SelectValueOptions & SelectComponentState} SelectProps
103
+ */
104
+ export type SelectProps = SelectStyleOptions &
105
+ SelectValueOptions &
106
+ SelectComponentState;
107
+
108
+ /**
109
+ * Select dropdown option; Dropdown.Template item 계약을 그대로 따른다.
110
+ * @extends DropdownTemplateItem
111
+ */
112
+ export interface SelectDropdownOption extends DropdownTemplateItem {}
113
+
114
+ /**
115
+ * Select dropdown 옵션 구성 props
116
+ * @property {SelectDropdownOption[]} [options] dropdown option 리스트
117
+ * @property {string[]} [selectedOptionIds] 선택된 option id 리스트
118
+ * @property {(option: SelectDropdownOption) => void} [onOptionSelect] option 선택 콜백
119
+ * @property {SelectSize} [dropdownSize] dropdown surface size 스케일
120
+ * @property {DropdownPanelWidth} [dropdownWidth="match"] dropdown panel width 옵션
121
+ * @property {DropdownRootProps} [dropdownRootProps] Dropdown.Root 전달 props(제어 props 제외)
122
+ * @property {DropdownContainerProps} [dropdownContainerProps] Dropdown.Container 전달 props(children/size 제외)
123
+ * @property {DropdownMenuListProps} [dropdownMenuListProps] Dropdown.Menu.List 전달 props
124
+ */
125
+ export interface SelectDropdownConfigProps {
126
+ /**
127
+ * dropdown option 리스트
128
+ */
129
+ options?: SelectDropdownOption[];
130
+ /**
131
+ * 선택된 option id 리스트
132
+ */
133
+ selectedOptionIds?: string[];
134
+ /**
135
+ * option 선택 콜백
136
+ */
137
+ onOptionSelect?: (option: SelectDropdownOption) => void;
138
+ /**
139
+ * dropdown surface size 스케일
140
+ */
141
+ dropdownSize?: SelectSize;
142
+ /**
143
+ * dropdown panel width 옵션
144
+ */
145
+ dropdownWidth?: DropdownPanelWidth;
146
+ /**
147
+ * Dropdown.Root 전달 props(제어 props 제외)
148
+ */
149
+ dropdownRootProps?: Omit<
150
+ DropdownRootProps,
151
+ "open" | "defaultOpen" | "onOpenChange"
152
+ >;
153
+ /**
154
+ * Dropdown.Container 전달 props(children/size 제외)
155
+ */
156
+ dropdownContainerProps?: Omit<
157
+ DropdownContainerProps,
158
+ "children" | "size" | "width"
159
+ >;
160
+ /**
161
+ * Dropdown.Menu.List 전달 props
162
+ */
163
+ dropdownMenuListProps?: DropdownMenuListProps;
164
+ }
165
+
166
+ /**
167
+ * Select dropdown 개방 제어 props
168
+ * @property {boolean} [open] dropdown open 상태
169
+ * @property {boolean} [defaultOpen] uncontrolled 초기 open 상태
170
+ * @property {(open: boolean) => void} [onOpenChange] open state change 콜백
171
+ */
172
+ export interface SelectDropdownBehaviorProps {
173
+ /**
174
+ * dropdown open 상태
175
+ */
176
+ open?: boolean;
177
+ /**
178
+ * uncontrolled 초기 open 상태
179
+ */
180
+ defaultOpen?: boolean;
181
+ /**
182
+ * open state change 콜백
183
+ */
184
+ onOpenChange?: (open: boolean) => void;
185
+ }
186
+
187
+ /**
188
+ * Select.Default 컴포넌트 props
189
+ * @extends SelectTriggerDefaultProps
190
+ * @extends SelectDropdownConfigProps
191
+ * @extends SelectDropdownBehaviorProps
192
+ */
193
+ export interface SelectDefaultComponentProps
194
+ extends
195
+ SelectTriggerDefaultProps,
196
+ SelectDropdownConfigProps,
197
+ SelectDropdownBehaviorProps {}
198
+
199
+ /**
200
+ * Select.Multiple 컴포넌트 props
201
+ * @extends SelectTriggerMultipleProps
202
+ * @extends SelectDropdownConfigProps
203
+ * @extends SelectDropdownBehaviorProps
204
+ */
205
+ export interface SelectMultipleComponentProps
206
+ extends
207
+ SelectTriggerMultipleProps,
208
+ SelectDropdownConfigProps,
209
+ SelectDropdownBehaviorProps {}
@@ -0,0 +1,196 @@
1
+ import type { ElementType, HTMLAttributes, ReactNode } from "react";
2
+
3
+ import type {
4
+ SelectPriority,
5
+ SelectSize,
6
+ SelectState,
7
+ SelectTriggerButtonType,
8
+ } from "./base";
9
+ import type { SelectMultipleTag } from "./multiple";
10
+
11
+ /**
12
+ * Select trigger layout props
13
+ * @property {SelectPriority} [priority] priority scale
14
+ * @property {SelectSize} [size] size scale
15
+ * @property {SelectState} [state] visual state
16
+ * @property {boolean} [open] dropdown open 여부
17
+ * @property {boolean} [block] block 여부
18
+ * @property {boolean} [multiple] multi select 여부
19
+ * @property {boolean} [disabled] disabled 여부
20
+ * @property {ElementType} [as] polymorphic element
21
+ * @property {SelectTriggerButtonType} [buttonType] button type
22
+ * @property {ReactNode} children 콘텐츠
23
+ */
24
+ export interface SelectTriggerBaseProps extends HTMLAttributes<HTMLElement> {
25
+ /**
26
+ * priority scale
27
+ * - primary
28
+ * - secondary
29
+ */
30
+ priority?: SelectPriority;
31
+ /**
32
+ * size scale
33
+ * - small
34
+ * - medium
35
+ * - large
36
+ */
37
+ size?: SelectSize;
38
+ /**
39
+ * visual state
40
+ * - default
41
+ * - focused
42
+ * - disabled
43
+ */
44
+ state?: SelectState;
45
+ /**
46
+ * dropdown open 여부
47
+ */
48
+ open?: boolean;
49
+ /**
50
+ * block 여부
51
+ */
52
+ block?: boolean;
53
+ /**
54
+ * multi select 여부
55
+ */
56
+ multiple?: boolean;
57
+ /**
58
+ * disabled 여부
59
+ */
60
+ disabled?: boolean;
61
+ /**
62
+ * polymorphic element
63
+ */
64
+ as?: ElementType;
65
+ /**
66
+ * button type
67
+ */
68
+ buttonType?: SelectTriggerButtonType;
69
+ /**
70
+ * 콘텐츠
71
+ */
72
+ children: ReactNode;
73
+ }
74
+
75
+ /**
76
+ * Select trigger default props
77
+ * @property {ReactNode} [displayLabel] 선택된 라벨
78
+ * @property {ReactNode} [placeholder] placeholder 텍스트
79
+ */
80
+ export interface SelectTriggerDefaultProps extends HTMLAttributes<HTMLElement> {
81
+ /**
82
+ * 선택된 라벨
83
+ */
84
+ displayLabel?: ReactNode;
85
+ /**
86
+ * placeholder 텍스트
87
+ */
88
+ placeholder?: ReactNode;
89
+ /**
90
+ * priority scale
91
+ * - primary
92
+ * - secondary
93
+ */
94
+ priority?: SelectPriority;
95
+ /**
96
+ * size scale
97
+ * - small
98
+ * - medium
99
+ * - large
100
+ */
101
+ size?: SelectSize;
102
+ /**
103
+ * visual state
104
+ * - default
105
+ * - focused
106
+ * - disabled
107
+ */
108
+ state?: SelectState;
109
+ /**
110
+ * block 여부
111
+ */
112
+ block?: boolean;
113
+ /**
114
+ * dropdown open 여부
115
+ */
116
+ isOpen?: boolean;
117
+ /**
118
+ * disabled 여부
119
+ */
120
+ disabled?: boolean;
121
+ /**
122
+ * button type
123
+ */
124
+ buttonType?: SelectTriggerButtonType;
125
+ }
126
+
127
+ /**
128
+ * Select trigger multiple props
129
+ * @property {ReactNode[]} [tags] multi select tag 리스트
130
+ */
131
+ export interface SelectTriggerMultipleProps extends HTMLAttributes<HTMLElement> {
132
+ /**
133
+ * 선택된 라벨
134
+ */
135
+ displayLabel?: ReactNode;
136
+ /**
137
+ * placeholder 텍스트
138
+ */
139
+ placeholder?: ReactNode;
140
+ /**
141
+ * multi select tag 리스트
142
+ */
143
+ tags?: SelectMultipleTag[];
144
+ /**
145
+ * priority scale
146
+ * - primary
147
+ */
148
+ priority?: SelectPriority;
149
+ /**
150
+ * size scale
151
+ * - small
152
+ * - medium
153
+ * - large
154
+ */
155
+ size?: SelectSize;
156
+ /**
157
+ * visual state
158
+ * - default
159
+ * - focused
160
+ * - disabled
161
+ */
162
+ state?: SelectState;
163
+ /**
164
+ * block 여부
165
+ */
166
+ block?: boolean;
167
+ /**
168
+ * dropdown open 여부
169
+ */
170
+ isOpen?: boolean;
171
+ /**
172
+ * disabled 여부
173
+ */
174
+ disabled?: boolean;
175
+ }
176
+
177
+ /**
178
+ * Select selected view props
179
+ * @property {ReactNode} [label] 표시할 라벨
180
+ * @property {ReactNode} [placeholder] placeholder 텍스트
181
+ * @property {boolean} [isPlaceholder] placeholder 상태 여부
182
+ */
183
+ export interface SelectSelectedProps {
184
+ /**
185
+ * 표시할 라벨
186
+ */
187
+ label?: ReactNode;
188
+ /**
189
+ * placeholder 텍스트
190
+ */
191
+ placeholder?: ReactNode;
192
+ /**
193
+ * placeholder 상태 여부
194
+ */
195
+ isPlaceholder?: boolean;
196
+ }
package/src/index.scss CHANGED
@@ -6,14 +6,15 @@
6
6
  @use "./components/chip";
7
7
  @use "./components/drawer";
8
8
  @use "./components/dropdown";
9
- @use "./components/input";
10
9
  @use "./components/label";
10
+ @use "./components/input";
11
+ @use "./components/select";
12
+ @use "./components/form";
11
13
  @use "./components/navigation";
12
14
  @use "./components/pagination";
13
15
  @use "./components/radio";
14
16
  @use "./components/scrollbar";
15
17
  @use "./components/segmented-control";
16
- @use "./components/select";
17
18
  @use "./components/spinner";
18
19
  @use "./components/tab";
19
20
  @use "./components/table";