@spark-ui/components 11.1.0 → 11.1.2

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 (146) hide show
  1. package/dist/DialogTrigger-woU7vsJi.d.ts +142 -0
  2. package/dist/Input-N8AWWSmt.d.ts +41 -0
  3. package/dist/InputTrailingIcon-ZZx8PoJy.d.ts +20 -0
  4. package/dist/LabelRequiredIndicator-DRnCzHMU.d.ts +19 -0
  5. package/dist/accordion/index.d.ts +73 -0
  6. package/dist/accordion/index.js +325 -0
  7. package/dist/accordion/index.js.map +1 -0
  8. package/dist/alert-dialog/index.d.ts +119 -0
  9. package/dist/alert-dialog/index.js +1554 -0
  10. package/dist/alert-dialog/index.js.map +1 -0
  11. package/dist/avatar/index.d.ts +66 -0
  12. package/dist/avatar/index.js +1303 -0
  13. package/dist/avatar/index.js.map +1 -0
  14. package/dist/badge/index.d.ts +47 -0
  15. package/dist/badge/index.js +122 -0
  16. package/dist/badge/index.js.map +1 -0
  17. package/dist/breadcrumb/index.d.ts +64 -0
  18. package/dist/breadcrumb/index.js +327 -0
  19. package/dist/breadcrumb/index.js.map +1 -0
  20. package/dist/button/index.d.ts +41 -0
  21. package/dist/button/index.js +935 -0
  22. package/dist/button/index.js.map +1 -0
  23. package/dist/card/index.d.ts +61 -0
  24. package/dist/card/index.js +502 -0
  25. package/dist/card/index.js.map +1 -0
  26. package/dist/carousel/index.d.ts +261 -0
  27. package/dist/carousel/index.js +1801 -0
  28. package/dist/carousel/index.js.map +1 -0
  29. package/dist/checkbox/index.d.ts +120 -0
  30. package/dist/checkbox/index.js +511 -0
  31. package/dist/checkbox/index.js.map +1 -0
  32. package/dist/chip/index.d.ts +97 -0
  33. package/dist/chip/index.js +908 -0
  34. package/dist/chip/index.js.map +1 -0
  35. package/dist/collapsible/index.d.ts +43 -0
  36. package/dist/collapsible/index.js +109 -0
  37. package/dist/collapsible/index.js.map +1 -0
  38. package/dist/combobox/index.d.ts +287 -0
  39. package/dist/combobox/index.js +2588 -0
  40. package/dist/combobox/index.js.map +1 -0
  41. package/dist/dialog/index.d.ts +33 -0
  42. package/dist/dialog/index.js +1389 -0
  43. package/dist/dialog/index.js.map +1 -0
  44. package/dist/divider/index.d.ts +61 -0
  45. package/dist/divider/index.js +224 -0
  46. package/dist/divider/index.js.map +1 -0
  47. package/dist/drawer/index.d.ts +152 -0
  48. package/dist/drawer/index.js +1400 -0
  49. package/dist/drawer/index.js.map +1 -0
  50. package/dist/dropdown/index.d.ts +233 -0
  51. package/dist/dropdown/index.js +2051 -0
  52. package/dist/dropdown/index.js.map +1 -0
  53. package/dist/form-field/index.d.ts +186 -0
  54. package/dist/form-field/index.js +553 -0
  55. package/dist/form-field/index.js.map +1 -0
  56. package/dist/icon/index.d.ts +28 -0
  57. package/dist/icon/index.js +127 -0
  58. package/dist/icon/index.js.map +1 -0
  59. package/dist/icon-button/index.d.ts +16 -0
  60. package/dist/icon-button/index.js +980 -0
  61. package/dist/icon-button/index.js.map +1 -0
  62. package/dist/input/index.d.ts +78 -0
  63. package/dist/input/index.js +724 -0
  64. package/dist/input/index.js.map +1 -0
  65. package/dist/kbd/index.d.ts +9 -0
  66. package/dist/kbd/index.js +47 -0
  67. package/dist/kbd/index.js.map +1 -0
  68. package/dist/label/index.d.ts +11 -0
  69. package/dist/label/index.js +78 -0
  70. package/dist/label/index.js.map +1 -0
  71. package/dist/link-box/index.d.ts +34 -0
  72. package/dist/link-box/index.js +92 -0
  73. package/dist/link-box/index.js.map +1 -0
  74. package/dist/pagination/index.d.ts +143 -0
  75. package/dist/pagination/index.js +1353 -0
  76. package/dist/pagination/index.js.map +1 -0
  77. package/dist/popover/index.d.ts +93 -0
  78. package/dist/popover/index.js +1339 -0
  79. package/dist/popover/index.js.map +1 -0
  80. package/dist/portal/index.d.ts +13 -0
  81. package/dist/portal/index.js +37 -0
  82. package/dist/portal/index.js.map +1 -0
  83. package/dist/progress/index.d.ts +48 -0
  84. package/dist/progress/index.js +223 -0
  85. package/dist/progress/index.js.map +1 -0
  86. package/dist/progress-tracker/index.d.ts +80 -0
  87. package/dist/progress-tracker/index.js +571 -0
  88. package/dist/progress-tracker/index.js.map +1 -0
  89. package/dist/radio-group/index.d.ts +100 -0
  90. package/dist/radio-group/index.js +318 -0
  91. package/dist/radio-group/index.js.map +1 -0
  92. package/dist/rating/index.d.ts +78 -0
  93. package/dist/rating/index.js +363 -0
  94. package/dist/rating/index.js.map +1 -0
  95. package/dist/scrolling-list/index.d.ts +118 -0
  96. package/dist/scrolling-list/index.js +1426 -0
  97. package/dist/scrolling-list/index.js.map +1 -0
  98. package/dist/segmented-gauge/index.d.ts +100 -0
  99. package/dist/segmented-gauge/index.js +277 -0
  100. package/dist/segmented-gauge/index.js.map +1 -0
  101. package/dist/select/index.d.ts +167 -0
  102. package/dist/select/index.js +581 -0
  103. package/dist/select/index.js.map +1 -0
  104. package/dist/skeleton/index.d.ts +67 -0
  105. package/dist/skeleton/index.js +206 -0
  106. package/dist/skeleton/index.js.map +1 -0
  107. package/dist/slider/index.d.ts +97 -0
  108. package/dist/slider/index.js +220 -0
  109. package/dist/slider/index.js.map +1 -0
  110. package/dist/slot/index.d.ts +16 -0
  111. package/dist/slot/index.js +51 -0
  112. package/dist/slot/index.js.map +1 -0
  113. package/dist/snackbar/index.d.ts +158 -0
  114. package/dist/snackbar/index.js +1756 -0
  115. package/dist/snackbar/index.js.map +1 -0
  116. package/dist/spinner/index.d.mts +1 -1
  117. package/dist/spinner/index.d.ts +21 -0
  118. package/dist/spinner/index.js +139 -0
  119. package/dist/spinner/index.js.map +1 -0
  120. package/dist/stepper/index.d.ts +81 -0
  121. package/dist/stepper/index.js +1847 -0
  122. package/dist/stepper/index.js.map +1 -0
  123. package/dist/switch/index.d.ts +64 -0
  124. package/dist/switch/index.js +327 -0
  125. package/dist/switch/index.js.map +1 -0
  126. package/dist/tabs/index.d.ts +103 -0
  127. package/dist/tabs/index.js +1376 -0
  128. package/dist/tabs/index.js.map +1 -0
  129. package/dist/tag/index.d.ts +29 -0
  130. package/dist/tag/index.js +283 -0
  131. package/dist/tag/index.js.map +1 -0
  132. package/dist/text-link/index.d.ts +20 -0
  133. package/dist/text-link/index.js +100 -0
  134. package/dist/text-link/index.js.map +1 -0
  135. package/dist/textarea/index.d.ts +57 -0
  136. package/dist/textarea/index.js +797 -0
  137. package/dist/textarea/index.js.map +1 -0
  138. package/dist/toast/index.d.ts +56 -0
  139. package/dist/toast/index.js +1412 -0
  140. package/dist/toast/index.js.map +1 -0
  141. package/dist/toast/index.mjs +1 -1
  142. package/dist/toast/index.mjs.map +1 -1
  143. package/dist/visually-hidden/index.d.ts +16 -0
  144. package/dist/visually-hidden/index.js +67 -0
  145. package/dist/visually-hidden/index.js.map +1 -0
  146. package/package.json +5 -5
