premium-ds 0.1.0

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 (257) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +113 -0
  3. package/dist/alert.d.ts +31 -0
  4. package/dist/alert.js +6 -0
  5. package/dist/alert.js.map +1 -0
  6. package/dist/avatar-group.d.ts +13 -0
  7. package/dist/avatar-group.js +3 -0
  8. package/dist/avatar-group.js.map +1 -0
  9. package/dist/avatar.d.ts +25 -0
  10. package/dist/avatar.js +3 -0
  11. package/dist/avatar.js.map +1 -0
  12. package/dist/badge.d.ts +23 -0
  13. package/dist/badge.js +3 -0
  14. package/dist/badge.js.map +1 -0
  15. package/dist/button.d.ts +20 -0
  16. package/dist/button.js +3 -0
  17. package/dist/button.js.map +1 -0
  18. package/dist/checkbox.d.ts +25 -0
  19. package/dist/checkbox.js +3 -0
  20. package/dist/checkbox.js.map +1 -0
  21. package/dist/chunk-2OWHZ4JT.js +36 -0
  22. package/dist/chunk-2OWHZ4JT.js.map +1 -0
  23. package/dist/chunk-34SIXSYL.js +64 -0
  24. package/dist/chunk-34SIXSYL.js.map +1 -0
  25. package/dist/chunk-37O2ZXD6.js +55 -0
  26. package/dist/chunk-37O2ZXD6.js.map +1 -0
  27. package/dist/chunk-4AZL76UJ.js +89 -0
  28. package/dist/chunk-4AZL76UJ.js.map +1 -0
  29. package/dist/chunk-4HSCN5TZ.js +86 -0
  30. package/dist/chunk-4HSCN5TZ.js.map +1 -0
  31. package/dist/chunk-5DDOOT33.js +258 -0
  32. package/dist/chunk-5DDOOT33.js.map +1 -0
  33. package/dist/chunk-5FVHWIMY.js +117 -0
  34. package/dist/chunk-5FVHWIMY.js.map +1 -0
  35. package/dist/chunk-5K6KRJGX.js +147 -0
  36. package/dist/chunk-5K6KRJGX.js.map +1 -0
  37. package/dist/chunk-5PQMQBQC.js +74 -0
  38. package/dist/chunk-5PQMQBQC.js.map +1 -0
  39. package/dist/chunk-7OCTVQ7C.js +95 -0
  40. package/dist/chunk-7OCTVQ7C.js.map +1 -0
  41. package/dist/chunk-7OPMOET7.js +39 -0
  42. package/dist/chunk-7OPMOET7.js.map +1 -0
  43. package/dist/chunk-BXXS7YRC.js +270 -0
  44. package/dist/chunk-BXXS7YRC.js.map +1 -0
  45. package/dist/chunk-CV2Q4YXX.js +272 -0
  46. package/dist/chunk-CV2Q4YXX.js.map +1 -0
  47. package/dist/chunk-EIMMDWIW.js +282 -0
  48. package/dist/chunk-EIMMDWIW.js.map +1 -0
  49. package/dist/chunk-EZ2CWTBE.js +230 -0
  50. package/dist/chunk-EZ2CWTBE.js.map +1 -0
  51. package/dist/chunk-FGHDG3Y4.js +89 -0
  52. package/dist/chunk-FGHDG3Y4.js.map +1 -0
  53. package/dist/chunk-FPP2XLKX.js +127 -0
  54. package/dist/chunk-FPP2XLKX.js.map +1 -0
  55. package/dist/chunk-G6OY35DI.js +295 -0
  56. package/dist/chunk-G6OY35DI.js.map +1 -0
  57. package/dist/chunk-H6KWJNOE.js +65 -0
  58. package/dist/chunk-H6KWJNOE.js.map +1 -0
  59. package/dist/chunk-HGILYGY3.js +45 -0
  60. package/dist/chunk-HGILYGY3.js.map +1 -0
  61. package/dist/chunk-I3BCB4Z5.js +88 -0
  62. package/dist/chunk-I3BCB4Z5.js.map +1 -0
  63. package/dist/chunk-KBWNUUWM.js +582 -0
  64. package/dist/chunk-KBWNUUWM.js.map +1 -0
  65. package/dist/chunk-KN7JFAZ6.js +113 -0
  66. package/dist/chunk-KN7JFAZ6.js.map +1 -0
  67. package/dist/chunk-MEF7PI6U.js +16 -0
  68. package/dist/chunk-MEF7PI6U.js.map +1 -0
  69. package/dist/chunk-NKGMQL6I.js +310 -0
  70. package/dist/chunk-NKGMQL6I.js.map +1 -0
  71. package/dist/chunk-NMFQRGLL.js +127 -0
  72. package/dist/chunk-NMFQRGLL.js.map +1 -0
  73. package/dist/chunk-OUBWD6CX.js +433 -0
  74. package/dist/chunk-OUBWD6CX.js.map +1 -0
  75. package/dist/chunk-PFNXVBLU.js +96 -0
  76. package/dist/chunk-PFNXVBLU.js.map +1 -0
  77. package/dist/chunk-PUPZ4HME.js +165 -0
  78. package/dist/chunk-PUPZ4HME.js.map +1 -0
  79. package/dist/chunk-QFS52OK5.js +690 -0
  80. package/dist/chunk-QFS52OK5.js.map +1 -0
  81. package/dist/chunk-QNC6O3PG.js +45 -0
  82. package/dist/chunk-QNC6O3PG.js.map +1 -0
  83. package/dist/chunk-QUHOXWBK.js +82 -0
  84. package/dist/chunk-QUHOXWBK.js.map +1 -0
  85. package/dist/chunk-UIQGSTBJ.js +106 -0
  86. package/dist/chunk-UIQGSTBJ.js.map +1 -0
  87. package/dist/chunk-UJQKVP6V.js +193 -0
  88. package/dist/chunk-UJQKVP6V.js.map +1 -0
  89. package/dist/chunk-VVPGEAC6.js +11 -0
  90. package/dist/chunk-VVPGEAC6.js.map +1 -0
  91. package/dist/chunk-XA3T5KWA.js +58 -0
  92. package/dist/chunk-XA3T5KWA.js.map +1 -0
  93. package/dist/chunk-YSHJHSJM.js +19 -0
  94. package/dist/chunk-YSHJHSJM.js.map +1 -0
  95. package/dist/chunk-YVHOAVSM.js +182 -0
  96. package/dist/chunk-YVHOAVSM.js.map +1 -0
  97. package/dist/collapse.d.ts +16 -0
  98. package/dist/collapse.js +3 -0
  99. package/dist/collapse.js.map +1 -0
  100. package/dist/count-badge.d.ts +11 -0
  101. package/dist/count-badge.js +4 -0
  102. package/dist/count-badge.js.map +1 -0
  103. package/dist/date-field.d.ts +39 -0
  104. package/dist/date-field.js +8 -0
  105. package/dist/date-field.js.map +1 -0
  106. package/dist/date-range-field.d.ts +30 -0
  107. package/dist/date-range-field.js +8 -0
  108. package/dist/date-range-field.js.map +1 -0
  109. package/dist/datetime-field.d.ts +28 -0
  110. package/dist/datetime-field.js +10 -0
  111. package/dist/datetime-field.js.map +1 -0
  112. package/dist/dialog.d.ts +26 -0
  113. package/dist/dialog.js +7 -0
  114. package/dist/dialog.js.map +1 -0
  115. package/dist/index.d.ts +35 -0
  116. package/dist/index.js +40 -0
  117. package/dist/index.js.map +1 -0
  118. package/dist/motion-tokens.d.ts +29 -0
  119. package/dist/motion-tokens.js +3 -0
  120. package/dist/motion-tokens.js.map +1 -0
  121. package/dist/multi-select.d.ts +25 -0
  122. package/dist/multi-select.js +7 -0
  123. package/dist/multi-select.js.map +1 -0
  124. package/dist/number-field.d.ts +24 -0
  125. package/dist/number-field.js +4 -0
  126. package/dist/number-field.js.map +1 -0
  127. package/dist/otp-field.d.ts +20 -0
  128. package/dist/otp-field.js +3 -0
  129. package/dist/otp-field.js.map +1 -0
  130. package/dist/overlay.d.ts +31 -0
  131. package/dist/overlay.js +4 -0
  132. package/dist/overlay.js.map +1 -0
  133. package/dist/pagination.d.ts +24 -0
  134. package/dist/pagination.js +5 -0
  135. package/dist/pagination.js.map +1 -0
  136. package/dist/radio-group.d.ts +46 -0
  137. package/dist/radio-group.js +6 -0
  138. package/dist/radio-group.js.map +1 -0
  139. package/dist/select-core-SAyS-8w0.d.ts +16 -0
  140. package/dist/select.d.ts +27 -0
  141. package/dist/select.js +7 -0
  142. package/dist/select.js.map +1 -0
  143. package/dist/status-badge.d.ts +17 -0
  144. package/dist/status-badge.js +5 -0
  145. package/dist/status-badge.js.map +1 -0
  146. package/dist/table.d.ts +65 -0
  147. package/dist/table.js +5 -0
  148. package/dist/table.js.map +1 -0
  149. package/dist/tabs.d.ts +44 -0
  150. package/dist/tabs.js +5 -0
  151. package/dist/tabs.js.map +1 -0
  152. package/dist/tag.d.ts +28 -0
  153. package/dist/tag.js +5 -0
  154. package/dist/tag.js.map +1 -0
  155. package/dist/text-field.d.ts +30 -0
  156. package/dist/text-field.js +6 -0
  157. package/dist/text-field.js.map +1 -0
  158. package/dist/textarea.d.ts +33 -0
  159. package/dist/textarea.js +5 -0
  160. package/dist/textarea.js.map +1 -0
  161. package/dist/time-field.d.ts +27 -0
  162. package/dist/time-field.js +6 -0
  163. package/dist/time-field.js.map +1 -0
  164. package/dist/toast-store.d.ts +75 -0
  165. package/dist/toast-store.js +3 -0
  166. package/dist/toast-store.js.map +1 -0
  167. package/dist/toast.d.ts +3 -0
  168. package/dist/toast.js +6 -0
  169. package/dist/toast.js.map +1 -0
  170. package/dist/toggle-tag.d.ts +24 -0
  171. package/dist/toggle-tag.js +4 -0
  172. package/dist/toggle-tag.js.map +1 -0
  173. package/dist/toggle.d.ts +21 -0
  174. package/dist/toggle.js +3 -0
  175. package/dist/toggle.js.map +1 -0
  176. package/dist/tooltip.d.ts +27 -0
  177. package/dist/tooltip.js +4 -0
  178. package/dist/tooltip.js.map +1 -0
  179. package/llms.txt +165 -0
  180. package/package.json +205 -0
  181. package/src/components/alert/Alert.tsx +118 -0
  182. package/src/components/alert/alert.css +136 -0
  183. package/src/components/avatar/Avatar.tsx +128 -0
  184. package/src/components/avatar/AvatarGroup.tsx +50 -0
  185. package/src/components/avatar/avatar.css +200 -0
  186. package/src/components/badge/Badge.tsx +66 -0
  187. package/src/components/badge/CountBadge.tsx +46 -0
  188. package/src/components/badge/StatusBadge.tsx +132 -0
  189. package/src/components/badge/badge.css +243 -0
  190. package/src/components/button/Button.tsx +68 -0
  191. package/src/components/button/button.css +222 -0
  192. package/src/components/checkbox/Checkbox.tsx +90 -0
  193. package/src/components/checkbox/checkbox.css +179 -0
  194. package/src/components/date-picker/DateField.tsx +362 -0
  195. package/src/components/date-picker/DateRangeField.tsx +533 -0
  196. package/src/components/date-picker/DateTimeField.tsx +177 -0
  197. package/src/components/date-picker/TimeField.tsx +100 -0
  198. package/src/components/date-picker/date-picker.css +591 -0
  199. package/src/components/date-picker/date-utils.ts +55 -0
  200. package/src/components/date-picker/field-shell.tsx +78 -0
  201. package/src/components/date-picker/glide-pill.tsx +81 -0
  202. package/src/components/date-picker/time-core.tsx +305 -0
  203. package/src/components/dialog/Dialog.tsx +181 -0
  204. package/src/components/dialog/dialog.css +170 -0
  205. package/src/components/glass/glass.css +100 -0
  206. package/src/components/icon/Icon.tsx +76 -0
  207. package/src/components/icon/IconSlot.tsx +11 -0
  208. package/src/components/icon/icon.css +33 -0
  209. package/src/components/input/NumberField.tsx +117 -0
  210. package/src/components/input/OtpField.tsx +118 -0
  211. package/src/components/input/TextField.tsx +123 -0
  212. package/src/components/input/input.css +335 -0
  213. package/src/components/motion/Collapse.tsx +33 -0
  214. package/src/components/motion/collapse.css +41 -0
  215. package/src/components/overlay/Overlay.tsx +239 -0
  216. package/src/components/overlay/overlay-core.tsx +565 -0
  217. package/src/components/overlay/overlay.css +119 -0
  218. package/src/components/overlay/sheet-drag.tsx +146 -0
  219. package/src/components/pagination/Pagination.tsx +140 -0
  220. package/src/components/pagination/pagination.css +48 -0
  221. package/src/components/radio-group/RadioGroup.tsx +182 -0
  222. package/src/components/radio-group/radio-group.css +277 -0
  223. package/src/components/select/MultiSelect.tsx +251 -0
  224. package/src/components/select/Select.tsx +235 -0
  225. package/src/components/select/select-core.tsx +417 -0
  226. package/src/components/select/select.css +386 -0
  227. package/src/components/table/Table.tsx +433 -0
  228. package/src/components/table/table.css +348 -0
  229. package/src/components/tabs/Tabs.tsx +371 -0
  230. package/src/components/tabs/tabs.css +228 -0
  231. package/src/components/tag/Tag.tsx +145 -0
  232. package/src/components/tag/ToggleTag.tsx +125 -0
  233. package/src/components/tag/tag.css +248 -0
  234. package/src/components/textarea/Textarea.tsx +197 -0
  235. package/src/components/textarea/textarea.css +219 -0
  236. package/src/components/toast/Toast.tsx +349 -0
  237. package/src/components/toast/toast-store.ts +266 -0
  238. package/src/components/toast/toast.css +233 -0
  239. package/src/components/toggle/Toggle.tsx +94 -0
  240. package/src/components/toggle/toggle.css +152 -0
  241. package/src/components/tooltip/Tooltip.tsx +365 -0
  242. package/src/components/tooltip/tooltip.css +86 -0
  243. package/src/index.ts +42 -0
  244. package/src/styles.css +39 -0
  245. package/src/tokens/avatar.css +20 -0
  246. package/src/tokens/color.css +56 -0
  247. package/src/tokens/elevation.css +20 -0
  248. package/src/tokens/fonts.css +3 -0
  249. package/src/tokens/glass.css +21 -0
  250. package/src/tokens/icons.css +7 -0
  251. package/src/tokens/layers.css +6 -0
  252. package/src/tokens/motion-tokens.ts +72 -0
  253. package/src/tokens/motion.css +49 -0
  254. package/src/tokens/radius.css +11 -0
  255. package/src/tokens/semantic.css +75 -0
  256. package/src/tokens/spacing.css +26 -0
  257. package/src/tokens/typography.css +54 -0
