@spark-ui/components 10.0.0

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