@@ -0,0 +1,1389 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/dialog/index.ts
21
+ var dialog_exports = {};
22
+ __export(dialog_exports, {
23
+ Dialog: () => Dialog2
24
+ });
25
+ module.exports = __toCommonJS(dialog_exports);
26
+
27
+ // src/dialog/Dialog.tsx
28
+ var import_radix_ui = require("radix-ui");
29
+ var import_react2 = require("react");
30
+
31
+ // src/dialog/DialogContext.tsx
32
+ var import_react = require("react");
33
+ var import_jsx_runtime = require("react/jsx-runtime");
34
+ var DialogContext = (0, import_react.createContext)(null);
35
+ var DialogProvider = ({
36
+ children: childrenProp,
37
+ withFade = false
38
+ }) => {
39
+ const [isFullScreen, setIsFullScreen] = (0, import_react.useState)(false);
40
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
41
+ DialogContext.Provider,
42
+ {
43
+ value: {
44
+ isFullScreen,
45
+ setIsFullScreen,
46
+ withFade
47
+ },
48
+ children: childrenProp
49
+ }
50
+ );
51
+ };
52
+ var useDialog = () => {
53
+ const context = (0, import_react.useContext)(DialogContext);
54
+ if (!context) {
55
+ throw Error("useDialog must be used within a Dialog provider");
56
+ }
57
+ return context;
58
+ };
59
+
60
+ // src/dialog/Dialog.tsx
61
+ var import_jsx_runtime2 = require("react/jsx-runtime");
62
+ var Dialog = ({ children, withFade = false, ...rest }) => {
63
+ const open = rest.open;
64
+ const activeElementRef = (0, import_react2.useRef)(null);
65
+ function handleActiveElementFocus() {
66
+ if (open && document.activeElement) {
67
+ activeElementRef.current = document.activeElement;
68
+ }
69
+ if (!open) {
70
+ setTimeout(() => {
71
+ if (!(activeElementRef.current instanceof HTMLElement)) return;
72
+ activeElementRef.current.focus();
73
+ }, 0);
74
+ }
75
+ }
76
+ (0, import_react2.useEffect)(handleActiveElementFocus, [open]);
77
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(DialogProvider, { withFade, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_radix_ui.Dialog.Root, { ...rest, children }) });
78
+ };
79
+ Dialog.displayName = "Dialog.Root";
80
+
81
+ // src/dialog/DialogBody.tsx
82
+ var import_use_merge_refs = require("@spark-ui/hooks/use-merge-refs");
83
+ var import_use_scroll_overflow = require("@spark-ui/hooks/use-scroll-overflow");
84
+ var import_class_variance_authority = require("class-variance-authority");
85
+ var import_react3 = require("react");
86
+ var import_jsx_runtime3 = require("react/jsx-runtime");
87
+ var Body = ({
88
+ children,
89
+ className,
90
+ inset = false,
91
+ ref: forwardedRef,
92
+ ...rest
93
+ }) => {
94
+ const scrollAreaRef = (0, import_react3.useRef)(null);
95
+ const ref = (0, import_use_merge_refs.useMergeRefs)(forwardedRef, scrollAreaRef);
96
+ const { withFade } = useDialog();
97
+ const overflow = (0, import_use_scroll_overflow.useScrollOverflow)(scrollAreaRef);
98
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
99
+ "div",
100
+ {
101
+ "data-spark-component": "dialog-body",
102
+ ref,
103
+ className: (0, import_class_variance_authority.cx)(
104
+ "focus-visible:u-outline relative grow overflow-y-auto outline-hidden",
105
+ "transition-all duration-300",
106
+ {
107
+ ["px-xl py-lg"]: !inset
108
+ },
109
+ className
110
+ ),
111
+ style: {
112
+ ...withFade && {
113
+ maskImage: "linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 1) 44px, rgba(0, 0, 0, 1) calc(100% - 44px), rgba(0, 0, 0, 0))",
114
+ maskSize: `100% calc(100% + ${overflow.top ? "0px" : "44px"} + ${overflow.bottom ? "0px" : "44px"})`,
115
+ maskPosition: `0 ${overflow.top ? "0px" : "-44px"}`
116
+ }
117
+ },
118
+ ...rest,
119
+ children
120
+ }
121
+ );
122
+ };
123
+ Body.displayName = "Dialog.Body";
124
+
125
+ // src/dialog/DialogClose.tsx
126
+ var import_radix_ui2 = require("radix-ui");
127
+ var import_jsx_runtime4 = require("react/jsx-runtime");
128
+ var Close = (props) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_radix_ui2.Dialog.Close, { ...props });
129
+ Close.displayName = "Dialog.Close";
130
+
131
+ // src/dialog/DialogCloseButton.tsx
132
+ var import_Close = require("@spark-ui/icons/Close");
133
+ var import_class_variance_authority7 = require("class-variance-authority");
134
+
135
+ // src/icon/Icon.tsx
136
+ var import_react5 = require("react");
137
+
138
+ // src/slot/Slot.tsx
139
+ var import_radix_ui3 = require("radix-ui");
140
+ var import_react4 = require("react");
141
+ var import_jsx_runtime5 = require("react/jsx-runtime");
142
+ var Slottable = import_radix_ui3.Slot.Slottable;
143
+ var Slot = ({ ref, ...props }) => {
144
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_radix_ui3.Slot.Root, { ref, ...props });
145
+ };
146
+ var wrapPolymorphicSlot = (asChild, children, callback) => {
147
+ if (!asChild) return callback(children);
148
+ return (0, import_react4.isValidElement)(children) ? (0, import_react4.cloneElement)(
149
+ children,
150
+ void 0,
151
+ callback(children.props.children)
152
+ ) : null;
153
+ };
154
+
155
+ // src/visually-hidden/VisuallyHidden.tsx
156
+ var import_jsx_runtime6 = require("react/jsx-runtime");
157
+ var VisuallyHidden = ({ asChild = false, ref, ...props }) => {
158
+ const Component = asChild ? Slot : "span";
159
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
160
+ Component,
161
+ {
162
+ ...props,
163
+ ref,
164
+ style: {
165
+ // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss
166
+ position: "absolute",
167
+ border: 0,
168
+ width: 1,
169
+ height: 1,
170
+ padding: 0,
171
+ margin: -1,
172
+ overflow: "hidden",
173
+ clip: "rect(0, 0, 0, 0)",
174
+ whiteSpace: "nowrap",
175
+ wordWrap: "normal",
176
+ ...props.style
177
+ }
178
+ }
179
+ );
180
+ };
181
+ VisuallyHidden.displayName = "VisuallyHidden";
182
+
183
+ // src/icon/Icon.styles.tsx
184
+ var import_internal_utils = require("@spark-ui/internal-utils");
185
+ var import_class_variance_authority2 = require("class-variance-authority");
186
+ var iconStyles = (0, import_class_variance_authority2.cva)(["fill-current shrink-0"], {
187
+ variants: {
188
+ /**
189
+ * Color scheme of the icon.
190
+ */
191
+ intent: (0, import_internal_utils.makeVariants)({
192
+ current: ["text-current"],
193
+ main: ["text-main"],
194
+ support: ["text-support"],
195
+ accent: ["text-accent"],
196
+ basic: ["text-basic"],
197
+ success: ["text-success"],
198
+ alert: ["text-alert"],
199
+ error: ["text-error"],
200
+ info: ["text-info"],
201
+ neutral: ["text-neutral"]
202
+ }),
203
+ /**
204
+ * Sets the size of the icon.
205
+ */
206
+ size: (0, import_internal_utils.makeVariants)({
207
+ current: ["u-current-font-size"],
208
+ sm: ["w-sz-16", "h-sz-16"],
209
+ md: ["w-sz-24", "h-sz-24"],
210
+ lg: ["w-sz-32", "h-sz-32"],
211
+ xl: ["w-sz-40", "h-sz-40"]
212
+ })
213
+ }
214
+ });
215
+
216
+ // src/icon/Icon.tsx
217
+ var import_jsx_runtime7 = require("react/jsx-runtime");
218
+ var Icon = ({
219
+ label,
220
+ className,
221
+ size = "current",
222
+ intent = "current",
223
+ children,
224
+ ...others
225
+ }) => {
226
+ const child = import_react5.Children.only(children);
227
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
228
+ (0, import_react5.cloneElement)(child, {
229
+ className: iconStyles({ className, size, intent }),
230
+ "data-spark-component": "icon",
231
+ "aria-hidden": "true",
232
+ focusable: "false",
233
+ ...others
234
+ }),
235
+ label && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(VisuallyHidden, { children: label })
236
+ ] });
237
+ };
238
+ Icon.displayName = "Icon";
239
+
240
+ // src/button/Button.tsx
241
+ var import_class_variance_authority5 = require("class-variance-authority");
242
+ var import_react6 = require("react");
243
+
244
+ // src/spinner/Spinner.styles.tsx
245
+ var import_internal_utils2 = require("@spark-ui/internal-utils");
246
+ var import_class_variance_authority3 = require("class-variance-authority");
247
+ var defaultVariants = {
248
+ intent: "current",
249
+ size: "current",
250
+ isBackgroundVisible: false
251
+ };
252
+ var spinnerStyles = (0, import_class_variance_authority3.cva)(
253
+ ["inline-block", "border-solid", "rounded-full", "border-md", "animate-spin"],
254
+ {
255
+ variants: {
256
+ /**
257
+ * Use `size` prop to set the size of the spinner. If you want to set the full size for the spinner, don't forget to add a wrapping container with its own size.
258
+ */
259
+ size: {
260
+ current: ["u-current-font-size"],
261
+ sm: ["w-sz-20", "h-sz-20"],
262
+ md: ["w-sz-28", "h-sz-28"],
263
+ full: ["w-full", "h-full"]
264
+ },
265
+ /**
266
+ * Color scheme of the spinner.
267
+ */
268
+ intent: (0, import_internal_utils2.makeVariants)({
269
+ current: ["border-current"],
270
+ main: ["border-main"],
271
+ support: ["border-support"],
272
+ accent: ["border-accent"],
273
+ basic: ["border-basic"],
274
+ success: ["border-success"],
275
+ alert: ["border-alert"],
276
+ error: ["border-error"],
277
+ info: ["border-info"],
278
+ neutral: ["border-neutral"]
279
+ }),
280
+ /**
281
+ * Size of the button.
282
+ */
283
+ isBackgroundVisible: {
284
+ true: ["border-b-neutral-container", "border-l-neutral-container"],
285
+ false: ["border-b-transparent", "border-l-transparent"]
286
+ }
287
+ },
288
+ defaultVariants
289
+ }
290
+ );
291
+
292
+ // src/spinner/Spinner.tsx
293
+ var import_jsx_runtime8 = require("react/jsx-runtime");
294
+ var Spinner = ({
295
+ className,
296
+ size = "current",
297
+ intent = "current",
298
+ label,
299
+ isBackgroundVisible,
300
+ ref,
301
+ ...others
302
+ }) => {
303
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
304
+ "span",
305
+ {
306
+ role: "status",
307
+ "data-spark-component": "spinner",
308
+ ref,
309
+ className: spinnerStyles({ className, size, intent, isBackgroundVisible }),
310
+ ...others,
311
+ children: label && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(VisuallyHidden, { children: label })
312
+ }
313
+ );
314
+ };
315
+
316
+ // src/button/Button.styles.tsx
317
+ var import_internal_utils8 = require("@spark-ui/internal-utils");
318
+ var import_class_variance_authority4 = require("class-variance-authority");
319
+
320
+ // src/button/variants/filled.ts
321
+ var import_internal_utils3 = require("@spark-ui/internal-utils");
322
+ var filledVariants = [
323
+ // Main
324
+ {
325
+ intent: "main",
326
+ design: "filled",
327
+ class: (0, import_internal_utils3.tw)([
328
+ "bg-main",
329
+ "text-on-main",
330
+ "hover:bg-main-hovered",
331
+ "enabled:active:bg-main-hovered",
332
+ "focus-visible:bg-main-hovered"
333
+ ])
334
+ },
335
+ // Support
336
+ {
337
+ intent: "support",
338
+ design: "filled",
339
+ class: (0, import_internal_utils3.tw)([
340
+ "bg-support",
341
+ "text-on-support",
342
+ "hover:bg-support-hovered",
343
+ "enabled:active:bg-support-hovered",
344
+ "focus-visible:bg-support-hovered"
345
+ ])
346
+ },
347
+ // Accent
348
+ {
349
+ intent: "accent",
350
+ design: "filled",
351
+ class: (0, import_internal_utils3.tw)([
352
+ "bg-accent",
353
+ "text-on-accent",
354
+ "hover:bg-accent-hovered",
355
+ "enabled:active:bg-accent-hovered",
356
+ "focus-visible:bg-accent-hovered"
357
+ ])
358
+ },
359
+ // Basic
360
+ {
361
+ intent: "basic",
362
+ design: "filled",
363
+ class: (0, import_internal_utils3.tw)([
364
+ "bg-basic",
365
+ "text-on-basic",
366
+ "hover:bg-basic-hovered",
367
+ "enabled:active:bg-basic-hovered",
368
+ "focus-visible:bg-basic-hovered"
369
+ ])
370
+ },
371
+ // Success
372
+ {
373
+ intent: "success",
374
+ design: "filled",
375
+ class: (0, import_internal_utils3.tw)([
376
+ "bg-success",
377
+ "text-on-success",
378
+ "hover:bg-success-hovered",
379
+ "enabled:active:bg-success-hovered",
380
+ "focus-visible:bg-success-hovered"
381
+ ])
382
+ },
383
+ // Alert
384
+ {
385
+ intent: "alert",
386
+ design: "filled",
387
+ class: (0, import_internal_utils3.tw)([
388
+ "bg-alert",
389
+ "text-on-alert",
390
+ "hover:bg-alert-hovered",
391
+ "enabled:active:bg-alert-hovered",
392
+ "focus-visible:bg-alert-hovered"
393
+ ])
394
+ },
395
+ // Danger
396
+ {
397
+ intent: "danger",
398
+ design: "filled",
399
+ class: (0, import_internal_utils3.tw)([
400
+ "text-on-error bg-error",
401
+ "hover:bg-error-hovered enabled:active:bg-error-hovered",
402
+ "focus-visible:bg-error-hovered"
403
+ ])
404
+ },
405
+ // Info
406
+ {
407
+ intent: "info",
408
+ design: "filled",
409
+ class: (0, import_internal_utils3.tw)([
410
+ "text-on-error bg-info",
411
+ "hover:bg-info-hovered enabled:active:bg-info-hovered",
412
+ "focus-visible:bg-info-hovered"
413
+ ])
414
+ },
415
+ // Neutral
416
+ {
417
+ intent: "neutral",
418
+ design: "filled",
419
+ class: (0, import_internal_utils3.tw)([
420
+ "bg-neutral",
421
+ "text-on-neutral",
422
+ "hover:bg-neutral-hovered",
423
+ "enabled:active:bg-neutral-hovered",
424
+ "focus-visible:bg-neutral-hovered"
425
+ ])
426
+ },
427
+ // Surface
428
+ {
429
+ intent: "surface",
430
+ design: "filled",
431
+ class: (0, import_internal_utils3.tw)([
432
+ "bg-surface",
433
+ "text-on-surface",
434
+ "hover:bg-surface-hovered",
435
+ "enabled:active:bg-surface-hovered",
436
+ "focus-visible:bg-surface-hovered"
437
+ ])
438
+ },
439
+ {
440
+ intent: "surfaceInverse",
441
+ design: "filled",
442
+ class: (0, import_internal_utils3.tw)([
443
+ "bg-surface-inverse",
444
+ "text-on-surface-inverse",
445
+ "hover:bg-surface-inverse-hovered",
446
+ "enabled:active:bg-surface-inverse-hovered",
447
+ "focus-visible:bg-surface-inverse-hovered"
448
+ ])
449
+ }
450
+ ];
451
+
452
+ // src/button/variants/ghost.ts
453
+ var import_internal_utils4 = require("@spark-ui/internal-utils");
454
+ var ghostVariants = [
455
+ {
456
+ intent: "main",
457
+ design: "ghost",
458
+ class: (0, import_internal_utils4.tw)([
459
+ "text-on-main-container",
460
+ "hover:bg-main/dim-5",
461
+ "enabled:active:bg-main/dim-5",
462
+ "focus-visible:bg-main/dim-5"
463
+ ])
464
+ },
465
+ {
466
+ intent: "support",
467
+ design: "ghost",
468
+ class: (0, import_internal_utils4.tw)([
469
+ "text-on-support-container",
470
+ "hover:bg-support/dim-5",
471
+ "enabled:active:bg-support/dim-5",
472
+ "focus-visible:bg-support/dim-5"
473
+ ])
474
+ },
475
+ {
476
+ intent: "accent",
477
+ design: "ghost",
478
+ class: (0, import_internal_utils4.tw)([
479
+ "text-on-accent-container",
480
+ "hover:bg-accent/dim-5",
481
+ "enabled:active:bg-accent/dim-5",
482
+ "focus-visible:bg-accent/dim-5"
483
+ ])
484
+ },
485
+ {
486
+ intent: "basic",
487
+ design: "ghost",
488
+ class: (0, import_internal_utils4.tw)([
489
+ "text-on-basic-container",
490
+ "hover:bg-basic/dim-5",
491
+ "enabled:active:bg-basic/dim-5",
492
+ "focus-visible:bg-basic/dim-5"
493
+ ])
494
+ },
495
+ {
496
+ intent: "success",
497
+ design: "ghost",
498
+ class: (0, import_internal_utils4.tw)([
499
+ "text-on-success-container",
500
+ "hover:bg-success/dim-5",
501
+ "enabled:active:bg-success/dim-5",
502
+ "focus-visible:bg-success/dim-5"
503
+ ])
504
+ },
505
+ {
506
+ intent: "alert",
507
+ design: "ghost",
508
+ class: (0, import_internal_utils4.tw)([
509
+ "text-on-alert-container",
510
+ "hover:bg-alert/dim-5",
511
+ "enabled:active:bg-alert/dim-5",
512
+ "focus-visible:bg-alert/dim-5"
513
+ ])
514
+ },
515
+ {
516
+ intent: "danger",
517
+ design: "ghost",
518
+ class: (0, import_internal_utils4.tw)([
519
+ "text-on-error-container",
520
+ "hover:bg-error/dim-5",
521
+ "enabled:active:bg-error/dim-5",
522
+ "focus-visible:bg-error/dim-5"
523
+ ])
524
+ },
525
+ {
526
+ intent: "info",
527
+ design: "ghost",
528
+ class: (0, import_internal_utils4.tw)([
529
+ "text-on-info-container",
530
+ "hover:bg-info/dim-5",
531
+ "enabled:active:bg-info/dim-5",
532
+ "focus-visible:bg-info/dim-5"
533
+ ])
534
+ },
535
+ {
536
+ intent: "neutral",
537
+ design: "ghost",
538
+ class: (0, import_internal_utils4.tw)([
539
+ "text-on-neutral-container",
540
+ "hover:bg-neutral/dim-5",
541
+ "enabled:active:bg-neutral/dim-5",
542
+ "focus-visible:bg-neutral/dim-5"
543
+ ])
544
+ },
545
+ {
546
+ intent: "surface",
547
+ design: "ghost",
548
+ class: (0, import_internal_utils4.tw)([
549
+ "text-surface",
550
+ "hover:bg-surface/dim-5",
551
+ "enabled:active:bg-surface/dim-5",
552
+ "focus-visible:bg-surface/dim-5"
553
+ ])
554
+ },
555
+ {
556
+ intent: "surfaceInverse",
557
+ design: "ghost",
558
+ class: (0, import_internal_utils4.tw)([
559
+ "text-surface-inverse",
560
+ "hover:bg-surface-inverse/dim-5",
561
+ "enabled:active:bg-surface-inverse/dim-5",
562
+ "focus-visible:bg-surface-inverse/dim-5"
563
+ ])
564
+ }
565
+ ];
566
+
567
+ // src/button/variants/outlined.ts
568
+ var import_internal_utils5 = require("@spark-ui/internal-utils");
569
+ var outlinedVariants = [
570
+ {
571
+ intent: "main",
572
+ design: "outlined",
573
+ class: (0, import_internal_utils5.tw)([
574
+ "hover:bg-main/dim-5",
575
+ "enabled:active:bg-main/dim-5",
576
+ "focus-visible:bg-main/dim-5",
577
+ "text-main"
578
+ ])
579
+ },
580
+ {
581
+ intent: "support",
582
+ design: "outlined",
583
+ class: (0, import_internal_utils5.tw)([
584
+ "hover:bg-support/dim-5",
585
+ "enabled:active:bg-support/dim-5",
586
+ "focus-visible:bg-support/dim-5",
587
+ "text-support"
588
+ ])
589
+ },
590
+ {
591
+ intent: "accent",
592
+ design: "outlined",
593
+ class: (0, import_internal_utils5.tw)([
594
+ "hover:bg-accent/dim-5",
595
+ "enabled:active:bg-accent/dim-5",
596
+ "focus-visible:bg-accent/dim-5",
597
+ "text-accent"
598
+ ])
599
+ },
600
+ {
601
+ intent: "basic",
602
+ design: "outlined",
603
+ class: (0, import_internal_utils5.tw)([
604
+ "hover:bg-basic/dim-5",
605
+ "enabled:active:bg-basic/dim-5",
606
+ "focus-visible:bg-basic/dim-5",
607
+ "text-basic"
608
+ ])
609
+ },
610
+ {
611
+ intent: "success",
612
+ design: "outlined",
613
+ class: (0, import_internal_utils5.tw)([
614
+ "hover:bg-success/dim-5",
615
+ "enabled:active:bg-success/dim-5",
616
+ "focus-visible:bg-success/dim-5",
617
+ "text-success"
618
+ ])
619
+ },
620
+ {
621
+ intent: "alert",
622
+ design: "outlined",
623
+ class: (0, import_internal_utils5.tw)([
624
+ "hover:bg-alert/dim-5",
625
+ "enabled:active:bg-alert/dim-5",
626
+ "focus-visible:bg-alert/dim-5",
627
+ "text-alert"
628
+ ])
629
+ },
630
+ {
631
+ intent: "danger",
632
+ design: "outlined",
633
+ class: (0, import_internal_utils5.tw)([
634
+ "hover:bg-error/dim-5",
635
+ "enabled:active:bg-error/dim-5",
636
+ "focus-visible:bg-error/dim-5",
637
+ "text-error"
638
+ ])
639
+ },
640
+ {
641
+ intent: "info",
642
+ design: "outlined",
643
+ class: (0, import_internal_utils5.tw)([
644
+ "hover:bg-info/dim-5",
645
+ "enabled:active:bg-info/dim-5",
646
+ "focus-visible:bg-info/dim-5",
647
+ "text-info"
648
+ ])
649
+ },
650
+ {
651
+ intent: "neutral",
652
+ design: "outlined",
653
+ class: (0, import_internal_utils5.tw)([
654
+ "hover:bg-neutral/dim-5",
655
+ "enabled:active:bg-neutral/dim-5",
656
+ "focus-visible:bg-neutral/dim-5",
657
+ "text-neutral"
658
+ ])
659
+ },
660
+ {
661
+ intent: "surface",
662
+ design: "outlined",
663
+ class: (0, import_internal_utils5.tw)([
664
+ "hover:bg-surface/dim-5",
665
+ "enabled:active:bg-surface/dim-5",
666
+ "focus-visible:bg-surface/dim-5",
667
+ "text-surface"
668
+ ])
669
+ },
670
+ {
671
+ intent: "surfaceInverse",
672
+ design: "outlined",
673
+ class: (0, import_internal_utils5.tw)([
674
+ "hover:bg-surface-inverse/dim-5",
675
+ "enabled:active:bg-surface-inverse/dim-5",
676
+ "focus-visible:bg-surface-inverse/dim-5",
677
+ "text-surface-inverse"
678
+ ])
679
+ }
680
+ ];
681
+
682
+ // src/button/variants/tinted.ts
683
+ var import_internal_utils6 = require("@spark-ui/internal-utils");
684
+ var tintedVariants = [
685
+ {
686
+ intent: "main",
687
+ design: "tinted",
688
+ class: (0, import_internal_utils6.tw)([
689
+ "bg-main-container",
690
+ "text-on-main-container",
691
+ "hover:bg-main-container-hovered",
692
+ "enabled:active:bg-main-container-hovered",
693
+ "focus-visible:bg-main-container-hovered"
694
+ ])
695
+ },
696
+ {
697
+ intent: "support",
698
+ design: "tinted",
699
+ class: (0, import_internal_utils6.tw)([
700
+ "bg-support-container",
701
+ "text-on-support-container",
702
+ "hover:bg-support-container-hovered",
703
+ "enabled:active:bg-support-container-hovered",
704
+ "focus-visible:bg-support-container-hovered"
705
+ ])
706
+ },
707
+ {
708
+ intent: "accent",
709
+ design: "tinted",
710
+ class: (0, import_internal_utils6.tw)([
711
+ "bg-accent-container",
712
+ "text-on-accent-container",
713
+ "hover:bg-accent-container-hovered",
714
+ "enabled:active:bg-accent-container-hovered",
715
+ "focus-visible:bg-accent-container-hovered"
716
+ ])
717
+ },
718
+ {
719
+ intent: "basic",
720
+ design: "tinted",
721
+ class: (0, import_internal_utils6.tw)([
722
+ "bg-basic-container",
723
+ "text-on-basic-container",
724
+ "hover:bg-basic-container-hovered",
725
+ "enabled:active:bg-basic-container-hovered",
726
+ "focus-visible:bg-basic-container-hovered"
727
+ ])
728
+ },
729
+ {
730
+ intent: "success",
731
+ design: "tinted",
732
+ class: (0, import_internal_utils6.tw)([
733
+ "bg-success-container",
734
+ "text-on-success-container",
735
+ "hover:bg-success-container-hovered",
736
+ "enabled:active:bg-success-container-hovered",
737
+ "focus-visible:bg-success-container-hovered"
738
+ ])
739
+ },
740
+ {
741
+ intent: "alert",
742
+ design: "tinted",
743
+ class: (0, import_internal_utils6.tw)([
744
+ "bg-alert-container",
745
+ "text-on-alert-container",
746
+ "hover:bg-alert-container-hovered",
747
+ "enabled:active:bg-alert-container-hovered",
748
+ "focus-visible:bg-alert-container-hovered"
749
+ ])
750
+ },
751
+ {
752
+ intent: "danger",
753
+ design: "tinted",
754
+ class: (0, import_internal_utils6.tw)([
755
+ "bg-error-container",
756
+ "text-on-error-container",
757
+ "hover:bg-error-container-hovered",
758
+ "enabled:active:bg-error-container-hovered",
759
+ "focus-visible:bg-error-container-hovered"
760
+ ])
761
+ },
762
+ {
763
+ intent: "info",
764
+ design: "tinted",
765
+ class: (0, import_internal_utils6.tw)([
766
+ "bg-info-container",
767
+ "text-on-info-container",
768
+ "hover:bg-info-container-hovered",
769
+ "enabled:active:bg-info-container-hovered",
770
+ "focus-visible:bg-info-container-hovered"
771
+ ])
772
+ },
773
+ {
774
+ intent: "neutral",
775
+ design: "tinted",
776
+ class: (0, import_internal_utils6.tw)([
777
+ "bg-neutral-container",
778
+ "text-on-neutral-container",
779
+ "hover:bg-neutral-container-hovered",
780
+ "enabled:active:bg-neutral-container-hovered",
781
+ "focus-visible:bg-neutral-container-hovered"
782
+ ])
783
+ },
784
+ {
785
+ intent: "surface",
786
+ design: "tinted",
787
+ class: (0, import_internal_utils6.tw)([
788
+ "bg-surface",
789
+ "text-on-surface",
790
+ "hover:bg-surface-hovered",
791
+ "enabled:active:bg-surface-hovered",
792
+ "focus-visible:bg-surface-hovered"
793
+ ])
794
+ },
795
+ {
796
+ intent: "surfaceInverse",
797
+ design: "tinted",
798
+ class: (0, import_internal_utils6.tw)([
799
+ "bg-surface-inverse",
800
+ "text-on-surface-inverse",
801
+ "hover:bg-surface-inverse-hovered",
802
+ "enabled:active:bg-surface-inverse-hovered",
803
+ "focus-visible:bg-surface-inverse-hovered"
804
+ ])
805
+ }
806
+ ];
807
+
808
+ // src/button/variants/contrast.ts
809
+ var import_internal_utils7 = require("@spark-ui/internal-utils");
810
+ var contrastVariants = [
811
+ {
812
+ intent: "main",
813
+ design: "contrast",
814
+ class: (0, import_internal_utils7.tw)([
815
+ "text-on-main-contaier bg-surface",
816
+ "hover:bg-main-container-hovered",
817
+ "enabled:active:bg-main-container-hovered",
818
+ "focus-visible:bg-main-container-hovered"
819
+ ])
820
+ },
821
+ {
822
+ intent: "support",
823
+ design: "contrast",
824
+ class: (0, import_internal_utils7.tw)([
825
+ "text-on-support-container bg-surface",
826
+ "hover:bg-support-container-hovered",
827
+ "enabled:active:bg-support-container-hovered",
828
+ "focus-visible:bg-support-container-hovered"
829
+ ])
830
+ },
831
+ {
832
+ intent: "accent",
833
+ design: "contrast",
834
+ class: (0, import_internal_utils7.tw)([
835
+ "text-on-accent-container bg-surface",
836
+ "hover:bg-accent-container-hovered",
837
+ "enabled:active:bg-accent-container-hovered",
838
+ "focus-visible:bg-accent-container-hovered"
839
+ ])
840
+ },
841
+ {
842
+ intent: "basic",
843
+ design: "contrast",
844
+ class: (0, import_internal_utils7.tw)([
845
+ "text-on-basic-container bg-surface",
846
+ "hover:bg-basic-container-hovered",
847
+ "enabled:active:bg-basic-container-hovered",
848
+ "focus-visible:bg-basic-container-hovered"
849
+ ])
850
+ },
851
+ {
852
+ intent: "success",
853
+ design: "contrast",
854
+ class: (0, import_internal_utils7.tw)([
855
+ "text-on-success-container bg-surface",
856
+ "hover:bg-success-container-hovered",
857
+ "enabled:active:bg-success-container-hovered",
858
+ "focus-visible:bg-success-container-hovered"
859
+ ])
860
+ },
861
+ {
862
+ intent: "alert",
863
+ design: "contrast",
864
+ class: (0, import_internal_utils7.tw)([
865
+ "text-on-alert-container bg-surface",
866
+ "hover:bg-alert-container-hovered",
867
+ "enabled:active:bg-alert-container-hovered",
868
+ "focus-visible:bg-alert-container-hovered"
869
+ ])
870
+ },
871
+ {
872
+ intent: "danger",
873
+ design: "contrast",
874
+ class: (0, import_internal_utils7.tw)([
875
+ "text-on-error-container bg-surface",
876
+ "hover:bg-error-container-hovered",
877
+ "enabled:active:bg-error-container-hovered",
878
+ "focus-visible:bg-error-container-hovered"
879
+ ])
880
+ },
881
+ {
882
+ intent: "info",
883
+ design: "contrast",
884
+ class: (0, import_internal_utils7.tw)([
885
+ "text-on-info-container bg-surface",
886
+ "hover:bg-info-container-hovered",
887
+ "enabled:active:bg-info-container-hovered",
888
+ "focus-visible:bg-info-container-hovered"
889
+ ])
890
+ },
891
+ {
892
+ intent: "neutral",
893
+ design: "contrast",
894
+ class: (0, import_internal_utils7.tw)([
895
+ "text-on-neutral-container bg-surface",
896
+ "hover:bg-neutral-container-hovered",
897
+ "enabled:active:bg-neutral-container-hovered",
898
+ "focus-visible:bg-neutral-container-hovered"
899
+ ])
900
+ },
901
+ {
902
+ intent: "surface",
903
+ design: "contrast",
904
+ class: (0, import_internal_utils7.tw)([
905
+ "text-on-surface bg-surface",
906
+ "hover:bg-surface-hovered",
907
+ "enabled:active:bg-surface-hovered",
908
+ "focus-visible:bg-surface-hovered"
909
+ ])
910
+ },
911
+ {
912
+ intent: "surfaceInverse",
913
+ design: "contrast",
914
+ class: (0, import_internal_utils7.tw)([
915
+ "text-on-surface-inverse bg-surface-inverse",
916
+ "hover:bg-surface-inverse-hovered",
917
+ "enabled:active:bg-surface-inverse-hovered",
918
+ "focus-visible:bg-surface-inverse-hovered"
919
+ ])
920
+ }
921
+ ];
922
+
923
+ // src/button/Button.styles.tsx
924
+ var buttonStyles = (0, import_class_variance_authority4.cva)(
925
+ [
926
+ "u-shadow-border-transition",
927
+ "box-border inline-flex items-center justify-center gap-md whitespace-nowrap",
928
+ "default:px-lg",
929
+ "text-body-1 font-bold",
930
+ "focus-visible:u-outline"
931
+ ],
932
+ {
933
+ variants: {
934
+ /**
935
+ * Main style of the button.
936
+ *
937
+ * - `filled`: Button will be plain.
938
+ *
939
+ * - `outlined`: Button will be transparent with an outline.
940
+ *
941
+ * - `tinted`: Button will be filled but using a lighter color scheme.
942
+ *
943
+ * - `ghost`: Button will look like a link. No borders, plain text.
944
+ *
945
+ * - `contrast`: Button will be surface filled. No borders, plain text.
946
+ *
947
+ */
948
+ design: (0, import_internal_utils8.makeVariants)({
949
+ filled: [],
950
+ outlined: ["bg-transparent", "border-sm", "border-current"],
951
+ tinted: [],
952
+ ghost: ["default:-mx-md px-md hover:bg-main/dim-5"],
953
+ contrast: []
954
+ }),
955
+ underline: {
956
+ true: ["underline"]
957
+ },
958
+ /**
959
+ * Color scheme of the button.
960
+ */
961
+ intent: (0, import_internal_utils8.makeVariants)({
962
+ main: [],
963
+ support: [],
964
+ accent: [],
965
+ basic: [],
966
+ success: [],
967
+ alert: [],
968
+ danger: [],
969
+ info: [],
970
+ neutral: [],
971
+ surface: [],
972
+ surfaceInverse: []
973
+ }),
974
+ /**
975
+ * Size of the button.
976
+ */
977
+ size: (0, import_internal_utils8.makeVariants)({
978
+ sm: ["min-w-sz-32", "h-sz-32"],
979
+ md: ["min-w-sz-44", "h-sz-44"],
980
+ lg: ["min-w-sz-56", "h-sz-56"]
981
+ }),
982
+ /**
983
+ * Shape of the button.
984
+ */
985
+ shape: (0, import_internal_utils8.makeVariants)({
986
+ rounded: ["rounded-lg"],
987
+ square: ["rounded-0"],
988
+ pill: ["rounded-full"]
989
+ }),
990
+ /**
991
+ * Disable the button, preventing user interaction and adding opacity.
992
+ */
993
+ disabled: {
994
+ true: ["cursor-not-allowed", "opacity-dim-3"],
995
+ false: ["cursor-pointer"]
996
+ }
997
+ },
998
+ compoundVariants: [
999
+ ...filledVariants,
1000
+ ...outlinedVariants,
1001
+ ...tintedVariants,
1002
+ ...ghostVariants,
1003
+ ...contrastVariants
1004
+ ],
1005
+ defaultVariants: {
1006
+ design: "filled",
1007
+ intent: "main",
1008
+ size: "md",
1009
+ shape: "rounded"
1010
+ }
1011
+ }
1012
+ );
1013
+
1014
+ // src/button/Button.tsx
1015
+ var import_jsx_runtime9 = require("react/jsx-runtime");
1016
+ var blockedEventHandlers = [
1017
+ "onClick",
1018
+ "onMouseDown",
1019
+ "onMouseUp",
1020
+ "onMouseEnter",
1021
+ "onMouseLeave",
1022
+ "onMouseOver",
1023
+ "onMouseOut",
1024
+ "onKeyDown",
1025
+ "onKeyPress",
1026
+ "onKeyUp",
1027
+ "onSubmit"
1028
+ ];
1029
+ var Button = ({
1030
+ children,
1031
+ design = "filled",
1032
+ disabled = false,
1033
+ intent = "main",
1034
+ isLoading = false,
1035
+ loadingLabel,
1036
+ loadingText,
1037
+ shape = "rounded",
1038
+ size = "md",
1039
+ asChild,
1040
+ className,
1041
+ underline = false,
1042
+ ref,
1043
+ ...others
1044
+ }) => {
1045
+ const Component = asChild ? Slot : "button";
1046
+ const shouldNotInteract = !!disabled || isLoading;
1047
+ const disabledEventHandlers = (0, import_react6.useMemo)(() => {
1048
+ const result = {};
1049
+ if (shouldNotInteract) {
1050
+ blockedEventHandlers.forEach((eventHandler) => result[eventHandler] = void 0);
1051
+ }
1052
+ return result;
1053
+ }, [shouldNotInteract]);
1054
+ const spinnerProps = {
1055
+ size: "current",
1056
+ className: loadingText ? "inline-block" : "absolute",
1057
+ ...loadingLabel && { "aria-label": loadingLabel }
1058
+ };
1059
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1060
+ Component,
1061
+ {
1062
+ "data-spark-component": "button",
1063
+ ...Component === "button" && { type: "button" },
1064
+ ref,
1065
+ className: buttonStyles({
1066
+ className,
1067
+ design,
1068
+ disabled: shouldNotInteract,
1069
+ intent,
1070
+ shape,
1071
+ size,
1072
+ underline
1073
+ }),
1074
+ disabled: !!disabled,
1075
+ "aria-busy": isLoading,
1076
+ "aria-live": isLoading ? "assertive" : "off",
1077
+ ...others,
1078
+ ...disabledEventHandlers,
1079
+ children: wrapPolymorphicSlot(
1080
+ asChild,
1081
+ children,
1082
+ (slotted) => isLoading ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
1083
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Spinner, { ...spinnerProps }),
1084
+ loadingText && loadingText,
1085
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1086
+ "div",
1087
+ {
1088
+ "aria-hidden": true,
1089
+ className: (0, import_class_variance_authority5.cx)("gap-md", loadingText ? "hidden" : "inline-flex opacity-0"),
1090
+ children: slotted
1091
+ }
1092
+ )
1093
+ ] }) : slotted
1094
+ )
1095
+ }
1096
+ );
1097
+ };
1098
+ Button.displayName = "Button";
1099
+
1100
+ // src/icon-button/IconButton.styles.tsx
1101
+ var import_internal_utils9 = require("@spark-ui/internal-utils");
1102
+ var import_class_variance_authority6 = require("class-variance-authority");
1103
+ var iconButtonStyles = (0, import_class_variance_authority6.cva)(["pl-0 pr-0"], {
1104
+ variants: {
1105
+ /**
1106
+ * Sets the size of the icon.
1107
+ */
1108
+ size: (0, import_internal_utils9.makeVariants)({
1109
+ sm: ["text-body-1"],
1110
+ md: ["text-body-1"],
1111
+ lg: ["text-display-3"]
1112
+ })
1113
+ }
1114
+ });
1115
+
1116
+ // src/icon-button/IconButton.tsx
1117
+ var import_jsx_runtime10 = require("react/jsx-runtime");
1118
+ var IconButton = ({
1119
+ design = "filled",
1120
+ disabled = false,
1121
+ intent = "main",
1122
+ shape = "rounded",
1123
+ size = "md",
1124
+ className,
1125
+ ref,
1126
+ ...others
1127
+ }) => {
1128
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1129
+ Button,
1130
+ {
1131
+ "data-spark-component": "icon-button",
1132
+ ref,
1133
+ className: iconButtonStyles({ size, className }),
1134
+ design,
1135
+ disabled,
1136
+ intent,
1137
+ shape,
1138
+ size,
1139
+ ...others
1140
+ }
1141
+ );
1142
+ };
1143
+ IconButton.displayName = "IconButton";
1144
+
1145
+ // src/dialog/DialogCloseButton.tsx
1146
+ var import_jsx_runtime11 = require("react/jsx-runtime");
1147
+ var Root = ({
1148
+ "aria-label": ariaLabel,
1149
+ className,
1150
+ size = "md",
1151
+ intent = "neutral",
1152
+ design = "ghost",
1153
+ children = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_Close.Close, {}),
1154
+ ref,
1155
+ ...rest
1156
+ }) => {
1157
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1158
+ Close,
1159
+ {
1160
+ "data-spark-component": "dialog-close-button",
1161
+ "data-part": "close",
1162
+ ref,
1163
+ className: (0, import_class_variance_authority7.cx)(["absolute", "top-md", "right-xl"], className),
1164
+ asChild: true,
1165
+ ...rest,
1166
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(IconButton, { intent, size, design, "aria-label": ariaLabel, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { children }) })
1167
+ }
1168
+ );
1169
+ };
1170
+ var CloseButton = Object.assign(Root, {
1171
+ id: "CloseButton"
1172
+ });
1173
+ Root.displayName = "Dialog.CloseButton";
1174
+
1175
+ // src/dialog/DialogContent.tsx
1176
+ var import_radix_ui4 = require("radix-ui");
1177
+ var import_react7 = require("react");
1178
+
1179
+ // src/dialog/DialogContent.styles.tsx
1180
+ var import_class_variance_authority8 = require("class-variance-authority");
1181
+ var dialogContentStyles = (0, import_class_variance_authority8.cva)(
1182
+ [
1183
+ "z-modal flex flex-col bg-surface group",
1184
+ "focus-visible:outline-hidden focus-visible:u-outline",
1185
+ "[&:not(:has(footer))]:pb-lg",
1186
+ "[&:not(:has(header))]:pt-lg"
1187
+ ],
1188
+ {
1189
+ variants: {
1190
+ size: {
1191
+ fullscreen: "fixed size-full top-0 left-0",
1192
+ sm: "max-w-sz-480",
1193
+ md: "max-w-sz-672",
1194
+ lg: "max-w-sz-864"
1195
+ },
1196
+ isNarrow: {
1197
+ true: [],
1198
+ false: []
1199
+ }
1200
+ },
1201
+ compoundVariants: [
1202
+ {
1203
+ size: ["sm", "md", "lg"],
1204
+ class: [
1205
+ "fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2",
1206
+ "max-h-[80%]",
1207
+ "shadow-md rounded-lg",
1208
+ "data-[state=open]:animate-fade-in",
1209
+ "data-[state=closed]:animate-fade-out"
1210
+ ]
1211
+ },
1212
+ {
1213
+ size: ["sm", "md", "lg"],
1214
+ isNarrow: false,
1215
+ class: ["w-full"]
1216
+ }
1217
+ ],
1218
+ defaultVariants: {
1219
+ size: "md",
1220
+ isNarrow: false
1221
+ }
1222
+ }
1223
+ );
1224
+
1225
+ // src/dialog/DialogContent.tsx
1226
+ var import_jsx_runtime12 = require("react/jsx-runtime");
1227
+ var Content = ({
1228
+ children,
1229
+ className,
1230
+ isNarrow = false,
1231
+ size = "md",
1232
+ onInteractOutside,
1233
+ ref,
1234
+ ...rest
1235
+ }) => {
1236
+ const { setIsFullScreen } = useDialog();
1237
+ (0, import_react7.useEffect)(() => {
1238
+ if (size === "fullscreen") setIsFullScreen(true);
1239
+ return () => setIsFullScreen(false);
1240
+ }, [setIsFullScreen, size]);
1241
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1242
+ import_radix_ui4.Dialog.Content,
1243
+ {
1244
+ "data-spark-component": "dialog-content",
1245
+ ref,
1246
+ className: dialogContentStyles({
1247
+ className,
1248
+ isNarrow,
1249
+ size
1250
+ }),
1251
+ onInteractOutside: (e) => {
1252
+ const isForegroundElement = e.target.closest(".z-toast, .z-popover");
1253
+ if (isForegroundElement) {
1254
+ e.preventDefault();
1255
+ }
1256
+ onInteractOutside?.(e);
1257
+ },
1258
+ ...rest,
1259
+ children
1260
+ }
1261
+ );
1262
+ };
1263
+ Content.displayName = "Dialog.Content";
1264
+
1265
+ // src/dialog/DialogDescription.tsx
1266
+ var import_radix_ui5 = require("radix-ui");
1267
+ var import_jsx_runtime13 = require("react/jsx-runtime");
1268
+ var Description = (props) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_radix_ui5.Dialog.Description, { "data-spark-component": "dialog-description", ...props });
1269
+ Description.displayName = "Dialog.Description";
1270
+
1271
+ // src/dialog/DialogFooter.tsx
1272
+ var import_class_variance_authority9 = require("class-variance-authority");
1273
+ var import_jsx_runtime14 = require("react/jsx-runtime");
1274
+ var Footer = ({ children, className, ref, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1275
+ "footer",
1276
+ {
1277
+ "data-spark-component": "dialog-footer",
1278
+ ref,
1279
+ className: (0, import_class_variance_authority9.cx)(className, ["px-xl", "py-lg"]),
1280
+ ...rest,
1281
+ children
1282
+ }
1283
+ );
1284
+ Footer.displayName = "Dialog.Footer";
1285
+
1286
+ // src/dialog/DialogHeader.tsx
1287
+ var import_class_variance_authority10 = require("class-variance-authority");
1288
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1289
+ var Header = ({ children, className, ref, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1290
+ "header",
1291
+ {
1292
+ "data-spark-component": "dialog-header",
1293
+ ref,
1294
+ className: (0, import_class_variance_authority10.cx)(className, ["px-xl", "py-lg"]),
1295
+ ...rest,
1296
+ children
1297
+ }
1298
+ );
1299
+ Header.displayName = "Dialog.Header";
1300
+
1301
+ // src/dialog/DialogOverlay.tsx
1302
+ var import_class_variance_authority11 = require("class-variance-authority");
1303
+ var import_radix_ui6 = require("radix-ui");
1304
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1305
+ var Overlay = ({ className, ref, ...rest }) => {
1306
+ const { isFullScreen } = useDialog();
1307
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1308
+ import_radix_ui6.Dialog.Overlay,
1309
+ {
1310
+ "data-spark-component": "dialog-overlay",
1311
+ ref,
1312
+ className: (0, import_class_variance_authority11.cx)(
1313
+ isFullScreen ? "hidden" : "fixed",
1314
+ ["top-0", "left-0", "w-screen", "h-screen", "z-overlay"],
1315
+ ["bg-overlay/dim-1"],
1316
+ ["data-[state=open]:animate-fade-in"],
1317
+ ["data-[state=closed]:animate-fade-out"],
1318
+ className
1319
+ ),
1320
+ ...rest
1321
+ }
1322
+ );
1323
+ };
1324
+ Overlay.displayName = "Dialog.Overlay";
1325
+
1326
+ // src/dialog/DialogPortal.tsx
1327
+ var import_radix_ui7 = require("radix-ui");
1328
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1329
+ var Portal = ({ children, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_radix_ui7.Dialog.Portal, { ...rest, children });
1330
+ Portal.displayName = "Dialog.Portal";
1331
+
1332
+ // src/dialog/DialogTitle.tsx
1333
+ var import_class_variance_authority12 = require("class-variance-authority");
1334
+ var import_radix_ui8 = require("radix-ui");
1335
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1336
+ var Title = ({ className, ref, ...others }) => {
1337
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1338
+ import_radix_ui8.Dialog.Title,
1339
+ {
1340
+ "data-spark-component": "dialog-title",
1341
+ ref,
1342
+ className: (0, import_class_variance_authority12.cx)(
1343
+ "text-headline-1 text-on-surface",
1344
+ "group-has-data-[part=close]:pr-3xl",
1345
+ className
1346
+ ),
1347
+ ...others
1348
+ }
1349
+ );
1350
+ };
1351
+ Title.displayName = "Dialog.Title";
1352
+
1353
+ // src/dialog/DialogTrigger.tsx
1354
+ var import_radix_ui9 = require("radix-ui");
1355
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1356
+ var Trigger = (props) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_radix_ui9.Dialog.Trigger, { "data-spark-component": "dialog-trigger", ...props });
1357
+ Trigger.displayName = "Dialog.Trigger";
1358
+
1359
+ // src/dialog/index.ts
1360
+ var Dialog2 = Object.assign(Dialog, {
1361
+ Trigger,
1362
+ Portal,
1363
+ Overlay,
1364
+ Content,
1365
+ Header,
1366
+ Body,
1367
+ Footer,
1368
+ Close,
1369
+ CloseButton,
1370
+ Title,
1371
+ Description
1372
+ });
1373
+ Dialog2.displayName = "Dialog";
1374
+ Dialog2.Trigger.displayName = "Dialog.Trigger";
1375
+ Trigger.displayName = "Dialog.Trigger";
1376
+ Portal.displayName = "Dialog.Portal";
1377
+ Overlay.displayName = "Dialog.Overlay";
1378
+ Content.displayName = "Dialog.Content";
1379
+ Header.displayName = "Dialog.Header";
1380
+ Body.displayName = "Dialog.Body";
1381
+ Footer.displayName = "Dialog.Footer";
1382
+ CloseButton.displayName = "Dialog.CloseButton";
1383
+ Title.displayName = "Dialog.Title";
1384
+ Description.displayName = "Dialog.Description";
1385
+ // Annotate the CommonJS export names for ESM import in node:
1386
+ 0 && (module.exports = {
1387
+ Dialog
1388
+ });
1389
+ //# sourceMappingURL=index.js.map