package/dist/index.js ADDED
@@ -0,0 +1,40 @@
1
+ 'use client';export { TimeField } from './chunk-34SIXSYL.js';
2
+ export { TabPanel, Tabs } from './chunk-EZ2CWTBE.js';
3
+ export { Dialog } from './chunk-FPP2XLKX.js';
4
+ export { Tooltip, TooltipHost } from './chunk-BXXS7YRC.js';
5
+ export { Alert } from './chunk-H6KWJNOE.js';
6
+ export { Toaster } from './chunk-NKGMQL6I.js';
7
+ export { UIToast, toast } from './chunk-PUPZ4HME.js';
8
+ export { Checkbox } from './chunk-XA3T5KWA.js';
9
+ export { Toggle } from './chunk-5PQMQBQC.js';
10
+ export { RadioGroup } from './chunk-KN7JFAZ6.js';
11
+ export { Select } from './chunk-YVHOAVSM.js';
12
+ export { MultiSelect } from './chunk-UJQKVP6V.js';
13
+ import './chunk-G6OY35DI.js';
14
+ export { DateTimeField } from './chunk-NMFQRGLL.js';
15
+ import './chunk-5DDOOT33.js';
16
+ export { DateField, DtpPanel } from './chunk-CV2Q4YXX.js';
17
+ export { DateRangeField } from './chunk-OUBWD6CX.js';
18
+ import './chunk-UIQGSTBJ.js';
19
+ import './chunk-QNC6O3PG.js';
20
+ export { Overlay } from './chunk-QFS52OK5.js';
21
+ export { Tag, TagGroup } from './chunk-PFNXVBLU.js';
22
+ export { ToggleTag } from './chunk-4AZL76UJ.js';
23
+ export { Table } from './chunk-EIMMDWIW.js';
24
+ export { Pagination } from './chunk-5FVHWIMY.js';
25
+ export { TextField } from './chunk-QUHOXWBK.js';
26
+ import './chunk-VVPGEAC6.js';
27
+ export { NumberField } from './chunk-FGHDG3Y4.js';
28
+ export { OtpField } from './chunk-7OCTVQ7C.js';
29
+ export { Textarea } from './chunk-5K6KRJGX.js';
30
+ import './chunk-KBWNUUWM.js';
31
+ export { Button } from './chunk-HGILYGY3.js';
32
+ export { Collapse } from './chunk-YSHJHSJM.js';
33
+ export { POST_STATUS, StatusBadge } from './chunk-4HSCN5TZ.js';
34
+ export { UIMotion } from './chunk-37O2ZXD6.js';
35
+ export { CountBadge } from './chunk-MEF7PI6U.js';
36
+ export { Badge } from './chunk-2OWHZ4JT.js';
37
+ export { Avatar } from './chunk-I3BCB4Z5.js';
38
+ export { AvatarGroup } from './chunk-7OPMOET7.js';
39
+ //# sourceMappingURL=index.js.map
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,29 @@
1
+ import { Transition } from 'motion/react';
2
+
3
+ type Bezier = [number, number, number, number];
4
+ interface MotionTokens {
5
+ /** seconds - fast 0.12 - base 0.18 - slow 0.26 */
6
+ dur: {
7
+ fast: number;
8
+ base: number;
9
+ slow: number;
10
+ };
11
+ ease: {
12
+ standard: Bezier;
13
+ entrance: Bezier;
14
+ exit: Bezier;
15
+ spring: Bezier;
16
+ glide: Bezier;
17
+ };
18
+ /** ready-made Motion transitions */
19
+ t: {
20
+ enter: Transition;
21
+ exit: Transition;
22
+ layout: Transition;
23
+ settle: Transition;
24
+ };
25
+ reduced: boolean;
26
+ }
27
+ declare const UIMotion: MotionTokens;
28
+
29
+ export { type Bezier, type MotionTokens, UIMotion, UIMotion as default };
@@ -0,0 +1,3 @@
1
+ export { UIMotion, motion_tokens_default as default } from './chunk-37O2ZXD6.js';
2
+ //# sourceMappingURL=motion-tokens.js.map
3
+ //# sourceMappingURL=motion-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"motion-tokens.js"}
@@ -0,0 +1,25 @@
1
+ import * as React from 'react';
2
+ import { a as SelectOption, S as SelectGroup } from './select-core-SAyS-8w0.js';
3
+
4
+ interface MultiSelectProps {
5
+ options: SelectOption[] | SelectGroup[];
6
+ /** Controlled value. */
7
+ value?: string[];
8
+ defaultValue?: string[];
9
+ /** Fires with the NEXT array and the option that was toggled. */
10
+ onChange?: (value: string[], toggled: SelectOption) => void;
11
+ placeholder?: string;
12
+ size?: 'sm' | 'default' | 'lg';
13
+ disabled?: boolean;
14
+ invalid?: boolean;
15
+ loading?: boolean;
16
+ searchable?: boolean;
17
+ searchPlaceholder?: string;
18
+ /** Your own icon node pinned before the trigger label. */
19
+ leadingIcon?: React.ReactNode;
20
+ id?: string;
21
+ ariaLabel?: string;
22
+ }
23
+ declare function MultiSelect({ options, value: controlledValue, defaultValue, onChange, placeholder, size, disabled, invalid, loading, searchable, searchPlaceholder, leadingIcon, id, ariaLabel, }: MultiSelectProps): React.JSX.Element;
24
+
25
+ export { MultiSelect, type MultiSelectProps };
@@ -0,0 +1,7 @@
1
+ 'use client';export { MultiSelect } from './chunk-UJQKVP6V.js';
2
+ import './chunk-G6OY35DI.js';
3
+ import './chunk-VVPGEAC6.js';
4
+ import './chunk-KBWNUUWM.js';
5
+ import './chunk-37O2ZXD6.js';
6
+ //# sourceMappingURL=multi-select.js.map
7
+ //# sourceMappingURL=multi-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"multi-select.js"}
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ import { InputHTMLAttributes, ReactNode } from 'react';
3
+
4
+ interface NumberFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'value' | 'onChange' | 'min' | 'max' | 'step'> {
5
+ id?: string;
6
+ label?: ReactNode;
7
+ helper?: ReactNode;
8
+ /** Error message + error state. */
9
+ error?: ReactNode;
10
+ /** Unit suffix shown inside the field (e.g. "days", "%"). */
11
+ unit?: string;
12
+ /** Bounds + step. Steppers disable at min/max; value clamps on blur. */
13
+ min?: number;
14
+ max?: number;
15
+ step?: number;
16
+ /** Controlled numeric value. */
17
+ value?: number | string;
18
+ /** Called with the next clamped number. */
19
+ onChange?: (value: number) => void;
20
+ size?: 'sm' | 'md' | 'lg';
21
+ }
22
+ declare function NumberField({ id, label, helper, error, unit, min, max, step, value, onChange, size, className, ...rest }: NumberFieldProps): React.JSX.Element;
23
+
24
+ export { NumberField, type NumberFieldProps };
@@ -0,0 +1,4 @@
1
+ 'use client';export { NumberField } from './chunk-FGHDG3Y4.js';
2
+ import './chunk-KBWNUUWM.js';
3
+ //# sourceMappingURL=number-field.js.map
4
+ //# sourceMappingURL=number-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"number-field.js"}
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+
3
+ interface OtpFieldProps {
4
+ /** Number of slots. @default 6 */
5
+ length?: number;
6
+ /** Controlled value (digit string). */
7
+ value?: string;
8
+ /** Called with the next value string. */
9
+ onChange?: (value: string) => void;
10
+ /** Insert a separator every N slots (e.g. 3 - "-------"). */
11
+ group?: number;
12
+ /** Error state (red slots + ring). */
13
+ error?: boolean;
14
+ disabled?: boolean;
15
+ size?: 'sm';
16
+ className?: string;
17
+ }
18
+ declare function OtpField({ length, value, onChange, group, error, disabled, size, className, }: OtpFieldProps): React.JSX.Element;
19
+
20
+ export { OtpField, type OtpFieldProps };
@@ -0,0 +1,3 @@
1
+ 'use client';export { OtpField } from './chunk-7OCTVQ7C.js';
2
+ //# sourceMappingURL=otp-field.js.map
3
+ //# sourceMappingURL=otp-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"otp-field.js"}
@@ -0,0 +1,31 @@
1
+ import * as React from 'react';
2
+
3
+ interface OverlayProps {
4
+ /** Skin + modality. Default 'popover'. */
5
+ mode?: 'popover' | 'dialog' | 'sheet';
6
+ /** Controlled open state. Omit to stay uncontrolled. */
7
+ open?: boolean;
8
+ /** Initial state when uncontrolled. Default false. */
9
+ defaultOpen?: boolean;
10
+ onOpenChange?: (open: boolean) => void;
11
+ /** Cloned to toggle (popover) / open (modal); required as the popover anchor. */
12
+ trigger?: React.ReactElement | null;
13
+ /** Popover side (default 'bottom', flips) / sheet edge (default 'right'). */
14
+ side?: 'top' | 'bottom' | 'left' | 'right';
15
+ /** Popover only - cross-axis alignment. Default 'start'. */
16
+ align?: 'start' | 'center' | 'end';
17
+ /** Popover only - caret tracking the trigger center. */
18
+ arrow?: boolean;
19
+ /** Light/scrim + Esc dismissal (sheet adds drag-to-edge). Default true. */
20
+ dismissible?: boolean;
21
+ /** Render no wrapper - your DOM-element child becomes the panel. Default false. */
22
+ asChild?: boolean;
23
+ id?: string;
24
+ /** The ENTIRE surface - paint AND semantics. Function form receives { close }. */
25
+ children: React.ReactNode | ((api: {
26
+ close: () => void;
27
+ }) => React.ReactNode);
28
+ }
29
+ declare function Overlay({ mode, open: controlledOpen, defaultOpen, onOpenChange, trigger, side, align, arrow, dismissible, asChild, id, children, }: OverlayProps): React.JSX.Element;
30
+
31
+ export { Overlay, type OverlayProps };
@@ -0,0 +1,4 @@
1
+ 'use client';export { Overlay } from './chunk-QFS52OK5.js';
2
+ import './chunk-37O2ZXD6.js';
3
+ //# sourceMappingURL=overlay.js.map
4
+ //# sourceMappingURL=overlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"overlay.js"}
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+
3
+ interface PaginationProps {
4
+ /** Accessible name for the nav landmark - name the list ("Posts"), not "pagination". @default 'Pagination' */
5
+ label?: string;
6
+ /** Items currently shown, 1-based inclusive: `[from, to]` (e.g. `[26, 50]`). */
7
+ range: [number, number];
8
+ /** Total item count - render `of N` only when the API reports one; omit for endless lists. */
9
+ total?: number | null;
10
+ /** A previous cursor exists. @default false */
11
+ hasPrev?: boolean;
12
+ /** A next cursor exists. @default false */
13
+ hasNext?: boolean;
14
+ /** Fired when the previous arrow is pressed. */
15
+ onPrev?: () => void;
16
+ /** Fired when the next arrow is pressed. */
17
+ onNext?: () => void;
18
+ /** A page fetch is in flight: both arrows go inert, the clicked arrow carries the spinner. @default false */
19
+ loading?: boolean;
20
+ className?: string;
21
+ }
22
+ declare function Pagination({ label, range, total, hasPrev, hasNext, onPrev, onNext, loading, className, }: PaginationProps): React.JSX.Element;
23
+
24
+ export { Pagination, type PaginationProps };
@@ -0,0 +1,5 @@
1
+ 'use client';export { Pagination } from './chunk-5FVHWIMY.js';
2
+ import './chunk-KBWNUUWM.js';
3
+ import './chunk-37O2ZXD6.js';
4
+ //# sourceMappingURL=pagination.js.map
5
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"pagination.js"}
@@ -0,0 +1,46 @@
1
+ import * as React from 'react';
2
+
3
+ interface RadioOption {
4
+ /** The stored value - what `onChange` returns and `value` matches. */
5
+ value: string;
6
+ /** Visible label (sentence case). */
7
+ label: React.ReactNode;
8
+ /** Optional secondary line (muted) explaining the choice. */
9
+ description?: React.ReactNode;
10
+ /** Leading icon - your own node. CARDS only; ignored for rows. */
11
+ icon?: React.ReactNode;
12
+ /** Disable just this option. */
13
+ disabled?: boolean;
14
+ }
15
+ interface RadioGroupProps extends Omit<React.FieldsetHTMLAttributes<HTMLFieldSetElement>, 'onChange'> {
16
+ /** Shared radio name - ties the options into one keyboard group. Required. */
17
+ name: string;
18
+ /** The selected value (controlled). */
19
+ value?: string;
20
+ /** Called with the chosen option's `value`. */
21
+ onChange?: (value: string) => void;
22
+ /** Group label / legend (sentence case). */
23
+ label?: React.ReactNode;
24
+ /** Persistent context shown under the legend, before the options. */
25
+ helper?: React.ReactNode;
26
+ /** Group-level error (e.g. required). Sets the error state + reveals the message. */
27
+ error?: React.ReactNode;
28
+ /** Show a danger `*` after the label. */
29
+ required?: boolean;
30
+ /** Show a muted "(optional)" after the label. */
31
+ optional?: boolean;
32
+ /** Skin: quiet rows (default) or selectable cards. */
33
+ variant?: 'rows' | 'cards';
34
+ /** Lay options out in a line instead of a stack. */
35
+ orientation?: 'vertical' | 'horizontal';
36
+ /** Control size: sm (dot 16) - md (default, dot 18). */
37
+ size?: 'sm' | 'md';
38
+ /** Disable the whole group. */
39
+ disabled?: boolean;
40
+ /** The options to choose between. */
41
+ options: RadioOption[];
42
+ className?: string;
43
+ }
44
+ declare function RadioGroup({ name, value, onChange, label, helper, error, required, optional, variant, orientation, size, disabled, options, className, ...rest }: RadioGroupProps): React.JSX.Element;
45
+
46
+ export { RadioGroup, type RadioGroupProps, type RadioOption };
@@ -0,0 +1,6 @@
1
+ 'use client';export { RadioGroup } from './chunk-KN7JFAZ6.js';
2
+ import './chunk-VVPGEAC6.js';
3
+ import './chunk-KBWNUUWM.js';
4
+ import './chunk-37O2ZXD6.js';
5
+ //# sourceMappingURL=radio-group.js.map
6
+ //# sourceMappingURL=radio-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"radio-group.js"}
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+
3
+ interface SelectOption {
4
+ value: string;
5
+ label: string;
6
+ description?: string;
7
+ /** Your own icon node shown before the label. */
8
+ icon?: React.ReactNode;
9
+ disabled?: boolean;
10
+ }
11
+ interface SelectGroup {
12
+ label?: string;
13
+ options: SelectOption[];
14
+ }
15
+
16
+ export type { SelectGroup as S, SelectOption as a };
@@ -0,0 +1,27 @@
1
+ import * as React from 'react';
2
+ import { a as SelectOption, S as SelectGroup } from './select-core-SAyS-8w0.js';
3
+
4
+ interface SelectProps {
5
+ options: SelectOption[] | SelectGroup[];
6
+ /** Controlled value. */
7
+ value?: string | null;
8
+ defaultValue?: string | null;
9
+ onChange?: (value: string, option: SelectOption) => void;
10
+ placeholder?: string;
11
+ size?: 'sm' | 'default' | 'lg';
12
+ disabled?: boolean;
13
+ /** Danger ring + border. */
14
+ invalid?: boolean;
15
+ /** Skeleton rows in the menu; trigger reads "Loading...". */
16
+ loading?: boolean;
17
+ /** Type-to-filter field pinned above the list. */
18
+ searchable?: boolean;
19
+ searchPlaceholder?: string;
20
+ /** Your own icon node pinned before the trigger label; else the selected option's icon. */
21
+ leadingIcon?: React.ReactNode;
22
+ id?: string;
23
+ ariaLabel?: string;
24
+ }
25
+ declare function Select({ options, value: controlledValue, defaultValue, onChange, placeholder, size, disabled, invalid, loading, searchable, searchPlaceholder, leadingIcon, id, ariaLabel, }: SelectProps): React.JSX.Element;
26
+
27
+ export { Select, type SelectProps };
package/dist/select.js ADDED
@@ -0,0 +1,7 @@
1
+ 'use client';export { Select } from './chunk-YVHOAVSM.js';
2
+ import './chunk-G6OY35DI.js';
3
+ import './chunk-VVPGEAC6.js';
4
+ import './chunk-KBWNUUWM.js';
5
+ import './chunk-37O2ZXD6.js';
6
+ //# sourceMappingURL=select.js.map
7
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"select.js"}
@@ -0,0 +1,17 @@
1
+ import * as React from 'react';
2
+ import { BadgeProps } from './badge.js';
3
+
4
+ type PostStatus = 'draft' | 'scheduled' | 'processing' | 'published' | 'failed';
5
+ declare const POST_STATUS: Record<PostStatus, {
6
+ tone: BadgeProps['tone'];
7
+ label: string;
8
+ live?: boolean;
9
+ }>;
10
+ interface StatusBadgeProps extends Omit<BadgeProps, 'children' | 'tone'> {
11
+ status: PostStatus;
12
+ /** Morph in place as `status` changes instead of swapping. */
13
+ morph?: boolean;
14
+ }
15
+ declare function StatusBadge({ status, morph, ...rest }: StatusBadgeProps): React.JSX.Element;
16
+
17
+ export { POST_STATUS, type PostStatus, StatusBadge, type StatusBadgeProps };
@@ -0,0 +1,5 @@
1
+ 'use client';export { POST_STATUS, StatusBadge } from './chunk-4HSCN5TZ.js';
2
+ import './chunk-37O2ZXD6.js';
3
+ import './chunk-2OWHZ4JT.js';
4
+ //# sourceMappingURL=status-badge.js.map
5
+ //# sourceMappingURL=status-badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"status-badge.js"}
@@ -0,0 +1,65 @@
1
+ import * as React from 'react';
2
+
3
+ type TableAlign = 'start' | 'end' | 'center';
4
+ type TableHideBelow = 'sm' | 'md';
5
+ interface TableColumn<Row = any> {
6
+ /** Unique column id; also the default data accessor (row[key]). */
7
+ key: string;
8
+ label?: React.ReactNode;
9
+ /** Cell + header alignment. Default 'start'. */
10
+ align?: TableAlign;
11
+ /** Mono + tabular numerals (timestamps, counts, IDs - section E). */
12
+ mono?: boolean;
13
+ /** Identity emphasis: strong text, medium weight. */
14
+ strong?: boolean;
15
+ /** The one greedy column - absorbs slack width. Others size to content. */
16
+ grow?: boolean;
17
+ /** Header becomes a sort control. Sort is local; asc - desc, no third state. */
18
+ sortable?: boolean;
19
+ /** Sort accessor: a row property name, or a function. Defaults to row[key]. */
20
+ sortBy?: string | ((row: Row) => unknown);
21
+ /** Collapse this column below a container breakpoint (30rem / 42rem). */
22
+ hideBelow?: TableHideBelow;
23
+ /** Custom cell renderer. Defaults to row[key]. */
24
+ render?: (row: Row) => React.ReactNode;
25
+ }
26
+ interface TableSort {
27
+ key: string;
28
+ dir: 'asc' | 'desc';
29
+ }
30
+ interface TableProps<Row = any> {
31
+ columns: TableColumn<Row>[];
32
+ rows: Row[];
33
+ /** Row identity property. Default 'id'. Must be unique and stable. */
34
+ rowKey?: string;
35
+ /** aria-label for the <table>. */
36
+ label?: string;
37
+ /** Checkbox column + bulk bar. Selection is a Set of row keys, owned here. */
38
+ selectable?: boolean;
39
+ onSelectionChange?: (keys: Array<string | number>) => void;
40
+ /** Rendered in the bulk bar between the count and the built-in Clear. */
41
+ bulkActions?: (keys: Array<string | number>, clear: () => void) => React.ReactNode;
42
+ /** Per-row checkbox aria-label. Default 'Select row'. */
43
+ selectionLabel?: (row: Row) => string;
44
+ /** Initial sort; sorting stays local and uncontrolled after that. */
45
+ defaultSort?: TableSort | null;
46
+ /** Notification only - fires after the local sort updates. */
47
+ onSortChange?: (sort: TableSort) => void;
48
+ /** Row rhythm. Default 'cozy' (46px rows); 'compact' is 38px. */
49
+ density?: 'cozy' | 'compact';
50
+ /** Pin checkbox + first column under horizontal overflow. Default true. */
51
+ pinFirst?: boolean;
52
+ /** Rows recede and go inert (list-fetch convention). */
53
+ loading?: boolean;
54
+ /** Shown when rows is empty and not loading. Default 'Nothing to show'. */
55
+ empty?: React.ReactNode;
56
+ /** Footer strip - pagination, summaries. */
57
+ footer?: React.ReactNode;
58
+ /** Makes rows clickable (checkbox cell excluded). */
59
+ onRowClick?: (row: Row) => void;
60
+ /** Size the table here - the internal scroller absorbs the constraint. */
61
+ className?: string;
62
+ }
63
+ declare function Table<Row = any>({ columns, rows, rowKey, label, selectable, onSelectionChange, bulkActions, selectionLabel, defaultSort, onSortChange, density, pinFirst, loading, empty, footer, onRowClick, className, }: TableProps<Row>): React.JSX.Element;
64
+
65
+ export { Table, type TableAlign, type TableColumn, type TableHideBelow, type TableProps, type TableSort };
package/dist/table.js ADDED
@@ -0,0 +1,5 @@
1
+ 'use client';export { Table } from './chunk-EIMMDWIW.js';
2
+ import './chunk-KBWNUUWM.js';
3
+ import './chunk-37O2ZXD6.js';
4
+ //# sourceMappingURL=table.js.map
5
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"table.js"}
package/dist/tabs.d.ts ADDED
@@ -0,0 +1,44 @@
1
+ import * as React from 'react';
2
+
3
+ /** One tab in the row. */
4
+ interface TabItem {
5
+ /** Stable identity - also used in the tab/panel id pair. */
6
+ value: string;
7
+ label: React.ReactNode;
8
+ /** Leading icon - your own node. */
9
+ icon?: React.ReactNode;
10
+ /** Rendered mono + tabular. Pass a number or a preformatted string. */
11
+ count?: number | string;
12
+ disabled?: boolean;
13
+ }
14
+ interface TabsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
15
+ items: TabItem[];
16
+ /** Controlled - the value of the active tab (null/undefined hides the ink). */
17
+ value: string | null | undefined;
18
+ /**
19
+ * Fires on click and on arrow-key travel (automatic activation).
20
+ * `dir` is the direction of travel (+1 right / -1 left) - hand it to
21
+ * TabPanel so content enters from the side the user moved toward.
22
+ */
23
+ onChange?: (value: string, dir: 1 | -1) => void;
24
+ /**
25
+ * Shared id prefix wiring tab and panel aria. Give Tabs and its TabPanel the
26
+ * same `name`; omit it when the tabs have no managed panel.
27
+ */
28
+ name?: string;
29
+ /** aria-label for the tablist (e.g. "Section views"). */
30
+ label?: string;
31
+ }
32
+ declare function Tabs({ items, value, onChange, name, label, className, ...rest }: TabsProps): React.JSX.Element;
33
+ interface TabPanelProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'dir'> {
34
+ /** The active tab's value - changing it cuts to the new content. */
35
+ tab: string;
36
+ /** Same `name` as the paired Tabs - wires role/id/aria-labelledby. */
37
+ name?: string;
38
+ /** Direction of travel from Tabs' onChange; 0 = plain fade. */
39
+ dir?: -1 | 0 | 1;
40
+ children?: React.ReactNode;
41
+ }
42
+ declare function TabPanel({ tab, name, dir, className, children, ...rest }: TabPanelProps): React.JSX.Element;
43
+
44
+ export { type TabItem, TabPanel, type TabPanelProps, Tabs, type TabsProps };
package/dist/tabs.js ADDED
@@ -0,0 +1,5 @@
1
+ 'use client';export { TabPanel, Tabs } from './chunk-EZ2CWTBE.js';
2
+ import './chunk-VVPGEAC6.js';
3
+ import './chunk-37O2ZXD6.js';
4
+ //# sourceMappingURL=tabs.js.map
5
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tabs.js"}
package/dist/tag.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+
3
+ /** Tag - the removable, editable label (stateless; the parent owns the list). */
4
+ interface TagProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, 'children'> {
5
+ /** The label. */
6
+ children: React.ReactNode;
7
+ /** Your own icon node, sized small and tinted to the tag's text. */
8
+ icon?: React.ReactNode | null;
9
+ /** Presence adds the remove button; called on click - remove the item yourself. */
10
+ onRemove?: (() => void) | null;
11
+ /** Accessible label for the remove button. Defaults to "Remove {label}" for string labels. */
12
+ removeLabel?: string;
13
+ /** 'md' = 28px (default) - 'sm' = 24px for dense rows. */
14
+ size?: 'md' | 'sm';
15
+ disabled?: boolean;
16
+ className?: string;
17
+ }
18
+ /** TagGroup - wrapping flex row + removal/insertion choreography. */
19
+ interface TagGroupProps extends React.HTMLAttributes<HTMLDivElement> {
20
+ /** Accessible name for the group (role="group"). */
21
+ label?: string;
22
+ children?: React.ReactNode;
23
+ className?: string;
24
+ }
25
+ declare function Tag(props: TagProps): React.JSX.Element;
26
+ declare function TagGroup(props: TagGroupProps): React.JSX.Element;
27
+
28
+ export { Tag, TagGroup, type TagGroupProps, type TagProps };
package/dist/tag.js ADDED
@@ -0,0 +1,5 @@
1
+ 'use client';export { Tag, TagGroup } from './chunk-PFNXVBLU.js';
2
+ import './chunk-VVPGEAC6.js';
3
+ import './chunk-37O2ZXD6.js';
4
+ //# sourceMappingURL=tag.js.map
5
+ //# sourceMappingURL=tag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"tag.js"}
@@ -0,0 +1,30 @@
1
+ import * as React from 'react';
2
+ import { InputHTMLAttributes, ReactNode } from 'react';
3
+
4
+ interface TextFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {
5
+ /** Field id, ties the label to the input. */
6
+ id?: string;
7
+ /** Label text (sentence case). */
8
+ label?: ReactNode;
9
+ /** Show a danger `*` after the label. */
10
+ required?: boolean;
11
+ /** Show a muted "(optional)" after the label. */
12
+ optional?: boolean;
13
+ /** Neutral helper text - shown when there's no validation message. */
14
+ helper?: ReactNode;
15
+ /** Error message - sets the error state (red border/ring + icon). Wins over warning/success/helper. */
16
+ error?: ReactNode;
17
+ /** Warning message - amber state. */
18
+ warning?: ReactNode;
19
+ /** Success message - green state. */
20
+ success?: ReactNode;
21
+ /** Leading icon - your own icon node (sized to the control). Decorative. */
22
+ leadingIcon?: ReactNode;
23
+ /** Show a clear button when there's a value. */
24
+ clearable?: boolean;
25
+ /** Control height: sm 28 - md 36 (default) - lg 40. */
26
+ size?: 'sm' | 'md' | 'lg';
27
+ }
28
+ declare function TextField({ id, label, required, optional, placeholder, helper, error, warning, success, leadingIcon, clearable, size, value, onChange, disabled, readOnly, type, className, ...rest }: TextFieldProps): React.JSX.Element;
29
+
30
+ export { TextField, type TextFieldProps };
@@ -0,0 +1,6 @@
1
+ 'use client';export { TextField } from './chunk-QUHOXWBK.js';
2
+ import './chunk-VVPGEAC6.js';
3
+ import './chunk-KBWNUUWM.js';
4
+ import './chunk-YSHJHSJM.js';
5
+ //# sourceMappingURL=text-field.js.map
6
+ //# sourceMappingURL=text-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"text-field.js"}