@salesmind-ai/design-system 0.5.0 → 0.7.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/README.md +2 -0
  2. package/dist/Anton-Regular-MLEXVTB2.woff2 +0 -0
  3. package/dist/admin/index.cjs +5 -61
  4. package/dist/admin/index.css +0 -3918
  5. package/dist/admin/index.css.map +1 -1
  6. package/dist/admin/index.d.cts +1 -422
  7. package/dist/admin/index.d.ts +1 -422
  8. package/dist/admin/index.js +1 -5
  9. package/dist/blog/index.cjs +13 -34
  10. package/dist/blog/index.css +0 -579
  11. package/dist/blog/index.css.map +1 -1
  12. package/dist/blog/index.d.cts +1 -54
  13. package/dist/blog/index.d.ts +1 -54
  14. package/dist/blog/index.js +5 -6
  15. package/dist/charts/index.cjs +0 -46
  16. package/dist/charts/index.d.cts +1 -452
  17. package/dist/charts/index.d.ts +1 -452
  18. package/dist/charts/index.js +1 -3
  19. package/dist/{chunk-HDVAMYSG.js → chunk-27Y5ESMM.js} +7 -2
  20. package/dist/chunk-27Y5ESMM.js.map +1 -0
  21. package/dist/{chunk-YTYDQBVY.cjs → chunk-2VVRZBUR.cjs} +4 -4
  22. package/dist/{chunk-GQELL2MF.cjs → chunk-3NS6X2R4.cjs} +20 -203
  23. package/dist/chunk-3NS6X2R4.cjs.map +1 -0
  24. package/dist/{chunk-XEX2AEZK.cjs → chunk-65DTHLVX.cjs} +66 -186
  25. package/dist/chunk-65DTHLVX.cjs.map +1 -0
  26. package/dist/{chunk-QALDZ7WQ.js → chunk-6BUS7RMS.js} +21 -198
  27. package/dist/chunk-6BUS7RMS.js.map +1 -0
  28. package/dist/{chunk-BJZ2DKS5.cjs → chunk-6QIQCUYC.cjs} +11 -10
  29. package/dist/chunk-6QIQCUYC.cjs.map +1 -0
  30. package/dist/{chunk-H2Y6BSTL.cjs → chunk-7EUR3AKV.cjs} +1 -1
  31. package/dist/chunk-7EUR3AKV.cjs.map +1 -0
  32. package/dist/{chunk-VFJZQQZU.js → chunk-AMNY5TS3.js} +11 -10
  33. package/dist/chunk-AMNY5TS3.js.map +1 -0
  34. package/dist/{chunk-YJ6C3EKW.js → chunk-CLXLQCNQ.js} +52 -168
  35. package/dist/chunk-CLXLQCNQ.js.map +1 -0
  36. package/dist/{chunk-H2KQ3WSH.cjs → chunk-CVLD5RQK.cjs} +12 -14
  37. package/dist/chunk-CVLD5RQK.cjs.map +1 -0
  38. package/dist/chunk-EPD4ZEPY.cjs +344 -0
  39. package/dist/chunk-EPD4ZEPY.cjs.map +1 -0
  40. package/dist/chunk-FXYOSA4E.cjs +118 -0
  41. package/dist/chunk-FXYOSA4E.cjs.map +1 -0
  42. package/dist/{chunk-ECXBTUH6.cjs → chunk-GPHQGLR5.cjs} +27 -204
  43. package/dist/chunk-GPHQGLR5.cjs.map +1 -0
  44. package/dist/{chunk-Y26OHHMX.js → chunk-HHQ6J7B6.js} +513 -888
  45. package/dist/chunk-HHQ6J7B6.js.map +1 -0
  46. package/dist/chunk-JPUJWI7F.cjs +73 -0
  47. package/dist/chunk-JPUJWI7F.cjs.map +1 -0
  48. package/dist/{chunk-6UNG76Y2.js → chunk-K526GN7P.js} +2 -2
  49. package/dist/{chunk-SICKWUWB.js → chunk-KJHPOB3J.js} +1 -1
  50. package/dist/chunk-KJHPOB3J.js.map +1 -0
  51. package/dist/chunk-KXVFFEGD.js +60 -0
  52. package/dist/chunk-KXVFFEGD.js.map +1 -0
  53. package/dist/chunk-LQB7QLD3.js +288 -0
  54. package/dist/chunk-LQB7QLD3.js.map +1 -0
  55. package/dist/chunk-LUD52ZJF.cjs +726 -0
  56. package/dist/chunk-LUD52ZJF.cjs.map +1 -0
  57. package/dist/{chunk-7UZ5DETZ.js → chunk-MBAG654R.js} +4 -216
  58. package/dist/chunk-MBAG654R.js.map +1 -0
  59. package/dist/chunk-OMP6FAZ6.cjs +183 -0
  60. package/dist/chunk-OMP6FAZ6.cjs.map +1 -0
  61. package/dist/{chunk-WYH4TKS5.js → chunk-PBYRTNQ5.js} +6 -8
  62. package/dist/chunk-PBYRTNQ5.js.map +1 -0
  63. package/dist/chunk-PYREXCZK.js +679 -0
  64. package/dist/chunk-PYREXCZK.js.map +1 -0
  65. package/dist/{chunk-6D22TFLA.cjs → chunk-R3ZECV5P.cjs} +9 -4
  66. package/dist/chunk-R3ZECV5P.cjs.map +1 -0
  67. package/dist/{chunk-P5BOFE5A.js → chunk-RSLA2FJN.js} +28 -183
  68. package/dist/chunk-RSLA2FJN.js.map +1 -0
  69. package/dist/chunk-S46SKHMD.js +173 -0
  70. package/dist/chunk-S46SKHMD.js.map +1 -0
  71. package/dist/chunk-SFXTB7JL.js +190 -0
  72. package/dist/chunk-SFXTB7JL.js.map +1 -0
  73. package/dist/chunk-SGYXYMKZ.cjs +214 -0
  74. package/dist/chunk-SGYXYMKZ.cjs.map +1 -0
  75. package/dist/chunk-UGKYP6F3.cjs +296 -0
  76. package/dist/chunk-UGKYP6F3.cjs.map +1 -0
  77. package/dist/chunk-WB6XDNU7.js +115 -0
  78. package/dist/chunk-WB6XDNU7.js.map +1 -0
  79. package/dist/{chunk-LTPTW2US.cjs → chunk-WE4QIIVN.cjs} +592 -974
  80. package/dist/chunk-WE4QIIVN.cjs.map +1 -0
  81. package/dist/core/index.cjs +144 -626
  82. package/dist/core/index.css +178 -3567
  83. package/dist/core/index.css.map +1 -1
  84. package/dist/core/index.d.cts +940 -902
  85. package/dist/core/index.d.ts +940 -902
  86. package/dist/core/index.js +6 -12
  87. package/dist/i18n/index.cjs +54 -49
  88. package/dist/i18n/index.d.cts +46 -11
  89. package/dist/i18n/index.d.ts +46 -11
  90. package/dist/i18n/index.js +2 -1
  91. package/dist/index-BJ8rBqrO.d.cts +1100 -0
  92. package/dist/index-BxMqCbqE.d.ts +1100 -0
  93. package/dist/index.cjs +507 -1001
  94. package/dist/index.cjs.map +1 -1
  95. package/dist/index.css +6057 -16713
  96. package/dist/index.css.map +1 -1
  97. package/dist/index.d.cts +306 -21
  98. package/dist/index.d.ts +306 -21
  99. package/dist/index.js +274 -39
  100. package/dist/index.js.map +1 -1
  101. package/dist/marketing/index.cjs +33 -76
  102. package/dist/marketing/index.css +1896 -3234
  103. package/dist/marketing/index.css.map +1 -1
  104. package/dist/marketing/index.d.cts +3 -1351
  105. package/dist/marketing/index.d.ts +3 -1351
  106. package/dist/marketing/index.js +5 -8
  107. package/dist/motion/index.cjs +3 -20
  108. package/dist/motion/index.css +0 -580
  109. package/dist/motion/index.css.map +1 -1
  110. package/dist/motion/index.d.cts +1 -37
  111. package/dist/motion/index.d.ts +1 -37
  112. package/dist/motion/index.js +1 -2
  113. package/dist/nav/index.cjs +10 -35
  114. package/dist/nav/index.css +28 -580
  115. package/dist/nav/index.css.map +1 -1
  116. package/dist/nav/index.d.cts +2 -60
  117. package/dist/nav/index.d.ts +2 -60
  118. package/dist/nav/index.js +1 -2
  119. package/dist/report/index.cjs +1166 -175
  120. package/dist/report/index.cjs.map +1 -1
  121. package/dist/report/index.d.cts +208 -5
  122. package/dist/report/index.d.ts +208 -5
  123. package/dist/report/index.js +1141 -3
  124. package/dist/report/index.js.map +1 -1
  125. package/dist/sections/index.cjs +8 -10
  126. package/dist/sections/index.cjs.map +1 -1
  127. package/dist/sections/index.css +0 -206
  128. package/dist/sections/index.css.map +1 -1
  129. package/dist/sections/index.js +2 -4
  130. package/dist/sections/index.js.map +1 -1
  131. package/dist/social-media/index.cjs +4 -0
  132. package/dist/social-media/index.cjs.map +1 -0
  133. package/dist/social-media/index.d.cts +2 -0
  134. package/dist/social-media/index.d.ts +2 -0
  135. package/dist/social-media/index.js +3 -0
  136. package/dist/social-media/index.js.map +1 -0
  137. package/dist/social-proof/index.cjs +4 -36
  138. package/dist/social-proof/index.css +3 -1106
  139. package/dist/social-proof/index.css.map +1 -1
  140. package/dist/social-proof/index.d.cts +26 -171
  141. package/dist/social-proof/index.d.ts +26 -171
  142. package/dist/social-proof/index.js +1 -5
  143. package/dist/styles/styles.css +657 -2990
  144. package/dist/theme/index.cjs +12 -16
  145. package/dist/theme/index.css +1 -245
  146. package/dist/theme/index.css.map +1 -1
  147. package/dist/theme/index.d.cts +4 -1
  148. package/dist/theme/index.d.ts +4 -1
  149. package/dist/theme/index.js +2 -2
  150. package/dist/web/client/index.cjs +10 -10
  151. package/dist/web/client/index.css +118 -0
  152. package/dist/web/client/index.css.map +1 -1
  153. package/dist/web/client/index.js +2 -2
  154. package/dist/web/index.cjs +10 -10
  155. package/dist/web/index.css +118 -0
  156. package/dist/web/index.css.map +1 -1
  157. package/dist/web/index.js +2 -2
  158. package/package.json +10 -4
  159. package/dist/AppearancePanel-UT57J69V.d.cts +0 -51
  160. package/dist/AppearancePanel-UT57J69V.d.ts +0 -51
  161. package/dist/ExportMenu-A2TLFiVv.d.cts +0 -311
  162. package/dist/ExportMenu-C8qck5AT.d.ts +0 -311
  163. package/dist/Select-BdZmK0Lt.d.cts +0 -66
  164. package/dist/Select-BdZmK0Lt.d.ts +0 -66
  165. package/dist/chart-types-BGVVO-zl.d.cts +0 -208
  166. package/dist/chart-types-BGVVO-zl.d.ts +0 -208
  167. package/dist/charts/index.css +0 -1167
  168. package/dist/charts/index.css.map +0 -1
  169. package/dist/chunk-3BAQDW3V.cjs +0 -1207
  170. package/dist/chunk-3BAQDW3V.cjs.map +0 -1
  171. package/dist/chunk-3NKRFUAR.js +0 -37
  172. package/dist/chunk-3NKRFUAR.js.map +0 -1
  173. package/dist/chunk-3TGSIILM.cjs +0 -201
  174. package/dist/chunk-3TGSIILM.cjs.map +0 -1
  175. package/dist/chunk-4GM5BGBN.cjs +0 -801
  176. package/dist/chunk-4GM5BGBN.cjs.map +0 -1
  177. package/dist/chunk-5LA3T22E.cjs +0 -562
  178. package/dist/chunk-5LA3T22E.cjs.map +0 -1
  179. package/dist/chunk-5SN66B2X.js +0 -2542
  180. package/dist/chunk-5SN66B2X.js.map +0 -1
  181. package/dist/chunk-6D22TFLA.cjs.map +0 -1
  182. package/dist/chunk-6H4DSTXR.js +0 -786
  183. package/dist/chunk-6H4DSTXR.js.map +0 -1
  184. package/dist/chunk-6HKQ5ILL.cjs +0 -1624
  185. package/dist/chunk-6HKQ5ILL.cjs.map +0 -1
  186. package/dist/chunk-7PX2AZ6Y.js +0 -39
  187. package/dist/chunk-7PX2AZ6Y.js.map +0 -1
  188. package/dist/chunk-7UZ5DETZ.js.map +0 -1
  189. package/dist/chunk-B6AVAX4F.js +0 -1415
  190. package/dist/chunk-B6AVAX4F.js.map +0 -1
  191. package/dist/chunk-BJZ2DKS5.cjs.map +0 -1
  192. package/dist/chunk-BUTQSDQH.js +0 -200
  193. package/dist/chunk-BUTQSDQH.js.map +0 -1
  194. package/dist/chunk-C2BCDNAV.js +0 -24
  195. package/dist/chunk-C2BCDNAV.js.map +0 -1
  196. package/dist/chunk-CJ2MKVAF.cjs +0 -46
  197. package/dist/chunk-CJ2MKVAF.cjs.map +0 -1
  198. package/dist/chunk-E7D6EKJ4.cjs +0 -44
  199. package/dist/chunk-E7D6EKJ4.cjs.map +0 -1
  200. package/dist/chunk-ECXBTUH6.cjs.map +0 -1
  201. package/dist/chunk-FAFAP4L5.js +0 -183
  202. package/dist/chunk-FAFAP4L5.js.map +0 -1
  203. package/dist/chunk-G2XGBO5V.cjs +0 -2565
  204. package/dist/chunk-G2XGBO5V.cjs.map +0 -1
  205. package/dist/chunk-GQELL2MF.cjs.map +0 -1
  206. package/dist/chunk-H2KQ3WSH.cjs.map +0 -1
  207. package/dist/chunk-H2Y6BSTL.cjs.map +0 -1
  208. package/dist/chunk-HCZW5AJN.cjs +0 -234
  209. package/dist/chunk-HCZW5AJN.cjs.map +0 -1
  210. package/dist/chunk-HDVAMYSG.js.map +0 -1
  211. package/dist/chunk-HN4PHABT.js +0 -126
  212. package/dist/chunk-HN4PHABT.js.map +0 -1
  213. package/dist/chunk-LTPTW2US.cjs.map +0 -1
  214. package/dist/chunk-MDB2WCRQ.cjs +0 -137
  215. package/dist/chunk-MDB2WCRQ.cjs.map +0 -1
  216. package/dist/chunk-MQRB634A.cjs +0 -34
  217. package/dist/chunk-MQRB634A.cjs.map +0 -1
  218. package/dist/chunk-NN3TUHIH.js +0 -28
  219. package/dist/chunk-NN3TUHIH.js.map +0 -1
  220. package/dist/chunk-OWS2KAXZ.js +0 -701
  221. package/dist/chunk-OWS2KAXZ.js.map +0 -1
  222. package/dist/chunk-P5BOFE5A.js.map +0 -1
  223. package/dist/chunk-PUPSK3DI.cjs +0 -216
  224. package/dist/chunk-PUPSK3DI.cjs.map +0 -1
  225. package/dist/chunk-Q2MFGYTE.cjs +0 -1449
  226. package/dist/chunk-Q2MFGYTE.cjs.map +0 -1
  227. package/dist/chunk-Q75DBVDY.cjs +0 -68
  228. package/dist/chunk-Q75DBVDY.cjs.map +0 -1
  229. package/dist/chunk-QALDZ7WQ.js.map +0 -1
  230. package/dist/chunk-QWE2RNCS.js +0 -1195
  231. package/dist/chunk-QWE2RNCS.js.map +0 -1
  232. package/dist/chunk-RQUFZAZ7.js +0 -1608
  233. package/dist/chunk-RQUFZAZ7.js.map +0 -1
  234. package/dist/chunk-SICKWUWB.js.map +0 -1
  235. package/dist/chunk-TCFC7XTB.js +0 -212
  236. package/dist/chunk-TCFC7XTB.js.map +0 -1
  237. package/dist/chunk-UTVXGAQP.cjs +0 -2437
  238. package/dist/chunk-UTVXGAQP.cjs.map +0 -1
  239. package/dist/chunk-UVEMY3FQ.cjs +0 -717
  240. package/dist/chunk-UVEMY3FQ.cjs.map +0 -1
  241. package/dist/chunk-VFJZQQZU.js.map +0 -1
  242. package/dist/chunk-WH7PYHZY.cjs +0 -35
  243. package/dist/chunk-WH7PYHZY.cjs.map +0 -1
  244. package/dist/chunk-WYH4TKS5.js.map +0 -1
  245. package/dist/chunk-XEX2AEZK.cjs.map +0 -1
  246. package/dist/chunk-XPTVHPCN.js +0 -2320
  247. package/dist/chunk-XPTVHPCN.js.map +0 -1
  248. package/dist/chunk-XWPDRMZG.js +0 -62
  249. package/dist/chunk-XWPDRMZG.js.map +0 -1
  250. package/dist/chunk-Y26OHHMX.js.map +0 -1
  251. package/dist/chunk-YJ6C3EKW.js.map +0 -1
  252. package/dist/motion-C651Ry6d.d.cts +0 -832
  253. package/dist/motion-C651Ry6d.d.ts +0 -832
  254. package/dist/report/index.css +0 -1239
  255. package/dist/report/index.css.map +0 -1
  256. /package/dist/{chunk-6UNG76Y2.js.map → chunk-2VVRZBUR.cjs.map} +0 -0
  257. /package/dist/{chunk-YTYDQBVY.cjs.map → chunk-K526GN7P.js.map} +0 -0
