@giddaa-housing/ui 0.1.0 → 1.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 (334) hide show
  1. package/README.md +18 -6
  2. package/css/base.css +37 -0
  3. package/css/components.css +135 -0
  4. package/css/generated/shared.css +1 -0
  5. package/css/giddaa.css +402 -0
  6. package/css/preset.css +77 -0
  7. package/css/styles.css +2 -0
  8. package/css/theme.css +255 -0
  9. package/dist/accordion.js +5 -35
  10. package/dist/accordion.js.map +1 -1
  11. package/dist/activity-timeline.d.ts +33 -0
  12. package/dist/activity-timeline.js +212 -0
  13. package/dist/activity-timeline.js.map +1 -0
  14. package/dist/alert.js +5 -35
  15. package/dist/alert.js.map +1 -1
  16. package/dist/auth-layout.d.ts +23 -0
  17. package/dist/auth-layout.js +304 -0
  18. package/dist/auth-layout.js.map +1 -0
  19. package/dist/avatar.js +10 -142
  20. package/dist/avatar.js.map +1 -1
  21. package/dist/badge.d.ts +3 -2
  22. package/dist/badge.js +6 -114
  23. package/dist/badge.js.map +1 -1
  24. package/dist/bar-chart.d.ts +101 -77
  25. package/dist/bar-chart.js +142 -220
  26. package/dist/bar-chart.js.map +1 -1
  27. package/dist/breadcrumb.js +5 -35
  28. package/dist/breadcrumb.js.map +1 -1
  29. package/dist/bullet-chart.js +15 -48
  30. package/dist/bullet-chart.js.map +1 -1
  31. package/dist/button-group.js +14 -90
  32. package/dist/button-group.js.map +1 -1
  33. package/dist/button.d.ts +5 -5
  34. package/dist/button.js +7 -140
  35. package/dist/button.js.map +1 -1
  36. package/dist/calendar.js +12 -287
  37. package/dist/calendar.js.map +1 -1
  38. package/dist/card.js +5 -35
  39. package/dist/card.js.map +1 -1
  40. package/dist/carousel.js +12 -386
  41. package/dist/carousel.js.map +1 -1
  42. package/dist/chart.js +16 -480
  43. package/dist/chart.js.map +1 -1
  44. package/dist/checkbox.d.ts +1 -1
  45. package/dist/checkbox.js +13 -48
  46. package/dist/checkbox.js.map +1 -1
  47. package/dist/chunk-322YCNVL.js +278 -0
  48. package/dist/chunk-322YCNVL.js.map +1 -0
  49. package/dist/chunk-3ACQVT7A.js +25 -0
  50. package/dist/chunk-3ACQVT7A.js.map +1 -0
  51. package/dist/chunk-3T65TLJX.js +334 -0
  52. package/dist/chunk-3T65TLJX.js.map +1 -0
  53. package/dist/chunk-6ZSGQHH2.js +192 -0
  54. package/dist/chunk-6ZSGQHH2.js.map +1 -0
  55. package/dist/chunk-7TBMLFGW.js +41 -0
  56. package/dist/chunk-7TBMLFGW.js.map +1 -0
  57. package/dist/chunk-B4H6RNDH.js +135 -0
  58. package/dist/chunk-B4H6RNDH.js.map +1 -0
  59. package/dist/chunk-BUXCGZ6X.js +219 -0
  60. package/dist/chunk-BUXCGZ6X.js.map +1 -0
  61. package/dist/chunk-CHII2QHH.js +58 -0
  62. package/dist/chunk-CHII2QHH.js.map +1 -0
  63. package/dist/chunk-DMNOXRRW.js +147 -0
  64. package/dist/chunk-DMNOXRRW.js.map +1 -0
  65. package/dist/chunk-EFSOSSIC.js +130 -0
  66. package/dist/chunk-EFSOSSIC.js.map +1 -0
  67. package/dist/chunk-FZDSVMKY.js +363 -0
  68. package/dist/chunk-FZDSVMKY.js.map +1 -0
  69. package/dist/chunk-GJOFIJS3.js +246 -0
  70. package/dist/chunk-GJOFIJS3.js.map +1 -0
  71. package/dist/chunk-HL3ZSYES.js +23 -0
  72. package/dist/chunk-HL3ZSYES.js.map +1 -0
  73. package/dist/chunk-JVLUBAPB.js +129 -0
  74. package/dist/chunk-JVLUBAPB.js.map +1 -0
  75. package/dist/chunk-KDPYSOYZ.js +64 -0
  76. package/dist/chunk-KDPYSOYZ.js.map +1 -0
  77. package/dist/chunk-KSMDANKI.js +43 -0
  78. package/dist/chunk-KSMDANKI.js.map +1 -0
  79. package/dist/chunk-MEKCCOP5.js +46 -0
  80. package/dist/chunk-MEKCCOP5.js.map +1 -0
  81. package/dist/chunk-NOFXVRWL.js +451 -0
  82. package/dist/chunk-NOFXVRWL.js.map +1 -0
  83. package/dist/chunk-PC5MHNVA.js +171 -0
  84. package/dist/chunk-PC5MHNVA.js.map +1 -0
  85. package/dist/chunk-QKAQZ2GU.js +122 -0
  86. package/dist/chunk-QKAQZ2GU.js.map +1 -0
  87. package/dist/chunk-QZHSHSVV.js +26 -0
  88. package/dist/chunk-QZHSHSVV.js.map +1 -0
  89. package/dist/chunk-RBMK26XD.js +19 -0
  90. package/dist/chunk-RBMK26XD.js.map +1 -0
  91. package/dist/chunk-SFNJGF6M.js +262 -0
  92. package/dist/chunk-SFNJGF6M.js.map +1 -0
  93. package/dist/chunk-UJJNLGTM.js +112 -0
  94. package/dist/chunk-UJJNLGTM.js.map +1 -0
  95. package/dist/chunk-VGR4ZWJ3.js +418 -0
  96. package/dist/chunk-VGR4ZWJ3.js.map +1 -0
  97. package/dist/chunk-XG47P6D4.js +99 -0
  98. package/dist/chunk-XG47P6D4.js.map +1 -0
  99. package/dist/chunk-XZZAHNVM.js +21 -0
  100. package/dist/chunk-XZZAHNVM.js.map +1 -0
  101. package/dist/chunk-Y4TTYVNE.js +36 -0
  102. package/dist/chunk-Y4TTYVNE.js.map +1 -0
  103. package/dist/chunk-YDWIHW6Q.js +69 -0
  104. package/dist/chunk-YDWIHW6Q.js.map +1 -0
  105. package/dist/collapsible.js +6 -35
  106. package/dist/collapsible.js.map +1 -1
  107. package/dist/combobox.js +26 -694
  108. package/dist/combobox.js.map +1 -1
  109. package/dist/cta.d.ts +66 -0
  110. package/dist/cta.js +358 -0
  111. package/dist/cta.js.map +1 -0
  112. package/dist/currency-selector.d.ts +42 -0
  113. package/dist/currency-selector.js +192 -0
  114. package/dist/currency-selector.js.map +1 -0
  115. package/dist/date-picker.d.ts +18 -10
  116. package/dist/date-picker.js +105 -430
  117. package/dist/date-picker.js.map +1 -1
  118. package/dist/details-card.d.ts +19 -0
  119. package/dist/details-card.js +267 -0
  120. package/dist/details-card.js.map +1 -0
  121. package/dist/dialog.js +36 -146
  122. package/dist/dialog.js.map +1 -1
  123. package/dist/dropdown-menu.d.ts +1 -1
  124. package/dist/dropdown-menu.js +20 -358
  125. package/dist/dropdown-menu.js.map +1 -1
  126. package/dist/dropzone.js +13 -40
  127. package/dist/dropzone.js.map +1 -1
  128. package/dist/editorial-card.d.ts +29 -0
  129. package/dist/editorial-card.js +311 -0
  130. package/dist/editorial-card.js.map +1 -0
  131. package/dist/empty-state.js +5 -35
  132. package/dist/empty-state.js.map +1 -1
  133. package/dist/field.js +30 -135
  134. package/dist/field.js.map +1 -1
  135. package/dist/footer.d.ts +47 -0
  136. package/dist/footer.js +430 -0
  137. package/dist/footer.js.map +1 -0
  138. package/dist/funnel-chart.js +42 -415
  139. package/dist/funnel-chart.js.map +1 -1
  140. package/dist/gallery-indicator.d.ts +18 -0
  141. package/dist/gallery-indicator.js +12 -0
  142. package/dist/gallery-indicator.js.map +1 -0
  143. package/dist/heatmap-chart.d.ts +98 -0
  144. package/dist/heatmap-chart.js +248 -0
  145. package/dist/heatmap-chart.js.map +1 -0
  146. package/dist/infotip.d.ts +11 -0
  147. package/dist/infotip.js +66 -0
  148. package/dist/infotip.js.map +1 -0
  149. package/dist/input-group.d.ts +2 -1
  150. package/dist/input-group.js +15 -371
  151. package/dist/input-group.js.map +1 -1
  152. package/dist/input-size-context.js +5 -19
  153. package/dist/input-size-context.js.map +1 -1
  154. package/dist/input.js +6 -78
  155. package/dist/input.js.map +1 -1
  156. package/dist/item.js +5 -35
  157. package/dist/item.js.map +1 -1
  158. package/dist/kpi-card.js +12 -52
  159. package/dist/kpi-card.js.map +1 -1
  160. package/dist/label.js +5 -64
  161. package/dist/label.js.map +1 -1
  162. package/dist/line-chart.js +9 -166
  163. package/dist/line-chart.js.map +1 -1
  164. package/dist/logo.js +4 -141
  165. package/dist/logo.js.map +1 -1
  166. package/dist/map-indicator.d.ts +13 -0
  167. package/dist/map-indicator.js +109 -0
  168. package/dist/map-indicator.js.map +1 -0
  169. package/dist/match.d.ts +16 -0
  170. package/dist/match.js +113 -0
  171. package/dist/match.js.map +1 -0
  172. package/dist/media-gallery-hero.d.ts +60 -0
  173. package/dist/media-gallery-hero.js +362 -0
  174. package/dist/media-gallery-hero.js.map +1 -0
  175. package/dist/media-player.d.ts +60 -0
  176. package/dist/media-player.js +1394 -0
  177. package/dist/media-player.js.map +1 -0
  178. package/dist/number-input.js +30 -325
  179. package/dist/number-input.js.map +1 -1
  180. package/dist/page-header.js +4 -32
  181. package/dist/page-header.js.map +1 -1
  182. package/dist/pagination.d.ts +1 -0
  183. package/dist/pagination.js +27 -161
  184. package/dist/pagination.js.map +1 -1
  185. package/dist/password-input.d.ts +1 -0
  186. package/dist/password-input.js +21 -319
  187. package/dist/password-input.js.map +1 -1
  188. package/dist/phone-input.d.ts +2 -1
  189. package/dist/phone-input.js +148 -359
  190. package/dist/phone-input.js.map +1 -1
  191. package/dist/photo-gallery.d.ts +1 -1
  192. package/dist/photo-gallery.js +97 -393
  193. package/dist/photo-gallery.js.map +1 -1
  194. package/dist/pie-chart.js +17 -52
  195. package/dist/pie-chart.js.map +1 -1
  196. package/dist/popover.js +13 -158
  197. package/dist/popover.js.map +1 -1
  198. package/dist/price-tag.d.ts +35 -0
  199. package/dist/price-tag.js +178 -0
  200. package/dist/price-tag.js.map +1 -0
  201. package/dist/progress.d.ts +5 -2
  202. package/dist/progress.js +14 -303
  203. package/dist/progress.js.map +1 -1
  204. package/dist/property-listing-card.d.ts +32 -0
  205. package/dist/property-listing-card.js +235 -0
  206. package/dist/property-listing-card.js.map +1 -0
  207. package/dist/radar-chart.d.ts +110 -0
  208. package/dist/radar-chart.js +147 -0
  209. package/dist/radar-chart.js.map +1 -0
  210. package/dist/radio-group.js +15 -50
  211. package/dist/radio-group.js.map +1 -1
  212. package/dist/review-block.d.ts +20 -0
  213. package/dist/review-block.js +10 -0
  214. package/dist/review-block.js.map +1 -0
  215. package/dist/rich-text-editor.js +172 -433
  216. package/dist/rich-text-editor.js.map +1 -1
  217. package/dist/scatter-chart.d.ts +142 -0
  218. package/dist/scatter-chart.js +252 -0
  219. package/dist/scatter-chart.js.map +1 -0
  220. package/dist/search-input.d.ts +1 -0
  221. package/dist/search-input.js +22 -320
  222. package/dist/search-input.js.map +1 -1
  223. package/dist/select.js +15 -292
  224. package/dist/select.js.map +1 -1
  225. package/dist/separator.js +5 -68
  226. package/dist/separator.js.map +1 -1
  227. package/dist/sheet.js +14 -271
  228. package/dist/sheet.js.map +1 -1
  229. package/dist/sidebar.d.ts +1 -1
  230. package/dist/sidebar.js +89 -494
  231. package/dist/sidebar.js.map +1 -1
  232. package/dist/size-context.js +5 -17
  233. package/dist/size-context.js.map +1 -1
  234. package/dist/skeleton.js +4 -44
  235. package/dist/skeleton.js.map +1 -1
  236. package/dist/slider.d.ts +28 -0
  237. package/dist/slider.js +152 -0
  238. package/dist/slider.js.map +1 -0
  239. package/dist/sparkline.js +33 -341
  240. package/dist/sparkline.js.map +1 -1
  241. package/dist/stepper.js +5 -35
  242. package/dist/stepper.js.map +1 -1
  243. package/dist/styles.css +9593 -2
  244. package/dist/switch.js +13 -48
  245. package/dist/switch.js.map +1 -1
  246. package/dist/tab-list.js +35 -306
  247. package/dist/tab-list.js.map +1 -1
  248. package/dist/table.js +5 -32
  249. package/dist/table.js.map +1 -1
  250. package/dist/tabs.js +10 -150
  251. package/dist/tabs.js.map +1 -1
  252. package/dist/tag.d.ts +7 -6
  253. package/dist/tag.js +101 -97
  254. package/dist/tag.js.map +1 -1
  255. package/dist/testimonial-block.d.ts +34 -0
  256. package/dist/testimonial-block.js +377 -0
  257. package/dist/testimonial-block.js.map +1 -0
  258. package/dist/textarea.js +6 -73
  259. package/dist/textarea.js.map +1 -1
  260. package/dist/time-picker.js +119 -279
  261. package/dist/time-picker.js.map +1 -1
  262. package/dist/toast.js +27 -132
  263. package/dist/toast.js.map +1 -1
  264. package/dist/tooltip.d.ts +5 -5
  265. package/dist/tooltip.js +7 -90
  266. package/dist/tooltip.js.map +1 -1
  267. package/dist/tree-map.js +41 -414
  268. package/dist/tree-map.js.map +1 -1
  269. package/dist/waterfall-chart.d.ts +129 -0
  270. package/dist/waterfall-chart.js +577 -0
  271. package/dist/waterfall-chart.js.map +1 -0
  272. package/package.json +98 -28
  273. package/dist/base.css +0 -32
  274. package/dist/files/red-hat-display-latin-300-italic.woff +0 -0
  275. package/dist/files/red-hat-display-latin-300-italic.woff2 +0 -0
  276. package/dist/files/red-hat-display-latin-300-normal.woff +0 -0
  277. package/dist/files/red-hat-display-latin-300-normal.woff2 +0 -0
  278. package/dist/files/red-hat-display-latin-400-italic.woff +0 -0
  279. package/dist/files/red-hat-display-latin-400-italic.woff2 +0 -0
  280. package/dist/files/red-hat-display-latin-400-normal.woff +0 -0
  281. package/dist/files/red-hat-display-latin-400-normal.woff2 +0 -0
  282. package/dist/files/red-hat-display-latin-500-italic.woff +0 -0
  283. package/dist/files/red-hat-display-latin-500-italic.woff2 +0 -0
  284. package/dist/files/red-hat-display-latin-500-normal.woff +0 -0
  285. package/dist/files/red-hat-display-latin-500-normal.woff2 +0 -0
  286. package/dist/files/red-hat-display-latin-600-italic.woff +0 -0
  287. package/dist/files/red-hat-display-latin-600-italic.woff2 +0 -0
  288. package/dist/files/red-hat-display-latin-600-normal.woff +0 -0
  289. package/dist/files/red-hat-display-latin-600-normal.woff2 +0 -0
  290. package/dist/files/red-hat-display-latin-700-italic.woff +0 -0
  291. package/dist/files/red-hat-display-latin-700-italic.woff2 +0 -0
  292. package/dist/files/red-hat-display-latin-700-normal.woff +0 -0
  293. package/dist/files/red-hat-display-latin-700-normal.woff2 +0 -0
  294. package/dist/files/red-hat-display-latin-800-italic.woff +0 -0
  295. package/dist/files/red-hat-display-latin-800-italic.woff2 +0 -0
  296. package/dist/files/red-hat-display-latin-800-normal.woff +0 -0
  297. package/dist/files/red-hat-display-latin-800-normal.woff2 +0 -0
  298. package/dist/files/red-hat-display-latin-900-italic.woff +0 -0
  299. package/dist/files/red-hat-display-latin-900-italic.woff2 +0 -0
  300. package/dist/files/red-hat-display-latin-900-normal.woff +0 -0
  301. package/dist/files/red-hat-display-latin-900-normal.woff2 +0 -0
  302. package/dist/files/red-hat-display-latin-ext-300-italic.woff +0 -0
  303. package/dist/files/red-hat-display-latin-ext-300-italic.woff2 +0 -0
  304. package/dist/files/red-hat-display-latin-ext-300-normal.woff +0 -0
  305. package/dist/files/red-hat-display-latin-ext-300-normal.woff2 +0 -0
  306. package/dist/files/red-hat-display-latin-ext-400-italic.woff +0 -0
  307. package/dist/files/red-hat-display-latin-ext-400-italic.woff2 +0 -0
  308. package/dist/files/red-hat-display-latin-ext-400-normal.woff +0 -0
  309. package/dist/files/red-hat-display-latin-ext-400-normal.woff2 +0 -0
  310. package/dist/files/red-hat-display-latin-ext-500-italic.woff +0 -0
  311. package/dist/files/red-hat-display-latin-ext-500-italic.woff2 +0 -0
  312. package/dist/files/red-hat-display-latin-ext-500-normal.woff +0 -0
  313. package/dist/files/red-hat-display-latin-ext-500-normal.woff2 +0 -0
  314. package/dist/files/red-hat-display-latin-ext-600-italic.woff +0 -0
  315. package/dist/files/red-hat-display-latin-ext-600-italic.woff2 +0 -0
  316. package/dist/files/red-hat-display-latin-ext-600-normal.woff +0 -0
  317. package/dist/files/red-hat-display-latin-ext-600-normal.woff2 +0 -0
  318. package/dist/files/red-hat-display-latin-ext-700-italic.woff +0 -0
  319. package/dist/files/red-hat-display-latin-ext-700-italic.woff2 +0 -0
  320. package/dist/files/red-hat-display-latin-ext-700-normal.woff +0 -0
  321. package/dist/files/red-hat-display-latin-ext-700-normal.woff2 +0 -0
  322. package/dist/files/red-hat-display-latin-ext-800-italic.woff +0 -0
  323. package/dist/files/red-hat-display-latin-ext-800-italic.woff2 +0 -0
  324. package/dist/files/red-hat-display-latin-ext-800-normal.woff +0 -0
  325. package/dist/files/red-hat-display-latin-ext-800-normal.woff2 +0 -0
  326. package/dist/files/red-hat-display-latin-ext-900-italic.woff +0 -0
  327. package/dist/files/red-hat-display-latin-ext-900-italic.woff2 +0 -0
  328. package/dist/files/red-hat-display-latin-ext-900-normal.woff +0 -0
  329. package/dist/files/red-hat-display-latin-ext-900-normal.woff2 +0 -0
  330. package/dist/index.d.ts +0 -87
  331. package/dist/index.js +0 -10448
  332. package/dist/index.js.map +0 -1
  333. package/dist/red-hat-display.css +0 -2
  334. package/dist/theme/giddaa.css +0 -2
