@salesmind-ai/design-system 0.3.3 → 0.3.4

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