frey-ui 1.0.8 → 1.0.10

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 (191) hide show
  1. package/README.md +260 -9
  2. package/dist/cjs/Alert/alert.module.css.js +9 -0
  3. package/dist/cjs/Alert/alert.module.css.js.map +1 -0
  4. package/dist/cjs/Alert/index.js +36 -0
  5. package/dist/cjs/Alert/index.js.map +1 -0
  6. package/dist/cjs/Button/button.module.css.js +9 -0
  7. package/dist/cjs/Button/button.module.css.js.map +1 -0
  8. package/dist/cjs/Button/index.js +32 -0
  9. package/dist/cjs/Button/index.js.map +1 -0
  10. package/dist/cjs/Checkbox/checkbox.module.css.js +9 -0
  11. package/dist/cjs/Checkbox/checkbox.module.css.js.map +1 -0
  12. package/dist/cjs/Checkbox/index.js +49 -0
  13. package/dist/cjs/Checkbox/index.js.map +1 -0
  14. package/dist/cjs/Chip/chip.module.css.js +9 -0
  15. package/dist/cjs/Chip/chip.module.css.js.map +1 -0
  16. package/dist/cjs/Chip/index.js +48 -0
  17. package/dist/cjs/Chip/index.js.map +1 -0
  18. package/dist/cjs/Dialog/dialog.module.css.js +9 -0
  19. package/dist/cjs/Dialog/dialog.module.css.js.map +1 -0
  20. package/dist/cjs/Dialog/index.js +130 -0
  21. package/dist/cjs/Dialog/index.js.map +1 -0
  22. package/dist/cjs/DropdownMenu/dropdownmenu.module.css.js +9 -0
  23. package/dist/cjs/DropdownMenu/dropdownmenu.module.css.js.map +1 -0
  24. package/dist/cjs/DropdownMenu/index.js +220 -0
  25. package/dist/cjs/DropdownMenu/index.js.map +1 -0
  26. package/dist/cjs/Field/field.module.css.js +9 -0
  27. package/dist/cjs/Field/field.module.css.js.map +1 -0
  28. package/dist/cjs/Field/index.js +35 -0
  29. package/dist/cjs/Field/index.js.map +1 -0
  30. package/dist/cjs/Icons/icons.module.css.js +9 -0
  31. package/dist/cjs/Icons/icons.module.css.js.map +1 -0
  32. package/dist/cjs/Icons/index.js +96 -0
  33. package/dist/cjs/Icons/index.js.map +1 -0
  34. package/dist/cjs/Popover/index.js +145 -0
  35. package/dist/cjs/Popover/index.js.map +1 -0
  36. package/dist/cjs/Popover/popover.module.css.js +9 -0
  37. package/dist/cjs/Popover/popover.module.css.js.map +1 -0
  38. package/dist/cjs/Progress/index.js +31 -0
  39. package/dist/cjs/Progress/index.js.map +1 -0
  40. package/dist/cjs/Progress/progress.module.css.js +9 -0
  41. package/dist/cjs/Progress/progress.module.css.js.map +1 -0
  42. package/dist/cjs/RadioGroup/index.js +44 -0
  43. package/dist/cjs/RadioGroup/index.js.map +1 -0
  44. package/dist/cjs/RadioGroup/radiogroup.module.css.js +9 -0
  45. package/dist/cjs/RadioGroup/radiogroup.module.css.js.map +1 -0
  46. package/dist/cjs/Select/index.js +31 -0
  47. package/dist/cjs/Select/index.js.map +1 -0
  48. package/dist/cjs/Select/select.module.css.js +9 -0
  49. package/dist/cjs/Select/select.module.css.js.map +1 -0
  50. package/dist/cjs/Skeleton/index.js +23 -0
  51. package/dist/cjs/Skeleton/index.js.map +1 -0
  52. package/dist/cjs/Skeleton/skeleton.module.css.js +9 -0
  53. package/dist/cjs/Skeleton/skeleton.module.css.js.map +1 -0
  54. package/dist/cjs/Spinner/index.js +29 -0
  55. package/dist/cjs/Spinner/index.js.map +1 -0
  56. package/dist/cjs/Spinner/spinner.module.css.js +9 -0
  57. package/dist/cjs/Spinner/spinner.module.css.js.map +1 -0
  58. package/dist/cjs/Switch/index.js +40 -0
  59. package/dist/cjs/Switch/index.js.map +1 -0
  60. package/dist/cjs/Switch/switch.module.css.js +9 -0
  61. package/dist/cjs/Switch/switch.module.css.js.map +1 -0
  62. package/dist/cjs/TextInput/index.js +33 -0
  63. package/dist/cjs/TextInput/index.js.map +1 -0
  64. package/dist/cjs/TextInput/textinput.module.css.js +9 -0
  65. package/dist/cjs/TextInput/textinput.module.css.js.map +1 -0
  66. package/dist/cjs/Textarea/index.js +31 -0
  67. package/dist/cjs/Textarea/index.js.map +1 -0
  68. package/dist/cjs/Textarea/textarea.module.css.js +9 -0
  69. package/dist/cjs/Textarea/textarea.module.css.js.map +1 -0
  70. package/dist/cjs/ThemeProvider/index.js +29 -0
  71. package/dist/cjs/ThemeProvider/index.js.map +1 -0
  72. package/dist/cjs/ThemeProvider/themeprovider.module.css.js +9 -0
  73. package/dist/cjs/ThemeProvider/themeprovider.module.css.js.map +1 -0
  74. package/dist/cjs/Toast/index.js +111 -0
  75. package/dist/cjs/Toast/index.js.map +1 -0
  76. package/dist/cjs/Toast/toast.module.css.js +9 -0
  77. package/dist/cjs/Toast/toast.module.css.js.map +1 -0
  78. package/dist/cjs/Tooltip/index.js +165 -0
  79. package/dist/cjs/Tooltip/index.js.map +1 -0
  80. package/dist/cjs/Tooltip/tooltip.module.css.js +9 -0
  81. package/dist/cjs/Tooltip/tooltip.module.css.js.map +1 -0
  82. package/dist/cjs/index.js +56 -0
  83. package/dist/cjs/index.js.map +1 -0
  84. package/dist/esm/Alert/alert.module.css.js +5 -0
  85. package/dist/esm/Alert/alert.module.css.js.map +1 -0
  86. package/dist/esm/Alert/index.js +32 -0
  87. package/dist/esm/Alert/index.js.map +1 -0
  88. package/dist/esm/Button/button.module.css.js +5 -0
  89. package/dist/esm/Button/button.module.css.js.map +1 -0
  90. package/dist/esm/Button/index.js +28 -0
  91. package/dist/esm/Button/index.js.map +1 -0
  92. package/dist/esm/Checkbox/checkbox.module.css.js +5 -0
  93. package/dist/esm/Checkbox/checkbox.module.css.js.map +1 -0
  94. package/dist/esm/Checkbox/index.js +45 -0
  95. package/dist/esm/Checkbox/index.js.map +1 -0
  96. package/dist/esm/Chip/chip.module.css.js +5 -0
  97. package/dist/esm/Chip/chip.module.css.js.map +1 -0
  98. package/dist/esm/Chip/index.js +44 -0
  99. package/dist/esm/Chip/index.js.map +1 -0
  100. package/dist/esm/Dialog/dialog.module.css.js +5 -0
  101. package/dist/esm/Dialog/dialog.module.css.js.map +1 -0
  102. package/dist/esm/Dialog/index.js +126 -0
  103. package/dist/esm/Dialog/index.js.map +1 -0
  104. package/dist/esm/DropdownMenu/dropdownmenu.module.css.js +5 -0
  105. package/dist/esm/DropdownMenu/dropdownmenu.module.css.js.map +1 -0
  106. package/dist/esm/DropdownMenu/index.js +216 -0
  107. package/dist/esm/DropdownMenu/index.js.map +1 -0
  108. package/dist/esm/Field/field.module.css.js +5 -0
  109. package/dist/esm/Field/field.module.css.js.map +1 -0
  110. package/dist/esm/Field/index.js +31 -0
  111. package/dist/esm/Field/index.js.map +1 -0
  112. package/dist/esm/Icons/icons.module.css.js +5 -0
  113. package/dist/esm/Icons/icons.module.css.js.map +1 -0
  114. package/dist/esm/Icons/index.js +84 -0
  115. package/dist/esm/Icons/index.js.map +1 -0
  116. package/dist/esm/Popover/index.js +141 -0
  117. package/dist/esm/Popover/index.js.map +1 -0
  118. package/dist/esm/Popover/popover.module.css.js +5 -0
  119. package/dist/esm/Popover/popover.module.css.js.map +1 -0
  120. package/dist/esm/Progress/index.js +27 -0
  121. package/dist/esm/Progress/index.js.map +1 -0
  122. package/dist/esm/Progress/progress.module.css.js +5 -0
  123. package/dist/esm/Progress/progress.module.css.js.map +1 -0
  124. package/dist/esm/RadioGroup/index.js +40 -0
  125. package/dist/esm/RadioGroup/index.js.map +1 -0
  126. package/dist/esm/RadioGroup/radiogroup.module.css.js +5 -0
  127. package/dist/esm/RadioGroup/radiogroup.module.css.js.map +1 -0
  128. package/dist/esm/Select/index.js +27 -0
  129. package/dist/esm/Select/index.js.map +1 -0
  130. package/dist/esm/Select/select.module.css.js +5 -0
  131. package/dist/esm/Select/select.module.css.js.map +1 -0
  132. package/dist/esm/Skeleton/index.js +19 -0
  133. package/dist/esm/Skeleton/index.js.map +1 -0
  134. package/dist/esm/Skeleton/skeleton.module.css.js +5 -0
  135. package/dist/esm/Skeleton/skeleton.module.css.js.map +1 -0
  136. package/dist/esm/Spinner/index.js +25 -0
  137. package/dist/esm/Spinner/index.js.map +1 -0
  138. package/dist/esm/Spinner/spinner.module.css.js +5 -0
  139. package/dist/esm/Spinner/spinner.module.css.js.map +1 -0
  140. package/dist/esm/Switch/index.js +36 -0
  141. package/dist/esm/Switch/index.js.map +1 -0
  142. package/dist/esm/Switch/switch.module.css.js +5 -0
  143. package/dist/esm/Switch/switch.module.css.js.map +1 -0
  144. package/dist/esm/TextInput/index.js +29 -0
  145. package/dist/esm/TextInput/index.js.map +1 -0
  146. package/dist/esm/TextInput/textinput.module.css.js +5 -0
  147. package/dist/esm/TextInput/textinput.module.css.js.map +1 -0
  148. package/dist/esm/Textarea/index.js +27 -0
  149. package/dist/esm/Textarea/index.js.map +1 -0
  150. package/dist/esm/Textarea/textarea.module.css.js +5 -0
  151. package/dist/esm/Textarea/textarea.module.css.js.map +1 -0
  152. package/dist/esm/ThemeProvider/index.js +25 -0
  153. package/dist/esm/ThemeProvider/index.js.map +1 -0
  154. package/dist/esm/ThemeProvider/themeprovider.module.css.js +5 -0
  155. package/dist/esm/ThemeProvider/themeprovider.module.css.js.map +1 -0
  156. package/dist/esm/Toast/index.js +108 -0
  157. package/dist/esm/Toast/index.js.map +1 -0
  158. package/dist/esm/Toast/toast.module.css.js +5 -0
  159. package/dist/esm/Toast/toast.module.css.js.map +1 -0
  160. package/dist/esm/Tooltip/index.js +161 -0
  161. package/dist/esm/Tooltip/index.js.map +1 -0
  162. package/dist/esm/Tooltip/tooltip.module.css.js +5 -0
  163. package/dist/esm/Tooltip/tooltip.module.css.js.map +1 -0
  164. package/dist/esm/index.js +22 -0
  165. package/dist/esm/index.js.map +1 -0
  166. package/dist/index.d.ts +339 -0
  167. package/dist/styles.css +2 -0
  168. package/dist/styles.css.map +1 -0
  169. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  170. package/dist/types/src/Alert/index.d.ts +11 -0
  171. package/dist/types/src/Button/index.d.ts +22 -0
  172. package/dist/types/src/Checkbox/index.d.ts +12 -0
  173. package/dist/types/src/Chip/index.d.ts +21 -0
  174. package/dist/types/src/Dialog/index.d.ts +18 -0
  175. package/dist/types/src/DropdownMenu/index.d.ts +27 -0
  176. package/dist/types/src/Field/index.d.ts +22 -0
  177. package/dist/types/src/Icons/index.d.ts +29 -0
  178. package/dist/types/src/Popover/index.d.ts +20 -0
  179. package/dist/types/src/Progress/index.d.ts +15 -0
  180. package/dist/types/src/RadioGroup/index.d.ts +27 -0
  181. package/dist/types/src/Select/index.d.ts +14 -0
  182. package/dist/types/src/Skeleton/index.d.ts +11 -0
  183. package/dist/types/src/Spinner/index.d.ts +10 -0
  184. package/dist/types/src/Switch/index.d.ts +11 -0
  185. package/dist/types/src/TextInput/index.d.ts +12 -0
  186. package/dist/types/src/Textarea/index.d.ts +13 -0
  187. package/dist/types/src/ThemeProvider/index.d.ts +12 -0
  188. package/dist/types/src/Toast/index.d.ts +30 -0
  189. package/dist/types/src/Tooltip/index.d.ts +17 -0
  190. package/dist/types/src/index.d.ts +41 -0
  191. package/package.json +11 -23