@@ -1,2437 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkHCZW5AJN_cjs = require('./chunk-HCZW5AJN.cjs');
4
- var chunkMDB2WCRQ_cjs = require('./chunk-MDB2WCRQ.cjs');
5
- var React20 = require('react');
6
- var clsx18 = require('clsx');
7
- var jsxRuntime = require('react/jsx-runtime');
8
- var _switch = require('@base-ui/react/switch');
9
- var ReactDOM = require('react-dom');
10
- var reactSlot = require('@radix-ui/react-slot');
11
-
12
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
-
14
- var React20__default = /*#__PURE__*/_interopDefault(React20);
15
- var clsx18__default = /*#__PURE__*/_interopDefault(clsx18);
16
- var ReactDOM__default = /*#__PURE__*/_interopDefault(ReactDOM);
17
-
18
- var Card = React20__default.default.forwardRef(
19
- ({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx18__default.default("ds-card", className), ...props })
20
- );
21
- Card.displayName = "Card";
22
- var CardHeader = React20__default.default.forwardRef(
23
- ({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx18__default.default("ds-card__header", className), ...props })
24
- );
25
- CardHeader.displayName = "CardHeader";
26
- var CardTitle = React20__default.default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("h3", { ref, className: clsx18__default.default("ds-card__title", className), ...props }));
27
- CardTitle.displayName = "CardTitle";
28
- var CardDescription = React20__default.default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("p", { ref, className: clsx18__default.default("ds-card__description", className), ...props }));
29
- CardDescription.displayName = "CardDescription";
30
- var CardContent = React20__default.default.forwardRef(
31
- ({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx18__default.default("ds-card__content", className), ...props })
32
- );
33
- CardContent.displayName = "CardContent";
34
- var CardFooter = React20__default.default.forwardRef(
35
- ({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx18__default.default("ds-card__footer", className), ...props })
36
- );
37
- CardFooter.displayName = "CardFooter";
38
- var ButtonGroup = React20__default.default.forwardRef(
39
- ({ orientation = "horizontal", fullWidth = false, size = "md", className, children, ...props }, ref) => {
40
- return /* @__PURE__ */ jsxRuntime.jsx(
41
- "div",
42
- {
43
- ref,
44
- role: "group",
45
- className: clsx18__default.default(
46
- "ds-button-group",
47
- `ds-button-group--${orientation}`,
48
- fullWidth && "ds-button-group--full-width",
49
- className
50
- ),
51
- "data-size": size,
52
- ...props,
53
- children
54
- }
55
- );
56
- }
57
- );
58
- ButtonGroup.displayName = "ButtonGroup";
59
- var TextArea = React20.forwardRef(
60
- ({ className, label, error, helperText, id, ...props }, ref) => {
61
- const generatedId = React20.useId();
62
- const inputId = id || generatedId;
63
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx18__default.default("ds-textarea", className), children: [
64
- label && /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: inputId, className: "ds-textarea__label", children: label }),
65
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-textarea__input-wrapper", children: /* @__PURE__ */ jsxRuntime.jsx(
66
- "textarea",
67
- {
68
- id: inputId,
69
- ref,
70
- className: clsx18__default.default("ds-textarea__input", error && "ds-textarea__input--error"),
71
- ...props
72
- }
73
- ) }),
74
- helperText && /* @__PURE__ */ jsxRuntime.jsx("span", { className: clsx18__default.default("ds-textarea__helper", error && "ds-textarea__helper--error"), children: helperText })
75
- ] });
76
- }
77
- );
78
- TextArea.displayName = "TextArea";
79
- var RadioGroupContext = React20.createContext(null);
80
- var RadioGroup = React20.forwardRef(
81
- ({
82
- className,
83
- name,
84
- value,
85
- onValueChange,
86
- orientation = "vertical",
87
- children,
88
- ...props
89
- }, ref) => {
90
- const generatedName = React20.useId();
91
- const groupName = name || generatedName;
92
- return /* @__PURE__ */ jsxRuntime.jsx(RadioGroupContext.Provider, { value: { name: groupName, value, onChange: onValueChange }, children: /* @__PURE__ */ jsxRuntime.jsx(
93
- "div",
94
- {
95
- ref,
96
- role: "radiogroup",
97
- className: clsx18__default.default(
98
- "ds-radio-group",
99
- orientation === "horizontal" && "ds-radio-group--horizontal",
100
- className
101
- ),
102
- ...props,
103
- children
104
- }
105
- ) });
106
- }
107
- );
108
- RadioGroup.displayName = "RadioGroup";
109
- var Radio = React20.forwardRef(
110
- ({ className, label, value, disabled, id, onChange, ...props }, ref) => {
111
- const context = React20.useContext(RadioGroupContext);
112
- const generatedId = React20.useId();
113
- const radioId = id || generatedId;
114
- const name = context?.name || props.name;
115
- const isChecked = context?.value !== void 0 ? context.value === value : props.checked;
116
- const handleChange = (e) => {
117
- onChange?.(e);
118
- context?.onChange?.(value);
119
- };
120
- return /* @__PURE__ */ jsxRuntime.jsxs(
121
- "label",
122
- {
123
- className: clsx18__default.default("ds-radio-wrapper", disabled && "ds-radio-wrapper--disabled", className),
124
- children: [
125
- /* @__PURE__ */ jsxRuntime.jsx(
126
- "input",
127
- {
128
- ref,
129
- type: "radio",
130
- className: "ds-radio-input",
131
- id: radioId,
132
- name,
133
- value,
134
- checked: isChecked,
135
- onChange: handleChange,
136
- disabled,
137
- ...props
138
- }
139
- ),
140
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx18__default.default("ds-radio", isChecked && "ds-radio--checked"), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-radio__indicator" }) }),
141
- label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-radio__label", children: label })
142
- ]
143
- }
144
- );
145
- }
146
- );
147
- Radio.displayName = "Radio";
148
- var Switch = React20__default.default.forwardRef(
149
- ({ className, label, id, ...props }, ref) => {
150
- const generatedId = React20__default.default.useId();
151
- const switchId = id || generatedId;
152
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx18__default.default("ds-switch-wrapper", className), children: [
153
- /* @__PURE__ */ jsxRuntime.jsx(_switch.Switch.Root, { id: switchId, ref, className: "ds-switch", ...props, children: /* @__PURE__ */ jsxRuntime.jsx(_switch.Switch.Thumb, { className: "ds-switch__thumb" }) }),
154
- label && /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: switchId, className: "ds-switch__label", children: label })
155
- ] });
156
- }
157
- );
158
- Switch.displayName = "Switch";
159
- var AccordionContext = React20__default.default.createContext(null);
160
- function useAccordionContext() {
161
- const ctx = React20__default.default.useContext(AccordionContext);
162
- if (!ctx) {
163
- throw new Error("Accordion compound components must be used within <Accordion>");
164
- }
165
- return ctx;
166
- }
167
- var AccordionItemContext = React20__default.default.createContext(null);
168
- function useAccordionItemContext() {
169
- const ctx = React20__default.default.useContext(AccordionItemContext);
170
- if (!ctx) {
171
- throw new Error("AccordionTrigger/AccordionContent must be used within <AccordionItem>");
172
- }
173
- return ctx;
174
- }
175
- var Accordion = React20__default.default.forwardRef(
176
- ({ className, type = "single", defaultValue = [], collapsible: _collapsible, children, ...props }, ref) => {
177
- const [openItems, setOpenItems] = React20__default.default.useState(
178
- () => new Set(defaultValue)
179
- );
180
- const toggle = React20__default.default.useCallback(
181
- (value) => {
182
- setOpenItems((prev) => {
183
- const next = new Set(prev);
184
- if (next.has(value)) {
185
- next.delete(value);
186
- } else {
187
- if (type === "single") {
188
- next.clear();
189
- }
190
- next.add(value);
191
- }
192
- return next;
193
- });
194
- },
195
- [type]
196
- );
197
- const contextValue = React20__default.default.useMemo(
198
- () => ({ openItems, toggle }),
199
- [openItems, toggle]
200
- );
201
- return /* @__PURE__ */ jsxRuntime.jsx(AccordionContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx18__default.default("ds-accordion", className), ...props, children }) });
202
- }
203
- );
204
- Accordion.displayName = "Accordion";
205
- var AccordionItem = React20__default.default.forwardRef(
206
- ({ className, value, children, ...props }, ref) => {
207
- const { openItems } = useAccordionContext();
208
- const isOpen = openItems.has(value);
209
- const contextValue = React20__default.default.useMemo(
210
- () => ({ value, isOpen }),
211
- [value, isOpen]
212
- );
213
- return /* @__PURE__ */ jsxRuntime.jsx(AccordionItemContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(
214
- "div",
215
- {
216
- ref,
217
- className: clsx18__default.default("ds-accordion__item", className),
218
- "data-state": isOpen ? "open" : "closed",
219
- ...props,
220
- children
221
- }
222
- ) });
223
- }
224
- );
225
- AccordionItem.displayName = "AccordionItem";
226
- var AccordionTrigger = React20__default.default.forwardRef(({ className, children, onClick, ...props }, ref) => {
227
- const { toggle } = useAccordionContext();
228
- const { value, isOpen } = useAccordionItemContext();
229
- return /* @__PURE__ */ jsxRuntime.jsxs(
230
- "button",
231
- {
232
- ref,
233
- type: "button",
234
- className: clsx18__default.default("ds-accordion__trigger", className),
235
- "aria-expanded": isOpen,
236
- ...props,
237
- onClick: (e) => {
238
- toggle(value);
239
- onClick?.(e);
240
- },
241
- children: [
242
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-accordion__trigger-text", children }),
243
- /* @__PURE__ */ jsxRuntime.jsx(
244
- "svg",
245
- {
246
- className: "ds-accordion__chevron",
247
- width: "16",
248
- height: "16",
249
- viewBox: "0 0 24 24",
250
- fill: "none",
251
- stroke: "currentColor",
252
- strokeWidth: "2",
253
- strokeLinecap: "round",
254
- strokeLinejoin: "round",
255
- "aria-hidden": "true",
256
- children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "6 9 12 15 18 9" })
257
- }
258
- )
259
- ]
260
- }
261
- );
262
- });
263
- AccordionTrigger.displayName = "AccordionTrigger";
264
- var AccordionContent = React20__default.default.forwardRef(({ className, children, ...props }, ref) => {
265
- const { isOpen } = useAccordionItemContext();
266
- const contentRef = React20__default.default.useRef(null);
267
- const [height, setHeight] = React20__default.default.useState(
268
- isOpen ? void 0 : 0
269
- );
270
- React20__default.default.useEffect(() => {
271
- const el = contentRef.current;
272
- if (!el) return;
273
- if (isOpen) {
274
- const scrollHeight = el.scrollHeight;
275
- setHeight(scrollHeight);
276
- const timer = setTimeout(() => setHeight(void 0), 200);
277
- return () => clearTimeout(timer);
278
- } else {
279
- const scrollHeight = el.scrollHeight;
280
- setHeight(scrollHeight);
281
- requestAnimationFrame(() => {
282
- requestAnimationFrame(() => {
283
- setHeight(0);
284
- });
285
- });
286
- }
287
- }, [isOpen]);
288
- return /* @__PURE__ */ jsxRuntime.jsx(
289
- "div",
290
- {
291
- ref: contentRef,
292
- className: clsx18__default.default("ds-accordion__content", className),
293
- style: {
294
- height: height !== void 0 ? `${height}px` : "auto"
295
- },
296
- hidden: !isOpen && height === 0,
297
- ...props,
298
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: "ds-accordion__content-inner", children })
299
- }
300
- );
301
- });
302
- AccordionContent.displayName = "AccordionContent";
303
- var Label = React20__default.default.forwardRef(
304
- ({ className, disabled, ...props }, ref) => {
305
- return /* @__PURE__ */ jsxRuntime.jsx(
306
- "label",
307
- {
308
- ref,
309
- className: clsx18__default.default("ds-label", disabled && "ds-label--disabled", className),
310
- "data-disabled": disabled || void 0,
311
- ...props
312
- }
313
- );
314
- }
315
- );
316
- Label.displayName = "Label";
317
- var Skeleton = React20__default.default.forwardRef(
318
- ({ className, ...props }, ref) => {
319
- return /* @__PURE__ */ jsxRuntime.jsx(
320
- "div",
321
- {
322
- ref,
323
- className: clsx18__default.default("ds-skeleton", className),
324
- ...props
325
- }
326
- );
327
- }
328
- );
329
- Skeleton.displayName = "Skeleton";
330
- var Separator = React20__default.default.forwardRef(
331
- ({ className, orientation = "horizontal", ...props }, ref) => {
332
- return /* @__PURE__ */ jsxRuntime.jsx(
333
- "div",
334
- {
335
- ref,
336
- role: "separator",
337
- "aria-orientation": orientation,
338
- className: clsx18__default.default(
339
- "ds-separator",
340
- `ds-separator--${orientation}`,
341
- className
342
- ),
343
- ...props
344
- }
345
- );
346
- }
347
- );
348
- Separator.displayName = "Separator";
349
- var SheetContext = React20__default.default.createContext(void 0);
350
- function useSheetContext() {
351
- const ctx = React20__default.default.useContext(SheetContext);
352
- if (!ctx) {
353
- throw new Error("Sheet compound components must be used within a <Sheet> parent.");
354
- }
355
- return ctx;
356
- }
357
- var Sheet = ({ open: controlledOpen, onOpenChange, children }) => {
358
- const [uncontrolledOpen, setUncontrolledOpen] = React20__default.default.useState(false);
359
- const isControlled = controlledOpen !== void 0;
360
- const open = isControlled ? controlledOpen : uncontrolledOpen;
361
- const handleOpenChange = React20__default.default.useCallback(
362
- (next) => {
363
- if (!isControlled) {
364
- setUncontrolledOpen(next);
365
- }
366
- onOpenChange?.(next);
367
- },
368
- [isControlled, onOpenChange]
369
- );
370
- return /* @__PURE__ */ jsxRuntime.jsx(SheetContext.Provider, { value: { open, onOpenChange: handleOpenChange }, children });
371
- };
372
- Sheet.displayName = "Sheet";
373
- var SheetTrigger = React20__default.default.forwardRef(
374
- ({ onClick, asChild = false, ...props }, ref) => {
375
- const { onOpenChange } = useSheetContext();
376
- const handleClick = (e) => {
377
- onOpenChange(true);
378
- onClick?.(e);
379
- };
380
- const Comp = asChild ? reactSlot.Slot : "button";
381
- return /* @__PURE__ */ jsxRuntime.jsx(Comp, { ref, type: "button", onClick: handleClick, ...props });
382
- }
383
- );
384
- SheetTrigger.displayName = "SheetTrigger";
385
- var SheetClose = React20__default.default.forwardRef(
386
- ({ onClick, asChild = false, ...props }, ref) => {
387
- const { onOpenChange } = useSheetContext();
388
- const handleClick = (e) => {
389
- onOpenChange(false);
390
- onClick?.(e);
391
- };
392
- const Comp = asChild ? reactSlot.Slot : "button";
393
- return /* @__PURE__ */ jsxRuntime.jsx(Comp, { ref, type: "button", onClick: handleClick, ...props });
394
- }
395
- );
396
- SheetClose.displayName = "SheetClose";
397
- var SheetContent = React20__default.default.forwardRef(
398
- ({ side = "right", className, children, ...props }, ref) => {
399
- const { open, onOpenChange } = useSheetContext();
400
- if (!open) return null;
401
- return ReactDOM.createPortal(
402
- /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
403
- /* @__PURE__ */ jsxRuntime.jsx(
404
- "div",
405
- {
406
- className: "ds-sheet__backdrop",
407
- onClick: () => onOpenChange(false),
408
- "aria-hidden": "true"
409
- }
410
- ),
411
- /* @__PURE__ */ jsxRuntime.jsx(
412
- "div",
413
- {
414
- ref,
415
- role: "dialog",
416
- className: clsx18__default.default("ds-sheet__content", `ds-sheet__content--${side}`, className),
417
- ...props,
418
- children
419
- }
420
- )
421
- ] }),
422
- document.body
423
- );
424
- }
425
- );
426
- SheetContent.displayName = "SheetContent";
427
- var SheetHeader = React20__default.default.forwardRef(
428
- ({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx18__default.default("ds-sheet__header", className), ...props })
429
- );
430
- SheetHeader.displayName = "SheetHeader";
431
- var SheetTitle = React20__default.default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("h2", { ref, className: clsx18__default.default("ds-sheet__title", className), ...props }));
432
- SheetTitle.displayName = "SheetTitle";
433
- var SheetDescription = React20__default.default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("p", { ref, className: clsx18__default.default("ds-sheet__description", className), ...props }));
434
- SheetDescription.displayName = "SheetDescription";
435
- var SheetFooter = React20__default.default.forwardRef(
436
- ({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx18__default.default("ds-sheet__footer", className), ...props })
437
- );
438
- SheetFooter.displayName = "SheetFooter";
439
- var PopoverContext = React20__default.default.createContext(null);
440
- function usePopoverContext() {
441
- const context = React20__default.default.useContext(PopoverContext);
442
- if (!context) {
443
- throw new Error("Popover compound components must be used within <Popover>");
444
- }
445
- return context;
446
- }
447
- var Popover = ({ open: controlledOpen, onOpenChange, children }) => {
448
- const [uncontrolledOpen, setUncontrolledOpen] = React20__default.default.useState(false);
449
- const isControlled = controlledOpen !== void 0;
450
- const open = isControlled ? controlledOpen : uncontrolledOpen;
451
- const setOpen = React20__default.default.useCallback(
452
- (value) => {
453
- if (!isControlled) {
454
- setUncontrolledOpen(value);
455
- }
456
- onOpenChange?.(value);
457
- },
458
- [isControlled, onOpenChange]
459
- );
460
- const toggle = React20__default.default.useCallback(() => {
461
- setOpen(!open);
462
- }, [open, setOpen]);
463
- const contextValue = React20__default.default.useMemo(
464
- () => ({ open, setOpen, toggle }),
465
- [open, setOpen, toggle]
466
- );
467
- return /* @__PURE__ */ jsxRuntime.jsx(PopoverContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-popover", children }) });
468
- };
469
- Popover.displayName = "Popover";
470
- var PopoverTrigger = React20__default.default.forwardRef(
471
- ({ className, onClick, asChild = false, ...props }, ref) => {
472
- const { toggle } = usePopoverContext();
473
- const handleClick = (e) => {
474
- toggle();
475
- onClick?.(e);
476
- };
477
- const Comp = asChild ? reactSlot.Slot : "button";
478
- return /* @__PURE__ */ jsxRuntime.jsx(
479
- Comp,
480
- {
481
- ref,
482
- type: "button",
483
- className: clsx18__default.default("ds-popover__trigger", className),
484
- onClick: handleClick,
485
- ...props
486
- }
487
- );
488
- }
489
- );
490
- PopoverTrigger.displayName = "PopoverTrigger";
491
- var PopoverContent = React20__default.default.forwardRef(
492
- ({ className, side = "bottom", align = "center", ...props }, ref) => {
493
- const { open } = usePopoverContext();
494
- if (!open) return null;
495
- return /* @__PURE__ */ jsxRuntime.jsx(
496
- "div",
497
- {
498
- ref,
499
- className: clsx18__default.default(
500
- "ds-popover__content",
501
- `ds-popover__content--${side}`,
502
- `ds-popover__content--align-${align}`,
503
- className
504
- ),
505
- ...props
506
- }
507
- );
508
- }
509
- );
510
- PopoverContent.displayName = "PopoverContent";
511
- var PopoverClose = React20__default.default.forwardRef(({ className, onClick, ...props }, ref) => {
512
- const { setOpen } = usePopoverContext();
513
- const handleClick = (e) => {
514
- setOpen(false);
515
- onClick?.(e);
516
- };
517
- return /* @__PURE__ */ jsxRuntime.jsx(
518
- "button",
519
- {
520
- ref,
521
- type: "button",
522
- className: clsx18__default.default("ds-popover__close", className),
523
- onClick: handleClick,
524
- ...props
525
- }
526
- );
527
- });
528
- PopoverClose.displayName = "PopoverClose";
529
- var Progress = React20__default.default.forwardRef(
530
- ({ className, value = 0, max = 100, ...props }, ref) => {
531
- const percentage = max > 0 ? Math.min(100, Math.max(0, value / max * 100)) : 0;
532
- return /* @__PURE__ */ jsxRuntime.jsx(
533
- "div",
534
- {
535
- ref,
536
- role: "progressbar",
537
- "aria-valuenow": value,
538
- "aria-valuemin": 0,
539
- "aria-valuemax": max,
540
- className: clsx18__default.default("ds-progress", className),
541
- ...props,
542
- children: /* @__PURE__ */ jsxRuntime.jsx(
543
- "div",
544
- {
545
- className: "ds-progress__indicator",
546
- style: { width: `${percentage}%` }
547
- }
548
- )
549
- }
550
- );
551
- }
552
- );
553
- Progress.displayName = "Progress";
554
- var ScrollArea = React20__default.default.forwardRef(
555
- ({ className, children, ...props }, ref) => {
556
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx18__default.default("ds-scroll-area", className), ...props, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-scroll-area__viewport", children }) });
557
- }
558
- );
559
- ScrollArea.displayName = "ScrollArea";
560
- var ScrollBar = React20__default.default.forwardRef(
561
- ({ className, orientation = "vertical", ...props }, ref) => {
562
- return /* @__PURE__ */ jsxRuntime.jsx(
563
- "div",
564
- {
565
- ref,
566
- className: clsx18__default.default(
567
- "ds-scroll-area__scrollbar",
568
- `ds-scroll-area__scrollbar--${orientation}`,
569
- className
570
- ),
571
- ...props
572
- }
573
- );
574
- }
575
- );
576
- ScrollBar.displayName = "ScrollBar";
577
- var Toggle = React20__default.default.forwardRef(
578
- ({
579
- className,
580
- pressed: controlledPressed,
581
- onPressedChange,
582
- variant = "default",
583
- size = "md",
584
- onClick,
585
- ...props
586
- }, ref) => {
587
- const [uncontrolledPressed, setUncontrolledPressed] = React20__default.default.useState(false);
588
- const isControlled = controlledPressed !== void 0;
589
- const pressed = isControlled ? controlledPressed : uncontrolledPressed;
590
- const handleClick = (e) => {
591
- const next = !pressed;
592
- if (!isControlled) {
593
- setUncontrolledPressed(next);
594
- }
595
- onPressedChange?.(next);
596
- onClick?.(e);
597
- };
598
- return /* @__PURE__ */ jsxRuntime.jsx(
599
- "button",
600
- {
601
- ref,
602
- type: "button",
603
- className: clsx18__default.default(
604
- "ds-toggle",
605
- `ds-toggle--${variant}`,
606
- `ds-toggle--${size}`,
607
- className
608
- ),
609
- "aria-pressed": pressed,
610
- "data-state": pressed ? "on" : "off",
611
- onClick: handleClick,
612
- ...props
613
- }
614
- );
615
- }
616
- );
617
- Toggle.displayName = "Toggle";
618
- var CollapsibleContext = React20__default.default.createContext(null);
619
- function useCollapsibleContext() {
620
- const context = React20__default.default.useContext(CollapsibleContext);
621
- if (!context) {
622
- throw new Error("Collapsible compound components must be used within <Collapsible>");
623
- }
624
- return context;
625
- }
626
- var Collapsible = React20__default.default.forwardRef(
627
- ({ className, open: controlledOpen, onOpenChange, children, ...props }, ref) => {
628
- const [uncontrolledOpen, setUncontrolledOpen] = React20__default.default.useState(false);
629
- const isControlled = controlledOpen !== void 0;
630
- const open = isControlled ? controlledOpen : uncontrolledOpen;
631
- const toggle = React20__default.default.useCallback(() => {
632
- const next = !open;
633
- if (!isControlled) {
634
- setUncontrolledOpen(next);
635
- }
636
- onOpenChange?.(next);
637
- }, [open, isControlled, onOpenChange]);
638
- const contextValue = React20__default.default.useMemo(
639
- () => ({ open, toggle }),
640
- [open, toggle]
641
- );
642
- return /* @__PURE__ */ jsxRuntime.jsx(CollapsibleContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(
643
- "div",
644
- {
645
- ref,
646
- className: clsx18__default.default("ds-collapsible", className),
647
- "data-state": open ? "open" : "closed",
648
- ...props,
649
- children
650
- }
651
- ) });
652
- }
653
- );
654
- Collapsible.displayName = "Collapsible";
655
- var CollapsibleTrigger = React20__default.default.forwardRef(({ className, onClick, ...props }, ref) => {
656
- const { toggle } = useCollapsibleContext();
657
- const handleClick = (e) => {
658
- toggle();
659
- onClick?.(e);
660
- };
661
- return /* @__PURE__ */ jsxRuntime.jsx(
662
- "button",
663
- {
664
- ref,
665
- type: "button",
666
- className: clsx18__default.default("ds-collapsible__trigger", className),
667
- onClick: handleClick,
668
- ...props
669
- }
670
- );
671
- });
672
- CollapsibleTrigger.displayName = "CollapsibleTrigger";
673
- var CollapsibleContent = React20__default.default.forwardRef(({ className, children, ...props }, ref) => {
674
- const { open } = useCollapsibleContext();
675
- const contentRef = React20__default.default.useRef(null);
676
- const [maxHeight, setMaxHeight] = React20__default.default.useState(
677
- open ? void 0 : 0
678
- );
679
- React20__default.default.useEffect(() => {
680
- const el = contentRef.current;
681
- if (!el) return;
682
- if (open) {
683
- const scrollHeight = el.scrollHeight;
684
- setMaxHeight(scrollHeight);
685
- const timer = setTimeout(() => setMaxHeight(void 0), 200);
686
- return () => clearTimeout(timer);
687
- } else {
688
- const scrollHeight = el.scrollHeight;
689
- setMaxHeight(scrollHeight);
690
- requestAnimationFrame(() => {
691
- requestAnimationFrame(() => {
692
- setMaxHeight(0);
693
- });
694
- });
695
- }
696
- }, [open]);
697
- return /* @__PURE__ */ jsxRuntime.jsx(
698
- "div",
699
- {
700
- ref: contentRef,
701
- className: clsx18__default.default("ds-collapsible__content", className),
702
- "data-state": open ? "open" : "closed",
703
- style: {
704
- maxHeight: maxHeight !== void 0 ? `${maxHeight}px` : "none"
705
- },
706
- hidden: !open && maxHeight === 0,
707
- ...props,
708
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: "ds-collapsible__content-inner", children })
709
- }
710
- );
711
- });
712
- CollapsibleContent.displayName = "CollapsibleContent";
713
- var HoverCardContext = React20__default.default.createContext(null);
714
- function useHoverCardContext() {
715
- const context = React20__default.default.useContext(HoverCardContext);
716
- if (!context) {
717
- throw new Error("HoverCard compound components must be used within <HoverCard>");
718
- }
719
- return context;
720
- }
721
- var HoverCard = ({
722
- openDelay = 200,
723
- closeDelay = 100,
724
- children
725
- }) => {
726
- const [open, setOpen] = React20__default.default.useState(false);
727
- const openTimerRef = React20__default.default.useRef();
728
- const closeTimerRef = React20__default.default.useRef();
729
- const onOpen = React20__default.default.useCallback(() => {
730
- clearTimeout(closeTimerRef.current);
731
- openTimerRef.current = setTimeout(() => setOpen(true), openDelay);
732
- }, [openDelay]);
733
- const onClose = React20__default.default.useCallback(() => {
734
- clearTimeout(openTimerRef.current);
735
- closeTimerRef.current = setTimeout(() => setOpen(false), closeDelay);
736
- }, [closeDelay]);
737
- React20__default.default.useEffect(() => {
738
- return () => {
739
- clearTimeout(openTimerRef.current);
740
- clearTimeout(closeTimerRef.current);
741
- };
742
- }, []);
743
- const contextValue = React20__default.default.useMemo(
744
- () => ({ open, onOpen, onClose }),
745
- [open, onOpen, onClose]
746
- );
747
- return /* @__PURE__ */ jsxRuntime.jsx(HoverCardContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-hover-card", children }) });
748
- };
749
- HoverCard.displayName = "HoverCard";
750
- var HoverCardTrigger = React20__default.default.forwardRef(({ className, onMouseEnter, onMouseLeave, ...props }, ref) => {
751
- const { onOpen, onClose } = useHoverCardContext();
752
- const handleMouseEnter = (e) => {
753
- onOpen();
754
- onMouseEnter?.(e);
755
- };
756
- const handleMouseLeave = (e) => {
757
- onClose();
758
- onMouseLeave?.(e);
759
- };
760
- return /* @__PURE__ */ jsxRuntime.jsx(
761
- "span",
762
- {
763
- ref,
764
- className: clsx18__default.default("ds-hover-card__trigger", className),
765
- onMouseEnter: handleMouseEnter,
766
- onMouseLeave: handleMouseLeave,
767
- ...props
768
- }
769
- );
770
- });
771
- HoverCardTrigger.displayName = "HoverCardTrigger";
772
- var HoverCardContent = React20__default.default.forwardRef(
773
- ({ className, side = "bottom", align = "center", onMouseEnter, onMouseLeave, ...props }, ref) => {
774
- const { open, onOpen, onClose } = useHoverCardContext();
775
- const handleMouseEnter = (e) => {
776
- onOpen();
777
- onMouseEnter?.(e);
778
- };
779
- const handleMouseLeave = (e) => {
780
- onClose();
781
- onMouseLeave?.(e);
782
- };
783
- if (!open) return null;
784
- return /* @__PURE__ */ jsxRuntime.jsx(
785
- "div",
786
- {
787
- ref,
788
- className: clsx18__default.default(
789
- "ds-hover-card__content",
790
- `ds-hover-card__content--${side}`,
791
- `ds-hover-card__content--align-${align}`,
792
- className
793
- ),
794
- onMouseEnter: handleMouseEnter,
795
- onMouseLeave: handleMouseLeave,
796
- ...props
797
- }
798
- );
799
- }
800
- );
801
- HoverCardContent.displayName = "HoverCardContent";
802
- var AspectRatio = React20__default.default.forwardRef(
803
- ({ className, ratio = 1, style, children, ...props }, ref) => {
804
- return /* @__PURE__ */ jsxRuntime.jsx(
805
- "div",
806
- {
807
- ref,
808
- className: clsx18__default.default("ds-aspect-ratio", className),
809
- style: { ...style, paddingBottom: `${1 / ratio * 100}%` },
810
- ...props,
811
- children
812
- }
813
- );
814
- }
815
- );
816
- AspectRatio.displayName = "AspectRatio";
817
- var Pagination = React20__default.default.forwardRef(
818
- ({ className, "aria-label": ariaLabel = "pagination", ...props }, ref) => {
819
- return /* @__PURE__ */ jsxRuntime.jsx(
820
- "nav",
821
- {
822
- ref,
823
- role: "navigation",
824
- "aria-label": ariaLabel,
825
- className: clsx18__default.default("ds-pagination", className),
826
- ...props
827
- }
828
- );
829
- }
830
- );
831
- Pagination.displayName = "Pagination";
832
- var PaginationContent = React20__default.default.forwardRef(({ className, ...props }, ref) => {
833
- return /* @__PURE__ */ jsxRuntime.jsx(
834
- "ul",
835
- {
836
- ref,
837
- className: clsx18__default.default("ds-pagination__content", className),
838
- ...props
839
- }
840
- );
841
- });
842
- PaginationContent.displayName = "PaginationContent";
843
- var PaginationItem = React20__default.default.forwardRef(({ className, ...props }, ref) => {
844
- return /* @__PURE__ */ jsxRuntime.jsx(
845
- "li",
846
- {
847
- ref,
848
- className: clsx18__default.default("ds-pagination__item", className),
849
- ...props
850
- }
851
- );
852
- });
853
- PaginationItem.displayName = "PaginationItem";
854
- var PaginationLink = React20__default.default.forwardRef(({ className, isActive = false, size = "md", asChild = false, ...props }, ref) => {
855
- const Comp = asChild ? reactSlot.Slot : "button";
856
- return /* @__PURE__ */ jsxRuntime.jsx(
857
- Comp,
858
- {
859
- ref,
860
- "aria-current": isActive ? "page" : void 0,
861
- className: clsx18__default.default(
862
- "ds-pagination__link",
863
- `ds-pagination__link--${size}`,
864
- isActive && "ds-pagination__link--active",
865
- className
866
- ),
867
- ...props
868
- }
869
- );
870
- });
871
- PaginationLink.displayName = "PaginationLink";
872
- var PaginationPrevious = React20__default.default.forwardRef(({ className, label = "Previous", "aria-label": ariaLabel = "Go to previous page", ...props }, ref) => {
873
- return /* @__PURE__ */ jsxRuntime.jsxs(
874
- PaginationLink,
875
- {
876
- ref,
877
- "aria-label": ariaLabel,
878
- className: clsx18__default.default("ds-pagination__prev", className),
879
- ...props,
880
- children: [
881
- /* @__PURE__ */ jsxRuntime.jsx(
882
- "svg",
883
- {
884
- xmlns: "http://www.w3.org/2000/svg",
885
- width: "16",
886
- height: "16",
887
- viewBox: "0 0 24 24",
888
- fill: "none",
889
- stroke: "currentColor",
890
- strokeWidth: "2",
891
- strokeLinecap: "round",
892
- strokeLinejoin: "round",
893
- "aria-hidden": "true",
894
- children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m15 18-6-6 6-6" })
895
- }
896
- ),
897
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: label })
898
- ]
899
- }
900
- );
901
- });
902
- PaginationPrevious.displayName = "PaginationPrevious";
903
- var PaginationNext = React20__default.default.forwardRef(({ className, label = "Next", "aria-label": ariaLabel = "Go to next page", ...props }, ref) => {
904
- return /* @__PURE__ */ jsxRuntime.jsxs(
905
- PaginationLink,
906
- {
907
- ref,
908
- "aria-label": ariaLabel,
909
- className: clsx18__default.default("ds-pagination__next", className),
910
- ...props,
911
- children: [
912
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: label }),
913
- /* @__PURE__ */ jsxRuntime.jsx(
914
- "svg",
915
- {
916
- xmlns: "http://www.w3.org/2000/svg",
917
- width: "16",
918
- height: "16",
919
- viewBox: "0 0 24 24",
920
- fill: "none",
921
- stroke: "currentColor",
922
- strokeWidth: "2",
923
- strokeLinecap: "round",
924
- strokeLinejoin: "round",
925
- "aria-hidden": "true",
926
- children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "m9 18 6-6-6-6" })
927
- }
928
- )
929
- ]
930
- }
931
- );
932
- });
933
- PaginationNext.displayName = "PaginationNext";
934
- var PaginationEllipsis = React20__default.default.forwardRef(({ className, ...props }, ref) => {
935
- return /* @__PURE__ */ jsxRuntime.jsx(
936
- "span",
937
- {
938
- ref,
939
- "aria-hidden": "true",
940
- className: clsx18__default.default("ds-pagination__ellipsis", className),
941
- ...props,
942
- children: "..."
943
- }
944
- );
945
- });
946
- PaginationEllipsis.displayName = "PaginationEllipsis";
947
- var levelToElement = {
948
- display: "h1",
949
- h1: "h1",
950
- h2: "h2",
951
- h3: "h3",
952
- h4: "h4",
953
- h5: "h5",
954
- h6: "h6"
955
- };
956
- var Heading = React20__default.default.forwardRef(
957
- ({ className, level = "h2", as, children, ...props }, ref) => {
958
- const Comp = as ?? levelToElement[level];
959
- return /* @__PURE__ */ jsxRuntime.jsx(
960
- Comp,
961
- {
962
- ref,
963
- className: clsx18__default.default("ds-heading", `ds-heading--${level}`, className),
964
- ...props,
965
- children
966
- }
967
- );
968
- }
969
- );
970
- Heading.displayName = "Heading";
971
- var Text = React20__default.default.forwardRef(
972
- ({ className, variant = "body", as = "p", children, ...props }, ref) => {
973
- const Comp = as;
974
- return /* @__PURE__ */ jsxRuntime.jsx(
975
- Comp,
976
- {
977
- ref,
978
- className: clsx18__default.default("ds-text", `ds-text--${variant}`, className),
979
- ...props,
980
- children
981
- }
982
- );
983
- }
984
- );
985
- Text.displayName = "Text";
986
- var Prose = React20__default.default.forwardRef(
987
- ({ className, children, ...props }, ref) => {
988
- return /* @__PURE__ */ jsxRuntime.jsx(
989
- "div",
990
- {
991
- ref,
992
- className: clsx18__default.default("ds-prose", className),
993
- ...props,
994
- children
995
- }
996
- );
997
- }
998
- );
999
- Prose.displayName = "Prose";
1000
- var CarouselContext = React20__default.default.createContext(void 0);
1001
- function useCarouselContext() {
1002
- const ctx = React20__default.default.useContext(CarouselContext);
1003
- if (!ctx) {
1004
- throw new Error("Carousel compound components must be used within a <Carousel> parent.");
1005
- }
1006
- return ctx;
1007
- }
1008
- var Carousel = React20__default.default.forwardRef(
1009
- ({ className, children, ...props }, ref) => {
1010
- const scrollRef = React20__default.default.useRef(null);
1011
- return /* @__PURE__ */ jsxRuntime.jsx(CarouselContext.Provider, { value: { scrollRef }, children: /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx18__default.default("ds-carousel", className), ...props, children }) });
1012
- }
1013
- );
1014
- Carousel.displayName = "Carousel";
1015
- var CarouselContent = React20__default.default.forwardRef(({ className, ...props }, ref) => {
1016
- const { scrollRef } = useCarouselContext();
1017
- const mergedRef = React20__default.default.useCallback(
1018
- (node) => {
1019
- scrollRef.current = node;
1020
- if (typeof ref === "function") {
1021
- ref(node);
1022
- } else if (ref) {
1023
- ref.current = node;
1024
- }
1025
- },
1026
- [ref, scrollRef]
1027
- );
1028
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ref: mergedRef, className: clsx18__default.default("ds-carousel__content", className), ...props });
1029
- });
1030
- CarouselContent.displayName = "CarouselContent";
1031
- var CarouselItem = React20__default.default.forwardRef(
1032
- ({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx18__default.default("ds-carousel__item", className), ...props })
1033
- );
1034
- CarouselItem.displayName = "CarouselItem";
1035
- var CarouselPrevious = React20__default.default.forwardRef(({ className, onClick, children, "aria-label": ariaLabel = "Previous slide", ...props }, ref) => {
1036
- const { scrollRef } = useCarouselContext();
1037
- const handleClick = (e) => {
1038
- const container = scrollRef.current;
1039
- if (container) {
1040
- const firstItem = container.querySelector(".ds-carousel__item");
1041
- const scrollAmount = firstItem ? firstItem.clientWidth : container.clientWidth;
1042
- container.scrollBy({ left: -scrollAmount, behavior: "smooth" });
1043
- }
1044
- onClick?.(e);
1045
- };
1046
- return /* @__PURE__ */ jsxRuntime.jsx(
1047
- "button",
1048
- {
1049
- ref,
1050
- type: "button",
1051
- className: clsx18__default.default("ds-carousel__prev", className),
1052
- "aria-label": ariaLabel,
1053
- onClick: handleClick,
1054
- ...props,
1055
- children: children ?? /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(
1056
- "path",
1057
- {
1058
- d: "M10 12L6 8L10 4",
1059
- stroke: "currentColor",
1060
- strokeWidth: "1.5",
1061
- strokeLinecap: "round",
1062
- strokeLinejoin: "round"
1063
- }
1064
- ) })
1065
- }
1066
- );
1067
- });
1068
- CarouselPrevious.displayName = "CarouselPrevious";
1069
- var CarouselNext = React20__default.default.forwardRef(({ className, onClick, children, "aria-label": ariaLabel = "Next slide", ...props }, ref) => {
1070
- const { scrollRef } = useCarouselContext();
1071
- const handleClick = (e) => {
1072
- const container = scrollRef.current;
1073
- if (container) {
1074
- const firstItem = container.querySelector(".ds-carousel__item");
1075
- const scrollAmount = firstItem ? firstItem.clientWidth : container.clientWidth;
1076
- container.scrollBy({ left: scrollAmount, behavior: "smooth" });
1077
- }
1078
- onClick?.(e);
1079
- };
1080
- return /* @__PURE__ */ jsxRuntime.jsx(
1081
- "button",
1082
- {
1083
- ref,
1084
- type: "button",
1085
- className: clsx18__default.default("ds-carousel__next", className),
1086
- "aria-label": ariaLabel,
1087
- onClick: handleClick,
1088
- ...props,
1089
- children: children ?? /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(
1090
- "path",
1091
- {
1092
- d: "M6 4L10 8L6 12",
1093
- stroke: "currentColor",
1094
- strokeWidth: "1.5",
1095
- strokeLinecap: "round",
1096
- strokeLinejoin: "round"
1097
- }
1098
- ) })
1099
- }
1100
- );
1101
- });
1102
- CarouselNext.displayName = "CarouselNext";
1103
- function mergeRefs(...refs) {
1104
- return (node) => {
1105
- refs.forEach((ref) => {
1106
- if (typeof ref === "function") ref(node);
1107
- else if (ref) ref.current = node;
1108
- });
1109
- };
1110
- }
1111
- var CommandContext = React20__default.default.createContext(void 0);
1112
- function useCommandContext() {
1113
- const ctx = React20__default.default.useContext(CommandContext);
1114
- if (!ctx) {
1115
- throw new Error("Command compound components must be used within a <Command> parent.");
1116
- }
1117
- return ctx;
1118
- }
1119
- function getOptionElements(listEl) {
1120
- if (!listEl) return [];
1121
- return Array.from(listEl.querySelectorAll('[role="option"]'));
1122
- }
1123
- var Command = React20__default.default.forwardRef(
1124
- ({ className, value: controlledValue, onValueChange, onKeyDown, children, ...props }, ref) => {
1125
- const [uncontrolledValue, setUncontrolledValue] = React20__default.default.useState("");
1126
- const [activeId, setActiveId] = React20__default.default.useState(null);
1127
- const listRef = React20__default.default.useRef(null);
1128
- const isControlled = controlledValue !== void 0;
1129
- const search = isControlled ? controlledValue : uncontrolledValue;
1130
- const inputId = React20__default.default.useId();
1131
- const listId = React20__default.default.useId();
1132
- const setSearch = React20__default.default.useCallback(
1133
- (next) => {
1134
- if (!isControlled) {
1135
- setUncontrolledValue(next);
1136
- }
1137
- onValueChange?.(next);
1138
- },
1139
- [isControlled, onValueChange]
1140
- );
1141
- React20__default.default.useEffect(() => {
1142
- const frame = requestAnimationFrame(() => {
1143
- const items = getOptionElements(listRef.current);
1144
- if (items.length > 0) {
1145
- setActiveId(items[0].id);
1146
- } else {
1147
- setActiveId(null);
1148
- }
1149
- });
1150
- return () => cancelAnimationFrame(frame);
1151
- }, [search]);
1152
- const handleKeyDown = React20__default.default.useCallback(
1153
- (e) => {
1154
- const items = getOptionElements(listRef.current);
1155
- if (items.length === 0) {
1156
- onKeyDown?.(e);
1157
- return;
1158
- }
1159
- const currentIndex = items.findIndex((el) => el.id === activeId);
1160
- switch (e.key) {
1161
- case "ArrowDown": {
1162
- e.preventDefault();
1163
- const nextIndex = currentIndex < items.length - 1 ? currentIndex + 1 : 0;
1164
- setActiveId(items[nextIndex].id);
1165
- items[nextIndex].scrollIntoView?.({ block: "nearest" });
1166
- break;
1167
- }
1168
- case "ArrowUp": {
1169
- e.preventDefault();
1170
- const prevIndex = currentIndex > 0 ? currentIndex - 1 : items.length - 1;
1171
- setActiveId(items[prevIndex].id);
1172
- items[prevIndex].scrollIntoView?.({ block: "nearest" });
1173
- break;
1174
- }
1175
- case "Home": {
1176
- e.preventDefault();
1177
- setActiveId(items[0].id);
1178
- items[0].scrollIntoView?.({ block: "nearest" });
1179
- break;
1180
- }
1181
- case "End": {
1182
- e.preventDefault();
1183
- const lastItem = items[items.length - 1];
1184
- setActiveId(lastItem.id);
1185
- lastItem.scrollIntoView?.({ block: "nearest" });
1186
- break;
1187
- }
1188
- case "Enter": {
1189
- const target = e.target;
1190
- if (target.getAttribute("role") === "option") break;
1191
- const activeEl = activeId ? document.getElementById(activeId) : null;
1192
- if (activeEl) {
1193
- e.preventDefault();
1194
- activeEl.click();
1195
- }
1196
- break;
1197
- }
1198
- }
1199
- onKeyDown?.(e);
1200
- },
1201
- [activeId, onKeyDown]
1202
- );
1203
- const ctx = React20__default.default.useMemo(
1204
- () => ({ search, setSearch, activeId, setActiveId, listRef, inputId, listId }),
1205
- [search, setSearch, activeId, inputId, listId]
1206
- );
1207
- return /* @__PURE__ */ jsxRuntime.jsx(CommandContext.Provider, { value: ctx, children: /* @__PURE__ */ jsxRuntime.jsx(
1208
- "div",
1209
- {
1210
- ref,
1211
- className: clsx18__default.default("ds-command", className),
1212
- onKeyDown: handleKeyDown,
1213
- ...props,
1214
- children
1215
- }
1216
- ) });
1217
- }
1218
- );
1219
- Command.displayName = "Command";
1220
- var CommandInput = React20__default.default.forwardRef(({ className, onChange, ...props }, ref) => {
1221
- const { search, setSearch, activeId, inputId, listId } = useCommandContext();
1222
- const handleChange = (e) => {
1223
- setSearch(e.target.value);
1224
- onChange?.(e);
1225
- };
1226
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-command__input-wrapper", children: [
1227
- /* @__PURE__ */ jsxRuntime.jsxs(
1228
- "svg",
1229
- {
1230
- className: "ds-command__input-icon",
1231
- width: "16",
1232
- height: "16",
1233
- viewBox: "0 0 16 16",
1234
- fill: "none",
1235
- "aria-hidden": "true",
1236
- children: [
1237
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "7", cy: "7", r: "5", stroke: "currentColor", strokeWidth: "1.5" }),
1238
- /* @__PURE__ */ jsxRuntime.jsx(
1239
- "path",
1240
- {
1241
- d: "M11 11L14 14",
1242
- stroke: "currentColor",
1243
- strokeWidth: "1.5",
1244
- strokeLinecap: "round"
1245
- }
1246
- )
1247
- ]
1248
- }
1249
- ),
1250
- /* @__PURE__ */ jsxRuntime.jsx(
1251
- "input",
1252
- {
1253
- ref,
1254
- id: inputId,
1255
- type: "text",
1256
- role: "combobox",
1257
- "aria-expanded": "true",
1258
- "aria-controls": listId,
1259
- "aria-activedescendant": activeId ?? void 0,
1260
- "aria-autocomplete": "list",
1261
- autoComplete: "off",
1262
- className: clsx18__default.default("ds-command__input", className),
1263
- value: search,
1264
- onChange: handleChange,
1265
- ...props
1266
- }
1267
- )
1268
- ] });
1269
- });
1270
- CommandInput.displayName = "CommandInput";
1271
- var CommandList = React20__default.default.forwardRef(
1272
- ({ className, ...props }, ref) => {
1273
- const { listRef, listId } = useCommandContext();
1274
- return /* @__PURE__ */ jsxRuntime.jsx(
1275
- "div",
1276
- {
1277
- ref: mergeRefs(ref, listRef),
1278
- id: listId,
1279
- role: "listbox",
1280
- className: clsx18__default.default("ds-command__list", className),
1281
- ...props
1282
- }
1283
- );
1284
- }
1285
- );
1286
- CommandList.displayName = "CommandList";
1287
- var CommandEmpty = React20__default.default.forwardRef(
1288
- ({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx18__default.default("ds-command__empty", className), ...props })
1289
- );
1290
- CommandEmpty.displayName = "CommandEmpty";
1291
- var CommandGroup = React20__default.default.forwardRef(
1292
- ({ className, heading, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: clsx18__default.default("ds-command__group", className), ...props, children: [
1293
- heading && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-command__group-heading", children: heading }),
1294
- children
1295
- ] })
1296
- );
1297
- CommandGroup.displayName = "CommandGroup";
1298
- var CommandItem = React20__default.default.forwardRef(
1299
- ({ className, onSelect, onClick, onKeyDown, onPointerEnter, id: externalId, ...props }, ref) => {
1300
- const generatedId = React20__default.default.useId();
1301
- const { activeId, setActiveId } = useCommandContext();
1302
- const itemId = externalId || generatedId;
1303
- const isActive = activeId === itemId;
1304
- const handleClick = (e) => {
1305
- onSelect?.();
1306
- onClick?.(e);
1307
- };
1308
- const handleKeyDown = (e) => {
1309
- if (e.key === "Enter") {
1310
- onSelect?.();
1311
- }
1312
- onKeyDown?.(e);
1313
- };
1314
- const handlePointerEnter = (e) => {
1315
- setActiveId(itemId);
1316
- onPointerEnter?.(e);
1317
- };
1318
- return /* @__PURE__ */ jsxRuntime.jsx(
1319
- "div",
1320
- {
1321
- ref,
1322
- id: itemId,
1323
- role: "option",
1324
- tabIndex: 0,
1325
- "aria-selected": isActive,
1326
- "data-active": isActive || void 0,
1327
- className: clsx18__default.default("ds-command__item", className),
1328
- onClick: handleClick,
1329
- onKeyDown: handleKeyDown,
1330
- onPointerEnter: handlePointerEnter,
1331
- ...props
1332
- }
1333
- );
1334
- }
1335
- );
1336
- CommandItem.displayName = "CommandItem";
1337
- var CommandSeparator = React20__default.default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx18__default.default("ds-command__separator", className), ...props }));
1338
- CommandSeparator.displayName = "CommandSeparator";
1339
- var SIZE_CLASSES = {
1340
- sm: "ds-dialog__content--sm",
1341
- lg: "ds-dialog__content--lg",
1342
- xl: "ds-dialog__content--xl"
1343
- };
1344
- var CommandDialog = ({
1345
- open,
1346
- onOpenChange,
1347
- title = "Search",
1348
- size = "lg",
1349
- className,
1350
- children
1351
- }) => /* @__PURE__ */ jsxRuntime.jsx(chunkHCZW5AJN_cjs.Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(
1352
- chunkHCZW5AJN_cjs.DialogContent,
1353
- {
1354
- className: clsx18__default.default("ds-command-dialog", SIZE_CLASSES[size], className),
1355
- children: [
1356
- /* @__PURE__ */ jsxRuntime.jsx(chunkHCZW5AJN_cjs.DialogTitle, { className: "ds-command-dialog__sr-title", children: title }),
1357
- children
1358
- ]
1359
- }
1360
- ) });
1361
- CommandDialog.displayName = "CommandDialog";
1362
- var DrawerContext = React20__default.default.createContext(void 0);
1363
- function useDrawerContext() {
1364
- const ctx = React20__default.default.useContext(DrawerContext);
1365
- if (!ctx) {
1366
- throw new Error("Drawer compound components must be used within a <Drawer> parent.");
1367
- }
1368
- return ctx;
1369
- }
1370
- var Drawer = ({ open: controlledOpen, onOpenChange, children }) => {
1371
- const [uncontrolledOpen, setUncontrolledOpen] = React20__default.default.useState(false);
1372
- const isControlled = controlledOpen !== void 0;
1373
- const open = isControlled ? controlledOpen : uncontrolledOpen;
1374
- const handleOpenChange = React20__default.default.useCallback(
1375
- (next) => {
1376
- if (!isControlled) {
1377
- setUncontrolledOpen(next);
1378
- }
1379
- onOpenChange?.(next);
1380
- },
1381
- [isControlled, onOpenChange]
1382
- );
1383
- return /* @__PURE__ */ jsxRuntime.jsx(DrawerContext.Provider, { value: { open, onOpenChange: handleOpenChange }, children });
1384
- };
1385
- Drawer.displayName = "Drawer";
1386
- var DrawerTrigger = React20__default.default.forwardRef(({ onClick, ...props }, ref) => {
1387
- const { onOpenChange } = useDrawerContext();
1388
- const handleClick = (e) => {
1389
- onOpenChange(true);
1390
- onClick?.(e);
1391
- };
1392
- return /* @__PURE__ */ jsxRuntime.jsx("button", { ref, type: "button", onClick: handleClick, ...props });
1393
- });
1394
- DrawerTrigger.displayName = "DrawerTrigger";
1395
- var DrawerClose = React20__default.default.forwardRef(({ onClick, ...props }, ref) => {
1396
- const { onOpenChange } = useDrawerContext();
1397
- const handleClick = (e) => {
1398
- onOpenChange(false);
1399
- onClick?.(e);
1400
- };
1401
- return /* @__PURE__ */ jsxRuntime.jsx("button", { ref, type: "button", onClick: handleClick, ...props });
1402
- });
1403
- DrawerClose.displayName = "DrawerClose";
1404
- var DrawerContent = React20__default.default.forwardRef(
1405
- ({ className, children, ...props }, ref) => {
1406
- const { open, onOpenChange } = useDrawerContext();
1407
- if (!open) return null;
1408
- return ReactDOM.createPortal(
1409
- /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1410
- /* @__PURE__ */ jsxRuntime.jsx(
1411
- "div",
1412
- {
1413
- className: "ds-drawer__backdrop",
1414
- onClick: () => onOpenChange(false),
1415
- "aria-hidden": "true"
1416
- }
1417
- ),
1418
- /* @__PURE__ */ jsxRuntime.jsxs(
1419
- "div",
1420
- {
1421
- ref,
1422
- role: "dialog",
1423
- className: clsx18__default.default("ds-drawer__content", className),
1424
- ...props,
1425
- children: [
1426
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-drawer__handle", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-drawer__handle-bar" }) }),
1427
- children
1428
- ]
1429
- }
1430
- )
1431
- ] }),
1432
- document.body
1433
- );
1434
- }
1435
- );
1436
- DrawerContent.displayName = "DrawerContent";
1437
- var DrawerHeader = React20__default.default.forwardRef(
1438
- ({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx18__default.default("ds-drawer__header", className), ...props })
1439
- );
1440
- DrawerHeader.displayName = "DrawerHeader";
1441
- var DrawerTitle = React20__default.default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("h2", { ref, className: clsx18__default.default("ds-drawer__title", className), ...props }));
1442
- DrawerTitle.displayName = "DrawerTitle";
1443
- var DrawerDescription = React20__default.default.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("p", { ref, className: clsx18__default.default("ds-drawer__description", className), ...props }));
1444
- DrawerDescription.displayName = "DrawerDescription";
1445
- var DrawerFooter = React20__default.default.forwardRef(
1446
- ({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx18__default.default("ds-drawer__footer", className), ...props })
1447
- );
1448
- DrawerFooter.displayName = "DrawerFooter";
1449
- var DEFAULT_WEEKDAY_LABELS = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
1450
- var DEFAULT_MONTH_NAMES = [
1451
- "January",
1452
- "February",
1453
- "March",
1454
- "April",
1455
- "May",
1456
- "June",
1457
- "July",
1458
- "August",
1459
- "September",
1460
- "October",
1461
- "November",
1462
- "December"
1463
- ];
1464
- function isSameDay(a, b) {
1465
- return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
1466
- }
1467
- function getDaysInMonth(year, month) {
1468
- return new Date(year, month + 1, 0).getDate();
1469
- }
1470
- function getCalendarGrid(year, month) {
1471
- const firstDay = new Date(year, month, 1).getDay();
1472
- const daysInMonth = getDaysInMonth(year, month);
1473
- const daysInPrevMonth = getDaysInMonth(year, month - 1);
1474
- const days = [];
1475
- for (let i = firstDay - 1; i >= 0; i--) {
1476
- days.push(new Date(year, month - 1, daysInPrevMonth - i));
1477
- }
1478
- for (let d = 1; d <= daysInMonth; d++) {
1479
- days.push(new Date(year, month, d));
1480
- }
1481
- const remaining = 7 - days.length % 7;
1482
- if (remaining < 7) {
1483
- for (let d = 1; d <= remaining; d++) {
1484
- days.push(new Date(year, month + 1, d));
1485
- }
1486
- }
1487
- const weeks = [];
1488
- for (let i = 0; i < days.length; i += 7) {
1489
- weeks.push(days.slice(i, i + 7));
1490
- }
1491
- return weeks;
1492
- }
1493
- var Calendar = React20__default.default.forwardRef(
1494
- ({ className, selected, onSelect, month, onMonthChange, labels, ...props }, ref) => {
1495
- const weekdayLabels = labels?.weekdays ?? DEFAULT_WEEKDAY_LABELS;
1496
- const monthNames = labels?.months ?? DEFAULT_MONTH_NAMES;
1497
- const formatDayLabel = labels?.formatDayLabel ?? ((d) => d.toDateString());
1498
- const today = /* @__PURE__ */ new Date();
1499
- const [internalMonth, setInternalMonth] = React20__default.default.useState(
1500
- () => month ?? selected ?? /* @__PURE__ */ new Date()
1501
- );
1502
- const displayedMonth = month ?? internalMonth;
1503
- const displayYear = displayedMonth.getFullYear();
1504
- const displayMonthIndex = displayedMonth.getMonth();
1505
- const weeks = getCalendarGrid(displayYear, displayMonthIndex);
1506
- const navigateMonth = (delta) => {
1507
- const next = new Date(displayYear, displayMonthIndex + delta, 1);
1508
- if (onMonthChange) {
1509
- onMonthChange(next);
1510
- } else {
1511
- setInternalMonth(next);
1512
- }
1513
- };
1514
- const handleDayClick = (date) => {
1515
- onSelect?.(date);
1516
- };
1517
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: clsx18__default.default("ds-calendar", className), ...props, children: [
1518
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-calendar__header", children: [
1519
- /* @__PURE__ */ jsxRuntime.jsx(
1520
- "button",
1521
- {
1522
- type: "button",
1523
- className: "ds-calendar__nav-button",
1524
- onClick: () => navigateMonth(-1),
1525
- "aria-label": labels?.previousMonth ?? "Previous month",
1526
- children: /* @__PURE__ */ jsxRuntime.jsx(
1527
- "svg",
1528
- {
1529
- width: "16",
1530
- height: "16",
1531
- viewBox: "0 0 24 24",
1532
- fill: "none",
1533
- stroke: "currentColor",
1534
- strokeWidth: "2",
1535
- strokeLinecap: "round",
1536
- strokeLinejoin: "round",
1537
- children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "15 18 9 12 15 6" })
1538
- }
1539
- )
1540
- }
1541
- ),
1542
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-calendar__title", children: [
1543
- monthNames[displayMonthIndex],
1544
- " ",
1545
- displayYear
1546
- ] }),
1547
- /* @__PURE__ */ jsxRuntime.jsx(
1548
- "button",
1549
- {
1550
- type: "button",
1551
- className: "ds-calendar__nav-button",
1552
- onClick: () => navigateMonth(1),
1553
- "aria-label": labels?.nextMonth ?? "Next month",
1554
- children: /* @__PURE__ */ jsxRuntime.jsx(
1555
- "svg",
1556
- {
1557
- width: "16",
1558
- height: "16",
1559
- viewBox: "0 0 24 24",
1560
- fill: "none",
1561
- stroke: "currentColor",
1562
- strokeWidth: "2",
1563
- strokeLinecap: "round",
1564
- strokeLinejoin: "round",
1565
- children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "9 18 15 12 9 6" })
1566
- }
1567
- )
1568
- }
1569
- )
1570
- ] }),
1571
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-calendar__grid", role: "grid", children: [
1572
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-calendar__head-row", role: "row", children: weekdayLabels.map((wdLabel) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-calendar__head-cell", role: "columnheader", children: wdLabel }, wdLabel)) }),
1573
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-calendar__body", children: weeks.map((week, wi) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-calendar__row", role: "row", children: week.map((date, di) => {
1574
- const isOutside = date.getMonth() !== displayMonthIndex;
1575
- const isSelected = selected ? isSameDay(date, selected) : false;
1576
- const isToday = isSameDay(date, today);
1577
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-calendar__cell", role: "gridcell", children: /* @__PURE__ */ jsxRuntime.jsx(
1578
- "button",
1579
- {
1580
- type: "button",
1581
- className: clsx18__default.default(
1582
- "ds-calendar__day",
1583
- isSelected && "ds-calendar__day--selected",
1584
- isToday && "ds-calendar__day--today",
1585
- isOutside && "ds-calendar__day--outside"
1586
- ),
1587
- onClick: () => handleDayClick(date),
1588
- tabIndex: isOutside ? -1 : 0,
1589
- "aria-label": formatDayLabel(date),
1590
- children: date.getDate()
1591
- }
1592
- ) }, di);
1593
- }) }, wi)) })
1594
- ] })
1595
- ] });
1596
- }
1597
- );
1598
- Calendar.displayName = "Calendar";
1599
- var InputOTPContext = React20__default.default.createContext({
1600
- value: "",
1601
- activeIndex: -1
1602
- });
1603
- var InputOTP = React20__default.default.forwardRef(
1604
- ({ className, length = 6, value = "", onChange, children, "aria-label": ariaLabel = "One-time password", ...props }, ref) => {
1605
- const inputRef = React20__default.default.useRef(null);
1606
- const [activeIndex, setActiveIndex] = React20__default.default.useState(-1);
1607
- const handleChange = (e) => {
1608
- const newValue = e.target.value.replace(/[^0-9]/g, "").slice(0, length);
1609
- onChange?.(newValue);
1610
- };
1611
- const handleFocus = () => {
1612
- setActiveIndex(Math.min(value.length, length - 1));
1613
- };
1614
- const handleBlur = () => {
1615
- setActiveIndex(-1);
1616
- };
1617
- const handleKeyDown = (e) => {
1618
- if (e.key === "Backspace" && value.length > 0) {
1619
- onChange?.(value.slice(0, -1));
1620
- }
1621
- };
1622
- const handleContainerClick = () => {
1623
- inputRef.current?.focus();
1624
- };
1625
- const contextValue = React20__default.default.useMemo(
1626
- () => ({ value, activeIndex }),
1627
- [value, activeIndex]
1628
- );
1629
- return /* @__PURE__ */ jsxRuntime.jsx(InputOTPContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsxs(
1630
- "div",
1631
- {
1632
- ref,
1633
- className: clsx18__default.default("ds-input-otp", className),
1634
- onClick: handleContainerClick,
1635
- ...props,
1636
- children: [
1637
- /* @__PURE__ */ jsxRuntime.jsx(
1638
- "input",
1639
- {
1640
- ref: inputRef,
1641
- type: "text",
1642
- inputMode: "numeric",
1643
- autoComplete: "one-time-code",
1644
- pattern: "[0-9]*",
1645
- maxLength: length,
1646
- value,
1647
- onChange: handleChange,
1648
- onFocus: handleFocus,
1649
- onBlur: handleBlur,
1650
- onKeyDown: handleKeyDown,
1651
- className: "ds-input-otp__hidden-input",
1652
- "aria-label": ariaLabel
1653
- }
1654
- ),
1655
- children
1656
- ]
1657
- }
1658
- ) });
1659
- }
1660
- );
1661
- InputOTP.displayName = "InputOTP";
1662
- var InputOTPGroup = React20__default.default.forwardRef(({ className, ...props }, ref) => {
1663
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx18__default.default("ds-input-otp__group", className), ...props });
1664
- });
1665
- InputOTPGroup.displayName = "InputOTPGroup";
1666
- var InputOTPSlot = React20__default.default.forwardRef(
1667
- ({ className, index, ...props }, ref) => {
1668
- const { value, activeIndex } = React20__default.default.useContext(InputOTPContext);
1669
- const char = value[index] ?? "";
1670
- const isActive = activeIndex === index;
1671
- const isFilled = char !== "";
1672
- return /* @__PURE__ */ jsxRuntime.jsx(
1673
- "div",
1674
- {
1675
- ref,
1676
- className: clsx18__default.default(
1677
- "ds-input-otp__slot",
1678
- isActive && "ds-input-otp__slot--active",
1679
- isFilled && "ds-input-otp__slot--filled",
1680
- className
1681
- ),
1682
- ...props,
1683
- children: char
1684
- }
1685
- );
1686
- }
1687
- );
1688
- InputOTPSlot.displayName = "InputOTPSlot";
1689
- var InputOTPSeparator = React20__default.default.forwardRef(({ className, ...props }, ref) => {
1690
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx18__default.default("ds-input-otp__separator", className), role: "separator", ...props, children: /* @__PURE__ */ jsxRuntime.jsx(
1691
- "svg",
1692
- {
1693
- width: "8",
1694
- height: "8",
1695
- viewBox: "0 0 8 8",
1696
- fill: "currentColor",
1697
- children: /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "4", cy: "4", r: "2" })
1698
- }
1699
- ) });
1700
- });
1701
- InputOTPSeparator.displayName = "InputOTPSeparator";
1702
- var ContextMenuContext = React20__default.default.createContext({
1703
- open: false,
1704
- position: { x: 0, y: 0 },
1705
- onClose: () => {
1706
- }
1707
- });
1708
- function ContextMenu({ children }) {
1709
- const [open, setOpen] = React20__default.default.useState(false);
1710
- const [position, setPosition] = React20__default.default.useState({ x: 0, y: 0 });
1711
- const handleOpen = React20__default.default.useCallback((x, y) => {
1712
- setPosition({ x, y });
1713
- setOpen(true);
1714
- }, []);
1715
- const handleClose = React20__default.default.useCallback(() => {
1716
- setOpen(false);
1717
- }, []);
1718
- const contextValue = React20__default.default.useMemo(
1719
- () => ({ open, position, onClose: handleClose }),
1720
- [open, position, handleClose]
1721
- );
1722
- return /* @__PURE__ */ jsxRuntime.jsx(ContextMenuInternalContext.Provider, { value: { onOpen: handleOpen }, children: /* @__PURE__ */ jsxRuntime.jsx(ContextMenuContext.Provider, { value: contextValue, children }) });
1723
- }
1724
- ContextMenu.displayName = "ContextMenu";
1725
- var ContextMenuInternalContext = React20__default.default.createContext({ onOpen: () => {
1726
- } });
1727
- var ContextMenuTrigger = React20__default.default.forwardRef(({ className, onContextMenu, ...props }, ref) => {
1728
- const { onOpen } = React20__default.default.useContext(ContextMenuInternalContext);
1729
- const handleContextMenu = (e) => {
1730
- e.preventDefault();
1731
- onOpen(e.clientX, e.clientY);
1732
- onContextMenu?.(e);
1733
- };
1734
- return /* @__PURE__ */ jsxRuntime.jsx(
1735
- "div",
1736
- {
1737
- ref,
1738
- className: clsx18__default.default("ds-context-menu__trigger", className),
1739
- onContextMenu: handleContextMenu,
1740
- ...props
1741
- }
1742
- );
1743
- });
1744
- ContextMenuTrigger.displayName = "ContextMenuTrigger";
1745
- var ContextMenuContent = React20__default.default.forwardRef(({ className, ...props }, ref) => {
1746
- const { open, position, onClose } = React20__default.default.useContext(ContextMenuContext);
1747
- const contentRef = React20__default.default.useRef(null);
1748
- const mergedRef = React20__default.default.useCallback(
1749
- (node) => {
1750
- contentRef.current = node;
1751
- if (typeof ref === "function") ref(node);
1752
- else if (ref) ref.current = node;
1753
- },
1754
- [ref]
1755
- );
1756
- React20__default.default.useEffect(() => {
1757
- if (!open) return;
1758
- const handleClickOutside = (e) => {
1759
- if (contentRef.current && !contentRef.current.contains(e.target)) {
1760
- onClose();
1761
- }
1762
- };
1763
- const handleEscape = (e) => {
1764
- if (e.key === "Escape") {
1765
- onClose();
1766
- }
1767
- };
1768
- const timer = setTimeout(() => {
1769
- document.addEventListener("mousedown", handleClickOutside);
1770
- }, 0);
1771
- document.addEventListener("keydown", handleEscape);
1772
- return () => {
1773
- clearTimeout(timer);
1774
- document.removeEventListener("mousedown", handleClickOutside);
1775
- document.removeEventListener("keydown", handleEscape);
1776
- };
1777
- }, [open, onClose]);
1778
- if (!open) return null;
1779
- return ReactDOM__default.default.createPortal(
1780
- /* @__PURE__ */ jsxRuntime.jsx(
1781
- "div",
1782
- {
1783
- ref: mergedRef,
1784
- role: "menu",
1785
- className: clsx18__default.default("ds-context-menu__content", className),
1786
- style: { top: position.y, left: position.x },
1787
- ...props
1788
- }
1789
- ),
1790
- document.body
1791
- );
1792
- });
1793
- ContextMenuContent.displayName = "ContextMenuContent";
1794
- var ContextMenuItem = React20__default.default.forwardRef(
1795
- ({ className, onSelect, onClick, ...props }, ref) => {
1796
- const { onClose } = React20__default.default.useContext(ContextMenuContext);
1797
- const handleClick = (e) => {
1798
- onSelect?.();
1799
- onClose();
1800
- onClick?.(e);
1801
- };
1802
- return /* @__PURE__ */ jsxRuntime.jsx(
1803
- "div",
1804
- {
1805
- ref,
1806
- role: "menuitem",
1807
- className: clsx18__default.default("ds-context-menu__item", className),
1808
- onClick: handleClick,
1809
- ...props
1810
- }
1811
- );
1812
- }
1813
- );
1814
- ContextMenuItem.displayName = "ContextMenuItem";
1815
- var ContextMenuSeparator = React20__default.default.forwardRef(({ className, ...props }, ref) => {
1816
- return /* @__PURE__ */ jsxRuntime.jsx(
1817
- "div",
1818
- {
1819
- ref,
1820
- role: "separator",
1821
- className: clsx18__default.default("ds-context-menu__separator", className),
1822
- ...props
1823
- }
1824
- );
1825
- });
1826
- ContextMenuSeparator.displayName = "ContextMenuSeparator";
1827
- var ContextMenuLabel = React20__default.default.forwardRef(({ className, ...props }, ref) => {
1828
- return /* @__PURE__ */ jsxRuntime.jsx(
1829
- "div",
1830
- {
1831
- ref,
1832
- className: clsx18__default.default("ds-context-menu__label", className),
1833
- ...props
1834
- }
1835
- );
1836
- });
1837
- ContextMenuLabel.displayName = "ContextMenuLabel";
1838
- var FormFieldContext = React20__default.default.createContext(void 0);
1839
- function useFormField() {
1840
- const ctx = React20__default.default.useContext(FormFieldContext);
1841
- if (!ctx) {
1842
- throw new Error("useFormField must be used within a <FormField>");
1843
- }
1844
- return ctx;
1845
- }
1846
- var FormItemContext = React20__default.default.createContext(void 0);
1847
- function FormField({ name, children, value, onChange, onBlur, error }) {
1848
- const id = React20__default.default.useId();
1849
- const contextValue = React20__default.default.useMemo(
1850
- () => ({ id: `${id}-form-item`, name, error }),
1851
- [id, name, error]
1852
- );
1853
- const fieldProps = React20__default.default.useMemo(
1854
- () => ({
1855
- value: value ?? "",
1856
- onChange: onChange ?? (() => {
1857
- }),
1858
- onBlur: onBlur ?? (() => {
1859
- }),
1860
- error,
1861
- id: `${id}-form-item`
1862
- }),
1863
- [value, onChange, onBlur, error, id]
1864
- );
1865
- return /* @__PURE__ */ jsxRuntime.jsx(FormFieldContext.Provider, { value: contextValue, children: children(fieldProps) });
1866
- }
1867
- FormField.displayName = "FormField";
1868
- var FormItem = React20__default.default.forwardRef(
1869
- ({ className, ...props }, ref) => {
1870
- const id = React20__default.default.useId();
1871
- const contextValue = React20__default.default.useMemo(() => ({ id }), [id]);
1872
- return /* @__PURE__ */ jsxRuntime.jsx(FormItemContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx18__default.default("ds-form__item", className), ...props }) });
1873
- }
1874
- );
1875
- FormItem.displayName = "FormItem";
1876
- var FormLabel = React20__default.default.forwardRef(({ className, ...props }, ref) => {
1877
- const fieldCtx = React20__default.default.useContext(FormFieldContext);
1878
- const hasError = !!fieldCtx?.error;
1879
- return /* @__PURE__ */ jsxRuntime.jsx(
1880
- "label",
1881
- {
1882
- ref,
1883
- htmlFor: fieldCtx?.id,
1884
- className: clsx18__default.default("ds-form__label", hasError && "ds-form__label--error", className),
1885
- ...props
1886
- }
1887
- );
1888
- });
1889
- FormLabel.displayName = "FormLabel";
1890
- var FormControl = React20__default.default.forwardRef(
1891
- ({ className, children, ...props }, ref) => {
1892
- const fieldCtx = React20__default.default.useContext(FormFieldContext);
1893
- const descriptionId = fieldCtx ? `${fieldCtx.id}-description` : void 0;
1894
- const messageId = fieldCtx ? `${fieldCtx.id}-message` : void 0;
1895
- const hasError = !!fieldCtx?.error;
1896
- return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: clsx18__default.default("ds-form__control", className), ...props, children: React20__default.default.isValidElement(children) ? React20__default.default.cloneElement(children, {
1897
- id: fieldCtx?.id,
1898
- "aria-describedby": descriptionId,
1899
- "aria-invalid": hasError || void 0,
1900
- "aria-errormessage": hasError ? messageId : void 0
1901
- }) : children });
1902
- }
1903
- );
1904
- FormControl.displayName = "FormControl";
1905
- var FormDescription = React20__default.default.forwardRef(({ className, ...props }, ref) => {
1906
- const fieldCtx = React20__default.default.useContext(FormFieldContext);
1907
- return /* @__PURE__ */ jsxRuntime.jsx(
1908
- "p",
1909
- {
1910
- ref,
1911
- id: fieldCtx ? `${fieldCtx.id}-description` : void 0,
1912
- className: clsx18__default.default("ds-form__description", className),
1913
- ...props
1914
- }
1915
- );
1916
- });
1917
- FormDescription.displayName = "FormDescription";
1918
- var FormMessage = React20__default.default.forwardRef(({ className, children, ...props }, ref) => {
1919
- const fieldCtx = React20__default.default.useContext(FormFieldContext);
1920
- const message = children ?? fieldCtx?.error;
1921
- if (!message) return null;
1922
- return /* @__PURE__ */ jsxRuntime.jsx(
1923
- "p",
1924
- {
1925
- ref,
1926
- id: fieldCtx ? `${fieldCtx.id}-message` : void 0,
1927
- role: "alert",
1928
- className: clsx18__default.default("ds-form__message", className),
1929
- ...props,
1930
- children: message
1931
- }
1932
- );
1933
- });
1934
- FormMessage.displayName = "FormMessage";
1935
- var MAX_RESPONSIVE_COLS = 6;
1936
- var Grid = React20.forwardRef(
1937
- ({ columns, rows, align, justify, fixed, className, style, ...props }, ref) => {
1938
- const useColClass = typeof columns === "number" && columns >= 1 && columns <= MAX_RESPONSIVE_COLS;
1939
- return /* @__PURE__ */ jsxRuntime.jsx(
1940
- chunkMDB2WCRQ_cjs.Box,
1941
- {
1942
- ref,
1943
- className: clsx18__default.default(
1944
- "ds-grid",
1945
- useColClass && `ds-grid--cols-${columns}`,
1946
- fixed && "ds-grid--fixed",
1947
- className
1948
- ),
1949
- style: {
1950
- gridTemplateColumns: useColClass ? void 0 : typeof columns === "number" ? `repeat(${columns}, 1fr)` : columns,
1951
- gridTemplateRows: typeof rows === "number" ? `repeat(${rows}, 1fr)` : rows,
1952
- alignItems: align,
1953
- justifyItems: justify,
1954
- ...style
1955
- },
1956
- ...props
1957
- }
1958
- );
1959
- }
1960
- );
1961
- Grid.displayName = "Grid";
1962
- var Section = React20.forwardRef(
1963
- ({ padding = "md", className, children, ...props }, ref) => {
1964
- return /* @__PURE__ */ jsxRuntime.jsx(
1965
- "section",
1966
- {
1967
- ref,
1968
- className: clsx18__default.default("ds-section-block", `ds-section-block--${padding}`, className),
1969
- ...props,
1970
- children
1971
- }
1972
- );
1973
- }
1974
- );
1975
- Section.displayName = "Section";
1976
- var VisuallyHidden = React20.forwardRef(
1977
- ({ className, ...props }, ref) => {
1978
- return /* @__PURE__ */ jsxRuntime.jsx("span", { ref, className: clsx18__default.default("ds-visually-hidden", className), ...props });
1979
- }
1980
- );
1981
- VisuallyHidden.displayName = "VisuallyHidden";
1982
- var StatusBadge = React20__default.default.forwardRef(
1983
- ({ variant = "default", size = "md", dot = false, className, children }, ref) => {
1984
- return /* @__PURE__ */ jsxRuntime.jsxs(
1985
- "span",
1986
- {
1987
- ref,
1988
- className: clsx18__default.default(
1989
- "ds-status-badge",
1990
- `ds-status-badge--${variant}`,
1991
- `ds-status-badge--${size}`,
1992
- dot && "ds-status-badge--dot",
1993
- className
1994
- ),
1995
- children: [
1996
- dot && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ds-status-badge__dot" }),
1997
- children
1998
- ]
1999
- }
2000
- );
2001
- }
2002
- );
2003
- StatusBadge.displayName = "StatusBadge";
2004
- var DefaultIcons = {
2005
- info: /* @__PURE__ */ jsxRuntime.jsxs(
2006
- "svg",
2007
- {
2008
- width: "20",
2009
- height: "20",
2010
- viewBox: "0 0 24 24",
2011
- fill: "none",
2012
- stroke: "currentColor",
2013
- strokeWidth: "2",
2014
- strokeLinecap: "round",
2015
- strokeLinejoin: "round",
2016
- children: [
2017
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10" }),
2018
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
2019
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "8", x2: "12.01", y2: "8" })
2020
- ]
2021
- }
2022
- ),
2023
- success: /* @__PURE__ */ jsxRuntime.jsxs(
2024
- "svg",
2025
- {
2026
- width: "20",
2027
- height: "20",
2028
- viewBox: "0 0 24 24",
2029
- fill: "none",
2030
- stroke: "currentColor",
2031
- strokeWidth: "2",
2032
- strokeLinecap: "round",
2033
- strokeLinejoin: "round",
2034
- children: [
2035
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M22 11.08V12a10 10 0 1 1-5.93-9.14" }),
2036
- /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "22 4 12 14.01 9 11.01" })
2037
- ]
2038
- }
2039
- ),
2040
- warning: /* @__PURE__ */ jsxRuntime.jsxs(
2041
- "svg",
2042
- {
2043
- width: "20",
2044
- height: "20",
2045
- viewBox: "0 0 24 24",
2046
- fill: "none",
2047
- stroke: "currentColor",
2048
- strokeWidth: "2",
2049
- strokeLinecap: "round",
2050
- strokeLinejoin: "round",
2051
- children: [
2052
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z" }),
2053
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "9", x2: "12", y2: "13" }),
2054
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "17", x2: "12.01", y2: "17" })
2055
- ]
2056
- }
2057
- ),
2058
- error: /* @__PURE__ */ jsxRuntime.jsxs(
2059
- "svg",
2060
- {
2061
- width: "20",
2062
- height: "20",
2063
- viewBox: "0 0 24 24",
2064
- fill: "none",
2065
- stroke: "currentColor",
2066
- strokeWidth: "2",
2067
- strokeLinecap: "round",
2068
- strokeLinejoin: "round",
2069
- children: [
2070
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10" }),
2071
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "15", y1: "9", x2: "9", y2: "15" }),
2072
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "9", y1: "9", x2: "15", y2: "15" })
2073
- ]
2074
- }
2075
- )
2076
- };
2077
- var Alert = React20__default.default.forwardRef(
2078
- ({ className, variant = "info", title, icon, children, ...props }, ref) => {
2079
- const renderedIcon = icon || DefaultIcons[variant];
2080
- return /* @__PURE__ */ jsxRuntime.jsxs(
2081
- "div",
2082
- {
2083
- ref,
2084
- role: "alert",
2085
- className: clsx18__default.default("ds-alert", `ds-alert--${variant}`, className),
2086
- ...props,
2087
- children: [
2088
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-alert__icon", "aria-hidden": "true", children: renderedIcon }),
2089
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ds-alert__content", children: [
2090
- title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-alert__title", children: title }),
2091
- children && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-alert__description", children })
2092
- ] })
2093
- ]
2094
- }
2095
- );
2096
- }
2097
- );
2098
- Alert.displayName = "Alert";
2099
- var ToastContext = React20.createContext(void 0);
2100
- var useToast = () => {
2101
- const context = React20.useContext(ToastContext);
2102
- if (!context) {
2103
- throw new Error("useToast must be used within a ToastProvider");
2104
- }
2105
- return context;
2106
- };
2107
- var ToastItem = ({
2108
- title,
2109
- description,
2110
- variant = "info",
2111
- action,
2112
- onDismiss,
2113
- dismissLabel = "Close"
2114
- }) => {
2115
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx18__default.default("ds-toast-root", `ds-toast--${variant}`), "data-state": "open", role: "alert", children: [
2116
- title && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-toast-title", children: title }),
2117
- description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-toast-description", children: description }),
2118
- action && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-toast-action", children: action }),
2119
- /* @__PURE__ */ jsxRuntime.jsx(
2120
- "button",
2121
- {
2122
- onClick: onDismiss,
2123
- style: {
2124
- background: "transparent",
2125
- border: "none",
2126
- color: "var(--text-tertiary)",
2127
- cursor: "pointer",
2128
- padding: "4px",
2129
- marginLeft: "auto",
2130
- gridColumn: "action",
2131
- alignSelf: "start"
2132
- },
2133
- "aria-label": dismissLabel,
2134
- children: /* @__PURE__ */ jsxRuntime.jsxs(
2135
- "svg",
2136
- {
2137
- width: "14",
2138
- height: "14",
2139
- viewBox: "0 0 24 24",
2140
- fill: "none",
2141
- stroke: "currentColor",
2142
- strokeWidth: "2",
2143
- strokeLinecap: "round",
2144
- strokeLinejoin: "round",
2145
- children: [
2146
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
2147
- /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
2148
- ]
2149
- }
2150
- )
2151
- }
2152
- )
2153
- ] });
2154
- };
2155
- var ToastProvider = ({ children }) => {
2156
- const [toasts, setToasts] = React20.useState([]);
2157
- const [mounted, setMounted] = React20.useState(false);
2158
- const idCounter = React20.useRef(0);
2159
- React20.useEffect(() => setMounted(true), []);
2160
- const removeToast = React20.useCallback((id) => {
2161
- setToasts((prev) => prev.filter((t) => t.id !== id));
2162
- }, []);
2163
- const addToast = React20.useCallback(
2164
- ({ duration = 5e3, ...props }) => {
2165
- const id = `toast-${++idCounter.current}`;
2166
- const newToast = { ...props, id, duration };
2167
- setToasts((prev) => [...prev, newToast]);
2168
- if (duration !== Infinity) {
2169
- setTimeout(() => {
2170
- removeToast(id);
2171
- }, duration);
2172
- }
2173
- },
2174
- [removeToast]
2175
- );
2176
- return /* @__PURE__ */ jsxRuntime.jsxs(ToastContext.Provider, { value: { addToast, removeToast }, children: [
2177
- children,
2178
- mounted && ReactDOM.createPortal(
2179
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-toast-viewport", children: toasts.map((toast) => /* @__PURE__ */ jsxRuntime.jsx(ToastItem, { ...toast, onDismiss: () => removeToast(toast.id) }, toast.id)) }),
2180
- document.body
2181
- )
2182
- ] });
2183
- };
2184
- var EmptyState = React20__default.default.forwardRef(
2185
- ({ icon, title, description, action, className, ...props }, ref) => {
2186
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: clsx18__default.default("ds-empty-state", className), ...props, children: [
2187
- icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-empty-state__icon", children: icon }),
2188
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "ds-empty-state__title", children: title }),
2189
- description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "ds-empty-state__description", children: description }),
2190
- action && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ds-empty-state__action", children: action })
2191
- ] });
2192
- }
2193
- );
2194
- EmptyState.displayName = "EmptyState";
2195
-
2196
- // src/tokens/colors.ts
2197
- var COLORS = {
2198
- text: {
2199
- primary: "var(--text-primary)",
2200
- secondary: "var(--text-secondary)",
2201
- tertiary: "var(--text-tertiary)",
2202
- disabled: "var(--text-disabled)"
2203
- },
2204
- glass: {
2205
- base: "var(--glass-base)",
2206
- baseHover: "var(--glass-base-hover)",
2207
- baseActive: "var(--glass-base-active)",
2208
- backdrop: "var(--glass-backdrop)"
2209
- },
2210
- rim: {
2211
- top: "var(--rim-light-top)",
2212
- bottom: "var(--rim-light-bottom)"
2213
- },
2214
- brand: {
2215
- pink: "var(--brand-pink)",
2216
- yellow: "var(--brand-yellow)",
2217
- pinkGlow: "var(--brand-pink-glow)"
2218
- },
2219
- status: {
2220
- success: "var(--status-success)",
2221
- warning: "var(--status-warning)",
2222
- error: "var(--status-error)",
2223
- info: "var(--status-info)"
2224
- },
2225
- button: {
2226
- primaryBg: "var(--btn-primary-bg)",
2227
- primaryBgHover: "var(--btn-primary-bg-hover)",
2228
- secondaryBg: "var(--btn-secondary-bg)",
2229
- secondaryBgHover: "var(--btn-secondary-bg-hover)"
2230
- }
2231
- };
2232
-
2233
- // src/tokens/typography.ts
2234
- var FONT_FAMILY = {
2235
- sans: "var(--font-family)",
2236
- mono: "var(--font-family-mono)"
2237
- };
2238
- var FONT_SIZE = {
2239
- xs: "var(--font-size-xs)",
2240
- sm: "var(--font-size-sm)",
2241
- base: "var(--font-size-base)",
2242
- lg: "var(--font-size-lg)",
2243
- xl: "var(--font-size-xl)",
2244
- "2xl": "var(--font-size-2xl)",
2245
- "3xl": "var(--font-size-3xl)"
2246
- };
2247
- var FONT_WEIGHT = {
2248
- normal: "var(--font-weight-normal)",
2249
- medium: "var(--font-weight-medium)",
2250
- semibold: "var(--font-weight-semibold)",
2251
- bold: "var(--font-weight-bold)"
2252
- };
2253
- var LINE_HEIGHT = {
2254
- tight: "var(--line-height-tight)",
2255
- normal: "var(--line-height-normal)",
2256
- relaxed: "var(--line-height-relaxed)"
2257
- };
2258
-
2259
- // src/tokens/radius.ts
2260
- var RADIUS = {
2261
- panel: "var(--radius-panel)",
2262
- card: "var(--radius-card)",
2263
- button: "var(--radius-button)",
2264
- badge: "var(--radius-badge)",
2265
- pill: "var(--radius-pill)"
2266
- };
2267
-
2268
- // src/tokens/shadows.ts
2269
- var SHADOWS = {
2270
- glass: {
2271
- outer: "var(--glass-shadow-outer)",
2272
- inner: "var(--glass-shadow-inner)",
2273
- combined: "var(--glass-shadow-combined)",
2274
- elevated: "var(--glass-shadow-elevated)",
2275
- elevatedCombined: "var(--glass-shadow-elevated-combined)"
2276
- },
2277
- interactive: {
2278
- rest: "var(--shadow-interactive-rest)",
2279
- restSubtle: "var(--shadow-interactive-rest-subtle)",
2280
- restLight: "var(--shadow-interactive-rest-light)",
2281
- hover: "var(--shadow-interactive-hover)",
2282
- hoverSubtle: "var(--shadow-interactive-hover-subtle)",
2283
- active: "var(--shadow-interactive-active)"
2284
- }
2285
- };
2286
-
2287
- // src/tokens/z-index.ts
2288
- var Z_INDEX = {
2289
- void: "var(--z-void)",
2290
- glassPanel: "var(--z-glass-panel)",
2291
- ornament: "var(--z-ornament)",
2292
- dropdown: "var(--z-dropdown)",
2293
- modalBackdrop: "var(--z-modal-backdrop)",
2294
- modal: "var(--z-modal)",
2295
- tooltip: "var(--z-tooltip)"
2296
- };
2297
-
2298
- // src/tokens/breakpoints.ts
2299
- var BREAKPOINTS = {
2300
- "3xs": 320,
2301
- "2xs": 375,
2302
- xs: 480,
2303
- sm: 640,
2304
- md: 768,
2305
- lg: 1024,
2306
- xl: 1280,
2307
- "2xl": 1536,
2308
- "3xl": 1920,
2309
- "4xl": 2560,
2310
- "5xl": 3840
2311
- };
2312
- var MEDIA_QUERIES = {
2313
- "3xs": `(min-width: ${BREAKPOINTS["3xs"]}px)`,
2314
- "2xs": `(min-width: ${BREAKPOINTS["2xs"]}px)`,
2315
- xs: `(min-width: ${BREAKPOINTS.xs}px)`,
2316
- sm: `(min-width: ${BREAKPOINTS.sm}px)`,
2317
- md: `(min-width: ${BREAKPOINTS.md}px)`,
2318
- lg: `(min-width: ${BREAKPOINTS.lg}px)`,
2319
- xl: `(min-width: ${BREAKPOINTS.xl}px)`,
2320
- "2xl": `(min-width: ${BREAKPOINTS["2xl"]}px)`,
2321
- "3xl": `(min-width: ${BREAKPOINTS["3xl"]}px)`,
2322
- "4xl": `(min-width: ${BREAKPOINTS["4xl"]}px)`,
2323
- "5xl": `(min-width: ${BREAKPOINTS["5xl"]}px)`
2324
- };
2325
-
2326
- exports.Accordion = Accordion;
2327
- exports.AccordionContent = AccordionContent;
2328
- exports.AccordionItem = AccordionItem;
2329
- exports.AccordionTrigger = AccordionTrigger;
2330
- exports.Alert = Alert;
2331
- exports.AspectRatio = AspectRatio;
2332
- exports.BREAKPOINTS = BREAKPOINTS;
2333
- exports.ButtonGroup = ButtonGroup;
2334
- exports.COLORS = COLORS;
2335
- exports.Calendar = Calendar;
2336
- exports.Card = Card;
2337
- exports.CardContent = CardContent;
2338
- exports.CardDescription = CardDescription;
2339
- exports.CardFooter = CardFooter;
2340
- exports.CardHeader = CardHeader;
2341
- exports.CardTitle = CardTitle;
2342
- exports.Carousel = Carousel;
2343
- exports.CarouselContent = CarouselContent;
2344
- exports.CarouselItem = CarouselItem;
2345
- exports.CarouselNext = CarouselNext;
2346
- exports.CarouselPrevious = CarouselPrevious;
2347
- exports.Collapsible = Collapsible;
2348
- exports.CollapsibleContent = CollapsibleContent;
2349
- exports.CollapsibleTrigger = CollapsibleTrigger;
2350
- exports.Command = Command;
2351
- exports.CommandDialog = CommandDialog;
2352
- exports.CommandEmpty = CommandEmpty;
2353
- exports.CommandGroup = CommandGroup;
2354
- exports.CommandInput = CommandInput;
2355
- exports.CommandItem = CommandItem;
2356
- exports.CommandList = CommandList;
2357
- exports.CommandSeparator = CommandSeparator;
2358
- exports.ContextMenu = ContextMenu;
2359
- exports.ContextMenuContent = ContextMenuContent;
2360
- exports.ContextMenuItem = ContextMenuItem;
2361
- exports.ContextMenuLabel = ContextMenuLabel;
2362
- exports.ContextMenuSeparator = ContextMenuSeparator;
2363
- exports.ContextMenuTrigger = ContextMenuTrigger;
2364
- exports.Drawer = Drawer;
2365
- exports.DrawerClose = DrawerClose;
2366
- exports.DrawerContent = DrawerContent;
2367
- exports.DrawerDescription = DrawerDescription;
2368
- exports.DrawerFooter = DrawerFooter;
2369
- exports.DrawerHeader = DrawerHeader;
2370
- exports.DrawerTitle = DrawerTitle;
2371
- exports.DrawerTrigger = DrawerTrigger;
2372
- exports.EmptyState = EmptyState;
2373
- exports.FONT_FAMILY = FONT_FAMILY;
2374
- exports.FONT_SIZE = FONT_SIZE;
2375
- exports.FONT_WEIGHT = FONT_WEIGHT;
2376
- exports.FormControl = FormControl;
2377
- exports.FormDescription = FormDescription;
2378
- exports.FormField = FormField;
2379
- exports.FormItem = FormItem;
2380
- exports.FormLabel = FormLabel;
2381
- exports.FormMessage = FormMessage;
2382
- exports.Grid = Grid;
2383
- exports.Heading = Heading;
2384
- exports.HoverCard = HoverCard;
2385
- exports.HoverCardContent = HoverCardContent;
2386
- exports.HoverCardTrigger = HoverCardTrigger;
2387
- exports.InputOTP = InputOTP;
2388
- exports.InputOTPGroup = InputOTPGroup;
2389
- exports.InputOTPSeparator = InputOTPSeparator;
2390
- exports.InputOTPSlot = InputOTPSlot;
2391
- exports.LINE_HEIGHT = LINE_HEIGHT;
2392
- exports.Label = Label;
2393
- exports.MEDIA_QUERIES = MEDIA_QUERIES;
2394
- exports.Pagination = Pagination;
2395
- exports.PaginationContent = PaginationContent;
2396
- exports.PaginationEllipsis = PaginationEllipsis;
2397
- exports.PaginationItem = PaginationItem;
2398
- exports.PaginationLink = PaginationLink;
2399
- exports.PaginationNext = PaginationNext;
2400
- exports.PaginationPrevious = PaginationPrevious;
2401
- exports.Popover = Popover;
2402
- exports.PopoverClose = PopoverClose;
2403
- exports.PopoverContent = PopoverContent;
2404
- exports.PopoverTrigger = PopoverTrigger;
2405
- exports.Progress = Progress;
2406
- exports.Prose = Prose;
2407
- exports.RADIUS = RADIUS;
2408
- exports.Radio = Radio;
2409
- exports.RadioGroup = RadioGroup;
2410
- exports.SHADOWS = SHADOWS;
2411
- exports.ScrollArea = ScrollArea;
2412
- exports.ScrollBar = ScrollBar;
2413
- exports.Section = Section;
2414
- exports.Separator = Separator;
2415
- exports.Sheet = Sheet;
2416
- exports.SheetClose = SheetClose;
2417
- exports.SheetContent = SheetContent;
2418
- exports.SheetDescription = SheetDescription;
2419
- exports.SheetFooter = SheetFooter;
2420
- exports.SheetHeader = SheetHeader;
2421
- exports.SheetTitle = SheetTitle;
2422
- exports.SheetTrigger = SheetTrigger;
2423
- exports.Skeleton = Skeleton;
2424
- exports.StatusBadge = StatusBadge;
2425
- exports.Switch = Switch;
2426
- exports.Text = Text;
2427
- exports.TextArea = TextArea;
2428
- exports.ToastContext = ToastContext;
2429
- exports.ToastItem = ToastItem;
2430
- exports.ToastProvider = ToastProvider;
2431
- exports.Toggle = Toggle;
2432
- exports.VisuallyHidden = VisuallyHidden;
2433
- exports.Z_INDEX = Z_INDEX;
2434
- exports.useFormField = useFormField;
2435
- exports.useToast = useToast;
2436
- //# sourceMappingURL=out.js.map
2437
- //# sourceMappingURL=chunk-UTVXGAQP.cjs.map