package/dist/toast.js CHANGED
@@ -1,120 +1,15 @@
1
- // src/components/ui/toast.tsx
1
+ import {
2
+ Button
3
+ } from "./chunk-B4H6RNDH.js";
4
+ import "./chunk-HL3ZSYES.js";
5
+ import {
6
+ cn
7
+ } from "./chunk-Y4TTYVNE.js";
8
+
9
+ // src/toast.tsx
2
10
  import { Toast as BaseToast } from "@base-ui/react/toast";
3
11
  import { Check, Info, X } from "lucide-react";
4
-
5
- // src/lib/cn.ts
6
- import { clsx } from "clsx";
7
- import { extendTailwindMerge } from "tailwind-merge";
8
- var twMerge = extendTailwindMerge({
9
- extend: {
10
- classGroups: {
11
- "font-size": [
12
- {
13
- text: [
14
- "gdt-display",
15
- "gdt-h1",
16
- "gdt-h2",
17
- "gdt-h3",
18
- "gdt-h4",
19
- "gdt-h5",
20
- "gdt-xl",
21
- "gdt-lg",
22
- "gdt-md",
23
- "gdt-sm",
24
- "gdt-xs",
25
- "gdt-subtext",
26
- "gdt-capitalized"
27
- ]
28
- }
29
- ]
30
- }
31
- }
32
- });
33
- function cn(...inputs) {
34
- return twMerge(clsx(inputs));
35
- }
36
-
37
- // src/components/ui/button.tsx
38
- import { Button as ButtonPrimitive } from "@base-ui/react/button";
39
- import { cva } from "class-variance-authority";
40
- import { Loader } from "lucide-react";
41
-
42
- // src/components/ui/size-context.tsx
43
- import { createContext, useContext } from "react";
44
- import { Fragment, jsx } from "react/jsx-runtime";
45
- var SizeContext = createContext(void 0);
46
- function useComponentSize(size, fallback = "md") {
47
- const inheritedSize = useContext(SizeContext);
48
- return size ?? inheritedSize ?? fallback;
49
- }
50
-
51
- // src/components/ui/button.tsx
52
- import { jsx as jsx2, jsxs } from "react/jsx-runtime";
53
- var buttonVariants = cva(
54
- "group/button inline-flex shrink-0 items-center justify-center rounded-full bg-clip-padding whitespace-nowrap font-bold transition-[background-color,color,border-color,box-shadow,transform] outline-none select-none focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 aria-invalid:border-line-danger aria-invalid:ring-3 aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
55
- {
56
- variants: {
57
- variant: {
58
- primary: "bg-action-primary text-fg-on-brand hover:bg-action-primary-hover active:bg-action-primary-pressed",
59
- "primary-outline": "border-2 border-action-primary bg-transparent text-fg-brand hover:bg-surface-brand-subtle active:bg-surface-brand-subtle data-focused:bg-surface-brand-subtle data-pressed:bg-surface-brand-subtle",
60
- secondary: "bg-surface-brand-subtle text-fg-brand hover:bg-action-primary-hover hover:text-fg-on-brand active:bg-action-primary-pressed active:text-fg-on-brand data-focused:bg-action-primary-hover data-pressed:bg-action-primary-pressed data-focused:text-fg-on-brand data-pressed:text-fg-on-brand",
61
- "secondary-outline": "border-2 border-action-secondary bg-transparent text-fg-brand hover:bg-surface-brand-subtle active:bg-surface-brand-subtle data-focused:bg-surface-brand-subtle data-pressed:bg-surface-brand-subtle",
62
- tertiary: "bg-action-tertiary text-fg-primary hover:bg-action-tertiary-hover active:bg-action-tertiary-pressed data-focused:bg-action-tertiary-hover data-pressed:bg-action-tertiary-pressed",
63
- "tertiary-outline": "border border-line-strong bg-transparent text-fg-primary hover:bg-surface active:bg-surface-raised data-focused:bg-surface data-pressed:bg-surface-raised",
64
- ghost: "bg-transparent text-fg-primary hover:bg-surface active:bg-surface-raised data-focused:bg-surface data-pressed:bg-surface-raised",
65
- danger: "bg-action-danger text-fg-on-brand hover:bg-action-danger-hover active:bg-action-danger-pressed data-focused:bg-action-danger-hover data-pressed:bg-action-danger-pressed",
66
- "glass-overlay": "bg-surface-glass-overlay-button text-fg-on-brand",
67
- "link-brand": "border-transparent bg-transparent px-0 text-fg-brand hover:underline active:underline active:opacity-70",
68
- "link-neutral": "border-transparent bg-transparent px-0 text-fg-secondary hover:underline active:underline active:opacity-70"
69
- },
70
- size: {
71
- sm: "h-8 gap-2 px-3.5 text-gdt-xs has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3 [&_svg:not([class*='size-'])]:size-3.5",
72
- md: "h-10 gap-2 px-4.5 text-gdt-sm has-data-[icon=inline-end]:pr-4 has-data-[icon=inline-start]:pl-4",
73
- lg: "h-12.5 gap-2.5 px-5.5 text-gdt-md has-data-[icon=inline-end]:pr-5 has-data-[icon=inline-start]:pl-5 [&_svg:not([class*='size-'])]:size-4.5",
74
- xl: "h-14 gap-3 px-6.5 text-gdt-lg has-data-[icon=inline-end]:pr-6 has-data-[icon=inline-start]:pl-6 [&_svg:not([class*='size-'])]:size-5",
75
- icon: "size-10",
76
- "icon-xs": "size-6 text-gdt-xs [&_svg:not([class*='size-'])]:size-3",
77
- "icon-sm": "size-8 text-gdt-sm [&_svg:not([class*='size-'])]:size-3.5",
78
- "icon-lg": "size-12.5 text-gdt-md [&_svg:not([class*='size-'])]:size-4.5",
79
- "icon-xl": "size-14 text-gdt-lg [&_svg:not([class*='size-'])]:size-5"
80
- }
81
- },
82
- defaultVariants: {
83
- variant: "primary",
84
- size: "md"
85
- }
86
- }
87
- );
88
- function Button({
89
- className,
90
- variant = "primary",
91
- size,
92
- isLoading = false,
93
- children,
94
- disabled = false,
95
- ...props
96
- }) {
97
- const inheritedSize = useComponentSize();
98
- const resolvedSize = size ?? inheritedSize;
99
- const _disabled = disabled || isLoading;
100
- return /* @__PURE__ */ jsxs(
101
- ButtonPrimitive,
102
- {
103
- "data-slot": "button",
104
- className: cn(buttonVariants({ variant, size: resolvedSize, className })),
105
- disabled: _disabled,
106
- ...props,
107
- children: [
108
- isLoading && /* @__PURE__ */ jsx2(Loader, { className: "size-4 animate-spin" }),
109
- " ",
110
- children
111
- ]
112
- }
113
- );
114
- }
115
-
116
- // src/components/ui/toast.tsx
117
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
12
+ import { jsx, jsxs } from "react/jsx-runtime";
118
13
  var DEFAULT_TOAST_SIDE = "top";
