ixia-ui-react 1.8.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/README.md +24 -1
  2. package/dist/accordion/index.d.ts +41 -0
  3. package/dist/accordion/index.js +142 -0
  4. package/dist/accordion/index.js.map +1 -0
  5. package/dist/alert/index.d.ts +22 -0
  6. package/dist/alert/index.js +1 -0
  7. package/dist/alert-Dcu9R8CY.js +73 -0
  8. package/dist/alert-Dcu9R8CY.js.map +1 -0
  9. package/dist/alert-dialog/index.d.ts +39 -0
  10. package/dist/alert-dialog/index.js +134 -0
  11. package/dist/alert-dialog/index.js.map +1 -0
  12. package/dist/autocomplete/index.d.ts +2 -0
  13. package/dist/autocomplete/index.js +1 -0
  14. package/dist/autocomplete-BfpWVO1l.js +169 -0
  15. package/dist/autocomplete-BfpWVO1l.js.map +1 -0
  16. package/dist/avatar/index.d.ts +2 -0
  17. package/dist/avatar/index.js +1 -0
  18. package/dist/avatar-Bp4gZh21.js +93 -0
  19. package/dist/avatar-Bp4gZh21.js.map +1 -0
  20. package/dist/badge/index.d.ts +2 -0
  21. package/dist/badge/index.js +1 -0
  22. package/dist/badge-Cl-9WTW-.js +160 -0
  23. package/dist/badge-Cl-9WTW-.js.map +1 -0
  24. package/dist/bento-box/index.d.ts +30 -0
  25. package/dist/bento-box/index.js +103 -0
  26. package/dist/bento-box/index.js.map +1 -0
  27. package/dist/breadcrumb/index.d.ts +18 -0
  28. package/dist/breadcrumb/index.js +58 -0
  29. package/dist/breadcrumb/index.js.map +1 -0
  30. package/dist/button/index.d.ts +3 -0
  31. package/dist/button/index.js +1 -0
  32. package/dist/button-DXQvyQyj.js +309 -0
  33. package/dist/button-DXQvyQyj.js.map +1 -0
  34. package/dist/button-group/index.d.ts +2 -0
  35. package/dist/button-group/index.js +1 -0
  36. package/dist/button-group-BiSk3iIf.js +269 -0
  37. package/dist/button-group-BiSk3iIf.js.map +1 -0
  38. package/dist/button-group-context-CScS9Ntz.js +7 -0
  39. package/dist/button-group-context-CScS9Ntz.js.map +1 -0
  40. package/dist/button.types-BFKrBCGd.d.ts +10 -0
  41. package/dist/calendar/index.d.ts +63 -0
  42. package/dist/calendar/index.js +292 -0
  43. package/dist/calendar/index.js.map +1 -0
  44. package/dist/chart/index.d.ts +87 -0
  45. package/dist/chart/index.js +262 -0
  46. package/dist/chart/index.js.map +1 -0
  47. package/dist/checkbox/index.d.ts +2 -0
  48. package/dist/checkbox/index.js +1 -0
  49. package/dist/checkbox-BuUZ1Lly.js +54 -0
  50. package/dist/checkbox-BuUZ1Lly.js.map +1 -0
  51. package/dist/checkbox-group/index.d.ts +6 -0
  52. package/dist/checkbox-group/index.js +17 -0
  53. package/dist/checkbox-group/index.js.map +1 -0
  54. package/dist/cn-BDi0DfT5.js +29 -0
  55. package/dist/cn-BDi0DfT5.js.map +1 -0
  56. package/dist/code-block/index.d.ts +53 -0
  57. package/dist/code-block/index.js +193 -0
  58. package/dist/code-block/index.js.map +1 -0
  59. package/dist/collapsible/index.d.ts +2 -0
  60. package/dist/collapsible/index.js +1 -0
  61. package/dist/collapsible-C3OPWY9l.js +44 -0
  62. package/dist/collapsible-C3OPWY9l.js.map +1 -0
  63. package/dist/color-channel-slider/index.d.ts +2 -0
  64. package/dist/color-channel-slider/index.js +1 -0
  65. package/dist/color-channel-slider-h8mUPJ35.js +70 -0
  66. package/dist/color-channel-slider-h8mUPJ35.js.map +1 -0
  67. package/dist/color-picker/index.d.ts +137 -0
  68. package/dist/color-picker/index.js +621 -0
  69. package/dist/color-picker/index.js.map +1 -0
  70. package/dist/combobox/index.d.ts +64 -0
  71. package/dist/combobox/index.js +289 -0
  72. package/dist/combobox/index.js.map +1 -0
  73. package/dist/context-menu/index.d.ts +49 -0
  74. package/dist/context-menu/index.js +166 -0
  75. package/dist/context-menu/index.js.map +1 -0
  76. package/dist/copy-button/index.d.ts +2 -0
  77. package/dist/copy-button/index.js +1 -0
  78. package/dist/copy-button-BAG-P44v.js +28 -0
  79. package/dist/copy-button-BAG-P44v.js.map +1 -0
  80. package/dist/dialog/index.d.ts +36 -0
  81. package/dist/dialog/index.js +119 -0
  82. package/dist/dialog/index.js.map +1 -0
  83. package/dist/drawer/index.d.ts +31 -0
  84. package/dist/drawer/index.js +95 -0
  85. package/dist/drawer/index.js.map +1 -0
  86. package/dist/dropzone/index.d.ts +70 -0
  87. package/dist/dropzone/index.js +479 -0
  88. package/dist/dropzone/index.js.map +1 -0
  89. package/dist/field/index.d.ts +2 -0
  90. package/dist/field/index.js +1 -0
  91. package/dist/field-DkMfrmdj.js +254 -0
  92. package/dist/field-DkMfrmdj.js.map +1 -0
  93. package/dist/form/index.d.ts +220 -0
  94. package/dist/form/index.js +3 -0
  95. package/dist/form-V2VqHn0D.js +192 -0
  96. package/dist/form-V2VqHn0D.js.map +1 -0
  97. package/dist/has-single-element-child-DLGI0Dh2.js +12 -0
  98. package/dist/has-single-element-child-DLGI0Dh2.js.map +1 -0
  99. package/dist/hooks/index.d.ts +26 -0
  100. package/dist/hooks/index.js +1 -0
  101. package/dist/hooks-DUm-q_ig.js +68 -0
  102. package/dist/hooks-DUm-q_ig.js.map +1 -0
  103. package/dist/icon/index.d.ts +2 -0
  104. package/dist/icon/index.js +1 -0
  105. package/dist/icon-D3JWfCa2.js +85 -0
  106. package/dist/icon-D3JWfCa2.js.map +1 -0
  107. package/dist/icon-container/index.d.ts +10 -0
  108. package/dist/icon-container/index.js +64 -0
  109. package/dist/icon-container/index.js.map +1 -0
  110. package/dist/index-0ZQzIKoE.d.ts +11 -0
  111. package/dist/index-B0Qz4Egw.d.ts +33 -0
  112. package/dist/index-BJVMIPq4.d.ts +54 -0
  113. package/dist/index-BsV-u_jc.d.ts +4 -0
  114. package/dist/index-BygR7cUT.d.ts +22 -0
  115. package/dist/index-BzTOLSgZ.d.ts +9 -0
  116. package/dist/index-C15xiG9O.d.ts +14 -0
  117. package/dist/index-C2zco6-C.d.ts +15 -0
  118. package/dist/index-CIDOd4Z8.d.ts +56 -0
  119. package/dist/index-CQti9gFb.d.ts +49 -0
  120. package/dist/index-CiE-Rqit.d.ts +70 -0
  121. package/dist/index-CpNMNewO.d.ts +11 -0
  122. package/dist/index-D1kkOg9k.d.ts +14 -0
  123. package/dist/index-DLfdAked.d.ts +34 -0
  124. package/dist/index-DMaW_XF1.d.ts +24 -0
  125. package/dist/index-DVMheqs_.d.ts +9 -0
  126. package/dist/index-DXDObRKO.d.ts +14 -0
  127. package/dist/index-Db_QGr6S.d.ts +5 -0
  128. package/dist/index-DdFxZ3Xr.d.ts +22 -0
  129. package/dist/index-DyQYoAUf.d.ts +29 -0
  130. package/dist/index-PuhTRMce.d.ts +11 -0
  131. package/dist/index-Wb_tILYa.d.ts +24 -0
  132. package/dist/index-uaJUy56Z.d.ts +4 -0
  133. package/dist/index-x4f8gnaI.d.ts +15 -0
  134. package/dist/input/index.d.ts +3 -0
  135. package/dist/input/index.js +1 -0
  136. package/dist/input-Czt30vp7.js +179 -0
  137. package/dist/input-Czt30vp7.js.map +1 -0
  138. package/dist/input-group/index.d.ts +2 -0
  139. package/dist/input-group/index.js +1 -0
  140. package/dist/input-group-CgdazGrY.js +111 -0
  141. package/dist/input-group-CgdazGrY.js.map +1 -0
  142. package/dist/input-otp/index.d.ts +13 -0
  143. package/dist/input-otp/index.js +44 -0
  144. package/dist/input-otp/index.js.map +1 -0
  145. package/dist/input.types-816rEVWU.d.ts +20 -0
  146. package/dist/input.types-D0gyoaQv.js +48 -0
  147. package/dist/input.types-D0gyoaQv.js.map +1 -0
  148. package/dist/kbd/index.d.ts +9 -0
  149. package/dist/kbd/index.js +25 -0
  150. package/dist/kbd/index.js.map +1 -0
  151. package/dist/label/index.d.ts +8 -0
  152. package/dist/label/index.js +1 -0
  153. package/dist/label-BgpayDvN.js +27 -0
  154. package/dist/label-BgpayDvN.js.map +1 -0
  155. package/dist/layer-tree/index.d.ts +728 -0
  156. package/dist/layer-tree/index.js +685 -0
  157. package/dist/layer-tree/index.js.map +1 -0
  158. package/dist/map/google/index.d.ts +143 -0
  159. package/dist/map/google/index.js +445 -0
  160. package/dist/map/google/index.js.map +1 -0
  161. package/dist/map/index.d.ts +94 -0
  162. package/dist/map/index.js +208 -0
  163. package/dist/map/index.js.map +1 -0
  164. package/dist/map.context-Dw1D7E8m.js +11 -0
  165. package/dist/map.context-Dw1D7E8m.js.map +1 -0
  166. package/dist/menu/index.d.ts +2 -0
  167. package/dist/menu/index.js +1 -0
  168. package/dist/menu-sf13cnGp.js +173 -0
  169. package/dist/menu-sf13cnGp.js.map +1 -0
  170. package/dist/menu-tone-DWBEHoX2.js +22 -0
  171. package/dist/menu-tone-DWBEHoX2.js.map +1 -0
  172. package/dist/meter/index.d.ts +2 -0
  173. package/dist/meter/index.js +1 -0
  174. package/dist/meter-HD5taq57.js +116 -0
  175. package/dist/meter-HD5taq57.js.map +1 -0
  176. package/dist/nav-bar/index.d.ts +25 -0
  177. package/dist/nav-bar/index.js +133 -0
  178. package/dist/nav-bar/index.js.map +1 -0
  179. package/dist/navigation-menu/index.d.ts +43 -0
  180. package/dist/navigation-menu/index.js +176 -0
  181. package/dist/navigation-menu/index.js.map +1 -0
  182. package/dist/number-field/index.d.ts +14 -0
  183. package/dist/number-field/index.js +116 -0
  184. package/dist/number-field/index.js.map +1 -0
  185. package/dist/popover/index.d.ts +2 -0
  186. package/dist/popover/index.js +1 -0
  187. package/dist/popover-0WDxRi-s.js +114 -0
  188. package/dist/popover-0WDxRi-s.js.map +1 -0
  189. package/dist/preview-card/index.d.ts +13 -0
  190. package/dist/preview-card/index.js +35 -0
  191. package/dist/preview-card/index.js.map +1 -0
  192. package/dist/profile/index.d.ts +21 -0
  193. package/dist/profile/index.js +52 -0
  194. package/dist/profile/index.js.map +1 -0
  195. package/dist/progress/index.d.ts +23 -0
  196. package/dist/progress/index.js +97 -0
  197. package/dist/progress/index.js.map +1 -0
  198. package/dist/radar-ping/index.d.ts +11 -0
  199. package/dist/radar-ping/index.js +49 -0
  200. package/dist/radar-ping/index.js.map +1 -0
  201. package/dist/radio-group/index.d.ts +2 -0
  202. package/dist/radio-group/index.js +1 -0
  203. package/dist/radio-group-Dj43u35Z.js +47 -0
  204. package/dist/radio-group-Dj43u35Z.js.map +1 -0
  205. package/dist/resizeable/index.d.ts +11 -0
  206. package/dist/resizeable/index.js +31 -0
  207. package/dist/resizeable/index.js.map +1 -0
  208. package/dist/scroll-area/index.d.ts +11 -0
  209. package/dist/scroll-area/index.js +51 -0
  210. package/dist/scroll-area/index.js.map +1 -0
  211. package/dist/select/index.d.ts +2 -0
  212. package/dist/select/index.js +1 -0
  213. package/dist/select-DncJXYim.js +159 -0
  214. package/dist/select-DncJXYim.js.map +1 -0
  215. package/dist/separator/index.d.ts +2 -0
  216. package/dist/separator/index.js +1 -0
  217. package/dist/separator-DgIQp1cB.js +97 -0
  218. package/dist/separator-DgIQp1cB.js.map +1 -0
  219. package/dist/sidebar/index.d.ts +80 -0
  220. package/dist/sidebar/index.js +334 -0
  221. package/dist/sidebar/index.js.map +1 -0
  222. package/dist/site-header/index.d.ts +22 -0
  223. package/dist/site-header/index.js +55 -0
  224. package/dist/site-header/index.js.map +1 -0
  225. package/dist/skeleton/index.d.ts +4 -0
  226. package/dist/skeleton/index.js +1 -0
  227. package/dist/skeleton-DSG3FWby.js +13 -0
  228. package/dist/skeleton-DSG3FWby.js.map +1 -0
  229. package/dist/slider/index.d.ts +2 -0
  230. package/dist/slider/index.js +1 -0
  231. package/dist/slider-D_XlV4OW.js +114 -0
  232. package/dist/slider-D_XlV4OW.js.map +1 -0
  233. package/dist/slider-group/index.d.ts +46 -0
  234. package/dist/slider-group/index.js +198 -0
  235. package/dist/slider-group/index.js.map +1 -0
  236. package/dist/styles.css +4 -1
  237. package/dist/switch/index.d.ts +2 -0
  238. package/dist/switch/index.js +1 -0
  239. package/dist/switch-DXHixGHe.js +23 -0
  240. package/dist/switch-DXHixGHe.js.map +1 -0
  241. package/dist/table/index.d.ts +920 -0
  242. package/dist/table/index.js +1544 -0
  243. package/dist/table/index.js.map +1 -0
  244. package/dist/tabs/index.d.ts +2 -0
  245. package/dist/tabs/index.js +1 -0
  246. package/dist/tabs-DTC7coap.js +270 -0
  247. package/dist/tabs-DTC7coap.js.map +1 -0
  248. package/dist/text-area/index.d.ts +2 -0
  249. package/dist/text-area/index.js +1 -0
  250. package/dist/text-area-H6HjKnv_.js +50 -0
  251. package/dist/text-area-H6HjKnv_.js.map +1 -0
  252. package/dist/toast/index.d.ts +65 -0
  253. package/dist/toast/index.js +216 -0
  254. package/dist/toast/index.js.map +1 -0
  255. package/dist/toggle/index.d.ts +2 -0
  256. package/dist/toggle/index.js +1 -0
  257. package/dist/toggle-ZT9thVmz.js +73 -0
  258. package/dist/toggle-ZT9thVmz.js.map +1 -0
  259. package/dist/toggle-group/index.d.ts +10 -0
  260. package/dist/toggle-group/index.js +63 -0
  261. package/dist/toggle-group/index.js.map +1 -0
  262. package/dist/toggle-group-context-CBNZEf1I.js +6 -0
  263. package/dist/toggle-group-context-CBNZEf1I.js.map +1 -0
  264. package/dist/tooltip/index.d.ts +18 -0
  265. package/dist/tooltip/index.js +1 -0
  266. package/dist/tooltip-B6z3tDbW.js +41 -0
  267. package/dist/tooltip-B6z3tDbW.js.map +1 -0
  268. package/dist/trim-text-children-CQRFg2fL.js +33 -0
  269. package/dist/trim-text-children-CQRFg2fL.js.map +1 -0
  270. package/dist/utils/index.d.ts +4 -0
  271. package/dist/utils/index.js +3 -0
  272. package/dist/utils-BI2x7nW5.js +5 -0
  273. package/dist/utils-BI2x7nW5.js.map +1 -0
  274. package/package.json +100 -31
  275. package/dist/index.d.ts +0 -8000
  276. package/dist/index.js +0 -17274
  277. package/dist/index.js.map +0 -1