package/README.md CHANGED
@@ -56,6 +56,227 @@ function App() {
56
56
 
57
57
  ## Components
58
58
 
59
+ Frey UI currently exports:
60
+
61
+ - `Alert`
62
+ - `Button`
63
+ - `Checkbox`
64
+ - `Chip`
65
+ - `Dialog`
66
+ - `DropdownMenu`
67
+ - `Field`
68
+ - `Icons` (`CloseIcon`, `ChevronDownIcon`, `CheckIcon`, `MinusIcon`, `CircleXIcon`, `CircleCheckIcon`, `TriangleAlertIcon`, `CircleInfoIcon`)
69
+ - `Popover`
70
+ - `RadioGroup`
71
+ - `Progress`
72
+ - `Select`
73
+ - `Skeleton`
74
+ - `Spinner`
75
+ - `Switch`
76
+ - `Textarea`
77
+ - `TextInput`
78
+ - `ToastProvider` + `useToast`
79
+ - `Tooltip`
80
+ - `ThemeProvider`
81
+
82
+ ### `Field`
83
+
84
+ Shared form field wrapper for labels, helper text, and error messaging.
85
+
86
+ - `label` (`string`, required): field label text.
87
+ - `hideLabel` (`boolean`, default `false`): visually hide label while keeping it accessible.
88
+ - `error` (`string`): error text rendered with `role='alert'`.
89
+ - `helperText` (`string`): helper text shown below control content.
90
+ - `required` (`boolean`, default `false`): shows required indicator.
91
+ - `disabled` (`boolean`, default `false`): applies disabled label styling.
92
+ - `children` (`(props: FieldRenderProps) => ReactNode`, required): render function with generated ids + validation state.
93
+ - `className` (`string`): additional CSS class.
94
+ - `style` (`CSSProperties`): inline style / CSS variable overrides.
95
+
96
+ ### `Dialog`
97
+
98
+ Accessible modal dialog primitive for confirmation and settings flows.
99
+
100
+ Recommended usage: pair it with a trigger button and controlled `open` state.
101
+
102
+ - `open` (`boolean`, required): controls visibility.
103
+ - `title` (`string`, required): dialog heading used as accessible name.
104
+ - `children` (`ReactNode`): body content.
105
+ - `description` (`string`): optional secondary description text.
106
+ - `onOpenChange` (`(open: boolean) => void`): state change callback for close actions.
107
+ - `closeOnEscape` (`boolean`, default `true`): close when Escape is pressed.
108
+ - `closeOnOverlayClick` (`boolean`, default `true`): close when backdrop is clicked.
109
+ - `closeLabel` (`string`, default `'Close dialog'`): accessible label for close button.
110
+ - `className` / `style`: overlay/dialog root customization.
111
+ - `contentClassName` / `contentStyle`: dialog panel customization.
112
+
113
+ ### `DropdownMenu`
114
+
115
+ Trigger-based menu for compact actions.
116
+
117
+ - `trigger` (`ReactElement`, required): trigger control.
118
+ - `items` (`ReadonlyArray<DropdownMenuItem>`, required): menu options.
119
+ - `onSelect` (`(value: string) => void`): item selection callback.
120
+ - `open` / `defaultOpen` / `onOpenChange`: controlled/uncontrolled state.
121
+ - `placement` (`'top' | 'right' | 'bottom' | 'left'`, default `'bottom'`): menu placement.
122
+ - `closeOnEscape` (`boolean`, default `true`): close with Escape key.
123
+ - `closeOnOutsideClick` (`boolean`, default `true`): outside click dismiss.
124
+
125
+ ### `Icons`
126
+
127
+ Shared SVG icon primitives used by Frey UI components.
128
+
129
+ - `CloseIcon`, `ChevronDownIcon`, `CheckIcon`, `MinusIcon`
130
+ - `CircleXIcon`, `CircleCheckIcon`, `TriangleAlertIcon`, `CircleInfoIcon`
131
+
132
+ Both icons support:
133
+
134
+ - `size` (`'xs' | 'sm' | 'md' | 'lg' | 'xl' | number`, default `'md'`): icon size token or numeric override.
135
+ - `strokeWidth` (`'thin' | 'regular' | 'bold' | number`, default `'regular'`): stroke token or numeric override.
136
+ - `title` (`string`): accessible name when you want semantic/icon-only meaning.
137
+ - `className` / `style`: visual customization.
138
+
139
+ ### `Popover`
140
+
141
+ Non-modal floating surface anchored to a trigger.
142
+
143
+ - `trigger` (`ReactElement`, required): trigger control.
144
+ - `children` (`ReactNode`, required): popover content.
145
+ - `open` / `defaultOpen` / `onOpenChange`: controlled/uncontrolled state.
146
+ - `placement` (`'top' | 'right' | 'bottom' | 'left'`, default `'bottom'`): popover placement.
147
+ - `closeOnEscape` (`boolean`, default `true`) and `closeOnOutsideClick` (`boolean`, default `true`).
148
+
149
+ ### `Progress`
150
+
151
+ Progress indicator for determinate or indeterminate loading.
152
+
153
+ - `value` (`number`, default `0`) and `max` (`number`, default `100`).
154
+ - `indeterminate` (`boolean`, default `false`): animated loading state.
155
+ - `label` (`string`): accessible and visible label.
156
+ - `showValue` (`boolean`, default `false`): show percentage text.
157
+ - `size` (`'sm' | 'md' | 'lg'`, default `'md'`).
158
+
159
+ ### `Spinner`
160
+
161
+ Compact busy indicator for short background operations.
162
+
163
+ - `size` (`'sm' | 'md' | 'lg' | number`, default `'md'`).
164
+ - `label` (`string`, default `'Loading'`): status label for assistive tech.
165
+ - `className` / `style`: visual overrides.
166
+
167
+ ### `ToastProvider` + `useToast`
168
+
169
+ Imperative notification system for transient messages.
170
+
171
+ - Wrap app sections with `ToastProvider`.
172
+ - Use `useToast()` to access:
173
+ - `toast(options)`
174
+ - `dismiss(id)`
175
+ - `dismissAll()`
176
+
177
+ `ToastProvider` props:
178
+
179
+ - `placement` (`'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'`, default `'top-right'`)
180
+ - `limit` (`number`, default `4`)
181
+
182
+ `toast(options)` supports:
183
+
184
+ - `title`, `description` (required), `variant`, `duration`, and optional action button.
185
+
186
+ ### `Tooltip`
187
+
188
+ Accessible hint text on hover/focus.
189
+
190
+ - `children` (`ReactElement`, required): trigger element.
191
+ - `content` (`ReactNode`, required): tooltip text/content.
192
+ - `open` / `defaultOpen` / `onOpenChange`: controlled/uncontrolled state.
193
+ - `placement` (`'top' | 'right' | 'bottom' | 'left'`, default `'top'`).
194
+ - `delay` (`number`, default `120` ms): show delay on hover/focus.
195
+
196
+ ### `RadioGroup`
197
+
198
+ Accessible grouped radios with controlled and uncontrolled support.
199
+
200
+ - `label` (`string`, required): group label text.
201
+ - `options` (`ReadonlyArray<RadioOption>`, required): radio options.
202
+ - `value` (`string`): controlled selected value.
203
+ - `defaultValue` (`string`): initial value for uncontrolled usage.
204
+ - `onChange` (`ChangeEventHandler<HTMLInputElement>`): native change handler.
205
+ - `orientation` (`'vertical' | 'horizontal'`, default `'vertical'`): options layout direction.
206
+ - `error` (`string`): error text for validation state.
207
+ - `helperText` (`string`): helper text below group.
208
+ - `disabled` (`boolean`, default `false`): disables all options.
209
+
210
+ ### `Select`
211
+
212
+ Accessible native `<select>` with helper/error messages and size variants.
213
+
214
+ - `label` (`string`, required): accessible label text.
215
+ - `placeholder` (`string`): placeholder option for single-select usage.
216
+ - `size` (`'sm' | 'md' | 'lg'`, default `'md'`): visual size variant.
217
+ - `error` (`string`): error text and invalid state.
218
+ - `helperText` (`string`): helper text below control.
219
+ - `children` (`ReactNode`): `<option>` / `<optgroup>` content.
220
+ - `disabled` (`boolean`, default `false`): disables the control.
221
+
222
+ ### `Textarea`
223
+
224
+ Accessible multiline text input with helper/error messaging.
225
+
226
+ - `label` (`string`, required): accessible label text.
227
+ - `resize` (`'none' | 'vertical' | 'horizontal' | 'both'`, default `'vertical'`): resize behavior.
228
+ - `error` (`string`): error text and invalid state.
229
+ - `helperText` (`string`): helper text below control.
230
+ - `disabled` (`boolean`, default `false`): disables the textarea.
231
+ - `className` (`string`): additional CSS class.
232
+ - `style` (`CSSProperties`): inline style / CSS variable overrides.
233
+
234
+ ### `Alert`
235
+
236
+ Inline status and feedback messaging.
237
+
238
+ | Prop | Type | Default | Description |
239
+ | ----------- | ---------------------------------------------- | -------- | ------------------------------------------------ |
240
+ | `variant` | `'error' \| 'success' \| 'warning' \| 'info'` | `'info'` | Visual style and live-region semantics. |
241
+ | `title` | `string` | — | Optional short heading rendered above the body. |
242
+ | `children` | `ReactNode` | — | **Required.** Main alert message content. |
243
+ | `className` | `string` | — | Additional CSS class. |
244
+ | `style` | `CSSProperties` | — | Inline styles / CSS variable overrides. |
245
+
246
+ ### `Button`
247
+
248
+ Polymorphic action control with loading and disabled states.
249
+
250
+ | Prop | Type | Default | Description |
251
+ | ----------- | ------------------------------------------------------ | ----------- | --------------------------------------------------------------------------------------- |
252
+ | `as` | `'button' \| 'a'` | `'button'` | HTML element to render. |
253
+ | `variant` | `'primary' \| 'secondary' \| 'ghost' \| 'destructive'` | `'primary'` | Visual style variant. |
254
+ | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | Size variant. |
255
+ | `loading` | `boolean` | `false` | Shows spinner and marks element as busy. |
256
+ | `disabled` | `boolean` | `false` | Disables native buttons; for anchors sets `aria-disabled`. |
257
+ | `className` | `string` | — | Additional CSS class. |
258
+ | `style` | `CSSProperties` | — | Inline styles / CSS variable overrides. |
259
+ | `ref` | `Ref<HTMLButtonElement \| HTMLAnchorElement>` | — | Forwarded ref to the underlying element. |
260
+
261
+ Component-specific native attributes are supported based on `as` (`button` or `a`).
262
+
263
+ ### `Checkbox`
264
+
265
+ Accessible checkbox with optional indeterminate state.
266
+
267
+ | Prop | Type | Default | Description |
268
+ | --------------- | -------------------------------------- | ------- | --------------------------------------------------------------- |
269
+ | `label` | `string` | — | **Required.** Accessible label text. |
270
+ | `hideLabel` | `boolean` | `false` | Visually hide the label (remains accessible to screen readers). |
271
+ | `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | Size variant. |
272
+ | `indeterminate` | `boolean` | `false` | Shows mixed state and sets `aria-checked="mixed"`. |
273
+ | `disabled` | `boolean` | `false` | Disables the checkbox. |
274
+ | `className` | `string` | — | Additional CSS class. |
275
+ | `style` | `CSSProperties` | — | Inline styles / CSS variable overrides. |
276
+ | `ref` | `Ref<HTMLInputElement>` | — | Forwarded ref to the native input. |
277
+
278
+ All standard `<input>` attributes (except `type`, `size`) are also supported and spread onto the underlying element.
279
+
59
280
  ### `Chip`
60
281
 
61
282
  A polymorphic label / action component.
@@ -72,6 +293,18 @@ A polymorphic label / action component.
72
293
 
73
294
  Non-native interactive chips (`as="div"` with `onClick`) automatically receive `role="button"`, `tabIndex={0}`, and keyboard support (Enter / Space).
74
295
 
296
+ ### `Skeleton`
297
+
298
+ Loading placeholder for pending UI states.
299
+
300
+ | Prop | Type | Default | Description |
301
+ | ----------- | ------------------------------- | ------------- | ------------------------------------------------------- |
302
+ | `width` | `string \| number` | — | Placeholder width (for circles, can infer from height). |
303
+ | `height` | `string \| number` | — | Placeholder height (for circles, can infer from width). |
304
+ | `shape` | `'rectangle' \| 'circle'` | `'rectangle'` | Skeleton shape. |
305
+ | `className` | `string` | — | Additional CSS class. |
306
+ | `style` | `CSSProperties` | — | Inline styles / CSS variable overrides. |
307
+
75
308
  ### `Switch`
76
309
 
77
310
  An accessible toggle switch built on a native `<input type="checkbox" role="switch">`.
@@ -91,17 +324,36 @@ An accessible toggle switch built on a native `<input type="checkbox" role="swit
91
324
 
92
325
  All standard `<input>` attributes (except `type`, `size`) are also supported and spread onto the underlying element.
93
326
 
327
+ ### `TextInput`
328
+
329
+ Accessible text field with helper and error messaging.
330
+
331
+ | Prop | Type | Default | Description |
332
+ | ------------ | ----------------------------------------------------------------------- | -------- | --------------------------------------------------------------- |
333
+ | `label` | `string` | — | **Required.** Accessible label text. |
334
+ | `hideLabel` | `boolean` | `false` | Visually hide the label (remains accessible to screen readers). |
335
+ | `type` | `'text' \| 'email' \| 'password' \| 'search' \| 'tel' \| 'url'` | `'text'` | Input type. |
336
+ | `error` | `string` | — | Error message text; sets `aria-invalid` and `role="alert"`. |
337
+ | `helperText` | `string` | — | Helper text shown below the input. |
338
+ | `disabled` | `boolean` | `false` | Disables the input. |
339
+ | `className` | `string` | — | Additional CSS class. |
340
+ | `style` | `CSSProperties` | — | Inline styles / CSS variable overrides. |
341
+ | `ref` | `Ref<HTMLInputElement>` | — | Forwarded ref to the native input. |
342
+
343
+ All standard `<input>` attributes (except `type`) are also supported and spread onto the underlying element.
344
+
94
345
  ### `ThemeProvider`
95
346
 
96
- Wraps children with theme CSS variables.
347
+ Wraps children with theme CSS variables and controls semantic token mapping.
97
348
 
98
- | Prop | Type | Default | Description |
99
- | ----------- | ------------------- | --------- | ---------------------------- |
100
- | `children` | `ReactNode` | — | **Required.** Child content. |
101
- | `theme` | `'light' \| 'dark'` | `'light'` | Active theme. |
102
- | `id` | `string` | | Container id. |
103
- | `className` | `string` | — | Additional CSS class. |
104
- | `style` | `CSSProperties` | — | Inline styles. |
349
+ | Prop | Type | Default | Description |
350
+ | -------------- | ------------------------------ | --------- | ----------------------------------------------------- |
351
+ | `children` | `ReactNode` | — | **Required.** Child content. |
352
+ | `theme` | `'light' \| 'dark' \| 'system'`| `'light'` | Active theme. `'system'` follows OS preferences. |
353
+ | `highContrast` | `boolean` | `false` | Enables high-contrast mode for better accessibility. |
354
+ | `id` | `string` | — | Container id. |
355
+ | `className` | `string` | — | Additional CSS class. |
356
+ | `style` | `CSSProperties` | — | Inline styles. |
105
357
 
106
358
  ## Theming
107
359
 
@@ -120,7 +372,6 @@ Override component visuals with CSS custom properties on any ancestor:
120
372
  Browse interactive component docs at the [hosted Storybook](https://BlizzardBlast.github.io/frey-ui) or run locally:
121
373
 
122
374
  ```bash
123
- cd apps/storybook
124
375
  pnpm install
125
376
  pnpm storybook
126
377
  ```
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var styles = {"alert":"alert-module_alert__j-fLL","alert-error":"alert-module_alert-error__U8yC8","alert-success":"alert-module_alert-success__FYP1Q","alert-warning":"alert-module_alert-warning__tuLWQ","alert-info":"alert-module_alert-info__d2xVj","alert-icon":"alert-module_alert-icon__j-8MC","alert_icon_svg":"alert-module_alert_icon_svg__EBN75","alert-content":"alert-module_alert-content__PUQPc","alert-title":"alert-module_alert-title__3yZS1","alert-message":"alert-module_alert-message__0AJ04"};
7
+
8
+ exports.default = styles;
9
+ //# sourceMappingURL=alert.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -0,0 +1,36 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var clsx = require('clsx');
8
+ var React = require('react');
9
+ var index = require('../Icons/index.js');
10
+ var alert_module = require('./alert.module.css.js');
11
+
12
+ const VariantClassMap = {
13
+ error: alert_module.default['alert-error'],
14
+ success: alert_module.default['alert-success'],
15
+ warning: alert_module.default['alert-warning'],
16
+ info: alert_module.default['alert-info']
17
+ };
18
+ const VariantRoleMap = {
19
+ error: 'alert',
20
+ warning: 'alert',
21
+ success: 'status',
22
+ info: 'status'
23
+ };
24
+ const icons = {
25
+ error: (jsxRuntime.jsx(index.CircleXIcon, { size: 'lg', strokeWidth: 'bold', className: alert_module.default.alert_icon_svg })),
26
+ success: (jsxRuntime.jsx(index.CircleCheckIcon, { size: 'lg', strokeWidth: 'bold', className: alert_module.default.alert_icon_svg })),
27
+ warning: (jsxRuntime.jsx(index.TriangleAlertIcon, { size: 'lg', strokeWidth: 'bold', className: alert_module.default.alert_icon_svg })),
28
+ info: (jsxRuntime.jsx(index.CircleInfoIcon, { size: 'lg', strokeWidth: 'bold', className: alert_module.default.alert_icon_svg }))
29
+ };
30
+ const Alert = React.forwardRef(function Alert({ variant = 'info', title, children, className, style }, ref) {
31
+ return (jsxRuntime.jsxs("div", { ref: ref, role: VariantRoleMap[variant], className: clsx(alert_module.default.alert, VariantClassMap[variant], className), style: style, children: [jsxRuntime.jsx("span", { className: alert_module.default['alert-icon'], children: icons[variant] }), jsxRuntime.jsxs("div", { className: alert_module.default['alert-content'], children: [title && jsxRuntime.jsx("p", { className: alert_module.default['alert-title'], children: title }), jsxRuntime.jsx("p", { className: alert_module.default['alert-message'], children: children })] })] }));
32
+ });
33
+ Alert.displayName = 'Alert';
34
+
35
+ exports.default = Alert;
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/Alert/index.tsx"],"sourcesContent":[null],"names":["styles","_jsx","CircleXIcon","CircleCheckIcon","TriangleAlertIcon","CircleInfoIcon","_jsxs"],"mappings":";;;;;;;;;;;AAoBA,MAAM,eAAe,GAAiC;AACpD,IAAA,KAAK,EAAEA,oBAAM,CAAC,aAAa,CAAC;AAC5B,IAAA,OAAO,EAAEA,oBAAM,CAAC,eAAe,CAAC;AAChC,IAAA,OAAO,EAAEA,oBAAM,CAAC,eAAe,CAAC;AAChC,IAAA,IAAI,EAAEA,oBAAM,CAAC,YAAY;CAC1B;AAED,MAAM,cAAc,GAA6C;AAC/D,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,OAAO,EAAE,QAAQ;AACjB,IAAA,IAAI,EAAE;CACP;AAED,MAAM,KAAK,GAA0C;AACnD,IAAA,KAAK,GACHC,cAAA,CAACC,iBAAW,EAAA,EACV,IAAI,EAAC,IAAI,EACT,WAAW,EAAC,MAAM,EAClB,SAAS,EAAEF,oBAAM,CAAC,cAAc,GAChC,CACH;AACD,IAAA,OAAO,GACLC,cAAA,CAACE,qBAAe,EAAA,EACd,IAAI,EAAC,IAAI,EACT,WAAW,EAAC,MAAM,EAClB,SAAS,EAAEH,oBAAM,CAAC,cAAc,GAChC,CACH;AACD,IAAA,OAAO,GACLC,cAAA,CAACG,uBAAiB,EAAA,EAChB,IAAI,EAAC,IAAI,EACT,WAAW,EAAC,MAAM,EAClB,SAAS,EAAEJ,oBAAM,CAAC,cAAc,GAChC,CACH;AACD,IAAA,IAAI,GACFC,cAAA,CAACI,oBAAc,EAAA,EACb,IAAI,EAAC,IAAI,EACT,WAAW,EAAC,MAAM,EAClB,SAAS,EAAEL,oBAAM,CAAC,cAAc,GAChC;CAEL;AAED,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B,SAAS,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,EAAA;AACzE,IAAA,QACEM,eAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,EAC7B,SAAS,EAAE,IAAI,CAACN,oBAAM,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,EAClE,KAAK,EAAE,KAAK,EAAA,QAAA,EAAA,CAEZC,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAED,oBAAM,CAAC,YAAY,CAAC,EAAA,QAAA,EAAG,KAAK,CAAC,OAAO,CAAC,EAAA,CAAQ,EAC9DM,yBAAK,SAAS,EAAEN,oBAAM,CAAC,eAAe,CAAC,EAAA,QAAA,EAAA,CACpC,KAAK,IAAIC,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAED,oBAAM,CAAC,aAAa,CAAC,EAAA,QAAA,EAAG,KAAK,GAAK,EAC1DC,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAED,oBAAM,CAAC,eAAe,CAAC,EAAA,QAAA,EAAG,QAAQ,GAAK,CAAA,EAAA,CACjD,CAAA,EAAA,CACF;AAEV,CAAC;AAGH,KAAK,CAAC,WAAW,GAAG,OAAO;;;;"}
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var styles = {"button":"button-module_button__umKM2","button-sm":"button-module_button-sm__TiGU6","button-md":"button-module_button-md__J7V5e","button-lg":"button-module_button-lg__-SzwA","button-primary":"button-module_button-primary__v1Ube","button-secondary":"button-module_button-secondary__sWT9h","button-ghost":"button-module_button-ghost__s0pgs","button-destructive":"button-module_button-destructive__zxYP7","button-loading":"button-module_button-loading__-ye2x","spinner":"button-module_spinner__1Wrqa"};
7
+
8
+ exports.default = styles;
9
+ //# sourceMappingURL=button.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -0,0 +1,32 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var tslib = require('tslib');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+ var clsx = require('clsx');
9
+ var React = require('react');
10
+ var button_module = require('./button.module.css.js');
11
+
12
+ const VariantClassMap = {
13
+ primary: button_module.default['button-primary'],
14
+ secondary: button_module.default['button-secondary'],
15
+ ghost: button_module.default['button-ghost'],
16
+ destructive: button_module.default['button-destructive']
17
+ };
18
+ const SizeClassMap = {
19
+ sm: button_module.default['button-sm'],
20
+ md: button_module.default['button-md'],
21
+ lg: button_module.default['button-lg']
22
+ };
23
+ const Button = React.forwardRef(function Button(_a, ref) {
24
+ var { as, variant = 'primary', size = 'md', loading = false, disabled = false, className, style, children } = _a, restProps = tslib.__rest(_a, ["as", "variant", "size", "loading", "disabled", "className", "style", "children"]);
25
+ const Component = (as !== null && as !== void 0 ? as : 'button');
26
+ const isButton = (as !== null && as !== void 0 ? as : 'button') === 'button';
27
+ return (jsxRuntime.jsxs(Component, Object.assign({ ref: ref, className: clsx(button_module.default.button, VariantClassMap[variant], SizeClassMap[size], { [button_module.default['button-loading']]: loading }, className), style: style, disabled: isButton ? disabled || loading : undefined, "aria-disabled": !isButton && (disabled || loading) ? true : undefined, type: isButton ? 'button' : undefined, "aria-busy": loading || undefined }, restProps, { children: [loading && jsxRuntime.jsx("span", { className: button_module.default.spinner, "aria-hidden": 'true' }), children] })));
28
+ });
29
+ Button.displayName = 'Button';
30
+
31
+ exports.default = Button;
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/Button/index.tsx"],"sourcesContent":[null],"names":["styles","__rest","_jsxs","_jsx"],"mappings":";;;;;;;;;;;AA+BA,MAAM,eAAe,GAAkC;AACrD,IAAA,OAAO,EAAEA,qBAAM,CAAC,gBAAgB,CAAC;AACjC,IAAA,SAAS,EAAEA,qBAAM,CAAC,kBAAkB,CAAC;AACrC,IAAA,KAAK,EAAEA,qBAAM,CAAC,cAAc,CAAC;AAC7B,IAAA,WAAW,EAAEA,qBAAM,CAAC,oBAAoB;CACzC;AAED,MAAM,YAAY,GAA+B;AAC/C,IAAA,EAAE,EAAEA,qBAAM,CAAC,WAAW,CAAC;AACvB,IAAA,EAAE,EAAEA,qBAAM,CAAC,WAAW,CAAC;AACvB,IAAA,EAAE,EAAEA,qBAAM,CAAC,WAAW;CACvB;AAED,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,MAAM,CAG7C,EAU2B,EAC3B,GAAgC,EAAA;AAXhC,IAAA,IAAA,EACE,EAAE,EACF,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,IAAI,EACX,OAAO,GAAG,KAAK,EACf,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,KAAK,EACL,QAAQ,EAAA,GAAA,EAEiB,EADtB,SAAS,GAAAC,YAAA,CAAA,EAAA,EATd,CAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,OAAA,EAAA,UAAA,CAUC,CADa;IAId,MAAM,SAAS,IAAI,EAAE,KAAA,IAAA,IAAF,EAAE,KAAA,MAAA,GAAF,EAAE,GAAI,QAAQ,CAAsB;AACvD,IAAA,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAA,IAAA,IAAF,EAAE,KAAA,MAAA,GAAF,EAAE,GAAI,QAAQ,MAAM,QAAQ;IAE9C,QACEC,eAAA,CAAC,SAAS,EAAA,MAAA,CAAA,MAAA,CAAA,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,IAAI,CACbF,qBAAM,CAAC,MAAM,EACb,eAAe,CAAC,OAAO,CAAC,EACxB,YAAY,CAAC,IAAI,CAAC,EAClB,EAAE,CAACA,qBAAM,CAAC,gBAAgB,CAAC,GAAG,OAAO,EAAE,EACvC,SAAS,CACV,EACD,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,GAAG,QAAQ,IAAI,OAAO,GAAG,SAAS,EAAA,eAAA,EACrC,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACpE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,EAAA,WAAA,EAC1B,OAAO,IAAI,SAAS,EAAA,EAC3B,SAAS,EAAA,EAAA,QAAA,EAAA,CAEZ,OAAO,IAAIG,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAEH,qBAAM,CAAC,OAAO,EAAA,aAAA,EAAc,MAAM,GAAG,EACjE,QAAQ,CAAA,EAAA,CAAA,CACC;AAEhB,CAAC;AAED,MAAM,CAAC,WAAW,GAAG,QAAQ;;;;"}
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var styles = {"checkbox-container":"checkbox-module_checkbox-container__ljwCZ","checkbox":"checkbox-module_checkbox__-voPf","checkbox-sm":"checkbox-module_checkbox-sm__W4Bsc","checkbox-md":"checkbox-module_checkbox-md__GtRQX","checkbox-lg":"checkbox-module_checkbox-lg__Hl7wJ","checkbox-box":"checkbox-module_checkbox-box__1KZI9","checkbox-disabled":"checkbox-module_checkbox-disabled__e9Ufr","check-icon":"checkbox-module_check-icon__O2v-a","indeterminate-icon":"checkbox-module_indeterminate-icon__ujYHN","label":"checkbox-module_label__4jx3z","visually-hidden":"checkbox-module_visually-hidden__1AzKx"};
7
+
8
+ exports.default = styles;
9
+ //# sourceMappingURL=checkbox.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -0,0 +1,49 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var tslib = require('tslib');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+ var clsx = require('clsx');
9
+ var React = require('react');
10
+ var index = require('../Icons/index.js');
11
+ var checkbox_module = require('./checkbox.module.css.js');
12
+
13
+ const SizeClassMap = {
14
+ sm: checkbox_module.default['checkbox-sm'],
15
+ md: checkbox_module.default['checkbox-md'],
16
+ lg: checkbox_module.default['checkbox-lg']
17
+ };
18
+ const Checkbox = React.forwardRef(function Checkbox(_a, forwardedRef) {
19
+ var { label, hideLabel = false, size = 'md', indeterminate = false, className, style, id, disabled = false } = _a, inputProps = tslib.__rest(_a, ["label", "hideLabel", "size", "indeterminate", "className", "style", "id", "disabled"]);
20
+ const generatedId = React.useId();
21
+ const inputId = id !== null && id !== void 0 ? id : generatedId;
22
+ const internalRef = React.useRef(null);
23
+ React.useLayoutEffect(() => {
24
+ if (internalRef.current) {
25
+ internalRef.current.indeterminate = indeterminate;
26
+ }
27
+ }, [indeterminate]);
28
+ const setRef = (node) => {
29
+ internalRef.current = node;
30
+ if (node) {
31
+ node.indeterminate = indeterminate;
32
+ }
33
+ if (typeof forwardedRef === 'function') {
34
+ forwardedRef(node);
35
+ }
36
+ else if (forwardedRef) {
37
+ forwardedRef.current = node;
38
+ }
39
+ };
40
+ return (jsxRuntime.jsxs("div", { className: clsx(checkbox_module.default['checkbox-container'], className), style: style, children: [jsxRuntime.jsxs("span", { className: clsx(checkbox_module.default.checkbox, SizeClassMap[size], {
41
+ [checkbox_module.default['checkbox-disabled']]: disabled
42
+ }), "aria-disabled": disabled || undefined, children: [jsxRuntime.jsx("input", Object.assign({ type: 'checkbox', id: inputId, disabled: disabled, ref: setRef, "aria-checked": indeterminate ? 'mixed' : undefined }, inputProps)), jsxRuntime.jsxs("span", { className: checkbox_module.default['checkbox-box'], "aria-hidden": 'true', children: [jsxRuntime.jsx(index.CheckIcon, { className: checkbox_module.default['check-icon'], strokeWidth: 'bold', size: 'md' }), jsxRuntime.jsx(index.MinusIcon, { className: checkbox_module.default['indeterminate-icon'], strokeWidth: 'bold', size: 'md' })] })] }), jsxRuntime.jsx("label", { htmlFor: inputId, className: clsx(checkbox_module.default.label, {
43
+ [checkbox_module.default['visually-hidden']]: hideLabel
44
+ }), children: label })] }));
45
+ });
46
+ Checkbox.displayName = 'Checkbox';
47
+
48
+ exports.default = Checkbox;
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/Checkbox/index.tsx"],"sourcesContent":[null],"names":["styles","__rest","useId","useRef","useLayoutEffect","_jsxs","_jsx","CheckIcon","MinusIcon"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var styles = {"chip-outlined":"chip-module_chip-outlined__nsWch","chip-default":"chip-module_chip-default__W71L9","chip-default-clickable":"chip-module_chip-default-clickable__xqeqN","chip-outlined-clickable":"chip-module_chip-outlined-clickable__slYmY","chip-text":"chip-module_chip-text__VIJnW"};
7
+
8
+ exports.default = styles;
9
+ //# sourceMappingURL=chip.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chip.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -0,0 +1,48 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var tslib = require('tslib');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+ var clsx = require('clsx');
9
+ var React = require('react');
10
+ var chip_module = require('./chip.module.css.js');
11
+
12
+ const VariantDefaultMap = {
13
+ default: chip_module.default['chip-default'],
14
+ outlined: chip_module.default['chip-outlined']
15
+ };
16
+ const VariantClickableMap = {
17
+ default: chip_module.default['chip-default-clickable'],
18
+ outlined: chip_module.default['chip-outlined-clickable']
19
+ };
20
+ const Chip = React.forwardRef(function Chip(_a, ref) {
21
+ var { label, onClick, as, style, className, variant = 'default' } = _a, elementProps = tslib.__rest(_a, ["label", "onClick", "as", "style", "className", "variant"]);
22
+ const resolvedElement = as !== null && as !== void 0 ? as : (onClick ? 'button' : 'span');
23
+ const Component = resolvedElement;
24
+ const href = resolvedElement === 'a'
25
+ ? elementProps.href
26
+ : undefined;
27
+ const hasHref = typeof href === 'string' && href.trim().length > 0;
28
+ const isInteractive = resolvedElement === 'button' ||
29
+ (resolvedElement === 'a' && hasHref) ||
30
+ Boolean(onClick);
31
+ const isNonNativeInteractive = isInteractive && resolvedElement !== 'button' && resolvedElement !== 'a';
32
+ const handleKeyDown = isNonNativeInteractive
33
+ ? (event) => {
34
+ if (event.key === 'Enter' || event.key === ' ') {
35
+ event.preventDefault();
36
+ event.currentTarget.click();
37
+ }
38
+ }
39
+ : undefined;
40
+ const classes = clsx(VariantDefaultMap[variant], {
41
+ [VariantClickableMap[variant]]: isInteractive
42
+ }, className);
43
+ return (jsxRuntime.jsx(Component, Object.assign({}, elementProps, { ref: ref, className: classes, onClick: onClick, style: style, type: resolvedElement === 'button' ? 'button' : undefined, role: isNonNativeInteractive ? 'button' : undefined, tabIndex: isNonNativeInteractive ? 0 : undefined, onKeyDown: isNonNativeInteractive ? handleKeyDown : undefined, children: jsxRuntime.jsx("span", { className: chip_module.default['chip-text'], children: label }) })));
44
+ });
45
+ Chip.displayName = 'Chip';
46
+
47
+ exports.default = Chip;
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/Chip/index.tsx"],"sourcesContent":[null],"names":["styles","__rest","_jsx"],"mappings":";;;;;;;;;;;AA+BA,MAAM,iBAAiB,GAA4B;AACjD,IAAA,OAAO,EAAEA,mBAAM,CAAC,cAAc,CAAC;AAC/B,IAAA,QAAQ,EAAEA,mBAAM,CAAC,eAAe;CACjC;AAED,MAAM,mBAAmB,GAA4B;AACnD,IAAA,OAAO,EAAEA,mBAAM,CAAC,wBAAwB,CAAC;AACzC,IAAA,QAAQ,EAAEA,mBAAM,CAAC,yBAAyB;CAC3C;AAMD,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,IAAI,CACzC,EAQyB,EACzB,GAAgC,EAAA;AAThC,IAAA,IAAA,EACE,KAAK,EACL,OAAO,EACP,EAAE,EACF,KAAK,EACL,SAAS,EACT,OAAO,GAAG,SAAS,EAAA,GAAA,EAEI,EADpB,YAAY,GAAAC,YAAA,CAAA,EAAA,EAPjB,2DAQC,CADgB;AAIjB,IAAA,MAAM,eAAe,GAAG,EAAE,aAAF,EAAE,KAAA,MAAA,GAAF,EAAE,IAAK,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC3D,MAAM,SAAS,GAAG,eAAoC;AACtD,IAAA,MAAM,IAAI,GACR,eAAe,KAAK;UACf,YAA8D,CAAC;UAChE,SAAS;AACf,IAAA,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;AAClE,IAAA,MAAM,aAAa,GACjB,eAAe,KAAK,QAAQ;AAC5B,SAAC,eAAe,KAAK,GAAG,IAAI,OAAO,CAAC;QACpC,OAAO,CAAC,OAAO,CAAC;IAElB,MAAM,sBAAsB,GAC1B,aAAa,IAAI,eAAe,KAAK,QAAQ,IAAI,eAAe,KAAK,GAAG;IAE1E,MAAM,aAAa,GAAG;AACpB,UAAE,CAAC,KAA0B,KAAI;AAC7B,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBAC9C,KAAK,CAAC,cAAc,EAAE;AACrB,gBAAA,KAAK,CAAC,aAA6B,CAAC,KAAK,EAAE;YAC9C;QACF;UACA,SAAS;IAEb,MAAM,OAAO,GAAG,IAAI,CAClB,iBAAiB,CAAC,OAAO,CAAC,EAC1B;AACE,QAAA,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG;KACjC,EACD,SAAS,CACV;AAED,IAAA,QACEC,cAAA,CAAC,SAAS,oBACJ,YAAY,EAAA,EAChB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,eAAe,KAAK,QAAQ,GAAG,QAAQ,GAAG,SAAS,EACzD,IAAI,EAAE,sBAAsB,GAAG,QAAQ,GAAG,SAAS,EACnD,QAAQ,EAAE,sBAAsB,GAAG,CAAC,GAAG,SAAS,EAChD,SAAS,EAAE,sBAAsB,GAAG,aAAa,GAAG,SAAS,EAAA,QAAA,EAE7DA,yBAAM,SAAS,EAAEF,mBAAM,CAAC,WAAW,CAAC,EAAA,QAAA,EAAG,KAAK,EAAA,CAAQ,EAAA,CAAA,CAC1C;AAEhB,CAAC;AAED,IAAI,CAAC,WAAW,GAAG,MAAM;;;;"}
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var styles = {"dialog_root":"dialog-module_dialog_root__jMqkW","dialog_content":"dialog-module_dialog_content__0IqkB","dialog_header":"dialog-module_dialog_header__VSRxM","dialog_title":"dialog-module_dialog_title__Mw7jc","dialog_close":"dialog-module_dialog_close__tuhJi","dialog_close_icon":"dialog-module_dialog_close_icon__5hPpw","dialog_description":"dialog-module_dialog_description__fh-8z","dialog_body":"dialog-module_dialog_body__5qjkS"};
7
+
8
+ exports.default = styles;
9
+ //# sourceMappingURL=dialog.module.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}