119
14
  var DEFAULT_TOAST_ALIGN = "end";
120
15
  var toastManager = BaseToast.createToastManager();
@@ -147,9 +42,9 @@ var toast = Object.assign(
147
42
  }
148
43
  );
149
44
  function ToastProvider({ children }) {
150
- return /* @__PURE__ */ jsxs2(BaseToast.Provider, { limit: 4, timeout: 5e3, toastManager, children: [
45
+ return /* @__PURE__ */ jsxs(BaseToast.Provider, { limit: 4, timeout: 5e3, toastManager, children: [
151
46
  children,
152
- /* @__PURE__ */ jsx3(BaseToast.Portal, { children: /* @__PURE__ */ jsx3(BaseToast.Viewport, { className: "fixed inset-0 z-9999 pointer-events-none outline-none", children: /* @__PURE__ */ jsx3(ToastList, {}) }) })
47
+ /* @__PURE__ */ jsx(BaseToast.Portal, { children: /* @__PURE__ */ jsx(BaseToast.Viewport, { className: "fixed inset-0 z-9999 pointer-events-none outline-none", children: /* @__PURE__ */ jsx(ToastList, {}) }) })
153
48
  ] });
154
49
  }
155
50
  function ToastList() {
@@ -175,7 +70,7 @@ function ToastList() {
175
70
  stack.visibleIndex += 1;
176
71
  }
177
72
  placementStacks.set(placement.key, stack);
178
- return /* @__PURE__ */ jsx3(
73
+ return /* @__PURE__ */ jsx(
179
74
  BaseToast.Root,
180
75
  {
181
76
  toast: item,
@@ -187,16 +82,16 @@ function ToastList() {
187
82
  ),
188
83
  swipeDirection: getSwipeDirections(item),
189
84
  style,
190
- children: /* @__PURE__ */ jsxs2(
85
+ children: /* @__PURE__ */ jsxs(
191
86
  BaseToast.Content,
192
87
  {
193
88
  className: "grid grid-cols-[16px_minmax(0,1fr)_24px] items-start gap-3 overflow-hidden px-2.5 py-3.5 pl-3 transition-opacity duration-250 data-behind:pointer-events-none data-behind:opacity-0 data-expanded:pointer-events-auto data-expanded:opacity-100",
194
89
  children: [
195
- /* @__PURE__ */ jsx3(ToastIcon, { type: item.data?.type }),
196
- /* @__PURE__ */ jsxs2("div", { className: "min-w-0 flex flex-col gap-1.5", children: [
197
- item.title ? /* @__PURE__ */ jsx3(BaseToast.Title, { className: "text-gdt-sm font-semibold text-fg-primary" }) : null,
198
- item.description ? /* @__PURE__ */ jsx3(BaseToast.Description, { className: "text-gdt-sm text-fg-secondary" }) : null,
199
- /* @__PURE__ */ jsx3(
90
+ /* @__PURE__ */ jsx(ToastIcon, { type: item.data?.type }),
91
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex flex-col gap-1.5", children: [
92
+ item.title ? /* @__PURE__ */ jsx(BaseToast.Title, { className: "text-gdt-sm font-semibold text-fg-primary" }) : null,
93
+ item.description ? /* @__PURE__ */ jsx(BaseToast.Description, { className: "text-gdt-sm text-fg-secondary" }) : null,
94
+ /* @__PURE__ */ jsx(
200
95
  BaseToast.Action,
201
96
  {
202
97
  className: cn(
@@ -209,12 +104,12 @@ function ToastList() {
209
104
  }
210
105
  )
211
106
  ] }),
212
- /* @__PURE__ */ jsx3(
107
+ /* @__PURE__ */ jsx(
213
108
  BaseToast.Close,
214
109
  {
215
- render: /* @__PURE__ */ jsx3(Button, { variant: "ghost", size: "icon-xs" }),
110
+ render: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon-xs" }),
216
111
  "aria-label": "Close toast",
217
- children: /* @__PURE__ */ jsx3(X, { className: "size-4" })
112
+ children: /* @__PURE__ */ jsx(X, { className: "size-4" })
218
113
  }
219
114
  )
220
115
  ]
@@ -227,7 +122,7 @@ function ToastList() {
227
122
  }
228
123
  function ToastIcon({ type }) {
229
124
  if (!type) return null;
230
- return /* @__PURE__ */ jsxs2(
125
+ return /* @__PURE__ */ jsxs(
231
126
  "span",
232
127
  {
233
128
  className: cn(
@@ -239,10 +134,10 @@ function ToastIcon({ type }) {
239
134
  ),
240
135
  "aria-hidden": "true",
241
136
  children: [
242
- type === "success" ? /* @__PURE__ */ jsx3(Check, { size: 10, strokeWidth: 3 }) : null,
243
- type === "info" ? /* @__PURE__ */ jsx3(Info, { size: 11, strokeWidth: 2.8 }) : null,
244
- type === "warning" ? /* @__PURE__ */ jsx3("span", { className: "text-[11px] leading-none font-extrabold", children: "!" }) : null,
245
- type === "error" ? /* @__PURE__ */ jsx3(X, { size: 10, strokeWidth: 3 }) : null
137
+ type === "success" ? /* @__PURE__ */ jsx(Check, { size: 10, strokeWidth: 3 }) : null,
138
+ type === "info" ? /* @__PURE__ */ jsx(Info, { size: 11, strokeWidth: 2.8 }) : null,
139
+ type === "warning" ? /* @__PURE__ */ jsx("span", { className: "text-[11px] leading-none font-extrabold", children: "!" }) : null,
140
+ type === "error" ? /* @__PURE__ */ jsx(X, { size: 10, strokeWidth: 3 }) : null
246
141
  ]
247
142
  }
248
143
  );
package/dist/toast.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/toast.tsx","../src/lib/cn.ts","../src/components/ui/button.tsx","../src/components/ui/size-context.tsx"],"sourcesContent":["import type {\n\tToastManagerAddOptions,\n\tToastManagerUpdateOptions,\n\tToastObject,\n} from \"@base-ui/react/toast\";\nimport { Toast as BaseToast } from \"@base-ui/react/toast\";\nimport { Check, Info, X } from \"lucide-react\";\nimport type { CSSProperties, PropsWithChildren } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Button } from \"./button\";\n\ntype ToastVariant = \"success\" | \"info\" | \"warning\" | \"error\" | \"loading\";\ntype ResolvedToastSide = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype ToastAlign = \"start\" | \"center\" | \"end\";\ntype ToastPlacement = {\n\tside: ResolvedToastSide;\n\talign: ToastAlign;\n\tkey: string;\n};\ntype ToastRootStyle = CSSProperties &\n\tRecord<\n\t\t| \"--toast-placement-index\"\n\t\t| \"--toast-placement-offset-y\"\n\t\t| \"--toast-placement-frontmost-height\",\n\t\tstring | number | undefined\n\t>;\n\ntype ToastData = {\n\ttype: ToastVariant;\n};\n\nconst DEFAULT_TOAST_SIDE = \"top\";\nconst DEFAULT_TOAST_ALIGN = \"end\";\ntype ToastSide = NonNullable<\n\tToastObject<{ type?: ToastVariant }>[\"positionerProps\"]\n>[\"side\"];\n\nexport const toastManager = BaseToast.createToastManager();\n\nexport const toast = Object.assign(\n\t(options: ToastManagerAddOptions<ToastData>) => toastManager.add(options),\n\t{\n\t\tsuccess: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"success\", ...options.data },\n\t\t\t}),\n\t\tinfo: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"info\", ...options.data },\n\t\t\t}),\n\t\twarning: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"warning\", ...options.data },\n\t\t\t}),\n\t\terror: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"error\", ...options.data },\n\t\t\t}),\n\t\tloading: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"loading\", ...options.data },\n\t\t\t}),\n\t\tdismiss: (toastId?: string | number) =>\n\t\t\ttoastManager.close(toastId?.toString()),\n\t\tupdate: (\n\t\t\ttoastId: string | number,\n\t\t\toptions: ToastManagerUpdateOptions<ToastData>,\n\t\t) => toastManager.update(toastId.toString(), options),\n\t\tpromise: toastManager.promise,\n\t},\n);\n\nexport function ToastProvider({ children }: PropsWithChildren) {\n\treturn (\n\t\t<BaseToast.Provider limit={4} timeout={5000} toastManager={toastManager}>\n\t\t\t{children}\n\t\t\t<BaseToast.Portal>\n\t\t\t\t<BaseToast.Viewport className=\"fixed inset-0 z-9999 pointer-events-none outline-none\">\n\t\t\t\t\t<ToastList />\n\t\t\t\t</BaseToast.Viewport>\n\t\t\t</BaseToast.Portal>\n\t\t</BaseToast.Provider>\n\t);\n}\n\nfunction ToastList() {\n\tconst { toasts } = BaseToast.useToastManager<ToastData>();\n\tconst placementStacks = new Map<\n\t\tstring,\n\t\t{\n\t\t\tdomIndex: number;\n\t\t\tvisibleIndex: number;\n\t\t\toffsetY: number;\n\t\t\tfrontmostHeight?: number;\n\t\t}\n\t>();\n\n\treturn toasts.map((item) => {\n\t\tconst placement = getToastPlacement(item);\n\t\tconst stack = placementStacks.get(placement.key) ?? {\n\t\t\tdomIndex: 0,\n\t\t\tvisibleIndex: 0,\n\t\t\toffsetY: 0,\n\t\t\tfrontmostHeight: item.height,\n\t\t};\n\t\tconst placementIndex =\n\t\t\titem.transitionStatus === \"ending\" ? stack.domIndex : stack.visibleIndex;\n\t\tconst style: ToastRootStyle = {\n\t\t\t\"--toast-placement-index\": placementIndex,\n\t\t\t\"--toast-placement-offset-y\": `${stack.offsetY}px`,\n\t\t\t\"--toast-placement-frontmost-height\": stack.frontmostHeight\n\t\t\t\t? `${stack.frontmostHeight}px`\n\t\t\t\t: undefined,\n\t\t};\n\n\t\tstack.offsetY += item.height ?? 0;\n\t\tstack.domIndex += 1;\n\t\tif (item.transitionStatus !== \"ending\") {\n\t\t\tstack.visibleIndex += 1;\n\t\t}\n\t\tplacementStacks.set(placement.key, stack);\n\n\t\treturn (\n\t\t\t<BaseToast.Root\n\t\t\t\tkey={item.id}\n\t\t\t\ttoast={item}\n\t\t\t\tclassName={cn(\n\t\t\t\t\ttoastRootBaseClassName,\n\t\t\t\t\tgetToastPositionClassName(placement),\n\t\t\t\t\tgetToastStackClassName(placement),\n\t\t\t\t\tgetToastExitClassName(placement.side),\n\t\t\t\t)}\n\t\t\t\tswipeDirection={getSwipeDirections(item)}\n\t\t\t\tstyle={style}\n\t\t\t>\n\t\t\t\t<BaseToast.Content\n\t\t\t\t\tclassName={\n\t\t\t\t\t\t\"grid grid-cols-[16px_minmax(0,1fr)_24px] items-start gap-3 overflow-hidden px-2.5 py-3.5 pl-3 transition-opacity duration-250 data-behind:pointer-events-none data-behind:opacity-0 data-expanded:pointer-events-auto data-expanded:opacity-100\"\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<ToastIcon type={item.data?.type} />\n\t\t\t\t\t<div className=\"min-w-0 flex flex-col gap-1.5\">\n\t\t\t\t\t\t{item.title ? (\n\t\t\t\t\t\t\t<BaseToast.Title className=\"text-gdt-sm font-semibold text-fg-primary\" />\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t{item.description ? (\n\t\t\t\t\t\t\t<BaseToast.Description className=\"text-gdt-sm text-fg-secondary\" />\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<BaseToast.Action\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"cursor-pointer border-0 bg-transparent p-0 font-inherit text-gdt-sm font-semibold inline-flex w-fit items-center hover:underline underline-offset-2\",\n\t\t\t\t\t\t\t\titem.data?.type === \"success\" && \"text-fg-brand\",\n\t\t\t\t\t\t\t\titem.data?.type === \"info\" && \"text-fg-primary\",\n\t\t\t\t\t\t\t\titem.data?.type === \"warning\" && \"text-fg-accent\",\n\t\t\t\t\t\t\t\titem.data?.type === \"error\" && \"text-fg-danger\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<BaseToast.Close\n\t\t\t\t\t\trender={<Button variant=\"ghost\" size=\"icon-xs\" />}\n\t\t\t\t\t\taria-label=\"Close toast\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<X className=\"size-4\" />\n\t\t\t\t\t</BaseToast.Close>\n\t\t\t\t</BaseToast.Content>\n\t\t\t</BaseToast.Root>\n\t\t);\n\t});\n}\n\nfunction ToastIcon({ type }: { type?: ToastVariant }) {\n\tif (!type) return null;\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\n\t\t\t\t\"inline-flex size-5 items-center justify-center rounded-full text-canvas\",\n\t\t\t\ttype === \"success\" && \"bg-status-success\",\n\t\t\t\ttype === \"info\" && \"bg-status-info\",\n\t\t\t\ttype === \"warning\" && \"bg-status-warning text-fg-on-accent\",\n\t\t\t\ttype === \"error\" && \"bg-status-danger\",\n\t\t\t)}\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t{type === \"success\" ? <Check size={10} strokeWidth={3} /> : null}\n\t\t\t{type === \"info\" ? <Info size={11} strokeWidth={2.8} /> : null}\n\t\t\t{type === \"warning\" ? (\n\t\t\t\t<span className=\"text-[11px] leading-none font-extrabold\">!</span>\n\t\t\t) : null}\n\t\t\t{type === \"error\" ? <X size={10} strokeWidth={3} /> : null}\n\t\t</span>\n\t);\n}\n\nconst toastRootBaseClassName =\n\t\"[--gap:12px] [--peek:12px] [--anchor-x:0px] [--anchor-y:0px] [--scale:calc(max(0,1-(var(--toast-placement-index)*0.04)))] [--shrink:calc(1-var(--scale))] [--height:var(--toast-placement-frontmost-height,var(--toast-height))] absolute z-[calc(1000-var(--toast-placement-index))] h-[var(--height)] min-h-[var(--height)] w-[min(335px,calc(100vw-32px))] overflow-visible rounded-lg border border-line bg-surface-overlay text-fg-primary shadow-[var(--elevation-e2-shadow)] pointer-events-auto select-none [transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(var(--collapsed-y))_scale(var(--scale))] [transition:transform_500ms_cubic-bezier(0.22,1,0.36,1),opacity_500ms,height_150ms] after:absolute after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:pointer-events-auto after:content-[''] data-[expanded]:h-[var(--toast-height)] data-[expanded]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(var(--expanded-y))_scale(1)] data-[starting-style]:opacity-0 data-[starting-style]:[transform:translateX(var(--exit-x))_translateY(var(--exit-y))_scale(var(--scale))] data-[ending-style]:opacity-0 data-[limited]:opacity-0 [&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateX(var(--exit-x))_translateY(var(--exit-y))_scale(var(--scale))] data-[ending-style]:data-[swipe-direction=up]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)-150%))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=up]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)-150%))_scale(1)] data-[ending-style]:data-[swipe-direction=down]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)+150%))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=down]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)+150%))_scale(1)] data-[ending-style]:data-[swipe-direction=left]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)-150%))_translateY(var(--expanded-y))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=left]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)-150%))_translateY(var(--expanded-y))_scale(1)] data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)+150%))_translateY(var(--expanded-y))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)+150%))_translateY(var(--expanded-y))_scale(1)]\";\n\nfunction getToastPlacement(\n\titem: ToastObject<{ type?: ToastVariant }>,\n\tisRtl = false,\n): ToastPlacement {\n\tconst side = item.positionerProps?.side ?? DEFAULT_TOAST_SIDE;\n\tconst align = (item.positionerProps?.align ??\n\t\tDEFAULT_TOAST_ALIGN) as ToastAlign;\n\tconst resolvedSide = resolveToastSide(side, isRtl);\n\n\treturn {\n\t\tside: resolvedSide,\n\t\talign,\n\t\tkey: `${resolvedSide}:${align}`,\n\t};\n}\n\nfunction resolveToastSide(\n\tside: ToastSide | undefined,\n\tisRtl: boolean,\n): ResolvedToastSide {\n\tif (side === \"inline-end\") return isRtl ? \"left\" : \"right\";\n\tif (side === \"inline-start\") return isRtl ? \"right\" : \"left\";\n\tif (\n\t\tside === \"top\" ||\n\t\tside === \"bottom\" ||\n\t\tside === \"left\" ||\n\t\tside === \"right\"\n\t) {\n\t\treturn side;\n\t}\n\treturn DEFAULT_TOAST_SIDE;\n}\n\nfunction getToastPositionClassName({ side, align }: ToastPlacement) {\n\tconst isVerticalSide = side === \"top\" || side === \"bottom\";\n\n\tif (isVerticalSide) {\n\t\treturn cn(\n\t\t\tside === \"top\" && \"top-6 max-sm:top-4\",\n\t\t\tside === \"bottom\" && \"bottom-6 max-sm:bottom-4\",\n\t\t\talign === \"start\" && \"left-6 origin-top-left max-sm:left-4\",\n\t\t\talign === \"center\" && \"left-1/2 origin-top [--anchor-x:-50%]\",\n\t\t\talign === \"end\" && \"right-6 origin-top-right max-sm:right-4\",\n\t\t\tside === \"bottom\" && align === \"start\" && \"origin-bottom-left\",\n\t\t\tside === \"bottom\" && align === \"center\" && \"origin-bottom\",\n\t\t\tside === \"bottom\" && align === \"end\" && \"origin-bottom-right\",\n\t\t);\n\t}\n\n\treturn cn(\n\t\tside === \"left\" && \"left-6 origin-left max-sm:left-4\",\n\t\tside === \"right\" && \"right-6 origin-right max-sm:right-4\",\n\t\talign === \"start\" && \"top-6 max-sm:top-4\",\n\t\talign === \"center\" && \"top-1/2 [--anchor-y:-50%]\",\n\t\talign === \"end\" && \"bottom-6 max-sm:bottom-4\",\n\t\tside === \"left\" && align === \"start\" && \"origin-top-left\",\n\t\tside === \"left\" && align === \"end\" && \"origin-bottom-left\",\n\t\tside === \"right\" && align === \"start\" && \"origin-top-right\",\n\t\tside === \"right\" && align === \"end\" && \"origin-bottom-right\",\n\t);\n}\n\nfunction getToastStackClassName({ side, align }: ToastPlacement) {\n\tconst stacksUp =\n\t\tside === \"bottom\" ||\n\t\t((side === \"left\" || side === \"right\") && align === \"end\");\n\n\tif (stacksUp) {\n\t\treturn \"after:bottom-full [--expanded-y:calc(var(--anchor-y)+var(--toast-swipe-movement-y)-var(--toast-placement-offset-y)-(var(--toast-placement-index)*var(--gap)))] [--collapsed-y:calc(var(--anchor-y)+var(--toast-swipe-movement-y)-(var(--toast-placement-index)*var(--peek))-(var(--shrink)*var(--height)))]\";\n\t}\n\n\treturn \"after:top-full [--expanded-y:calc(var(--anchor-y)+var(--toast-placement-offset-y)+(var(--toast-placement-index)*var(--gap))+var(--toast-swipe-movement-y))] [--collapsed-y:calc(var(--anchor-y)+var(--toast-swipe-movement-y)+(var(--toast-placement-index)*var(--peek))+(var(--shrink)*var(--height)))]\";\n}\n\nfunction getToastExitClassName(side: ResolvedToastSide) {\n\tif (side === \"bottom\") {\n\t\treturn \"[--exit-x:calc(var(--anchor-x)+24px)] [--exit-y:calc(var(--anchor-y)+150%)]\";\n\t}\n\tif (side === \"left\") {\n\t\treturn \"[--exit-x:calc(var(--anchor-x)-150%)] [--exit-y:var(--anchor-y)]\";\n\t}\n\tif (side === \"right\") {\n\t\treturn \"[--exit-x:calc(var(--anchor-x)+150%)] [--exit-y:var(--anchor-y)]\";\n\t}\n\treturn \"[--exit-x:calc(var(--anchor-x)+24px)] [--exit-y:calc(var(--anchor-y)-150%)]\";\n}\n\ntype SwipeDirection = \"up\" | \"down\" | \"left\" | \"right\";\nfunction getSwipeDirections(\n\titem: ToastObject<{ type?: ToastVariant }>,\n\tisRtl = false,\n) {\n\tconst { side: resolvedSide, align } = getToastPlacement(item, isRtl);\n\tconst primary: SwipeDirection =\n\t\tresolvedSide === \"top\"\n\t\t\t? \"up\"\n\t\t\t: resolvedSide === \"bottom\"\n\t\t\t\t? \"down\"\n\t\t\t\t: resolvedSide === \"left\"\n\t\t\t\t\t? \"left\"\n\t\t\t\t\t: /* right */ \"right\";\n\tif (align === \"center\") return primary;\n\tconst isVerticalSide = resolvedSide === \"top\" || resolvedSide === \"bottom\";\n\tconst secondary: SwipeDirection = isVerticalSide\n\t\t? align === \"start\"\n\t\t\t? \"left\"\n\t\t\t: \"right\"\n\t\t: align === \"start\"\n\t\t\t? \"up\"\n\t\t\t: \"down\";\n\treturn [primary, secondary];\n}\n","import { type ClassValue, clsx } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({\n\textend: {\n\t\tclassGroups: {\n\t\t\t\"font-size\": [\n\t\t\t\t{\n\t\t\t\t\ttext: [\n\t\t\t\t\t\t\"gdt-display\",\n\t\t\t\t\t\t\"gdt-h1\",\n\t\t\t\t\t\t\"gdt-h2\",\n\t\t\t\t\t\t\"gdt-h3\",\n\t\t\t\t\t\t\"gdt-h4\",\n\t\t\t\t\t\t\"gdt-h5\",\n\t\t\t\t\t\t\"gdt-xl\",\n\t\t\t\t\t\t\"gdt-lg\",\n\t\t\t\t\t\t\"gdt-md\",\n\t\t\t\t\t\t\"gdt-sm\",\n\t\t\t\t\t\t\"gdt-xs\",\n\t\t\t\t\t\t\"gdt-subtext\",\n\t\t\t\t\t\t\"gdt-capitalized\",\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n});\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","import { Button as ButtonPrimitive } from \"@base-ui/react/button\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Loader } from \"lucide-react\";\nimport type * as React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { useComponentSize } from \"./size-context\";\n\nconst buttonVariants = cva(\n\t\"group/button inline-flex shrink-0 items-center justify-center rounded-full bg-clip-padding whitespace-nowrap font-bold transition-[background-color,color,border-color,box-shadow,transform] outline-none select-none focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 aria-invalid:border-line-danger aria-invalid:ring-3 aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tprimary:\n\t\t\t\t\t\"bg-action-primary text-fg-on-brand hover:bg-action-primary-hover active:bg-action-primary-pressed\",\n\t\t\t\t\"primary-outline\":\n\t\t\t\t\t\"border-2 border-action-primary bg-transparent text-fg-brand hover:bg-surface-brand-subtle active:bg-surface-brand-subtle data-focused:bg-surface-brand-subtle data-pressed:bg-surface-brand-subtle\",\n\t\t\t\tsecondary:\n\t\t\t\t\t\"bg-surface-brand-subtle text-fg-brand hover:bg-action-primary-hover hover:text-fg-on-brand active:bg-action-primary-pressed active:text-fg-on-brand data-focused:bg-action-primary-hover data-pressed:bg-action-primary-pressed data-focused:text-fg-on-brand data-pressed:text-fg-on-brand\",\n\t\t\t\t\"secondary-outline\":\n\t\t\t\t\t\"border-2 border-action-secondary bg-transparent text-fg-brand hover:bg-surface-brand-subtle active:bg-surface-brand-subtle data-focused:bg-surface-brand-subtle data-pressed:bg-surface-brand-subtle\",\n\t\t\t\ttertiary:\n\t\t\t\t\t\"bg-action-tertiary text-fg-primary hover:bg-action-tertiary-hover active:bg-action-tertiary-pressed data-focused:bg-action-tertiary-hover data-pressed:bg-action-tertiary-pressed\",\n\t\t\t\t\"tertiary-outline\":\n\t\t\t\t\t\"border border-line-strong bg-transparent text-fg-primary hover:bg-surface active:bg-surface-raised data-focused:bg-surface data-pressed:bg-surface-raised\",\n\t\t\t\tghost:\n\t\t\t\t\t\"bg-transparent text-fg-primary hover:bg-surface active:bg-surface-raised data-focused:bg-surface data-pressed:bg-surface-raised\",\n\t\t\t\tdanger:\n\t\t\t\t\t\"bg-action-danger text-fg-on-brand hover:bg-action-danger-hover active:bg-action-danger-pressed data-focused:bg-action-danger-hover data-pressed:bg-action-danger-pressed\",\n\t\t\t\t\"glass-overlay\": \"bg-surface-glass-overlay-button text-fg-on-brand\",\n\t\t\t\t\"link-brand\":\n\t\t\t\t\t\"border-transparent bg-transparent px-0 text-fg-brand hover:underline active:underline active:opacity-70\",\n\t\t\t\t\"link-neutral\":\n\t\t\t\t\t\"border-transparent bg-transparent px-0 text-fg-secondary hover:underline active:underline active:opacity-70\",\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tsm: \"h-8 gap-2 px-3.5 text-gdt-xs has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3 [&_svg:not([class*='size-'])]:size-3.5\",\n\t\t\t\tmd: \"h-10 gap-2 px-4.5 text-gdt-sm has-data-[icon=inline-end]:pr-4 has-data-[icon=inline-start]:pl-4\",\n\t\t\t\tlg: \"h-12.5 gap-2.5 px-5.5 text-gdt-md has-data-[icon=inline-end]:pr-5 has-data-[icon=inline-start]:pl-5 [&_svg:not([class*='size-'])]:size-4.5\",\n\t\t\t\txl: \"h-14 gap-3 px-6.5 text-gdt-lg has-data-[icon=inline-end]:pr-6 has-data-[icon=inline-start]:pl-6 [&_svg:not([class*='size-'])]:size-5\",\n\t\t\t\ticon: \"size-10\",\n\t\t\t\t\"icon-xs\": \"size-6 text-gdt-xs [&_svg:not([class*='size-'])]:size-3\",\n\t\t\t\t\"icon-sm\": \"size-8 text-gdt-sm [&_svg:not([class*='size-'])]:size-3.5\",\n\t\t\t\t\"icon-lg\":\n\t\t\t\t\t\"size-12.5 text-gdt-md [&_svg:not([class*='size-'])]:size-4.5\",\n\t\t\t\t\"icon-xl\": \"size-14 text-gdt-lg [&_svg:not([class*='size-'])]:size-5\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"primary\",\n\t\t\tsize: \"md\",\n\t\t},\n\t},\n);\n\ntype ButtonSize = NonNullable<VariantProps<typeof buttonVariants>[\"size\"]>;\n\nfunction Button({\n\tclassName,\n\tvariant = \"primary\",\n\tsize,\n\tisLoading = false,\n\tchildren,\n\tdisabled = false,\n\t...props\n}: ButtonPrimitive.Props &\n\tVariantProps<typeof buttonVariants> & { isLoading?: boolean }) {\n\tconst inheritedSize = useComponentSize();\n\tconst resolvedSize = size ?? inheritedSize;\n\tconst _disabled = disabled || isLoading;\n\treturn (\n\t\t<ButtonPrimitive\n\t\t\tdata-slot=\"button\"\n\t\t\tclassName={cn(buttonVariants({ variant, size: resolvedSize, className }))}\n\t\t\tdisabled={_disabled}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isLoading && <Loader className=\"size-4 animate-spin\" />} {children}\n\t\t</ButtonPrimitive>\n\t);\n}\n\ntype ButtonLinkProps = Omit<React.ComponentProps<\"a\">, \"href\"> &\n\tVariantProps<typeof buttonVariants> & {\n\t\tdisabled?: boolean;\n\t\thref: string;\n\t};\n\nfunction ButtonLink({\n\tclassName,\n\thref,\n\tvariant = \"primary\",\n\tsize,\n\tdisabled = false,\n\tonClick,\n\t...props\n}: ButtonLinkProps) {\n\tconst inheritedSize = useComponentSize();\n\tconst resolvedSize: ButtonSize = size ?? inheritedSize;\n\n\treturn (\n\t\t<a\n\t\t\tdata-slot=\"button-link\"\n\t\t\thref={href}\n\t\t\taria-disabled={disabled}\n\t\t\ttabIndex={disabled ? -1 : props.tabIndex}\n\t\t\tclassName={cn(buttonVariants({ variant, size: resolvedSize, className }))}\n\t\t\tonClick={(event) => {\n\t\t\t\tif (disabled) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tonClick?.(event);\n\t\t\t}}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Button, ButtonLink, buttonVariants };\n","\"use client\";\n\nimport { createContext, type ReactNode, useContext } from \"react\";\n\ntype ComponentSize = \"sm\" | \"md\" | \"lg\";\n\nconst SizeContext = createContext<ComponentSize | undefined>(undefined);\n\nfunction SizeProvider({\n\tchildren,\n\tsize,\n}: {\n\tchildren: ReactNode;\n\tsize?: ComponentSize | null;\n}) {\n\tif (!size) {\n\t\treturn <>{children}</>;\n\t}\n\n\treturn <SizeContext.Provider value={size}>{children}</SizeContext.Provider>;\n}\n\nfunction useComponentSize(\n\tsize?: ComponentSize | null,\n\tfallback: ComponentSize = \"md\",\n) {\n\tconst inheritedSize = useContext(SizeContext);\n\treturn size ?? inheritedSize ?? fallback;\n}\n\nexport { SizeProvider, useComponentSize, type ComponentSize };\n"],"mappings":";AAKA,SAAS,SAAS,iBAAiB;AACnC,SAAS,OAAO,MAAM,SAAS;;;ACN/B,SAA0B,YAAY;AACtC,SAAS,2BAA2B;AAEpC,IAAM,UAAU,oBAAoB;AAAA,EACnC,QAAQ;AAAA,IACP,aAAa;AAAA,MACZ,aAAa;AAAA,QACZ;AAAA,UACC,MAAM;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD,CAAC;AAEM,SAAS,MAAM,QAAsB;AAC3C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC5B;;;AC/BA,SAAS,UAAU,uBAAuB;AAC1C,SAAS,WAA8B;AACvC,SAAS,cAAc;;;ACAvB,SAAS,eAA+B,kBAAkB;AAcjD;AAVT,IAAM,cAAc,cAAyC,MAAS;AAgBtE,SAAS,iBACR,MACA,WAA0B,MACzB;AACD,QAAM,gBAAgB,WAAW,WAAW;AAC5C,SAAO,QAAQ,iBAAiB;AACjC;;;AD0CE,SAMe,OAAAA,MANf;AA/DF,IAAM,iBAAiB;AAAA,EACtB;AAAA,EACA;AAAA,IACC,UAAU;AAAA,MACT,SAAS;AAAA,QACR,SACC;AAAA,QACD,mBACC;AAAA,QACD,WACC;AAAA,QACD,qBACC;AAAA,QACD,UACC;AAAA,QACD,oBACC;AAAA,QACD,OACC;AAAA,QACD,QACC;AAAA,QACD,iBAAiB;AAAA,QACjB,cACC;AAAA,QACD,gBACC;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,WAAW;AAAA,QACX,WAAW;AAAA,QACX,WACC;AAAA,QACD,WAAW;AAAA,MACZ;AAAA,IACD;AAAA,IACA,iBAAiB;AAAA,MAChB,SAAS;AAAA,MACT,MAAM;AAAA,IACP;AAAA,EACD;AACD;AAIA,SAAS,OAAO;AAAA,EACf;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACJ,GACgE;AAC/D,QAAM,gBAAgB,iBAAiB;AACvC,QAAM,eAAe,QAAQ;AAC7B,QAAM,YAAY,YAAY;AAC9B,SACC;AAAA,IAAC;AAAA;AAAA,MACA,aAAU;AAAA,MACV,WAAW,GAAG,eAAe,EAAE,SAAS,MAAM,cAAc,UAAU,CAAC,CAAC;AAAA,MACxE,UAAU;AAAA,MACT,GAAG;AAAA,MAEH;AAAA,qBAAa,gBAAAA,KAAC,UAAO,WAAU,uBAAsB;AAAA,QAAG;AAAA,QAAE;AAAA;AAAA;AAAA,EAC5D;AAEF;;;AFAE,SAIG,OAAAC,MAJH,QAAAC,aAAA;AAhDF,IAAM,qBAAqB;AAC3B,IAAM,sBAAsB;AAKrB,IAAM,eAAe,UAAU,mBAAmB;AAElD,IAAM,QAAQ,OAAO;AAAA,EAC3B,CAAC,YAA+C,aAAa,IAAI,OAAO;AAAA,EACxE;AAAA,IACC,SAAS,CAAC,YACT,aAAa,IAAI;AAAA,MAChB,GAAG;AAAA,MACH,MAAM,EAAE,MAAM,WAAW,GAAG,QAAQ,KAAK;AAAA,IAC1C,CAAC;AAAA,IACF,MAAM,CAAC,YACN,aAAa,IAAI;AAAA,MAChB,GAAG;AAAA,MACH,MAAM,EAAE,MAAM,QAAQ,GAAG,QAAQ,KAAK;AAAA,IACvC,CAAC;AAAA,IACF,SAAS,CAAC,YACT,aAAa,IAAI;AAAA,MAChB,GAAG;AAAA,MACH,MAAM,EAAE,MAAM,WAAW,GAAG,QAAQ,KAAK;AAAA,IAC1C,CAAC;AAAA,IACF,OAAO,CAAC,YACP,aAAa,IAAI;AAAA,MAChB,GAAG;AAAA,MACH,MAAM,EAAE,MAAM,SAAS,GAAG,QAAQ,KAAK;AAAA,IACxC,CAAC;AAAA,IACF,SAAS,CAAC,YACT,aAAa,IAAI;AAAA,MAChB,GAAG;AAAA,MACH,MAAM,EAAE,MAAM,WAAW,GAAG,QAAQ,KAAK;AAAA,IAC1C,CAAC;AAAA,IACF,SAAS,CAAC,YACT,aAAa,MAAM,SAAS,SAAS,CAAC;AAAA,IACvC,QAAQ,CACP,SACA,YACI,aAAa,OAAO,QAAQ,SAAS,GAAG,OAAO;AAAA,IACpD,SAAS,aAAa;AAAA,EACvB;AACD;AAEO,SAAS,cAAc,EAAE,SAAS,GAAsB;AAC9D,SACC,gBAAAA,MAAC,UAAU,UAAV,EAAmB,OAAO,GAAG,SAAS,KAAM,cAC3C;AAAA;AAAA,IACD,gBAAAD,KAAC,UAAU,QAAV,EACA,0BAAAA,KAAC,UAAU,UAAV,EAAmB,WAAU,yDAC7B,0BAAAA,KAAC,aAAU,GACZ,GACD;AAAA,KACD;AAEF;AAEA,SAAS,YAAY;AACpB,QAAM,EAAE,OAAO,IAAI,UAAU,gBAA2B;AACxD,QAAM,kBAAkB,oBAAI,IAQ1B;AAEF,SAAO,OAAO,IAAI,CAAC,SAAS;AAC3B,UAAM,YAAY,kBAAkB,IAAI;AACxC,UAAM,QAAQ,gBAAgB,IAAI,UAAU,GAAG,KAAK;AAAA,MACnD,UAAU;AAAA,MACV,cAAc;AAAA,MACd,SAAS;AAAA,MACT,iBAAiB,KAAK;AAAA,IACvB;AACA,UAAM,iBACL,KAAK,qBAAqB,WAAW,MAAM,WAAW,MAAM;AAC7D,UAAM,QAAwB;AAAA,MAC7B,2BAA2B;AAAA,MAC3B,8BAA8B,GAAG,MAAM,OAAO;AAAA,MAC9C,sCAAsC,MAAM,kBACzC,GAAG,MAAM,eAAe,OACxB;AAAA,IACJ;AAEA,UAAM,WAAW,KAAK,UAAU;AAChC,UAAM,YAAY;AAClB,QAAI,KAAK,qBAAqB,UAAU;AACvC,YAAM,gBAAgB;AAAA,IACvB;AACA,oBAAgB,IAAI,UAAU,KAAK,KAAK;AAExC,WACC,gBAAAA;AAAA,MAAC,UAAU;AAAA,MAAV;AAAA,QAEA,OAAO;AAAA,QACP,WAAW;AAAA,UACV;AAAA,UACA,0BAA0B,SAAS;AAAA,UACnC,uBAAuB,SAAS;AAAA,UAChC,sBAAsB,UAAU,IAAI;AAAA,QACrC;AAAA,QACA,gBAAgB,mBAAmB,IAAI;AAAA,QACvC;AAAA,QAEA,0BAAAC;AAAA,UAAC,UAAU;AAAA,UAAV;AAAA,YACA,WACC;AAAA,YAGD;AAAA,8BAAAD,KAAC,aAAU,MAAM,KAAK,MAAM,MAAM;AAAA,cAClC,gBAAAC,MAAC,SAAI,WAAU,iCACb;AAAA,qBAAK,QACL,gBAAAD,KAAC,UAAU,OAAV,EAAgB,WAAU,6CAA4C,IACpE;AAAA,gBACH,KAAK,cACL,gBAAAA,KAAC,UAAU,aAAV,EAAsB,WAAU,iCAAgC,IAC9D;AAAA,gBACJ,gBAAAA;AAAA,kBAAC,UAAU;AAAA,kBAAV;AAAA,oBACA,WAAW;AAAA,sBACV;AAAA,sBACA,KAAK,MAAM,SAAS,aAAa;AAAA,sBACjC,KAAK,MAAM,SAAS,UAAU;AAAA,sBAC9B,KAAK,MAAM,SAAS,aAAa;AAAA,sBACjC,KAAK,MAAM,SAAS,WAAW;AAAA,oBAChC;AAAA;AAAA,gBACD;AAAA,iBACD;AAAA,cACA,gBAAAA;AAAA,gBAAC,UAAU;AAAA,gBAAV;AAAA,kBACA,QAAQ,gBAAAA,KAAC,UAAO,SAAQ,SAAQ,MAAK,WAAU;AAAA,kBAC/C,cAAW;AAAA,kBAEX,0BAAAA,KAAC,KAAE,WAAU,UAAS;AAAA;AAAA,cACvB;AAAA;AAAA;AAAA,QACD;AAAA;AAAA,MAxCK,KAAK;AAAA,IAyCX;AAAA,EAEF,CAAC;AACF;AAEA,SAAS,UAAU,EAAE,KAAK,GAA4B;AACrD,MAAI,CAAC,KAAM,QAAO;AAClB,SACC,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACA,WAAW;AAAA,QACV;AAAA,QACA,SAAS,aAAa;AAAA,QACtB,SAAS,UAAU;AAAA,QACnB,SAAS,aAAa;AAAA,QACtB,SAAS,WAAW;AAAA,MACrB;AAAA,MACA,eAAY;AAAA,MAEX;AAAA,iBAAS,YAAY,gBAAAD,KAAC,SAAM,MAAM,IAAI,aAAa,GAAG,IAAK;AAAA,QAC3D,SAAS,SAAS,gBAAAA,KAAC,QAAK,MAAM,IAAI,aAAa,KAAK,IAAK;AAAA,QACzD,SAAS,YACT,gBAAAA,KAAC,UAAK,WAAU,2CAA0C,eAAC,IACxD;AAAA,QACH,SAAS,UAAU,gBAAAA,KAAC,KAAE,MAAM,IAAI,aAAa,GAAG,IAAK;AAAA;AAAA;AAAA,EACvD;AAEF;AAEA,IAAM,yBACL;AAED,SAAS,kBACR,MACA,QAAQ,OACS;AACjB,QAAM,OAAO,KAAK,iBAAiB,QAAQ;AAC3C,QAAM,QAAS,KAAK,iBAAiB,SACpC;AACD,QAAM,eAAe,iBAAiB,MAAM,KAAK;AAEjD,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA,KAAK,GAAG,YAAY,IAAI,KAAK;AAAA,EAC9B;AACD;AAEA,SAAS,iBACR,MACA,OACoB;AACpB,MAAI,SAAS,aAAc,QAAO,QAAQ,SAAS;AACnD,MAAI,SAAS,eAAgB,QAAO,QAAQ,UAAU;AACtD,MACC,SAAS,SACT,SAAS,YACT,SAAS,UACT,SAAS,SACR;AACD,WAAO;AAAA,EACR;AACA,SAAO;AACR;AAEA,SAAS,0BAA0B,EAAE,MAAM,MAAM,GAAmB;AACnE,QAAM,iBAAiB,SAAS,SAAS,SAAS;AAElD,MAAI,gBAAgB;AACnB,WAAO;AAAA,MACN,SAAS,SAAS;AAAA,MAClB,SAAS,YAAY;AAAA,MACrB,UAAU,WAAW;AAAA,MACrB,UAAU,YAAY;AAAA,MACtB,UAAU,SAAS;AAAA,MACnB,SAAS,YAAY,UAAU,WAAW;AAAA,MAC1C,SAAS,YAAY,UAAU,YAAY;AAAA,MAC3C,SAAS,YAAY,UAAU,SAAS;AAAA,IACzC;AAAA,EACD;AAEA,SAAO;AAAA,IACN,SAAS,UAAU;AAAA,IACnB,SAAS,WAAW;AAAA,IACpB,UAAU,WAAW;AAAA,IACrB,UAAU,YAAY;AAAA,IACtB,UAAU,SAAS;AAAA,IACnB,SAAS,UAAU,UAAU,WAAW;AAAA,IACxC,SAAS,UAAU,UAAU,SAAS;AAAA,IACtC,SAAS,WAAW,UAAU,WAAW;AAAA,IACzC,SAAS,WAAW,UAAU,SAAS;AAAA,EACxC;AACD;AAEA,SAAS,uBAAuB,EAAE,MAAM,MAAM,GAAmB;AAChE,QAAM,WACL,SAAS,aACP,SAAS,UAAU,SAAS,YAAY,UAAU;AAErD,MAAI,UAAU;AACb,WAAO;AAAA,EACR;AAEA,SAAO;AACR;AAEA,SAAS,sBAAsB,MAAyB;AACvD,MAAI,SAAS,UAAU;AACtB,WAAO;AAAA,EACR;AACA,MAAI,SAAS,QAAQ;AACpB,WAAO;AAAA,EACR;AACA,MAAI,SAAS,SAAS;AACrB,WAAO;AAAA,EACR;AACA,SAAO;AACR;AAGA,SAAS,mBACR,MACA,QAAQ,OACP;AACD,QAAM,EAAE,MAAM,cAAc,MAAM,IAAI,kBAAkB,MAAM,KAAK;AACnE,QAAM,UACL,iBAAiB,QACd,OACA,iBAAiB,WAChB,SACA,iBAAiB,SAChB;AAAA;AAAA,IACY;AAAA;AAClB,MAAI,UAAU,SAAU,QAAO;AAC/B,QAAM,iBAAiB,iBAAiB,SAAS,iBAAiB;AAClE,QAAM,YAA4B,iBAC/B,UAAU,UACT,SACA,UACD,UAAU,UACT,OACA;AACJ,SAAO,CAAC,SAAS,SAAS;AAC3B;","names":["jsx","jsx","jsxs"]}
1
+ {"version":3,"sources":["../src/toast.tsx"],"sourcesContent":["import type {\n\tToastManagerAddOptions,\n\tToastManagerUpdateOptions,\n\tToastObject,\n} from \"@base-ui/react/toast\";\nimport { Toast as BaseToast } from \"@base-ui/react/toast\";\nimport { Check, Info, X } from \"lucide-react\";\nimport type { CSSProperties, PropsWithChildren } from \"react\";\nimport { Button } from \"./button\";\nimport { cn } from \"./lib/cn\";\n\ntype ToastVariant = \"success\" | \"info\" | \"warning\" | \"error\" | \"loading\";\ntype ResolvedToastSide = \"top\" | \"bottom\" | \"left\" | \"right\";\ntype ToastAlign = \"start\" | \"center\" | \"end\";\ntype ToastPlacement = {\n\tside: ResolvedToastSide;\n\talign: ToastAlign;\n\tkey: string;\n};\ntype ToastRootStyle = CSSProperties &\n\tRecord<\n\t\t| \"--toast-placement-index\"\n\t\t| \"--toast-placement-offset-y\"\n\t\t| \"--toast-placement-frontmost-height\",\n\t\tstring | number | undefined\n\t>;\n\ntype ToastData = {\n\ttype: ToastVariant;\n};\n\nconst DEFAULT_TOAST_SIDE = \"top\";\nconst DEFAULT_TOAST_ALIGN = \"end\";\ntype ToastSide = NonNullable<\n\tToastObject<{ type?: ToastVariant }>[\"positionerProps\"]\n>[\"side\"];\n\nexport const toastManager = BaseToast.createToastManager();\n\nexport const toast = Object.assign(\n\t(options: ToastManagerAddOptions<ToastData>) => toastManager.add(options),\n\t{\n\t\tsuccess: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"success\", ...options.data },\n\t\t\t}),\n\t\tinfo: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"info\", ...options.data },\n\t\t\t}),\n\t\twarning: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"warning\", ...options.data },\n\t\t\t}),\n\t\terror: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"error\", ...options.data },\n\t\t\t}),\n\t\tloading: (options: ToastManagerAddOptions<ToastData>) =>\n\t\t\ttoastManager.add({\n\t\t\t\t...options,\n\t\t\t\tdata: { type: \"loading\", ...options.data },\n\t\t\t}),\n\t\tdismiss: (toastId?: string | number) =>\n\t\t\ttoastManager.close(toastId?.toString()),\n\t\tupdate: (\n\t\t\ttoastId: string | number,\n\t\t\toptions: ToastManagerUpdateOptions<ToastData>,\n\t\t) => toastManager.update(toastId.toString(), options),\n\t\tpromise: toastManager.promise,\n\t},\n);\n\nexport function ToastProvider({ children }: PropsWithChildren) {\n\treturn (\n\t\t<BaseToast.Provider limit={4} timeout={5000} toastManager={toastManager}>\n\t\t\t{children}\n\t\t\t<BaseToast.Portal>\n\t\t\t\t<BaseToast.Viewport className=\"fixed inset-0 z-9999 pointer-events-none outline-none\">\n\t\t\t\t\t<ToastList />\n\t\t\t\t</BaseToast.Viewport>\n\t\t\t</BaseToast.Portal>\n\t\t</BaseToast.Provider>\n\t);\n}\n\nfunction ToastList() {\n\tconst { toasts } = BaseToast.useToastManager<ToastData>();\n\tconst placementStacks = new Map<\n\t\tstring,\n\t\t{\n\t\t\tdomIndex: number;\n\t\t\tvisibleIndex: number;\n\t\t\toffsetY: number;\n\t\t\tfrontmostHeight?: number;\n\t\t}\n\t>();\n\n\treturn toasts.map((item) => {\n\t\tconst placement = getToastPlacement(item);\n\t\tconst stack = placementStacks.get(placement.key) ?? {\n\t\t\tdomIndex: 0,\n\t\t\tvisibleIndex: 0,\n\t\t\toffsetY: 0,\n\t\t\tfrontmostHeight: item.height,\n\t\t};\n\t\tconst placementIndex =\n\t\t\titem.transitionStatus === \"ending\" ? stack.domIndex : stack.visibleIndex;\n\t\tconst style: ToastRootStyle = {\n\t\t\t\"--toast-placement-index\": placementIndex,\n\t\t\t\"--toast-placement-offset-y\": `${stack.offsetY}px`,\n\t\t\t\"--toast-placement-frontmost-height\": stack.frontmostHeight\n\t\t\t\t? `${stack.frontmostHeight}px`\n\t\t\t\t: undefined,\n\t\t};\n\n\t\tstack.offsetY += item.height ?? 0;\n\t\tstack.domIndex += 1;\n\t\tif (item.transitionStatus !== \"ending\") {\n\t\t\tstack.visibleIndex += 1;\n\t\t}\n\t\tplacementStacks.set(placement.key, stack);\n\n\t\treturn (\n\t\t\t<BaseToast.Root\n\t\t\t\tkey={item.id}\n\t\t\t\ttoast={item}\n\t\t\t\tclassName={cn(\n\t\t\t\t\ttoastRootBaseClassName,\n\t\t\t\t\tgetToastPositionClassName(placement),\n\t\t\t\t\tgetToastStackClassName(placement),\n\t\t\t\t\tgetToastExitClassName(placement.side),\n\t\t\t\t)}\n\t\t\t\tswipeDirection={getSwipeDirections(item)}\n\t\t\t\tstyle={style}\n\t\t\t>\n\t\t\t\t<BaseToast.Content\n\t\t\t\t\tclassName={\n\t\t\t\t\t\t\"grid grid-cols-[16px_minmax(0,1fr)_24px] items-start gap-3 overflow-hidden px-2.5 py-3.5 pl-3 transition-opacity duration-250 data-behind:pointer-events-none data-behind:opacity-0 data-expanded:pointer-events-auto data-expanded:opacity-100\"\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<ToastIcon type={item.data?.type} />\n\t\t\t\t\t<div className=\"min-w-0 flex flex-col gap-1.5\">\n\t\t\t\t\t\t{item.title ? (\n\t\t\t\t\t\t\t<BaseToast.Title className=\"text-gdt-sm font-semibold text-fg-primary\" />\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t{item.description ? (\n\t\t\t\t\t\t\t<BaseToast.Description className=\"text-gdt-sm text-fg-secondary\" />\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<BaseToast.Action\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\"cursor-pointer border-0 bg-transparent p-0 font-inherit text-gdt-sm font-semibold inline-flex w-fit items-center hover:underline underline-offset-2\",\n\t\t\t\t\t\t\t\titem.data?.type === \"success\" && \"text-fg-brand\",\n\t\t\t\t\t\t\t\titem.data?.type === \"info\" && \"text-fg-primary\",\n\t\t\t\t\t\t\t\titem.data?.type === \"warning\" && \"text-fg-accent\",\n\t\t\t\t\t\t\t\titem.data?.type === \"error\" && \"text-fg-danger\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<BaseToast.Close\n\t\t\t\t\t\trender={<Button variant=\"ghost\" size=\"icon-xs\" />}\n\t\t\t\t\t\taria-label=\"Close toast\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<X className=\"size-4\" />\n\t\t\t\t\t</BaseToast.Close>\n\t\t\t\t</BaseToast.Content>\n\t\t\t</BaseToast.Root>\n\t\t);\n\t});\n}\n\nfunction ToastIcon({ type }: { type?: ToastVariant }) {\n\tif (!type) return null;\n\treturn (\n\t\t<span\n\t\t\tclassName={cn(\n\t\t\t\t\"inline-flex size-5 items-center justify-center rounded-full text-canvas\",\n\t\t\t\ttype === \"success\" && \"bg-status-success\",\n\t\t\t\ttype === \"info\" && \"bg-status-info\",\n\t\t\t\ttype === \"warning\" && \"bg-status-warning text-fg-on-accent\",\n\t\t\t\ttype === \"error\" && \"bg-status-danger\",\n\t\t\t)}\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t{type === \"success\" ? <Check size={10} strokeWidth={3} /> : null}\n\t\t\t{type === \"info\" ? <Info size={11} strokeWidth={2.8} /> : null}\n\t\t\t{type === \"warning\" ? (\n\t\t\t\t<span className=\"text-[11px] leading-none font-extrabold\">!</span>\n\t\t\t) : null}\n\t\t\t{type === \"error\" ? <X size={10} strokeWidth={3} /> : null}\n\t\t</span>\n\t);\n}\n\nconst toastRootBaseClassName =\n\t\"[--gap:12px] [--peek:12px] [--anchor-x:0px] [--anchor-y:0px] [--scale:calc(max(0,1-(var(--toast-placement-index)*0.04)))] [--shrink:calc(1-var(--scale))] [--height:var(--toast-placement-frontmost-height,var(--toast-height))] absolute z-[calc(1000-var(--toast-placement-index))] h-[var(--height)] min-h-[var(--height)] w-[min(335px,calc(100vw-32px))] overflow-visible rounded-lg border border-line bg-surface-overlay text-fg-primary shadow-[var(--elevation-e2-shadow)] pointer-events-auto select-none [transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(var(--collapsed-y))_scale(var(--scale))] [transition:transform_500ms_cubic-bezier(0.22,1,0.36,1),opacity_500ms,height_150ms] after:absolute after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:pointer-events-auto after:content-[''] data-[expanded]:h-[var(--toast-height)] data-[expanded]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(var(--expanded-y))_scale(1)] data-[starting-style]:opacity-0 data-[starting-style]:[transform:translateX(var(--exit-x))_translateY(var(--exit-y))_scale(var(--scale))] data-[ending-style]:opacity-0 data-[limited]:opacity-0 [&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateX(var(--exit-x))_translateY(var(--exit-y))_scale(var(--scale))] data-[ending-style]:data-[swipe-direction=up]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)-150%))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=up]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)-150%))_scale(1)] data-[ending-style]:data-[swipe-direction=down]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)+150%))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=down]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)))_translateY(calc(var(--anchor-y)+var(--toast-swipe-movement-y)+150%))_scale(1)] data-[ending-style]:data-[swipe-direction=left]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)-150%))_translateY(var(--expanded-y))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=left]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)-150%))_translateY(var(--expanded-y))_scale(1)] data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)+150%))_translateY(var(--expanded-y))_scale(var(--scale))] data-[expanded]:data-[ending-style]:data-[swipe-direction=right]:[transform:translateX(calc(var(--anchor-x)+var(--toast-swipe-movement-x,0px)+150%))_translateY(var(--expanded-y))_scale(1)]\";\n\nfunction getToastPlacement(\n\titem: ToastObject<{ type?: ToastVariant }>,\n\tisRtl = false,\n): ToastPlacement {\n\tconst side = item.positionerProps?.side ?? DEFAULT_TOAST_SIDE;\n\tconst align = (item.positionerProps?.align ??\n\t\tDEFAULT_TOAST_ALIGN) as ToastAlign;\n\tconst resolvedSide = resolveToastSide(side, isRtl);\n\n\treturn {\n\t\tside: resolvedSide,\n\t\talign,\n\t\tkey: `${resolvedSide}:${align}`,\n\t};\n}\n\nfunction resolveToastSide(\n\tside: ToastSide | undefined,\n\tisRtl: boolean,\n): ResolvedToastSide {\n\tif (side === \"inline-end\") return isRtl ? \"left\" : \"right\";\n\tif (side === \"inline-start\") return isRtl ? \"right\" : \"left\";\n\tif (\n\t\tside === \"top\" ||\n\t\tside === \"bottom\" ||\n\t\tside === \"left\" ||\n\t\tside === \"right\"\n\t) {\n\t\treturn side;\n\t}\n\treturn DEFAULT_TOAST_SIDE;\n}\n\nfunction getToastPositionClassName({ side, align }: ToastPlacement) {\n\tconst isVerticalSide = side === \"top\" || side === \"bottom\";\n\n\tif (isVerticalSide) {\n\t\treturn cn(\n\t\t\tside === \"top\" && \"top-6 max-sm:top-4\",\n\t\t\tside === \"bottom\" && \"bottom-6 max-sm:bottom-4\",\n\t\t\talign === \"start\" && \"left-6 origin-top-left max-sm:left-4\",\n\t\t\talign === \"center\" && \"left-1/2 origin-top [--anchor-x:-50%]\",\n\t\t\talign === \"end\" && \"right-6 origin-top-right max-sm:right-4\",\n\t\t\tside === \"bottom\" && align === \"start\" && \"origin-bottom-left\",\n\t\t\tside === \"bottom\" && align === \"center\" && \"origin-bottom\",\n\t\t\tside === \"bottom\" && align === \"end\" && \"origin-bottom-right\",\n\t\t);\n\t}\n\n\treturn cn(\n\t\tside === \"left\" && \"left-6 origin-left max-sm:left-4\",\n\t\tside === \"right\" && \"right-6 origin-right max-sm:right-4\",\n\t\talign === \"start\" && \"top-6 max-sm:top-4\",\n\t\talign === \"center\" && \"top-1/2 [--anchor-y:-50%]\",\n\t\talign === \"end\" && \"bottom-6 max-sm:bottom-4\",\n\t\tside === \"left\" && align === \"start\" && \"origin-top-left\",\n\t\tside === \"left\" && align === \"end\" && \"origin-bottom-left\",\n\t\tside === \"right\" && align === \"start\" && \"origin-top-right\",\n\t\tside === \"right\" && align === \"end\" && \"origin-bottom-right\",\n\t);\n}\n\nfunction getToastStackClassName({ side, align }: ToastPlacement) {\n\tconst stacksUp =\n\t\tside === \"bottom\" ||\n\t\t((side === \"left\" || side === \"right\") && align === \"end\");\n\n\tif (stacksUp) {\n\t\treturn \"after:bottom-full [--expanded-y:calc(var(--anchor-y)+var(--toast-swipe-movement-y)-var(--toast-placement-offset-y)-(var(--toast-placement-index)*var(--gap)))] [--collapsed-y:calc(var(--anchor-y)+var(--toast-swipe-movement-y)-(var(--toast-placement-index)*var(--peek))-(var(--shrink)*var(--height)))]\";\n\t}\n\n\treturn \"after:top-full [--expanded-y:calc(var(--anchor-y)+var(--toast-placement-offset-y)+(var(--toast-placement-index)*var(--gap))+var(--toast-swipe-movement-y))] [--collapsed-y:calc(var(--anchor-y)+var(--toast-swipe-movement-y)+(var(--toast-placement-index)*var(--peek))+(var(--shrink)*var(--height)))]\";\n}\n\nfunction getToastExitClassName(side: ResolvedToastSide) {\n\tif (side === \"bottom\") {\n\t\treturn \"[--exit-x:calc(var(--anchor-x)+24px)] [--exit-y:calc(var(--anchor-y)+150%)]\";\n\t}\n\tif (side === \"left\") {\n\t\treturn \"[--exit-x:calc(var(--anchor-x)-150%)] [--exit-y:var(--anchor-y)]\";\n\t}\n\tif (side === \"right\") {\n\t\treturn \"[--exit-x:calc(var(--anchor-x)+150%)] [--exit-y:var(--anchor-y)]\";\n\t}\n\treturn \"[--exit-x:calc(var(--anchor-x)+24px)] [--exit-y:calc(var(--anchor-y)-150%)]\";\n}\n\ntype SwipeDirection = \"up\" | \"down\" | \"left\" | \"right\";\nfunction getSwipeDirections(\n\titem: ToastObject<{ type?: ToastVariant }>,\n\tisRtl = false,\n) {\n\tconst { side: resolvedSide, align } = getToastPlacement(item, isRtl);\n\tconst primary: SwipeDirection =\n\t\tresolvedSide === \"top\"\n\t\t\t? \"up\"\n\t\t\t: resolvedSide === \"bottom\"\n\t\t\t\t? \"down\"\n\t\t\t\t: resolvedSide === \"left\"\n\t\t\t\t\t? \"left\"\n\t\t\t\t\t: /* right */ \"right\";\n\tif (align === \"center\") return primary;\n\tconst isVerticalSide = resolvedSide === \"top\" || resolvedSide === \"bottom\";\n\tconst secondary: SwipeDirection = isVerticalSide\n\t\t? align === \"start\"\n\t\t\t? \"left\"\n\t\t\t: \"right\"\n\t\t: align === \"start\"\n\t\t\t? \"up\"\n\t\t\t: \"down\";\n\treturn [primary, secondary];\n}\n"],"mappings":"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","names":[]}
package/dist/tooltip.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  import * as React from 'react';
2
- import { Popover } from '@base-ui/react/popover';
2
+ import { Tooltip as Tooltip$1 } from '@base-ui/react/tooltip';
3
3
 
4
- declare function Tooltip({ ...props }: Popover.Root.Props): React.JSX.Element;
5
- declare function TooltipTrigger({ ...props }: Omit<Popover.Trigger.Props, "openOnHover">): React.JSX.Element;
6
- type TooltipContentProps = Popover.Popup.Props & Pick<Popover.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset"> & {
4
+ declare function Tooltip({ ...props }: Tooltip$1.Root.Props): React.JSX.Element;
5
+ declare function TooltipTrigger({ ...props }: Tooltip$1.Trigger.Props): React.JSX.Element;
6
+ type TooltipContentProps = Tooltip$1.Popup.Props & Pick<Tooltip$1.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset"> & Pick<Tooltip$1.Portal.Props, "container"> & {
7
7
  showArrow?: boolean;
8
8
  };
9
- declare function TooltipContent({ className, side, sideOffset, align, alignOffset, showArrow, children, ...props }: TooltipContentProps): React.JSX.Element;
9
+ declare function TooltipContent({ className, container, side, sideOffset, align, alignOffset, showArrow, children, ...props }: TooltipContentProps): React.JSX.Element;
10
10
 
11
11
  export { Tooltip, TooltipContent, TooltipTrigger };
package/dist/tooltip.js CHANGED
@@ -1,93 +1,10 @@
1
- // src/components/ui/tooltip.tsx
2
- import { Popover as PopoverPrimitive } from "@base-ui/react/popover";
3
-
4
- // src/lib/cn.ts
5
- import { clsx } from "clsx";
6
- import { extendTailwindMerge } from "tailwind-merge";
7
- var twMerge = extendTailwindMerge({
8
- extend: {
9
- classGroups: {
10
- "font-size": [
11
- {
12
- text: [
13
- "gdt-display",
14
- "gdt-h1",
15
- "gdt-h2",
16
- "gdt-h3",
17
- "gdt-h4",
18
- "gdt-h5",
19
- "gdt-xl",
20
- "gdt-lg",
21
- "gdt-md",
22
- "gdt-sm",
23
- "gdt-xs",
24
- "gdt-subtext",
25
- "gdt-capitalized"
26
- ]
27
- }
28
- ]
29
- }
30
- }
31
- });
32
- function cn(...inputs) {
33
- return twMerge(clsx(inputs));
34
- }
35
-
36
- // src/components/ui/tooltip.tsx
37
- import { jsx, jsxs } from "react/jsx-runtime";
38
- function Tooltip({ ...props }) {
39
- return /* @__PURE__ */ jsx(PopoverPrimitive.Root, { "data-slot": "tooltip", ...props });
40
- }
41
- function TooltipTrigger({
42
- ...props
43
- }) {
44
- return /* @__PURE__ */ jsx(
45
- PopoverPrimitive.Trigger,
46
- {
47
- nativeButton: false,
48
- "data-slot": "tooltip-trigger",
49
- openOnHover: true,
50
- delay: 100,
51
- ...props
52
- }
53
- );
54
- }
55
- function TooltipContent({
56
- className,
57
- side = "top",
58
- sideOffset = 6,
59
- align = "center",
60
- alignOffset = 0,
61
- showArrow = true,
62
- children,
63
- ...props
64
- }) {
65
- return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
66
- PopoverPrimitive.Positioner,
67
- {
68
- align,
69
- alignOffset,
70
- side,
71
- sideOffset,
72
- className: "isolate z-50",
73
- children: /* @__PURE__ */ jsxs(
74
- PopoverPrimitive.Popup,
75
- {
76
- "data-slot": "tooltip-content",
77
- className: cn(
78
- "z-50 relative inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-[6px] border border-line bg-surface-overlay px-3 py-2 text-gdt-sm font-medium text-fg-primary shadow-2 duration-100 has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
79
- className
80
- ),
81
- ...props,
82
- children: [
83
- children,
84
- showArrow ? /* @__PURE__ */ jsx(PopoverPrimitive.Arrow, { className: "relative block w-3 h-1.5 overflow-clip data-[side=bottom]:top-[-6px] data-[side=left]:right-[-9px] data-[side=left]:rotate-90 data-[side=right]:left-[-9px] data-[side=right]:-rotate-90 data-[side=top]:bottom-[-6px] data-[side=top]:rotate-180 before:content-[''] before:absolute before:bottom-0 before:left-1/2 before:w-[calc(6px*sqrt(2))] before:h-[calc(6px*sqrt(2))] before:bg-surface-overlay before:border before:border-line before:[transform:translate(-50%,50%)_rotate(45deg)]" }) : null
85
- ]
86
- }
87
- )
88
- }
89
- ) });
90
- }
1
+ "use client";
2
+ import {
3
+ Tooltip,
4
+ TooltipContent,
5
+ TooltipTrigger
6
+ } from "./chunk-KDPYSOYZ.js";
7
+ import "./chunk-Y4TTYVNE.js";
91
8
  export {
92
9
  Tooltip,
93
10
  TooltipContent,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ui/tooltip.tsx","../src/lib/cn.ts"],"sourcesContent":["\"use client\";\n\nimport { Popover as PopoverPrimitive } from \"@base-ui/react/popover\";\nimport { cn } from \"../../lib/cn\";\n\nfunction Tooltip({ ...props }: PopoverPrimitive.Root.Props) {\n\treturn <PopoverPrimitive.Root data-slot=\"tooltip\" {...props} />;\n}\n\nfunction TooltipTrigger({\n\t...props\n}: Omit<PopoverPrimitive.Trigger.Props, \"openOnHover\">) {\n\treturn (\n\t\t<PopoverPrimitive.Trigger\n\t\t\tnativeButton={false}\n\t\t\tdata-slot=\"tooltip-trigger\"\n\t\t\topenOnHover={true}\n\t\t\tdelay={100}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\ntype TooltipContentProps = PopoverPrimitive.Popup.Props &\n\tPick<\n\t\tPopoverPrimitive.Positioner.Props,\n\t\t\"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n\t> & {\n\t\tshowArrow?: boolean;\n\t};\n\nfunction TooltipContent({\n\tclassName,\n\tside = \"top\",\n\tsideOffset = 6,\n\talign = \"center\",\n\talignOffset = 0,\n\tshowArrow = true,\n\tchildren,\n\t...props\n}: TooltipContentProps) {\n\treturn (\n\t\t<PopoverPrimitive.Portal>\n\t\t\t<PopoverPrimitive.Positioner\n\t\t\t\talign={align}\n\t\t\t\talignOffset={alignOffset}\n\t\t\t\tside={side}\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t\tclassName=\"isolate z-50\"\n\t\t\t>\n\t\t\t\t<PopoverPrimitive.Popup\n\t\t\t\t\tdata-slot=\"tooltip-content\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"z-50 relative inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-[6px] border border-line bg-surface-overlay px-3 py-2 text-gdt-sm font-medium text-fg-primary shadow-2 duration-100 has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t\t{showArrow ? (\n\t\t\t\t\t\t<PopoverPrimitive.Arrow className=\"relative block w-3 h-1.5 overflow-clip data-[side=bottom]:top-[-6px] data-[side=left]:right-[-9px] data-[side=left]:rotate-90 data-[side=right]:left-[-9px] data-[side=right]:-rotate-90 data-[side=top]:bottom-[-6px] data-[side=top]:rotate-180 before:content-[''] before:absolute before:bottom-0 before:left-1/2 before:w-[calc(6px*sqrt(2))] before:h-[calc(6px*sqrt(2))] before:bg-surface-overlay before:border before:border-line before:[transform:translate(-50%,50%)_rotate(45deg)]\" />\n\t\t\t\t\t) : null}\n\t\t\t\t</PopoverPrimitive.Popup>\n\t\t\t</PopoverPrimitive.Positioner>\n\t\t</PopoverPrimitive.Portal>\n\t);\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({\n\textend: {\n\t\tclassGroups: {\n\t\t\t\"font-size\": [\n\t\t\t\t{\n\t\t\t\t\ttext: [\n\t\t\t\t\t\t\"gdt-display\",\n\t\t\t\t\t\t\"gdt-h1\",\n\t\t\t\t\t\t\"gdt-h2\",\n\t\t\t\t\t\t\"gdt-h3\",\n\t\t\t\t\t\t\"gdt-h4\",\n\t\t\t\t\t\t\"gdt-h5\",\n\t\t\t\t\t\t\"gdt-xl\",\n\t\t\t\t\t\t\"gdt-lg\",\n\t\t\t\t\t\t\"gdt-md\",\n\t\t\t\t\t\t\"gdt-sm\",\n\t\t\t\t\t\t\"gdt-xs\",\n\t\t\t\t\t\t\"gdt-subtext\",\n\t\t\t\t\t\t\"gdt-capitalized\",\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t},\n});\n\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n"],"mappings":";AAEA,SAAS,WAAW,wBAAwB;;;ACF5C,SAA0B,YAAY;AACtC,SAAS,2BAA2B;AAEpC,IAAM,UAAU,oBAAoB;AAAA,EACnC,QAAQ;AAAA,IACP,aAAa;AAAA,MACZ,aAAa;AAAA,QACZ;AAAA,UACC,MAAM;AAAA,YACL;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD,CAAC;AAEM,SAAS,MAAM,QAAsB;AAC3C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC5B;;;ADzBQ,cA4CJ,YA5CI;AADR,SAAS,QAAQ,EAAE,GAAG,MAAM,GAAgC;AAC3D,SAAO,oBAAC,iBAAiB,MAAjB,EAAsB,aAAU,WAAW,GAAG,OAAO;AAC9D;AAEA,SAAS,eAAe;AAAA,EACvB,GAAG;AACJ,GAAwD;AACvD,SACC;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACA,cAAc;AAAA,MACd,aAAU;AAAA,MACV,aAAa;AAAA,MACb,OAAO;AAAA,MACN,GAAG;AAAA;AAAA,EACL;AAEF;AAUA,SAAS,eAAe;AAAA,EACvB;AAAA,EACA,OAAO;AAAA,EACP,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,YAAY;AAAA,EACZ;AAAA,EACA,GAAG;AACJ,GAAwB;AACvB,SACC,oBAAC,iBAAiB,QAAjB,EACA;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAU;AAAA,MAEV;AAAA,QAAC,iBAAiB;AAAA,QAAjB;AAAA,UACA,aAAU;AAAA,UACV,WAAW;AAAA,YACV;AAAA,YACA;AAAA,UACD;AAAA,UACC,GAAG;AAAA,UAEH;AAAA;AAAA,YACA,YACA,oBAAC,iBAAiB,OAAjB,EAAuB,WAAU,meAAke,IACjgB;AAAA;AAAA;AAAA,MACL;AAAA;AAAA,EACD,GACD;AAEF;","names":[]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}