@@ -0,0 +1,216 @@
1
+ import { t as cn } from "../cn-BDi0DfT5.js";
2
+ import { n as Icon } from "../icon-D3JWfCa2.js";
3
+ import { t as Button } from "../button-DXQvyQyj.js";
4
+ import { t as Separator } from "../separator-DgIQp1cB.js";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ import React from "react";
7
+ import { Toast as Toast$1 } from "@base-ui/react/toast";
8
+ // src/components/toast/anchored-toast-item.tsx
9
+ function AnchoredToastItem({ className, ref, toast, ...props }) {
10
+ return /* @__PURE__ */ jsxs(Toast$1.Root, {
11
+ className: cn("group flex w-max origin-(--transform-origin) flex-col rounded-full bg-surface px-sm py-2xs shadow-lg transition-[transform,scale,opacity] data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0", className),
12
+ ref,
13
+ toast,
14
+ ...props,
15
+ children: [/* @__PURE__ */ jsx(Toast$1.Arrow, { className: "data-[side=bottom]:-top-3xs data-[side=left]:right-[-13px] data-[side=left]:rotate-90 data-[side=right]:left-[-13px] data-[side=right]:-rotate-90 data-[side=top]:-bottom-3xs data-[side=top]:rotate-180" }), /* @__PURE__ */ jsx(Toast$1.Content, { children: /* @__PURE__ */ jsx(Toast$1.Description, { className: "style-text-default--1" }) })]
16
+ });
17
+ }
18
+ // src/components/toast/toast-manager.ts
19
+ const createToastManager = () => {
20
+ const manager = Toast$1.createToastManager(), add = (options) => manager.add({
21
+ ...options,
22
+ data: {
23
+ ...options.data,
24
+ icon: options.icon,
25
+ variant: options.variant
26
+ }
27
+ });
28
+ return {
29
+ ...manager,
30
+ add
31
+ };
32
+ };
33
+ const useToastManager = () => {
34
+ const toast = Toast$1.useToastManager(), add = (options) => toast.add({
35
+ ...options,
36
+ data: {
37
+ ...options.data,
38
+ icon: options.icon,
39
+ variant: options.variant
40
+ }
41
+ });
42
+ return {
43
+ add,
44
+ toasts: toast.toasts
45
+ };
46
+ };
47
+ // src/components/toast/anchored-toasts.tsx
48
+ function AnchoredToasts({ className, ref, ...props }) {
49
+ const { toasts } = useToastManager();
50
+ return /* @__PURE__ */ jsx(Toast$1.Portal, { children: /* @__PURE__ */ jsx(Toast$1.Viewport, {
51
+ "aria-label": "Anchored notifications",
52
+ className: cn("fixed top-auto right-[1rem] bottom-[1rem] z-10 mx-auto flex w-[250px] sm:right-[2rem] sm:bottom-[2rem] sm:w-[300px]", className),
53
+ ref,
54
+ ...props,
55
+ children: toasts.map((toast) => /* @__PURE__ */ jsx(Toast$1.Positioner, {
56
+ className: "z-[calc(1000-var(--toast-index))]",
57
+ toast,
58
+ children: /* @__PURE__ */ jsx(AnchoredToastItem, { toast })
59
+ }, toast.id))
60
+ }) });
61
+ }
62
+ // src/components/toast/stack-toast-item.tsx
63
+ const DEFAULT_DURATION = 1e4;
64
+ const RING_RADIUS = 14;
65
+ const RING_CIRCUMFERENCE = Math.PI * 28;
66
+ function getVariantBgColor(variant) {
67
+ switch (variant) {
68
+ case "brand": return "bg-brand-default";
69
+ case "accent": return "bg-accent-default";
70
+ case "neutral": return "bg-neutral-default";
71
+ case "error": return "bg-error-default";
72
+ case "info": return "bg-info-default";
73
+ case "success": return "bg-success-default";
74
+ case "warning": return "bg-warning-default";
75
+ default: return "bg-neutral-default";
76
+ }
77
+ }
78
+ function getVariantBorderColor(variant) {
79
+ switch (variant) {
80
+ case "brand": return "border-brand-border-strong";
81
+ case "accent": return "border-accent-border-strong";
82
+ case "neutral": return "border-neutral-border-strong";
83
+ case "error": return "border-error-border-strong";
84
+ case "info": return "border-info-border-strong";
85
+ case "success": return "border-success-border-strong";
86
+ case "warning": return "border-warning-border-strong";
87
+ default: return "border-neutral-border-strong";
88
+ }
89
+ }
90
+ function getVariantIcon(variant, icon) {
91
+ if (icon) return React.createElement(icon);
92
+ switch (variant) {
93
+ case "error": return /* @__PURE__ */ jsx(Icon, {
94
+ name: "error",
95
+ weight: "fill"
96
+ });
97
+ case "success": return /* @__PURE__ */ jsx(Icon, {
98
+ name: "success",
99
+ weight: "fill"
100
+ });
101
+ case "warning": return /* @__PURE__ */ jsx(Icon, {
102
+ name: "warning",
103
+ weight: "fill"
104
+ });
105
+ default: return /* @__PURE__ */ jsx(Icon, {
106
+ name: "info",
107
+ weight: "fill"
108
+ });
109
+ }
110
+ }
111
+ function StackToastItem({ className, ref, toast, ...props }) {
112
+ const duration = toast.timeout ?? DEFAULT_DURATION, variant = toast.data?.variant, icon = toast.data?.icon;
113
+ return /* @__PURE__ */ jsxs(Toast$1.Root, {
114
+ className: cn("absolute right-[0px] bottom-[0px] left-auto z-[calc(1000-var(--toast-index))] mr-[0px] flex h-2xl origin-bottom transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--peek))-(var(--shrink)*var(--height))))_scale(var(--scale))] items-center justify-center gap-xs overflow-hidden rounded-full border bg-surface bg-clip-padding pr-sm shadow-lg select-none [--gap:0.75rem] [--height:var(--toast-frontmost-height,var(--toast-height))] [--offset-y:calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y))] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))] [transition:transform_0.5s_cubic-bezier(0.22,1,0.36,1),opacity_0.5s,height_0.15s] after:absolute after:top-full after:left-[0px] after:w-full after:content-[''] data-ending-style:opacity-0 data-expanded:h-(--toast-height) data-expanded:transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--offset-y)))] data-limited:opacity-0 data-starting-style:transform-[translateY(150%)] data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+150%))] data-expanded:data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+150%))] data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))] data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-150%))] data-expanded:data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-150%))] [&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:transform-[translateY(150%)]", className, getVariantBorderColor(variant)),
115
+ ref,
116
+ toast,
117
+ ...props,
118
+ children: [/* @__PURE__ */ jsx("div", {
119
+ className: cn("flex aspect-square size-2xl items-center justify-center [&>svg]:size-lg [&>svg]:text-on-surface-inverse", getVariantBgColor(variant)),
120
+ children: getVariantIcon(variant, icon)
121
+ }), /* @__PURE__ */ jsxs(Toast$1.Content, {
122
+ className: "flex items-center justify-center gap-3xs overflow-hidden pl-2xs transition-opacity duration-250 data-behind:pointer-events-none data-behind:opacity-0 data-expanded:pointer-events-auto data-expanded:opacity-100",
123
+ children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx(Toast$1.Title, { className: "style-text-strong--1" }), /* @__PURE__ */ jsx(Toast$1.Description, { className: "style-text-prose--1 whitespace-nowrap text-on-surface-variant" })] }), /* @__PURE__ */ jsxs("div", {
124
+ className: "ml-xl flex h-lg grow items-center justify-center gap-xs",
125
+ children: [
126
+ /* @__PURE__ */ jsx(Toast$1.Action, { render: ({ onClick, children }) => /* @__PURE__ */ jsx(Button, {
127
+ "data-testid": "toast-action-button",
128
+ onClick,
129
+ size: "small",
130
+ tone: toast.data?.variant,
131
+ variant: "soft",
132
+ children
133
+ }) }),
134
+ toast.actionProps && /* @__PURE__ */ jsx(Separator, {
135
+ variant: "strong",
136
+ orientation: "vertical",
137
+ weight: "thinnest"
138
+ }),
139
+ /* @__PURE__ */ jsxs(Toast$1.Close, {
140
+ "aria-label": "Close",
141
+ className: "relative flex size-sm items-center justify-center rounded-full bg-transparent p-xs text-on-surface-variant transition-colors hover:cursor-pointer hover:bg-error-container hover:text-error-on-container",
142
+ children: [/* @__PURE__ */ jsx("span", {
143
+ className: "pointer-events-none absolute inset-[0px] z-10 flex items-center justify-center",
144
+ children: /* @__PURE__ */ jsxs("svg", {
145
+ width: "100%",
146
+ height: "100%",
147
+ viewBox: "0 0 32 32",
148
+ className: "block -rotate-90",
149
+ children: [/* @__PURE__ */ jsx("style", { children: `
150
+ @keyframes toast-drain-${toast.id} {
151
+ from { stroke-dashoffset: 0; }
152
+ to { stroke-dashoffset: ${RING_CIRCUMFERENCE}; }
153
+ }
154
+ ` }), /* @__PURE__ */ jsx("circle", {
155
+ cx: "16",
156
+ cy: "16",
157
+ r: RING_RADIUS,
158
+ fill: "none",
159
+ stroke: "currentColor",
160
+ strokeWidth: "2",
161
+ strokeDasharray: RING_CIRCUMFERENCE,
162
+ strokeLinecap: "round",
163
+ className: "text-error-border-strong",
164
+ style: { animation: `toast-drain-${toast.id} ${duration}ms linear forwards` }
165
+ })]
166
+ })
167
+ }), /* @__PURE__ */ jsx(Icon, {
168
+ name: "close",
169
+ className: "size-sm shrink-0"
170
+ })]
171
+ })
172
+ ]
173
+ })]
174
+ })]
175
+ }, toast.id);
176
+ }
177
+ // src/components/toast/stack-toasts.tsx
178
+ function StackToasts({ className, ref, ...props }) {
179
+ const { toasts } = useToastManager();
180
+ return /* @__PURE__ */ jsx(Toast$1.Portal, { children: /* @__PURE__ */ jsx(Toast$1.Viewport, {
181
+ "aria-label": "Notifications",
182
+ className: cn("fixed top-auto right-[1rem] bottom-[1rem] z-10 mx-auto flex w-[250px] sm:right-[2rem] sm:bottom-[2rem] sm:w-[300px]", className),
183
+ ref,
184
+ ...props,
185
+ children: toasts.map((toast) => /* @__PURE__ */ jsx(StackToastItem, { toast }, toast.id))
186
+ }) });
187
+ }
188
+ // src/components/toast/toast-managers.ts
189
+ const anchoredToastManager = createToastManager();
190
+ const stackToastManager = createToastManager();
191
+ // src/components/toast/toast-provider.tsx
192
+ function ToastProvider({ children }) {
193
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
194
+ /* @__PURE__ */ jsx(Toast$1.Provider, {
195
+ timeout: 1e4,
196
+ toastManager: anchoredToastManager,
197
+ children: /* @__PURE__ */ jsx(AnchoredToasts, {})
198
+ }),
199
+ /* @__PURE__ */ jsx(Toast$1.Provider, {
200
+ timeout: 1e4,
201
+ toastManager: stackToastManager,
202
+ children: /* @__PURE__ */ jsx(StackToasts, {})
203
+ }),
204
+ children
205
+ ] });
206
+ }
207
+ // src/components/toast/toast.tsx
208
+ const Toast = Object.assign(ToastProvider, {
209
+ AnchoredToastItem,
210
+ AnchoredToasts,
211
+ StackToastItem,
212
+ StackToasts
213
+ });
214
+ export { AnchoredToastItem, AnchoredToasts, StackToastItem, StackToasts, Toast, ToastProvider, anchoredToastManager, stackToastManager, useToastManager };
215
+
216
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["BaseToast","BaseToast","BaseToast","BaseToast","BaseToast","BaseToast"],"sources":["../../src/components/toast/anchored-toast-item.tsx","../../src/components/toast/toast-manager.ts","../../src/components/toast/anchored-toasts.tsx","../../src/components/toast/stack-toast-item.tsx","../../src/components/toast/stack-toasts.tsx","../../src/components/toast/toast-managers.ts","../../src/components/toast/toast-provider.tsx","../../src/components/toast/toast.tsx"],"sourcesContent":["import { Toast as BaseToast } from '@base-ui/react/toast'\n\nimport { cn } from '@/utils/cn'\n\nimport type { AnchoredToastItemProps } from './toast.types'\n\nexport function AnchoredToastItem({ className, ref, toast, ...props }: AnchoredToastItemProps) {\n return (\n <BaseToast.Root\n className={cn(\n 'group flex w-max origin-(--transform-origin) flex-col rounded-full bg-surface px-sm py-2xs shadow-lg transition-[transform,scale,opacity] data-ending-style:scale-90 data-ending-style:opacity-0 data-starting-style:scale-90 data-starting-style:opacity-0',\n className,\n )}\n ref={ref}\n toast={toast}\n {...props}\n >\n <BaseToast.Arrow className=\"data-[side=bottom]:-top-3xs data-[side=left]:right-[-13px] data-[side=left]:rotate-90 data-[side=right]:left-[-13px] data-[side=right]:-rotate-90 data-[side=top]:-bottom-3xs data-[side=top]:rotate-180\" />\n <BaseToast.Content>\n <BaseToast.Description className=\"style-text-default--1\" />\n </BaseToast.Content>\n </BaseToast.Root>\n )\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport type { ToastManagerAddOptions } from '@base-ui/react/toast'\n\nimport type { IconComponent } from '../icon'\nimport type { ToastVariant } from './toast.types'\n\ntype ToastAddOptions = ToastManagerAddOptions<object> & {\n icon?: IconComponent\n variant?: ToastVariant\n}\n\nconst createToastManager = () => {\n const manager = BaseToast.createToastManager(),\n add = (options: ToastAddOptions) =>\n manager.add({\n ...options,\n data: {\n ...options.data,\n icon: options.icon,\n variant: options.variant,\n },\n })\n\n return {\n ...manager,\n add,\n }\n },\n useToastManager = () => {\n const toast = BaseToast.useToastManager(),\n add = (options: ToastAddOptions) =>\n toast.add({\n ...options,\n data: {\n ...options.data,\n icon: options.icon,\n variant: options.variant,\n },\n })\n\n return { add, toasts: toast.toasts }\n }\n\nexport { createToastManager, useToastManager }\n","import { Toast as BaseToast } from '@base-ui/react/toast'\n\nimport { cn } from '@/utils/cn'\n\nimport { AnchoredToastItem } from './anchored-toast-item'\nimport { useToastManager } from './toast-manager'\nimport type { AnchoredToastProps } from './toast.types'\n\nexport function AnchoredToasts({ className, ref, ...props }: AnchoredToastProps) {\n const { toasts } = useToastManager()\n\n return (\n <BaseToast.Portal>\n <BaseToast.Viewport\n aria-label=\"Anchored notifications\"\n className={cn(\n 'fixed top-auto right-[1rem] bottom-[1rem] z-10 mx-auto flex w-[250px] sm:right-[2rem] sm:bottom-[2rem] sm:w-[300px]',\n className,\n )}\n ref={ref}\n {...props}\n >\n {toasts.map((toast) => (\n <BaseToast.Positioner\n className=\"z-[calc(1000-var(--toast-index))]\"\n key={toast.id}\n toast={toast}\n >\n <AnchoredToastItem toast={toast} />\n </BaseToast.Positioner>\n ))}\n </BaseToast.Viewport>\n </BaseToast.Portal>\n )\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\nimport React from 'react'\n\nimport { cn } from '@/utils/cn'\n\nimport { Button } from '../button'\nimport { Icon } from '../icon'\nimport type { IconComponent } from '../icon'\nimport { Separator } from '../separator'\nimport type { StackToastItemProps, ToastVariant } from './toast.types'\n\nconst DEFAULT_DURATION = 10_000,\n RING_RADIUS = 14,\n RING_DIAMETER = RING_RADIUS + RING_RADIUS,\n RING_CIRCUMFERENCE = Math.PI * RING_DIAMETER\n\nfunction getVariantBgColor(variant: ToastVariant | undefined): string {\n switch (variant) {\n case 'brand': {\n return 'bg-brand-default'\n }\n case 'accent': {\n return 'bg-accent-default'\n }\n case 'neutral': {\n return 'bg-neutral-default'\n }\n case 'error': {\n return 'bg-error-default'\n }\n case 'info': {\n return 'bg-info-default'\n }\n case 'success': {\n return 'bg-success-default'\n }\n case 'warning': {\n return 'bg-warning-default'\n }\n default: {\n return 'bg-neutral-default'\n }\n }\n}\n\nfunction getVariantBorderColor(variant: ToastVariant | undefined): string {\n switch (variant) {\n case 'brand': {\n return 'border-brand-border-strong'\n }\n case 'accent': {\n return 'border-accent-border-strong'\n }\n case 'neutral': {\n return 'border-neutral-border-strong'\n }\n case 'error': {\n return 'border-error-border-strong'\n }\n case 'info': {\n return 'border-info-border-strong'\n }\n case 'success': {\n return 'border-success-border-strong'\n }\n case 'warning': {\n return 'border-warning-border-strong'\n }\n default: {\n return 'border-neutral-border-strong'\n }\n }\n}\n\nfunction getVariantIcon(variant: ToastVariant | undefined, icon?: IconComponent) {\n if (icon) {\n return React.createElement(icon)\n }\n switch (variant) {\n case 'error': {\n return <Icon name=\"error\" weight=\"fill\" />\n }\n case 'success': {\n return <Icon name=\"success\" weight=\"fill\" />\n }\n case 'warning': {\n return <Icon name=\"warning\" weight=\"fill\" />\n }\n default: {\n return <Icon name=\"info\" weight=\"fill\" />\n }\n }\n}\n\nexport function StackToastItem({ className, ref, toast, ...props }: StackToastItemProps) {\n const duration = toast.timeout ?? DEFAULT_DURATION,\n variant = toast.data?.variant,\n icon = toast.data?.icon\n\n return (\n <BaseToast.Root\n className={cn(\n \"absolute right-[0px] bottom-[0px] left-auto z-[calc(1000-var(--toast-index))] mr-[0px] flex h-2xl origin-bottom transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--peek))-(var(--shrink)*var(--height))))_scale(var(--scale))] items-center justify-center gap-xs overflow-hidden rounded-full border bg-surface bg-clip-padding pr-sm shadow-lg select-none [--gap:0.75rem] [--height:var(--toast-frontmost-height,var(--toast-height))] [--offset-y:calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y))] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))] [transition:transform_0.5s_cubic-bezier(0.22,1,0.36,1),opacity_0.5s,height_0.15s] after:absolute after:top-full after:left-[0px] after:w-full after:content-[''] data-ending-style:opacity-0 data-expanded:h-(--toast-height) data-expanded:transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--offset-y)))] data-limited:opacity-0 data-starting-style:transform-[translateY(150%)] data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+150%))] data-expanded:data-ending-style:data-[swipe-direction=down]:transform-[translateY(calc(var(--toast-swipe-movement-y)+150%))] data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=left]:transform-[translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=right]:transform-[translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))] data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-150%))] data-expanded:data-ending-style:data-[swipe-direction=up]:transform-[translateY(calc(var(--toast-swipe-movement-y)-150%))] [&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:transform-[translateY(150%)]\",\n className,\n getVariantBorderColor(variant),\n )}\n key={toast.id}\n ref={ref}\n toast={toast}\n {...props}\n >\n <div\n className={cn(\n 'flex aspect-square size-2xl items-center justify-center [&>svg]:size-lg [&>svg]:text-on-surface-inverse',\n getVariantBgColor(variant),\n )}\n >\n {getVariantIcon(variant, icon)}\n </div>\n <BaseToast.Content className=\"flex items-center justify-center gap-3xs overflow-hidden pl-2xs transition-opacity duration-250 data-behind:pointer-events-none data-behind:opacity-0 data-expanded:pointer-events-auto data-expanded:opacity-100\">\n <div>\n <BaseToast.Title className=\"style-text-strong--1\" />\n <BaseToast.Description className=\"style-text-prose--1 whitespace-nowrap text-on-surface-variant\" />\n </div>\n <div className=\"ml-xl flex h-lg grow items-center justify-center gap-xs\">\n <BaseToast.Action\n render={({ onClick, children }) => (\n <Button\n data-testid=\"toast-action-button\"\n onClick={onClick}\n size=\"small\"\n tone={toast.data?.variant}\n variant=\"soft\"\n >\n {children}\n </Button>\n )}\n />\n {toast.actionProps && (\n <Separator variant=\"strong\" orientation=\"vertical\" weight=\"thinnest\" />\n )}\n <BaseToast.Close\n aria-label=\"Close\"\n className=\"relative flex size-sm items-center justify-center rounded-full bg-transparent p-xs text-on-surface-variant transition-colors hover:cursor-pointer hover:bg-error-container hover:text-error-on-container\"\n >\n <span className=\"pointer-events-none absolute inset-[0px] z-10 flex items-center justify-center\">\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 32 32\" className=\"block -rotate-90\">\n <style>{`\n @keyframes toast-drain-${toast.id} {\n from { stroke-dashoffset: 0; }\n to { stroke-dashoffset: ${RING_CIRCUMFERENCE}; }\n }\n `}</style>\n <circle\n cx=\"16\"\n cy=\"16\"\n r={RING_RADIUS}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeDasharray={RING_CIRCUMFERENCE}\n strokeLinecap=\"round\"\n className=\"text-error-border-strong\"\n style={{\n animation: `toast-drain-${toast.id} ${duration}ms linear forwards`,\n }}\n />\n </svg>\n </span>\n\n <Icon name=\"close\" className=\"size-sm shrink-0\" />\n </BaseToast.Close>\n </div>\n </BaseToast.Content>\n </BaseToast.Root>\n )\n}\n","import { Toast as BaseToast } from '@base-ui/react/toast'\n\nimport { cn } from '@/utils/cn'\n\nimport { StackToastItem } from './stack-toast-item'\nimport { useToastManager } from './toast-manager'\nimport type { StackToastProps } from './toast.types'\n\nexport function StackToasts({ className, ref, ...props }: StackToastProps) {\n const { toasts } = useToastManager()\n\n return (\n <BaseToast.Portal>\n <BaseToast.Viewport\n aria-label=\"Notifications\"\n className={cn(\n 'fixed top-auto right-[1rem] bottom-[1rem] z-10 mx-auto flex w-[250px] sm:right-[2rem] sm:bottom-[2rem] sm:w-[300px]',\n className,\n )}\n ref={ref}\n {...props}\n >\n {toasts.map((toast) => (\n <StackToastItem key={toast.id} toast={toast} />\n ))}\n </BaseToast.Viewport>\n </BaseToast.Portal>\n )\n}\n","import { createToastManager } from './toast-manager'\n\nconst anchoredToastManager = createToastManager(),\n stackToastManager = createToastManager()\n\nexport { anchoredToastManager, stackToastManager }\n","import { Toast as BaseToast } from '@base-ui/react/toast'\n\nimport { AnchoredToasts } from './anchored-toasts'\nimport { StackToasts } from './stack-toasts'\nimport { anchoredToastManager, stackToastManager } from './toast-managers'\nimport type { ToastProviderProps } from './toast.types'\n\nexport function ToastProvider({ children }: ToastProviderProps) {\n return (\n <>\n <BaseToast.Provider timeout={10_000} toastManager={anchoredToastManager}>\n <AnchoredToasts />\n </BaseToast.Provider>\n <BaseToast.Provider timeout={10_000} toastManager={stackToastManager}>\n <StackToasts />\n </BaseToast.Provider>\n {children}\n </>\n )\n}\n","import { AnchoredToastItem } from './anchored-toast-item'\nimport { AnchoredToasts } from './anchored-toasts'\nimport { StackToastItem } from './stack-toast-item'\nimport { StackToasts } from './stack-toasts'\nimport { ToastProvider } from './toast-provider'\n\nconst Toast = Object.assign(ToastProvider, {\n AnchoredToastItem,\n AnchoredToasts,\n StackToastItem,\n StackToasts,\n})\n\nexport { Toast }\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { n as ToggleProps, t as Toggle } from "../index-C15xiG9O.js";
2
+ export { Toggle, type ToggleProps };
@@ -0,0 +1 @@
1
+ export { t as Toggle } from "../toggle-ZT9thVmz.js";
@@ -0,0 +1,73 @@
1
+ import { t as cn } from "./cn-BDi0DfT5.js";
2
+ import { t as hasSingleElementChild } from "./has-single-element-child-DLGI0Dh2.js";
3
+ import { t as trimTextChildren } from "./trim-text-children-CQRFg2fL.js";
4
+ import { t as ToggleGroupContext } from "./toggle-group-context-CBNZEf1I.js";
5
+ import { cva } from "class-variance-authority";
6
+ import { jsx } from "react/jsx-runtime";
7
+ import { useContext } from "react";
8
+ import { Toggle } from "@base-ui/react/toggle";
9
+ // src/components/toggle/toggle.types.ts
10
+ const toggleVariants = cva("flex items-center justify-center rounded-full text-on-surface-variant transition-all hover:cursor-pointer disabled:opacity-70", {
11
+ defaultVariants: {
12
+ size: "medium",
13
+ tone: "brand"
14
+ },
15
+ variants: {
16
+ size: {
17
+ large: "h-2xl gap-xs px-sm font-body text-base leading-none font-medium [&:where([data-icon-only]:has(>svg:only-child))]:size-2xl [&:where([data-icon-only]:has(>svg:only-child))]:p-0 [&>svg]:size-lg",
18
+ medium: "h-xl gap-2xs px-xs font-body text-sm leading-none font-medium [&:where([data-icon-only]:has(>svg:only-child))]:size-xl [&:where([data-icon-only]:has(>svg:only-child))]:p-0 [&>svg]:size-md",
19
+ small: "h-lg gap-3xs px-2xs font-body text-xs leading-none font-medium [&:where([data-icon-only]:has(>svg:only-child))]:size-lg [&:where([data-icon-only]:has(>svg:only-child))]:p-0 [&>svg]:size-sm"
20
+ },
21
+ tone: {
22
+ accent: "hover:not-disabled:bg-accent-container hover:not-disabled:text-accent-on-container data-pressed:text-accent-default",
23
+ brand: "hover:not-disabled:bg-brand-container hover:not-disabled:text-brand-on-container data-pressed:text-brand-default",
24
+ error: "hover:not-disabled:bg-error-container hover:not-disabled:text-error-on-container data-pressed:text-error-default",
25
+ info: "hover:not-disabled:bg-info-container hover:not-disabled:text-info-on-container data-pressed:text-info-default",
26
+ neutral: "hover:not-disabled:bg-neutral-container hover:not-disabled:text-neutral-on-container data-pressed:text-neutral-default",
27
+ success: "hover:not-disabled:bg-success-container hover:not-disabled:text-success-on-container data-pressed:text-success-default",
28
+ warning: "hover:not-disabled:bg-warning-container hover:not-disabled:text-warning-on-container data-pressed:text-warning-default"
29
+ }
30
+ }
31
+ });
32
+ const toggleGroupHoverVariants = cva("", {
33
+ defaultVariants: { tone: "brand" },
34
+ variants: { tone: {
35
+ accent: "hover:not-disabled:bg-accent-container-high",
36
+ brand: "hover:not-disabled:bg-brand-container-high",
37
+ error: "hover:not-disabled:bg-error-container-high",
38
+ info: "hover:not-disabled:bg-info-container-high",
39
+ neutral: "hover:not-disabled:bg-neutral-container-high",
40
+ success: "hover:not-disabled:bg-success-container-high",
41
+ warning: "hover:not-disabled:bg-warning-container-high"
42
+ } }
43
+ });
44
+ // src/components/toggle/toggle.tsx
45
+ function getContent(children, state) {
46
+ if (typeof children === "function") return children(state);
47
+ return children;
48
+ }
49
+ function Toggle$1({ size, tone, className, children, ref, ...props }) {
50
+ const toggleGroupContext = useContext(ToggleGroupContext), effectiveSize = size ?? toggleGroupContext?.size ?? "medium";
51
+ return /* @__PURE__ */ jsx(Toggle, {
52
+ ref,
53
+ ...props,
54
+ render: (innerProps, state) => {
55
+ const content = getContent(children, state);
56
+ let iconOnly = void 0;
57
+ if (hasSingleElementChild(content)) iconOnly = "";
58
+ return /* @__PURE__ */ jsx("button", {
59
+ ...innerProps,
60
+ "data-icon-only": iconOnly,
61
+ className: cn(toggleVariants({
62
+ size: effectiveSize,
63
+ tone
64
+ }), toggleGroupContext?.hasBackground && toggleGroupHoverVariants({ tone }), className),
65
+ type: "button",
66
+ children: trimTextChildren(content)
67
+ });
68
+ }
69
+ });
70
+ }
71
+ export { Toggle$1 as t };
72
+
73
+ //# sourceMappingURL=toggle-ZT9thVmz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-ZT9thVmz.js","names":["Toggle","BaseToggle"],"sources":["../src/components/toggle/toggle.types.ts","../src/components/toggle/toggle.tsx"],"sourcesContent":["import type { Toggle, ToggleState } from '@base-ui/react'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport const toggleVariants = cva(\n 'flex items-center justify-center rounded-full text-on-surface-variant transition-all hover:cursor-pointer disabled:opacity-70',\n {\n defaultVariants: {\n size: 'medium',\n tone: 'brand',\n },\n variants: {\n size: {\n large:\n 'h-2xl gap-xs px-sm font-body text-base leading-none font-medium [&:where([data-icon-only]:has(>svg:only-child))]:size-2xl [&:where([data-icon-only]:has(>svg:only-child))]:p-0 [&>svg]:size-lg',\n medium:\n 'h-xl gap-2xs px-xs font-body text-sm leading-none font-medium [&:where([data-icon-only]:has(>svg:only-child))]:size-xl [&:where([data-icon-only]:has(>svg:only-child))]:p-0 [&>svg]:size-md',\n small:\n 'h-lg gap-3xs px-2xs font-body text-xs leading-none font-medium [&:where([data-icon-only]:has(>svg:only-child))]:size-lg [&:where([data-icon-only]:has(>svg:only-child))]:p-0 [&>svg]:size-sm',\n },\n tone: {\n accent:\n 'hover:not-disabled:bg-accent-container hover:not-disabled:text-accent-on-container data-pressed:text-accent-default',\n brand:\n 'hover:not-disabled:bg-brand-container hover:not-disabled:text-brand-on-container data-pressed:text-brand-default',\n error:\n 'hover:not-disabled:bg-error-container hover:not-disabled:text-error-on-container data-pressed:text-error-default',\n info: 'hover:not-disabled:bg-info-container hover:not-disabled:text-info-on-container data-pressed:text-info-default',\n neutral:\n 'hover:not-disabled:bg-neutral-container hover:not-disabled:text-neutral-on-container data-pressed:text-neutral-default',\n success:\n 'hover:not-disabled:bg-success-container hover:not-disabled:text-success-on-container data-pressed:text-success-default',\n warning:\n 'hover:not-disabled:bg-warning-container hover:not-disabled:text-warning-on-container data-pressed:text-warning-default',\n },\n },\n },\n ),\n toggleGroupHoverVariants = cva('', {\n defaultVariants: {\n tone: 'brand',\n },\n variants: {\n tone: {\n accent: 'hover:not-disabled:bg-accent-container-high',\n brand: 'hover:not-disabled:bg-brand-container-high',\n error: 'hover:not-disabled:bg-error-container-high',\n info: 'hover:not-disabled:bg-info-container-high',\n neutral: 'hover:not-disabled:bg-neutral-container-high',\n success: 'hover:not-disabled:bg-success-container-high',\n warning: 'hover:not-disabled:bg-warning-container-high',\n },\n },\n })\n\nexport type ToggleProps = Omit<React.ComponentProps<typeof Toggle>, 'children'> &\n VariantProps<typeof toggleVariants> & {\n children?: React.ReactNode | ((state: ToggleState) => React.ReactNode)\n }\n","import type { ToggleState } from '@base-ui/react'\nimport { Toggle as BaseToggle } from '@base-ui/react/toggle'\nimport { useContext } from 'react'\nimport type { ReactNode } from 'react'\n\nimport { cn } from '@/utils/cn'\nimport { hasSingleElementChild } from '@/utils/has-single-element-child'\nimport { trimTextChildren } from '@/utils/trim-text-children'\n\nimport { ToggleGroupContext } from '../toggle-group/toggle-group-context'\nimport { toggleGroupHoverVariants, toggleVariants } from './toggle.types'\nimport type { ToggleProps } from './toggle.types'\n\nfunction getContent(children: ToggleProps['children'], state: ToggleState): ReactNode {\n if (typeof children === 'function') {\n return children(state)\n }\n return children\n}\n\nexport function Toggle({ size, tone, className, children, ref, ...props }: ToggleProps) {\n const toggleGroupContext = useContext(ToggleGroupContext),\n effectiveSize = size ?? toggleGroupContext?.size ?? 'medium'\n\n return (\n <BaseToggle\n ref={ref}\n {...props}\n render={(innerProps, state) => {\n const content = getContent(children, state)\n let iconOnly: '' | undefined = undefined\n\n if (hasSingleElementChild(content)) {\n iconOnly = ''\n }\n\n return (\n <button\n {...innerProps}\n data-icon-only={iconOnly}\n className={cn(\n toggleVariants({ size: effectiveSize, tone }),\n toggleGroupContext?.hasBackground && toggleGroupHoverVariants({ tone }),\n className,\n )}\n type=\"button\"\n >\n {trimTextChildren(content)}\n </button>\n )\n }}\n />\n )\n}\n"],"mappings":";;;;;;;;;AAIA,MAAa,iBAAiB,IAC1B,iIACA;CACE,iBAAiB;EACf,MAAM;EACN,MAAM;CACR;CACA,UAAU;EACR,MAAM;GACJ,OACE;GACF,QACE;GACF,OACE;EACJ;EACA,MAAM;GACJ,QACE;GACF,OACE;GACF,OACE;GACF,MAAM;GACN,SACE;GACF,SACE;GACF,SACE;EACJ;CACF;AACF,CACF;AACA,MAAA,2BAA2B,IAAI,IAAI;CACjC,iBAAiB,EACf,MAAM,QACR;CACA,UAAU,EACR,MAAM;EACJ,QAAQ;EACR,OAAO;EACP,OAAO;EACP,MAAM;EACN,SAAS;EACT,SAAS;EACT,SAAS;CACX,EACF;AACF,CAAC;;ACxCH,SAAS,WAAW,UAAmC,OAA+B;CACpF,IAAI,OAAO,aAAa,YACtB,OAAO,SAAS,KAAK;CAEvB,OAAO;AACT;AAEA,SAAgBA,SAAO,EAAE,MAAM,MAAM,WAAW,UAAU,KAAK,GAAG,SAAsB;CACtF,MAAM,qBAAqB,WAAW,kBAAkB,GACtD,gBAAgB,QAAQ,oBAAoB,QAAQ;CAEtD,OACE,oBAACC,QAAD;EACO;EACL,GAAI;EACJ,SAAS,YAAY,UAAU;GAC7B,MAAM,UAAU,WAAW,UAAU,KAAK;GAC1C,IAAI,WAA2B,KAAA;GAE/B,IAAI,sBAAsB,OAAO,GAC/B,WAAW;GAGb,OACE,oBAAC,UAAD;IACE,GAAI;IACJ,kBAAgB;IAChB,WAAW,GACT,eAAe;KAAE,MAAM;KAAe;IAAK,CAAC,GAC5C,oBAAoB,iBAAiB,yBAAyB,EAAE,KAAK,CAAC,GACtE,SACF;IACA,MAAK;IAEJ,UAAA,iBAAiB,OAAO;GACnB,CAAA;EAEZ;CACD,CAAA;AAEL"}
@@ -0,0 +1,10 @@
1
+ import { VariantProps } from "class-variance-authority";
2
+ import { ToggleGroup as ToggleGroup$1 } from "@base-ui/react/toggle-group";
3
+ declare const toggleGroupVariants: (props?: ({
4
+ size?: "large" | "medium" | "small" | null | undefined;
5
+ variant?: "default" | "ghost" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ type ToggleGroupProps = React.ComponentProps<typeof ToggleGroup$1> & VariantProps<typeof toggleGroupVariants>;
8
+ export declare function ToggleGroup({ size, variant, className, ref, ...props }: ToggleGroupProps): import("react").JSX.Element;
9
+ export type { ToggleGroupProps };
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,63 @@
1
+ import { t as cn } from "../cn-BDi0DfT5.js";
2
+ import { t as ToggleGroupContext } from "../toggle-group-context-CBNZEf1I.js";
3
+ import { cva } from "class-variance-authority";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { ToggleGroup as ToggleGroup$1 } from "@base-ui/react/toggle-group";
6
+ // src/components/toggle-group/toggle-group.types.ts
7
+ const toggleGroupVariants = cva("group flex w-fit items-center justify-center gap-3xs rounded-full", {
8
+ compoundVariants: [
9
+ {
10
+ className: "p-3xs",
11
+ size: "small",
12
+ variant: "default"
13
+ },
14
+ {
15
+ className: "p-2xs",
16
+ size: "medium",
17
+ variant: "default"
18
+ },
19
+ {
20
+ className: "p-2xs",
21
+ size: "large",
22
+ variant: "default"
23
+ }
24
+ ],
25
+ defaultVariants: {
26
+ size: "medium",
27
+ variant: "default"
28
+ },
29
+ variants: {
30
+ size: {
31
+ large: "",
32
+ medium: "",
33
+ small: ""
34
+ },
35
+ variant: {
36
+ default: "bg-surface-low",
37
+ ghost: "bg-transparent"
38
+ }
39
+ }
40
+ });
41
+ // src/components/toggle-group/toggle-group.tsx
42
+ function ToggleGroup({ size = "medium", variant, className, ref, ...props }) {
43
+ const displaySize = size ?? "medium", hasBackground = variant === void 0 || variant === "default";
44
+ return /* @__PURE__ */ jsx(ToggleGroupContext.Provider, {
45
+ value: {
46
+ hasBackground,
47
+ size: displaySize
48
+ },
49
+ children: /* @__PURE__ */ jsx(ToggleGroup$1, {
50
+ className: cn(toggleGroupVariants({
51
+ className,
52
+ size: displaySize,
53
+ variant
54
+ })),
55
+ "data-size": displaySize,
56
+ ref,
57
+ ...props
58
+ })
59
+ });
60
+ }
61
+ export { ToggleGroup };
62
+
63
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["BaseToggleGroup"],"sources":["../../src/components/toggle-group/toggle-group.types.ts","../../src/components/toggle-group/toggle-group.tsx"],"sourcesContent":["import type { ToggleGroup } from '@base-ui/react/toggle-group'\nimport { cva } from 'class-variance-authority'\nimport type { VariantProps } from 'class-variance-authority'\n\nexport const toggleGroupVariants = cva(\n 'group flex w-fit items-center justify-center gap-3xs rounded-full',\n {\n compoundVariants: [\n {\n className: 'p-3xs',\n size: 'small',\n variant: 'default',\n },\n {\n className: 'p-2xs',\n size: 'medium',\n variant: 'default',\n },\n {\n className: 'p-2xs',\n size: 'large',\n variant: 'default',\n },\n ],\n defaultVariants: {\n size: 'medium',\n variant: 'default',\n },\n variants: {\n size: {\n large: '',\n medium: '',\n small: '',\n },\n variant: {\n default: 'bg-surface-low',\n ghost: 'bg-transparent',\n },\n },\n },\n)\n\nexport type ToggleGroupProps = React.ComponentProps<typeof ToggleGroup> &\n VariantProps<typeof toggleGroupVariants>\n","import { ToggleGroup as BaseToggleGroup } from '@base-ui/react/toggle-group'\n\nimport { cn } from '@/utils/cn'\n\nimport { ToggleGroupContext } from './toggle-group-context'\nimport { toggleGroupVariants } from './toggle-group.types'\nimport type { ToggleGroupProps } from './toggle-group.types'\n\nexport function ToggleGroup({\n size = 'medium',\n variant,\n className,\n ref,\n ...props\n}: ToggleGroupProps) {\n const displaySize = size ?? 'medium',\n hasBackground = variant === undefined || variant === 'default'\n return (\n <ToggleGroupContext.Provider value={{ hasBackground, size: displaySize }}>\n <BaseToggleGroup\n className={cn(toggleGroupVariants({ className, size: displaySize, variant }))}\n data-size={displaySize}\n ref={ref}\n {...props}\n />\n </ToggleGroupContext.Provider>\n )\n}\n"],"mappings":";;;;;;AAIA,MAAa,sBAAsB,IACjC,qEACA;CACE,kBAAkB;EAChB;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;EACA;GACE,WAAW;GACX,MAAM;GACN,SAAS;EACX;CACF;CACA,iBAAiB;EACf,MAAM;EACN,SAAS;CACX;CACA,UAAU;EACR,MAAM;GACJ,OAAO;GACP,QAAQ;GACR,OAAO;EACT;EACA,SAAS;GACP,SAAS;GACT,OAAO;EACT;CACF;AACF,CACF;;AChCA,SAAgB,YAAY,EAC1B,OAAO,UACP,SACA,WACA,KACA,GAAG,SACgB;CACnB,MAAM,cAAc,QAAQ,UAC1B,gBAAgB,YAAY,KAAA,KAAa,YAAY;CACvD,OACE,oBAAC,mBAAmB,UAApB;EAA6B,OAAO;GAAE;GAAe,MAAM;EAAY;EACrE,UAAA,oBAACA,eAAD;GACE,WAAW,GAAG,oBAAoB;IAAE;IAAW,MAAM;IAAa;GAAQ,CAAC,CAAC;GAC5E,aAAW;GACN;GACL,GAAI;EACL,CAAA;CAC0B,CAAA;AAEjC"}
@@ -0,0 +1,6 @@
1
+ import { createContext } from "react";
2
+ // src/components/toggle-group/toggle-group-context.ts
3
+ const ToggleGroupContext = createContext(void 0);
4
+ export { ToggleGroupContext as t };
5
+
6
+ //# sourceMappingURL=toggle-group-context-CBNZEf1I.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-group-context-CBNZEf1I.js","names":[],"sources":["../src/components/toggle-group/toggle-group-context.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\n\ninterface ToggleGroupContextType {\n hasBackground: boolean\n size?: 'small' | 'medium' | 'large'\n}\n\nconst ToggleGroupContext = createContext<ToggleGroupContextType | undefined>(undefined),\n useToggleGroupContext = () => {\n const context = useContext(ToggleGroupContext)\n return context\n }\n\nexport { ToggleGroupContext, useToggleGroupContext }\nexport type { ToggleGroupContextType }\n"],"mappings":";;AAOA,MAAM,qBAAqB,cAAkD,KAAA,CAAS"}
@@ -0,0 +1,18 @@
1
+ import { ComponentProps } from "react";
2
+ import { Tooltip as Tooltip$1 } from "@base-ui/react/tooltip";
3
+ type TooltipProps = ComponentProps<typeof Tooltip$1.Root>;
4
+ type TooltipTriggerProps = ComponentProps<typeof Tooltip$1.Trigger>;
5
+ type TooltipContentProps = ComponentProps<typeof Tooltip$1.Popup> & {
6
+ side?: 'top' | 'right' | 'bottom' | 'left';
7
+ alignOffset?: number;
8
+ sideOffset?: number;
9
+ };
10
+ declare function Tooltip$2({ ...props }: TooltipProps): import("react").JSX.Element;
11
+ export declare function TooltipContent({ side, alignOffset, sideOffset, className, children, ...props }: TooltipContentProps): import("react").JSX.Element;
12
+ export declare function TooltipTrigger({ children, ...props }: TooltipTriggerProps): import("react").JSX.Element;
13
+ declare const Tooltip: typeof Tooltip$2 & {
14
+ Content: typeof TooltipContent;
15
+ Trigger: typeof TooltipTrigger;
16
+ };
17
+ export { Tooltip, type TooltipContentProps, type TooltipProps, type TooltipTriggerProps };
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ export { t as Tooltip, r as TooltipContent, n as TooltipTrigger } from "../tooltip-B6z3tDbW.js";
@@ -0,0 +1,41 @@
1
+ import { t as cn } from "./cn-BDi0DfT5.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { isValidElement } from "react";
4
+ import { Tooltip } from "@base-ui/react/tooltip";
5
+ // src/components/tooltip/tooltip.tsx
6
+ function Tooltip$2({ ...props }) {
7
+ return /* @__PURE__ */ jsx(Tooltip.Provider, { children: /* @__PURE__ */ jsx(Tooltip.Root, { ...props }) });
8
+ }
9
+ // src/components/tooltip/tooltip-context.tsx
10
+ const DEFAULT_ALIGN_OFFSET = 0;
11
+ const DEFAULT_SIDE_OFFSET = 5;
12
+ function TooltipContent({ side = "top", alignOffset = DEFAULT_ALIGN_OFFSET, sideOffset = DEFAULT_SIDE_OFFSET, className, children, ...props }) {
13
+ return /* @__PURE__ */ jsx(Tooltip.Portal, { children: /* @__PURE__ */ jsx(Tooltip.Positioner, {
14
+ className: "z-50",
15
+ side,
16
+ alignOffset,
17
+ sideOffset,
18
+ children: /* @__PURE__ */ jsx(Tooltip.Popup, {
19
+ className: cn("w-fit origin-(--transform-origin) animate-in rounded-md bg-surface-2 px-xs py-3xs text-sm text-balance shadow-md fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95", className),
20
+ ...props,
21
+ children
22
+ })
23
+ }) });
24
+ }
25
+ // src/components/tooltip/tooltip-trigger.tsx
26
+ function TooltipTrigger({ children, ...props }) {
27
+ let render = void 0;
28
+ if (isValidElement(children)) render = children;
29
+ return /* @__PURE__ */ jsx(Tooltip.Trigger, {
30
+ render,
31
+ ...props
32
+ });
33
+ }
34
+ // src/components/tooltip/index.ts
35
+ const Tooltip$1 = Object.assign(Tooltip$2, {
36
+ Content: TooltipContent,
37
+ Trigger: TooltipTrigger
38
+ });
39
+ export { TooltipTrigger as n, TooltipContent as r, Tooltip$1 as t };
40
+
41
+ //# sourceMappingURL=tooltip-B6z3tDbW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip-B6z3tDbW.js","names":["Tooltip","BaseTooltip","BaseTooltip","BaseTooltip","Tooltip","TooltipRoot"],"sources":["../src/components/tooltip/tooltip.tsx","../src/components/tooltip/tooltip-context.tsx","../src/components/tooltip/tooltip-trigger.tsx","../src/components/tooltip/index.ts"],"sourcesContent":["import { Tooltip as BaseTooltip } from '@base-ui/react/tooltip'\n\nimport type { TooltipProps } from './tooltip.types'\n\nexport function Tooltip({ ...props }: TooltipProps) {\n return (\n <BaseTooltip.Provider>\n <BaseTooltip.Root {...props} />\n </BaseTooltip.Provider>\n )\n}\n","import { Tooltip as BaseTooltip } from '@base-ui/react/tooltip'\n\nimport { cn } from '@/utils/cn'\n\nimport type { TooltipContentProps } from './tooltip.types'\n\nconst DEFAULT_ALIGN_OFFSET = 0,\n DEFAULT_SIDE_OFFSET = 5\n\nexport function TooltipContent({\n side = 'top',\n alignOffset = DEFAULT_ALIGN_OFFSET,\n sideOffset = DEFAULT_SIDE_OFFSET,\n className,\n children,\n ...props\n}: TooltipContentProps) {\n return (\n <BaseTooltip.Portal>\n <BaseTooltip.Positioner\n className=\"z-50\"\n side={side}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n >\n <BaseTooltip.Popup\n className={cn(\n 'w-fit origin-(--transform-origin) animate-in rounded-md bg-surface-2 px-xs py-3xs text-sm text-balance shadow-md fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95',\n className,\n )}\n {...props}\n >\n {children}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n )\n}\n","import { Tooltip as BaseTooltip } from '@base-ui/react/tooltip'\nimport { isValidElement } from 'react'\nimport type { ReactElement } from 'react'\n\nimport type { TooltipTriggerProps } from './tooltip.types'\n\nexport function TooltipTrigger({ children, ...props }: TooltipTriggerProps) {\n let render: ReactElement | undefined = undefined\n if (isValidElement(children)) {\n render = children\n }\n\n return <BaseTooltip.Trigger render={render} {...props} />\n}\n","import { Tooltip as TooltipRoot } from './tooltip'\nimport { TooltipContent } from './tooltip-context'\nimport { TooltipTrigger } from './tooltip-trigger'\n\nconst Tooltip = Object.assign(TooltipRoot, {\n Content: TooltipContent,\n Trigger: TooltipTrigger,\n})\n\nexport type { TooltipContentProps, TooltipProps, TooltipTriggerProps } from './tooltip.types'\nexport { TooltipContent } from './tooltip-context'\nexport { TooltipTrigger } from './tooltip-trigger'\n\nexport { Tooltip }\n"],"mappings":";;;;;AAIA,SAAgBA,UAAQ,EAAE,GAAG,SAAuB;CAClD,OACE,oBAACC,QAAY,UAAb,EAAA,UACE,oBAACA,QAAY,MAAb,EAAkB,GAAI,MAAQ,CAAA,EACV,CAAA;AAE1B;;ACJA,MAAM,uBAAuB;AAC3B,MAAA,sBAAsB;AAExB,SAAgB,eAAe,EAC7B,OAAO,OACP,cAAc,sBACd,aAAa,qBACb,WACA,UACA,GAAG,SACmB;CACtB,OACE,oBAACC,QAAY,QAAb,EAAA,UACE,oBAACA,QAAY,YAAb;EACE,WAAU;EACJ;EACO;EACD;EAEZ,UAAA,oBAACA,QAAY,OAAb;GACE,WAAW,GACT,oYACA,SACF;GACA,GAAI;GAEH;EACgB,CAAA;CACG,CAAA,EACN,CAAA;AAExB;;AC/BA,SAAgB,eAAe,EAAE,UAAU,GAAG,SAA8B;CAC1E,IAAI,SAAmC,KAAA;CACvC,IAAI,eAAe,QAAQ,GACzB,SAAS;CAGX,OAAO,oBAACC,QAAY,SAAb;EAA6B;EAAQ,GAAI;CAAQ,CAAA;AAC1D;;ACTA,MAAMC,YAAU,OAAO,OAAOC,WAAa;CACzC,SAAS;CACT,SAAS;AACX,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Children, Fragment as Fragment$1, isValidElement } from "react";
3
+ // src/utils/trim-text-children.tsx
4
+ const EMPTY = 0;
5
+ /**
6
+ * Wraps loose text children in a `text-box-trim` span. Flex containers can't trim their
7
+ * anonymous text items, so without this the text is centred on rounded font metrics and
8
+ * drifts off-centre at fluid font sizes and browser zoom levels.
9
+ */
10
+ function trimTextChildren(children) {
11
+ const result = [], text = [], flush = () => {
12
+ if (text.length === EMPTY) return;
13
+ result.push(/* @__PURE__ */ jsx("span", {
14
+ "data-slot": "text",
15
+ className: "text-box-trim",
16
+ children: text.join("")
17
+ }, `trim-text-${result.length}`));
18
+ text.length = EMPTY;
19
+ };
20
+ for (const child of Children.toArray(children)) if (typeof child === "string" || typeof child === "number") text.push(child);
21
+ else if (isValidElement(child) && child.type === Fragment$1) {
22
+ flush();
23
+ result.push(/* @__PURE__ */ jsx(Fragment$1, { children: trimTextChildren(child.props.children) }, child.key));
24
+ } else {
25
+ flush();
26
+ result.push(child);
27
+ }
28
+ flush();
29
+ return result;
30
+ }
31
+ export { trimTextChildren as t };
32
+
33
+ //# sourceMappingURL=trim-text-children-CQRFg2fL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trim-text-children-CQRFg2fL.js","names":["Fragment"],"sources":["../src/utils/trim-text-children.tsx"],"sourcesContent":["import { Children, Fragment, isValidElement } from 'react'\nimport type { ReactNode } from 'react'\n\nconst EMPTY = 0\n\n/**\n * Wraps loose text children in a `text-box-trim` span. Flex containers can't trim their\n * anonymous text items, so without this the text is centred on rounded font metrics and\n * drifts off-centre at fluid font sizes and browser zoom levels.\n */\nexport function trimTextChildren(children: ReactNode): ReactNode {\n const result: ReactNode[] = [],\n text: (string | number)[] = [],\n flush = () => {\n if (text.length === EMPTY) {\n return\n }\n result.push(\n <span key={`trim-text-${result.length}`} data-slot=\"text\" className=\"text-box-trim\">\n {text.join('')}\n </span>,\n )\n text.length = EMPTY\n }\n\n for (const child of Children.toArray(children)) {\n if (typeof child === 'string' || typeof child === 'number') {\n text.push(child)\n } else if (isValidElement<{ children?: ReactNode }>(child) && child.type === Fragment) {\n flush()\n result.push(<Fragment key={child.key}>{trimTextChildren(child.props.children)}</Fragment>)\n } else {\n flush()\n result.push(child)\n }\n }\n flush()\n\n return result\n}\n"],"mappings":";;;AAGA,MAAM,QAAQ;;;;;;AAOd,SAAgB,iBAAiB,UAAgC;CAC/D,MAAM,SAAsB,CAAC,GAC3B,OAA4B,CAAC,GAC7B,cAAc;EACZ,IAAI,KAAK,WAAW,OAClB;EAEF,OAAO,KACL,oBAAC,QAAD;GAAyC,aAAU;GAAO,WAAU;GACjE,UAAA,KAAK,KAAK,EAAE;EACT,GAFK,aAAa,OAAO,QAEzB,CACR;EACA,KAAK,SAAS;CAChB;CAEF,KAAK,MAAM,SAAS,SAAS,QAAQ,QAAQ,GAC3C,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU,UAChD,KAAK,KAAK,KAAK;MACV,IAAI,eAAyC,KAAK,KAAK,MAAM,SAASA,YAAU;EACrF,MAAM;EACN,OAAO,KAAK,oBAACA,YAAD,EAAA,UAA2B,iBAAiB,MAAM,MAAM,QAAQ,EAAY,GAA7D,MAAM,GAAuD,CAAC;CAC3F,OAAO;EACL,MAAM;EACN,OAAO,KAAK,KAAK;CACnB;CAEF,MAAM;CAEN,OAAO;AACT"}
@@ -0,0 +1,4 @@
1
+ import { ClassValue } from "clsx";
2
+ export declare function cn(...inputs: ClassValue[]): string;
3
+ export declare const formatDate: (date: Date, locale?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions) => string;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ import { t as cn } from "../cn-BDi0DfT5.js";
2
+ import { t as formatDate } from "../utils-BI2x7nW5.js";
3
+ export { cn, formatDate };
@@ -0,0 +1,5 @@
1
+ // src/utils/date-time.ts
2
+ const formatDate = (date, locale, options) => new Intl.DateTimeFormat(locale, options).format(date);
3
+ export { formatDate as t };
4
+
5
+ //# sourceMappingURL=utils-BI2x7nW5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-BI2x7nW5.js","names":[],"sources":["../src/utils/date-time.ts"],"sourcesContent":["export const formatDate = (\n date: Date,\n locale?: Intl.LocalesArgument,\n options?: Intl.DateTimeFormatOptions,\n): string => new Intl.DateTimeFormat(locale, options).format(date)\n"],"mappings":";AAAA,MAAa,cACX,MACA,QACA,YACW,IAAI,KAAK,eAAe,QAAQ,OAAO,CAAC,CAAC,OAAO,IAAI"}