@giddaa-housing/ui 1.0.0 → 1.2.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 (331) hide show
  1. package/css/generated/shared.css +1 -1
  2. package/css/giddaa.css +12 -2
  3. package/dist/accordion.d.ts +9 -10
  4. package/dist/accordion.js +41 -87
  5. package/dist/activity-timeline.d.ts +12 -16
  6. package/dist/activity-timeline.js +83 -198
  7. package/dist/alert.d.ts +8 -9
  8. package/dist/alert.js +53 -111
  9. package/dist/auth-layout.d.ts +4 -4
  10. package/dist/auth-layout.js +143 -294
  11. package/dist/avatar.d.ts +6 -6
  12. package/dist/avatar.js +49 -19
  13. package/dist/badge.d.ts +12 -14
  14. package/dist/badge.js +71 -11
  15. package/dist/bar-chart.d.ts +65 -67
  16. package/dist/bar-chart.js +232 -207
  17. package/dist/breadcrumb.d.ts +5 -5
  18. package/dist/breadcrumb.js +56 -118
  19. package/dist/bullet-chart.d.ts +41 -37
  20. package/dist/bullet-chart.js +125 -148
  21. package/dist/button-BZIeyUw6.d.ts +17 -0
  22. package/dist/button-group.d.ts +13 -16
  23. package/dist/button-group.js +39 -88
  24. package/dist/button.d.ts +2 -19
  25. package/dist/button.js +94 -13
  26. package/dist/calendar.d.ts +6 -6
  27. package/dist/calendar.js +138 -17
  28. package/dist/card.d.ts +14 -16
  29. package/dist/card.js +59 -145
  30. package/dist/carousel.d.ts +34 -35
  31. package/dist/carousel.js +335 -20
  32. package/dist/chart.d.ts +90 -63
  33. package/dist/chart.js +573 -28
  34. package/dist/checkbox.d.ts +10 -12
  35. package/dist/checkbox.js +82 -47
  36. package/dist/cn-BI_4DMBf.js +23 -0
  37. package/dist/collapsible.d.ts +7 -8
  38. package/dist/collapsible.js +22 -47
  39. package/dist/combobox.d.ts +10 -10
  40. package/dist/combobox.js +236 -44
  41. package/dist/cta.d.ts +12 -14
  42. package/dist/cta.js +175 -341
  43. package/dist/currency-selector.d.ts +31 -32
  44. package/dist/currency-selector.js +106 -184
  45. package/dist/data-table.d.ts +168 -0
  46. package/dist/data-table.js +676 -0
  47. package/dist/date-picker.d.ts +22 -23
  48. package/dist/date-picker.js +119 -192
  49. package/dist/details-card.d.ts +7 -7
  50. package/dist/details-card.js +104 -253
  51. package/dist/dialog.d.ts +13 -14
  52. package/dist/dialog.js +116 -209
  53. package/dist/dropdown-menu.d.ts +13 -13
  54. package/dist/dropdown-menu.js +180 -37
  55. package/dist/dropzone.d.ts +55 -55
  56. package/dist/dropzone.js +327 -439
  57. package/dist/editorial-card.d.ts +23 -25
  58. package/dist/editorial-card.js +129 -296
  59. package/dist/empty-state.d.ts +8 -9
  60. package/dist/empty-state.js +48 -105
  61. package/dist/field.d.ts +23 -25
  62. package/dist/field.js +110 -221
  63. package/dist/filter.d.ts +118 -0
  64. package/dist/filter.js +775 -0
  65. package/dist/footer.d.ts +8 -15
  66. package/dist/footer.js +197 -400
  67. package/dist/funnel-chart.d.ts +49 -48
  68. package/dist/funnel-chart.js +170 -189
  69. package/dist/gallery-indicator.d.ts +11 -12
  70. package/dist/gallery-indicator.js +75 -12
  71. package/dist/heatmap-chart.d.ts +47 -50
  72. package/dist/heatmap-chart.js +186 -237
  73. package/dist/infotip.d.ts +8 -9
  74. package/dist/infotip.js +33 -59
  75. package/dist/input-CfoEJ8A6.d.ts +12 -0
  76. package/dist/input-group.d.ts +16 -20
  77. package/dist/input-group.js +99 -23
  78. package/dist/input-size-context-C-SFx9sx.d.ts +10 -0
  79. package/dist/input-size-context.d.ts +2 -11
  80. package/dist/input-size-context.js +17 -9
  81. package/dist/input.d.ts +2 -13
  82. package/dist/input.js +27 -11
  83. package/dist/item.d.ts +7 -8
  84. package/dist/item.js +22 -59
  85. package/dist/kpi-card.d.ts +18 -20
  86. package/dist/kpi-card.js +84 -192
  87. package/dist/label.d.ts +6 -6
  88. package/dist/label.js +40 -8
  89. package/dist/line-chart.d.ts +200 -129
  90. package/dist/line-chart.js +330 -105
  91. package/dist/list-item.d.ts +22 -0
  92. package/dist/list-item.js +84 -0
  93. package/dist/logo.d.ts +4 -4
  94. package/dist/logo.js +92 -9
  95. package/dist/map-indicator.d.ts +7 -7
  96. package/dist/map-indicator.js +80 -106
  97. package/dist/match.d.ts +10 -11
  98. package/dist/match.js +62 -107
  99. package/dist/media-gallery-hero.d.ts +40 -42
  100. package/dist/media-gallery-hero.js +182 -343
  101. package/dist/media-player.d.ts +17 -17
  102. package/dist/media-player.js +873 -1348
  103. package/dist/multi-step-form.d.ts +56 -0
  104. package/dist/multi-step-form.js +342 -0
  105. package/dist/number-input.d.ts +34 -34
  106. package/dist/number-input.js +64 -117
  107. package/dist/page-header.d.ts +10 -11
  108. package/dist/page-header.js +34 -79
  109. package/dist/pagination.d.ts +17 -21
  110. package/dist/pagination.js +132 -207
  111. package/dist/password-input.d.ts +5 -13
  112. package/dist/password-input.js +31 -55
  113. package/dist/phone-input.d.ts +19 -20
  114. package/dist/phone-input.js +226 -344
  115. package/dist/photo-gallery.d.ts +19 -19
  116. package/dist/photo-gallery.js +313 -449
  117. package/dist/picker-lzgmsNfG.js +32 -0
  118. package/dist/pie-chart.d.ts +121 -90
  119. package/dist/pie-chart.js +183 -149
  120. package/dist/popover.d.ts +9 -9
  121. package/dist/popover.js +72 -23
  122. package/dist/price-tag.d.ts +26 -27
  123. package/dist/price-tag.js +113 -173
  124. package/dist/progress.d.ts +16 -17
  125. package/dist/progress.js +169 -24
  126. package/dist/property-listing-card.d.ts +14 -17
  127. package/dist/property-listing-card.js +102 -220
  128. package/dist/purchase-option-card.d.ts +79 -0
  129. package/dist/purchase-option-card.js +176 -0
  130. package/dist/radar-chart.d.ts +29 -31
  131. package/dist/radar-chart.js +162 -137
  132. package/dist/radio-group.d.ts +11 -13
  133. package/dist/radio-group.js +46 -60
  134. package/dist/review-block.d.ts +14 -16
  135. package/dist/review-block.js +154 -10
  136. package/dist/rich-text-editor.d.ts +30 -14
  137. package/dist/rich-text-editor.js +592 -716
  138. package/dist/scatter-chart.d.ts +45 -47
  139. package/dist/scatter-chart.js +236 -240
  140. package/dist/search-input.d.ts +8 -16
  141. package/dist/search-input.js +57 -109
  142. package/dist/select.d.ts +8 -8
  143. package/dist/select.js +144 -27
  144. package/dist/separator.d.ts +8 -9
  145. package/dist/separator.js +32 -8
  146. package/dist/sheet.d.ts +11 -11
  147. package/dist/sheet.js +103 -24
  148. package/dist/sidebar.d.ts +32 -37
  149. package/dist/sidebar.js +364 -634
  150. package/dist/size-context-D4mYvcg8.d.ts +10 -0
  151. package/dist/size-context.d.ts +2 -11
  152. package/dist/size-context.js +17 -9
  153. package/dist/skeleton.d.ts +4 -5
  154. package/dist/skeleton.js +12 -8
  155. package/dist/slider.d.ts +8 -9
  156. package/dist/slider.js +64 -135
  157. package/dist/sparkline.d.ts +68 -58
  158. package/dist/sparkline.js +315 -251
  159. package/dist/stepper.d.ts +23 -24
  160. package/dist/stepper.js +149 -246
  161. package/dist/styles.css +1004 -116
  162. package/dist/switch.d.ts +10 -12
  163. package/dist/switch.js +48 -70
  164. package/dist/table-card.d.ts +35 -0
  165. package/dist/table-card.js +125 -0
  166. package/dist/table.d.ts +18 -14
  167. package/dist/table.js +117 -154
  168. package/dist/tabs.d.ts +33 -15
  169. package/dist/tabs.js +110 -18
  170. package/dist/tag.d.ts +21 -23
  171. package/dist/tag.js +103 -159
  172. package/dist/testimonial-block.d.ts +18 -19
  173. package/dist/testimonial-block.js +189 -358
  174. package/dist/textarea-IS_D8pXf.d.ts +11 -0
  175. package/dist/textarea.d.ts +2 -12
  176. package/dist/textarea.js +24 -11
  177. package/dist/time-picker.d.ts +11 -11
  178. package/dist/time-picker.js +245 -302
  179. package/dist/toast.d.ts +16 -18
  180. package/dist/toast.js +154 -205
  181. package/dist/tooltip.d.ts +8 -9
  182. package/dist/tooltip.js +37 -12
  183. package/dist/tree-map.d.ts +59 -62
  184. package/dist/tree-map.js +226 -269
  185. package/dist/use-uncontrolled-CLfM1XbB.js +21 -0
  186. package/dist/waterfall-chart.d.ts +94 -97
  187. package/dist/waterfall-chart.js +455 -552
  188. package/package.json +36 -9
  189. package/dist/accordion.js.map +0 -1
  190. package/dist/activity-timeline.js.map +0 -1
  191. package/dist/alert.js.map +0 -1
  192. package/dist/auth-layout.js.map +0 -1
  193. package/dist/avatar.js.map +0 -1
  194. package/dist/badge.js.map +0 -1
  195. package/dist/bar-chart.js.map +0 -1
  196. package/dist/breadcrumb.js.map +0 -1
  197. package/dist/bullet-chart.js.map +0 -1
  198. package/dist/button-group.js.map +0 -1
  199. package/dist/button.js.map +0 -1
  200. package/dist/calendar.js.map +0 -1
  201. package/dist/card.js.map +0 -1
  202. package/dist/carousel.js.map +0 -1
  203. package/dist/chart.js.map +0 -1
  204. package/dist/checkbox.js.map +0 -1
  205. package/dist/chunk-322YCNVL.js +0 -278
  206. package/dist/chunk-322YCNVL.js.map +0 -1
  207. package/dist/chunk-3ACQVT7A.js +0 -25
  208. package/dist/chunk-3ACQVT7A.js.map +0 -1
  209. package/dist/chunk-3T65TLJX.js +0 -334
  210. package/dist/chunk-3T65TLJX.js.map +0 -1
  211. package/dist/chunk-6ZSGQHH2.js +0 -192
  212. package/dist/chunk-6ZSGQHH2.js.map +0 -1
  213. package/dist/chunk-7TBMLFGW.js +0 -41
  214. package/dist/chunk-7TBMLFGW.js.map +0 -1
  215. package/dist/chunk-B4H6RNDH.js +0 -135
  216. package/dist/chunk-B4H6RNDH.js.map +0 -1
  217. package/dist/chunk-BUXCGZ6X.js +0 -219
  218. package/dist/chunk-BUXCGZ6X.js.map +0 -1
  219. package/dist/chunk-CHII2QHH.js +0 -58
  220. package/dist/chunk-CHII2QHH.js.map +0 -1
  221. package/dist/chunk-DMNOXRRW.js +0 -147
  222. package/dist/chunk-DMNOXRRW.js.map +0 -1
  223. package/dist/chunk-EFSOSSIC.js +0 -130
  224. package/dist/chunk-EFSOSSIC.js.map +0 -1
  225. package/dist/chunk-FZDSVMKY.js +0 -363
  226. package/dist/chunk-FZDSVMKY.js.map +0 -1
  227. package/dist/chunk-GJOFIJS3.js +0 -246
  228. package/dist/chunk-GJOFIJS3.js.map +0 -1
  229. package/dist/chunk-HL3ZSYES.js +0 -23
  230. package/dist/chunk-HL3ZSYES.js.map +0 -1
  231. package/dist/chunk-JVLUBAPB.js +0 -129
  232. package/dist/chunk-JVLUBAPB.js.map +0 -1
  233. package/dist/chunk-KDPYSOYZ.js +0 -64
  234. package/dist/chunk-KDPYSOYZ.js.map +0 -1
  235. package/dist/chunk-KSMDANKI.js +0 -43
  236. package/dist/chunk-KSMDANKI.js.map +0 -1
  237. package/dist/chunk-MEKCCOP5.js +0 -46
  238. package/dist/chunk-MEKCCOP5.js.map +0 -1
  239. package/dist/chunk-NOFXVRWL.js +0 -451
  240. package/dist/chunk-NOFXVRWL.js.map +0 -1
  241. package/dist/chunk-PC5MHNVA.js +0 -171
  242. package/dist/chunk-PC5MHNVA.js.map +0 -1
  243. package/dist/chunk-QKAQZ2GU.js +0 -122
  244. package/dist/chunk-QKAQZ2GU.js.map +0 -1
  245. package/dist/chunk-QZHSHSVV.js +0 -26
  246. package/dist/chunk-QZHSHSVV.js.map +0 -1
  247. package/dist/chunk-RBMK26XD.js +0 -19
  248. package/dist/chunk-RBMK26XD.js.map +0 -1
  249. package/dist/chunk-SFNJGF6M.js +0 -262
  250. package/dist/chunk-SFNJGF6M.js.map +0 -1
  251. package/dist/chunk-UJJNLGTM.js +0 -112
  252. package/dist/chunk-UJJNLGTM.js.map +0 -1
  253. package/dist/chunk-VGR4ZWJ3.js +0 -418
  254. package/dist/chunk-VGR4ZWJ3.js.map +0 -1
  255. package/dist/chunk-XG47P6D4.js +0 -99
  256. package/dist/chunk-XG47P6D4.js.map +0 -1
  257. package/dist/chunk-XZZAHNVM.js +0 -21
  258. package/dist/chunk-XZZAHNVM.js.map +0 -1
  259. package/dist/chunk-Y4TTYVNE.js +0 -36
  260. package/dist/chunk-Y4TTYVNE.js.map +0 -1
  261. package/dist/chunk-YDWIHW6Q.js +0 -69
  262. package/dist/chunk-YDWIHW6Q.js.map +0 -1
  263. package/dist/collapsible.js.map +0 -1
  264. package/dist/combobox.js.map +0 -1
  265. package/dist/cta.js.map +0 -1
  266. package/dist/currency-selector.js.map +0 -1
  267. package/dist/date-picker.js.map +0 -1
  268. package/dist/details-card.js.map +0 -1
  269. package/dist/dialog.js.map +0 -1
  270. package/dist/dropdown-menu.js.map +0 -1
  271. package/dist/dropzone.js.map +0 -1
  272. package/dist/editorial-card.js.map +0 -1
  273. package/dist/empty-state.js.map +0 -1
  274. package/dist/field.js.map +0 -1
  275. package/dist/footer.js.map +0 -1
  276. package/dist/funnel-chart.js.map +0 -1
  277. package/dist/gallery-indicator.js.map +0 -1
  278. package/dist/heatmap-chart.js.map +0 -1
  279. package/dist/infotip.js.map +0 -1
  280. package/dist/input-group.js.map +0 -1
  281. package/dist/input-size-context.js.map +0 -1
  282. package/dist/input.js.map +0 -1
  283. package/dist/item.js.map +0 -1
  284. package/dist/kpi-card.js.map +0 -1
  285. package/dist/label.js.map +0 -1
  286. package/dist/line-chart.js.map +0 -1
  287. package/dist/logo.js.map +0 -1
  288. package/dist/map-indicator.js.map +0 -1
  289. package/dist/match.js.map +0 -1
  290. package/dist/media-gallery-hero.js.map +0 -1
  291. package/dist/media-player.js.map +0 -1
  292. package/dist/number-input.js.map +0 -1
  293. package/dist/page-header.js.map +0 -1
  294. package/dist/pagination.js.map +0 -1
  295. package/dist/password-input.js.map +0 -1
  296. package/dist/phone-input.js.map +0 -1
  297. package/dist/photo-gallery.js.map +0 -1
  298. package/dist/pie-chart.js.map +0 -1
  299. package/dist/popover.js.map +0 -1
  300. package/dist/price-tag.js.map +0 -1
  301. package/dist/progress.js.map +0 -1
  302. package/dist/property-listing-card.js.map +0 -1
  303. package/dist/radar-chart.js.map +0 -1
  304. package/dist/radio-group.js.map +0 -1
  305. package/dist/review-block.js.map +0 -1
  306. package/dist/rich-text-editor.js.map +0 -1
  307. package/dist/scatter-chart.js.map +0 -1
  308. package/dist/search-input.js.map +0 -1
  309. package/dist/select.js.map +0 -1
  310. package/dist/separator.js.map +0 -1
  311. package/dist/sheet.js.map +0 -1
  312. package/dist/sidebar.js.map +0 -1
  313. package/dist/size-context.js.map +0 -1
  314. package/dist/skeleton.js.map +0 -1
  315. package/dist/slider.js.map +0 -1
  316. package/dist/sparkline.js.map +0 -1
  317. package/dist/stepper.js.map +0 -1
  318. package/dist/switch.js.map +0 -1
  319. package/dist/tab-list.d.ts +0 -38
  320. package/dist/tab-list.js +0 -123
  321. package/dist/tab-list.js.map +0 -1
  322. package/dist/table.js.map +0 -1
  323. package/dist/tabs.js.map +0 -1
  324. package/dist/tag.js.map +0 -1
  325. package/dist/testimonial-block.js.map +0 -1
  326. package/dist/textarea.js.map +0 -1
  327. package/dist/time-picker.js.map +0 -1
  328. package/dist/toast.js.map +0 -1
  329. package/dist/tooltip.js.map +0 -1
  330. package/dist/tree-map.js.map +0 -1
  331. package/dist/waterfall-chart.js.map +0 -1
package/dist/toast.js CHANGED
@@ -1,225 +1,174 @@
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
10
- import { Toast as BaseToast } from "@base-ui/react/toast";
1
+ import { t as cn } from "./cn-BI_4DMBf.js";
2
+ import { Button } from "./button.js";
11
3
  import { Check, Info, X } from "lucide-react";
12
4
  import { jsx, jsxs } from "react/jsx-runtime";
13
- var DEFAULT_TOAST_SIDE = "top";
14
- var DEFAULT_TOAST_ALIGN = "end";
15
- var toastManager = BaseToast.createToastManager();
16
- var toast = Object.assign(
17
- (options) => toastManager.add(options),
18
- {
19
- success: (options) => toastManager.add({
20
- ...options,
21
- data: { type: "success", ...options.data }
22
- }),
23
- info: (options) => toastManager.add({
24
- ...options,
25
- data: { type: "info", ...options.data }
26
- }),
27
- warning: (options) => toastManager.add({
28
- ...options,
29
- data: { type: "warning", ...options.data }
30
- }),
31
- error: (options) => toastManager.add({
32
- ...options,
33
- data: { type: "error", ...options.data }
34
- }),
35
- loading: (options) => toastManager.add({
36
- ...options,
37
- data: { type: "loading", ...options.data }
38
- }),
39
- dismiss: (toastId) => toastManager.close(toastId?.toString()),
40
- update: (toastId, options) => toastManager.update(toastId.toString(), options),
41
- promise: toastManager.promise
42
- }
43
- );
5
+ import { Toast } from "@base-ui/react/toast";
6
+ //#region src/toast.tsx
7
+ const DEFAULT_TOAST_SIDE = "top";
8
+ const DEFAULT_TOAST_ALIGN = "end";
9
+ const toastManager = Toast.createToastManager();
10
+ const toast = Object.assign((options) => toastManager.add(options), {
11
+ success: (options) => toastManager.add({
12
+ ...options,
13
+ data: {
14
+ type: "success",
15
+ ...options.data
16
+ }
17
+ }),
18
+ info: (options) => toastManager.add({
19
+ ...options,
20
+ data: {
21
+ type: "info",
22
+ ...options.data
23
+ }
24
+ }),
25
+ warning: (options) => toastManager.add({
26
+ ...options,
27
+ data: {
28
+ type: "warning",
29
+ ...options.data
30
+ }
31
+ }),
32
+ error: (options) => toastManager.add({
33
+ ...options,
34
+ data: {
35
+ type: "error",
36
+ ...options.data
37
+ }
38
+ }),
39
+ loading: (options) => toastManager.add({
40
+ ...options,
41
+ data: {
42
+ type: "loading",
43
+ ...options.data
44
+ }
45
+ }),
46
+ dismiss: (toastId) => toastManager.close(toastId?.toString()),
47
+ update: (toastId, options) => toastManager.update(toastId.toString(), options),
48
+ promise: toastManager.promise
49
+ });
44
50
  function ToastProvider({ children }) {
45
- return /* @__PURE__ */ jsxs(BaseToast.Provider, { limit: 4, timeout: 5e3, toastManager, children: [
46
- children,
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, {}) }) })
48
- ] });
51
+ return /* @__PURE__ */ jsxs(Toast.Provider, {
52
+ limit: 4,
53
+ timeout: 5e3,
54
+ toastManager,
55
+ children: [children, /* @__PURE__ */ jsx(Toast.Portal, { children: /* @__PURE__ */ jsx(Toast.Viewport, {
56
+ className: "fixed inset-0 z-9999 pointer-events-none outline-none",
57
+ children: /* @__PURE__ */ jsx(ToastList, {})
58
+ }) })]
59
+ });
49
60
  }
50
61
  function ToastList() {
51
- const { toasts } = BaseToast.useToastManager();
52
- const placementStacks = /* @__PURE__ */ new Map();
53
- return toasts.map((item) => {
54
- const placement = getToastPlacement(item);
55
- const stack = placementStacks.get(placement.key) ?? {
56
- domIndex: 0,
57
- visibleIndex: 0,
58
- offsetY: 0,
59
- frontmostHeight: item.height
60
- };
61
- const placementIndex = item.transitionStatus === "ending" ? stack.domIndex : stack.visibleIndex;
62
- const style = {
63
- "--toast-placement-index": placementIndex,
64
- "--toast-placement-offset-y": `${stack.offsetY}px`,
65
- "--toast-placement-frontmost-height": stack.frontmostHeight ? `${stack.frontmostHeight}px` : void 0
66
- };
67
- stack.offsetY += item.height ?? 0;
68
- stack.domIndex += 1;
69
- if (item.transitionStatus !== "ending") {
70
- stack.visibleIndex += 1;
71
- }
72
- placementStacks.set(placement.key, stack);
73
- return /* @__PURE__ */ jsx(
74
- BaseToast.Root,
75
- {
76
- toast: item,
77
- className: cn(
78
- toastRootBaseClassName,
79
- getToastPositionClassName(placement),
80
- getToastStackClassName(placement),
81
- getToastExitClassName(placement.side)
82
- ),
83
- swipeDirection: getSwipeDirections(item),
84
- style,
85
- children: /* @__PURE__ */ jsxs(
86
- BaseToast.Content,
87
- {
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",
89
- children: [
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(
95
- BaseToast.Action,
96
- {
97
- className: cn(
98
- "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",
99
- item.data?.type === "success" && "text-fg-brand",
100
- item.data?.type === "info" && "text-fg-primary",
101
- item.data?.type === "warning" && "text-fg-accent",
102
- item.data?.type === "error" && "text-fg-danger"
103
- )
104
- }
105
- )
106
- ] }),
107
- /* @__PURE__ */ jsx(
108
- BaseToast.Close,
109
- {
110
- render: /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon-xs" }),
111
- "aria-label": "Close toast",
112
- children: /* @__PURE__ */ jsx(X, { className: "size-4" })
113
- }
114
- )
115
- ]
116
- }
117
- )
118
- },
119
- item.id
120
- );
121
- });
62
+ const { toasts } = Toast.useToastManager();
63
+ const placementStacks = /* @__PURE__ */ new Map();
64
+ return toasts.map((item) => {
65
+ const placement = getToastPlacement(item);
66
+ const stack = placementStacks.get(placement.key) ?? {
67
+ domIndex: 0,
68
+ visibleIndex: 0,
69
+ offsetY: 0,
70
+ frontmostHeight: item.height
71
+ };
72
+ const style = {
73
+ "--toast-placement-index": item.transitionStatus === "ending" ? stack.domIndex : stack.visibleIndex,
74
+ "--toast-placement-offset-y": `${stack.offsetY}px`,
75
+ "--toast-placement-frontmost-height": stack.frontmostHeight ? `${stack.frontmostHeight}px` : void 0
76
+ };
77
+ stack.offsetY += item.height ?? 0;
78
+ stack.domIndex += 1;
79
+ if (item.transitionStatus !== "ending") stack.visibleIndex += 1;
80
+ placementStacks.set(placement.key, stack);
81
+ return /* @__PURE__ */ jsx(Toast.Root, {
82
+ toast: item,
83
+ className: cn(toastRootBaseClassName, getToastPositionClassName(placement), getToastStackClassName(placement), getToastExitClassName(placement.side)),
84
+ swipeDirection: getSwipeDirections(item),
85
+ style,
86
+ children: /* @__PURE__ */ jsxs(Toast.Content, {
87
+ 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",
88
+ children: [
89
+ /* @__PURE__ */ jsx(ToastIcon, { type: item.data?.type }),
90
+ /* @__PURE__ */ jsxs("div", {
91
+ className: "min-w-0 flex flex-col gap-1.5",
92
+ children: [
93
+ item.title ? /* @__PURE__ */ jsx(Toast.Title, { className: "text-gdt-sm font-semibold text-fg-primary" }) : null,
94
+ item.description ? /* @__PURE__ */ jsx(Toast.Description, { className: "text-gdt-sm text-fg-secondary" }) : null,
95
+ /* @__PURE__ */ jsx(Toast.Action, { className: cn("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", item.data?.type === "success" && "text-fg-brand", item.data?.type === "info" && "text-fg-primary", item.data?.type === "warning" && "text-fg-accent", item.data?.type === "error" && "text-fg-danger") })
96
+ ]
97
+ }),
98
+ /* @__PURE__ */ jsx(Toast.Close, {
99
+ render: /* @__PURE__ */ jsx(Button, {
100
+ variant: "ghost",
101
+ size: "icon-xs"
102
+ }),
103
+ "aria-label": "Close toast",
104
+ children: /* @__PURE__ */ jsx(X, { className: "size-4" })
105
+ })
106
+ ]
107
+ })
108
+ }, item.id);
109
+ });
122
110
  }
123
111
  function ToastIcon({ type }) {
124
- if (!type) return null;
125
- return /* @__PURE__ */ jsxs(
126
- "span",
127
- {
128
- className: cn(
129
- "inline-flex size-5 items-center justify-center rounded-full text-canvas",
130
- type === "success" && "bg-status-success",
131
- type === "info" && "bg-status-info",
132
- type === "warning" && "bg-status-warning text-fg-on-accent",
133
- type === "error" && "bg-status-danger"
134
- ),
135
- "aria-hidden": "true",
136
- children: [
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
141
- ]
142
- }
143
- );
112
+ if (!type) return null;
113
+ return /* @__PURE__ */ jsxs("span", {
114
+ className: cn("inline-flex size-5 items-center justify-center rounded-full text-canvas", type === "success" && "bg-status-success", type === "info" && "bg-status-info", type === "warning" && "bg-status-warning text-fg-on-accent", type === "error" && "bg-status-danger"),
115
+ "aria-hidden": "true",
116
+ children: [
117
+ type === "success" ? /* @__PURE__ */ jsx(Check, {
118
+ size: 10,
119
+ strokeWidth: 3
120
+ }) : null,
121
+ type === "info" ? /* @__PURE__ */ jsx(Info, {
122
+ size: 11,
123
+ strokeWidth: 2.8
124
+ }) : null,
125
+ type === "warning" ? /* @__PURE__ */ jsx("span", {
126
+ className: "text-[11px] leading-none font-extrabold",
127
+ children: "!"
128
+ }) : null,
129
+ type === "error" ? /* @__PURE__ */ jsx(X, {
130
+ size: 10,
131
+ strokeWidth: 3
132
+ }) : null
133
+ ]
134
+ });
144
135
  }
145
- var toastRootBaseClassName = "[--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)]";
136
+ const toastRootBaseClassName = "[--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)]";
146
137
  function getToastPlacement(item, isRtl = false) {
147
- const side = item.positionerProps?.side ?? DEFAULT_TOAST_SIDE;
148
- const align = item.positionerProps?.align ?? DEFAULT_TOAST_ALIGN;
149
- const resolvedSide = resolveToastSide(side, isRtl);
150
- return {
151
- side: resolvedSide,
152
- align,
153
- key: `${resolvedSide}:${align}`
154
- };
138
+ const side = item.positionerProps?.side ?? DEFAULT_TOAST_SIDE;
139
+ const align = item.positionerProps?.align ?? DEFAULT_TOAST_ALIGN;
140
+ const resolvedSide = resolveToastSide(side, isRtl);
141
+ return {
142
+ side: resolvedSide,
143
+ align,
144
+ key: `${resolvedSide}:${align}`
145
+ };
155
146
  }
156
147
  function resolveToastSide(side, isRtl) {
157
- if (side === "inline-end") return isRtl ? "left" : "right";
158
- if (side === "inline-start") return isRtl ? "right" : "left";
159
- if (side === "top" || side === "bottom" || side === "left" || side === "right") {
160
- return side;
161
- }
162
- return DEFAULT_TOAST_SIDE;
148
+ if (side === "inline-end") return isRtl ? "left" : "right";
149
+ if (side === "inline-start") return isRtl ? "right" : "left";
150
+ if (side === "top" || side === "bottom" || side === "left" || side === "right") return side;
151
+ return DEFAULT_TOAST_SIDE;
163
152
  }
164
153
  function getToastPositionClassName({ side, align }) {
165
- const isVerticalSide = side === "top" || side === "bottom";
166
- if (isVerticalSide) {
167
- return cn(
168
- side === "top" && "top-6 max-sm:top-4",
169
- side === "bottom" && "bottom-6 max-sm:bottom-4",
170
- align === "start" && "left-6 origin-top-left max-sm:left-4",
171
- align === "center" && "left-1/2 origin-top [--anchor-x:-50%]",
172
- align === "end" && "right-6 origin-top-right max-sm:right-4",
173
- side === "bottom" && align === "start" && "origin-bottom-left",
174
- side === "bottom" && align === "center" && "origin-bottom",
175
- side === "bottom" && align === "end" && "origin-bottom-right"
176
- );
177
- }
178
- return cn(
179
- side === "left" && "left-6 origin-left max-sm:left-4",
180
- side === "right" && "right-6 origin-right max-sm:right-4",
181
- align === "start" && "top-6 max-sm:top-4",
182
- align === "center" && "top-1/2 [--anchor-y:-50%]",
183
- align === "end" && "bottom-6 max-sm:bottom-4",
184
- side === "left" && align === "start" && "origin-top-left",
185
- side === "left" && align === "end" && "origin-bottom-left",
186
- side === "right" && align === "start" && "origin-top-right",
187
- side === "right" && align === "end" && "origin-bottom-right"
188
- );
154
+ if (side === "top" || side === "bottom") return cn(side === "top" && "top-6 max-sm:top-4", side === "bottom" && "bottom-6 max-sm:bottom-4", align === "start" && "left-6 origin-top-left max-sm:left-4", align === "center" && "left-1/2 origin-top [--anchor-x:-50%]", align === "end" && "right-6 origin-top-right max-sm:right-4", side === "bottom" && align === "start" && "origin-bottom-left", side === "bottom" && align === "center" && "origin-bottom", side === "bottom" && align === "end" && "origin-bottom-right");
155
+ return cn(side === "left" && "left-6 origin-left max-sm:left-4", side === "right" && "right-6 origin-right max-sm:right-4", align === "start" && "top-6 max-sm:top-4", align === "center" && "top-1/2 [--anchor-y:-50%]", align === "end" && "bottom-6 max-sm:bottom-4", side === "left" && align === "start" && "origin-top-left", side === "left" && align === "end" && "origin-bottom-left", side === "right" && align === "start" && "origin-top-right", side === "right" && align === "end" && "origin-bottom-right");
189
156
  }
190
157
  function getToastStackClassName({ side, align }) {
191
- const stacksUp = side === "bottom" || (side === "left" || side === "right") && align === "end";
192
- if (stacksUp) {
193
- return "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)))]";
194
- }
195
- return "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)))]";
158
+ if (side === "bottom" || (side === "left" || side === "right") && align === "end") return "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)))]";
159
+ return "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)))]";
196
160
  }
197
161
  function getToastExitClassName(side) {
198
- if (side === "bottom") {
199
- return "[--exit-x:calc(var(--anchor-x)+24px)] [--exit-y:calc(var(--anchor-y)+150%)]";
200
- }
201
- if (side === "left") {
202
- return "[--exit-x:calc(var(--anchor-x)-150%)] [--exit-y:var(--anchor-y)]";
203
- }
204
- if (side === "right") {
205
- return "[--exit-x:calc(var(--anchor-x)+150%)] [--exit-y:var(--anchor-y)]";
206
- }
207
- return "[--exit-x:calc(var(--anchor-x)+24px)] [--exit-y:calc(var(--anchor-y)-150%)]";
162
+ if (side === "bottom") return "[--exit-x:calc(var(--anchor-x)+24px)] [--exit-y:calc(var(--anchor-y)+150%)]";
163
+ if (side === "left") return "[--exit-x:calc(var(--anchor-x)-150%)] [--exit-y:var(--anchor-y)]";
164
+ if (side === "right") return "[--exit-x:calc(var(--anchor-x)+150%)] [--exit-y:var(--anchor-y)]";
165
+ return "[--exit-x:calc(var(--anchor-x)+24px)] [--exit-y:calc(var(--anchor-y)-150%)]";
208
166
  }
209
167
  function getSwipeDirections(item, isRtl = false) {
210
- const { side: resolvedSide, align } = getToastPlacement(item, isRtl);
211
- const primary = resolvedSide === "top" ? "up" : resolvedSide === "bottom" ? "down" : resolvedSide === "left" ? "left" : (
212
- /* right */
213
- "right"
214
- );
215
- if (align === "center") return primary;
216
- const isVerticalSide = resolvedSide === "top" || resolvedSide === "bottom";
217
- const secondary = isVerticalSide ? align === "start" ? "left" : "right" : align === "start" ? "up" : "down";
218
- return [primary, secondary];
168
+ const { side: resolvedSide, align } = getToastPlacement(item, isRtl);
169
+ const primary = resolvedSide === "top" ? "up" : resolvedSide === "bottom" ? "down" : resolvedSide === "left" ? "left" : "right";
170
+ if (align === "center") return primary;
171
+ return [primary, resolvedSide === "top" || resolvedSide === "bottom" ? align === "start" ? "left" : "right" : align === "start" ? "up" : "down"];
219
172
  }
220
- export {
221
- ToastProvider,
222
- toast,
223
- toastManager
224
- };
225
- //# sourceMappingURL=toast.js.map
173
+ //#endregion
174
+ export { ToastProvider, toast, toastManager };
package/dist/tooltip.d.ts CHANGED
@@ -1,11 +1,10 @@
1
- import * as React from 'react';
2
- import { Tooltip as Tooltip$1 } from '@base-ui/react/tooltip';
3
-
4
- declare function Tooltip({ ...props }: Tooltip$1.Root.Props): React.JSX.Element;
5
- declare function TooltipTrigger({ ...props }: Tooltip$1.Trigger.Props): React.JSX.Element;
1
+ import { Tooltip as Tooltip$1 } from "@base-ui/react/tooltip";
2
+ //#region src/tooltip.d.ts
3
+ declare function Tooltip({ ...props }: Tooltip$1.Root.Props): import("react").JSX.Element;
4
+ declare function TooltipTrigger({ ...props }: Tooltip$1.Trigger.Props): import("react").JSX.Element;
6
5
  type TooltipContentProps = Tooltip$1.Popup.Props & Pick<Tooltip$1.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset"> & Pick<Tooltip$1.Portal.Props, "container"> & {
7
- showArrow?: boolean;
6
+ showArrow?: boolean;
8
7
  };
9
- declare function TooltipContent({ className, container, side, sideOffset, align, alignOffset, showArrow, children, ...props }: TooltipContentProps): React.JSX.Element;
10
-
11
- export { Tooltip, TooltipContent, TooltipTrigger };
8
+ declare function TooltipContent({ className, container, side, sideOffset, align, alignOffset, showArrow, children, ...props }: TooltipContentProps): import("react").JSX.Element;
9
+ //#endregion
10
+ export { Tooltip, TooltipContent, TooltipTrigger };
package/dist/tooltip.js CHANGED
@@ -1,13 +1,38 @@
1
1
  "use client";
2
- import {
3
- Tooltip,
4
- TooltipContent,
5
- TooltipTrigger
6
- } from "./chunk-KDPYSOYZ.js";
7
- import "./chunk-Y4TTYVNE.js";
8
- export {
9
- Tooltip,
10
- TooltipContent,
11
- TooltipTrigger
12
- };
13
- //# sourceMappingURL=tooltip.js.map
2
+ import { t as cn } from "./cn-BI_4DMBf.js";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { Tooltip as Tooltip$1 } from "@base-ui/react/tooltip";
5
+ //#region src/tooltip.tsx
6
+ function Tooltip({ ...props }) {
7
+ return /* @__PURE__ */ jsx(Tooltip$1.Root, {
8
+ "data-slot": "tooltip",
9
+ ...props
10
+ });
11
+ }
12
+ function TooltipTrigger({ ...props }) {
13
+ return /* @__PURE__ */ jsx(Tooltip$1.Trigger, {
14
+ "data-slot": "tooltip-trigger",
15
+ delay: 100,
16
+ ...props
17
+ });
18
+ }
19
+ function TooltipContent({ className, container, side = "top", sideOffset = 6, align = "center", alignOffset = 0, showArrow = true, children, ...props }) {
20
+ return /* @__PURE__ */ jsx(Tooltip$1.Portal, {
21
+ container,
22
+ children: /* @__PURE__ */ jsx(Tooltip$1.Positioner, {
23
+ align,
24
+ alignOffset,
25
+ side,
26
+ sideOffset,
27
+ className: "pointer-events-none isolate z-50",
28
+ children: /* @__PURE__ */ jsxs(Tooltip$1.Popup, {
29
+ "data-slot": "tooltip-content",
30
+ className: cn("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", className),
31
+ ...props,
32
+ children: [children, showArrow ? /* @__PURE__ */ jsx(Tooltip$1.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]
33
+ })
34
+ })
35
+ });
36
+ }
37
+ //#endregion
38
+ export { Tooltip, TooltipContent, TooltipTrigger };
@@ -1,10 +1,7 @@
1
- import * as React from 'react';
2
- import { ChartCard, ChartValueType } from './chart.js';
3
- import { ComponentSize } from './size-context.js';
4
- import 'class-variance-authority/types';
5
- import 'class-variance-authority';
6
- import 'recharts';
7
-
1
+ import { t as ComponentSize } from "./size-context-D4mYvcg8.js";
2
+ import { ChartCard, ChartValueType } from "./chart.js";
3
+ import * as React from "react";
4
+ //#region src/tree-map.d.ts
8
5
  /**
9
6
  * A treemap — part-to-whole composition drawn as proportionally sized, nested
10
7
  * rectangles. Reach for one to compare category shares at a glance (portfolio
@@ -56,72 +53,72 @@ type TreeMapSize = ComponentSize;
56
53
  /** Where the colour-key legend sits relative to the plot. */
57
54
  type TreeMapLegendPlacement = "right" | "bottom";
58
55
  type TreeMapDatum = {
59
- /** Category name, shown in the tile label, legend, and tooltip. */
60
- label: string;
61
- /** Tile value — drives the tile's area. Omit on a group with `children`. */
62
- value?: number;
63
- /** Tile/group colour; defaults to the palette in order. Leaves inherit it. */
64
- fill?: string;
65
- /** Subcategories for a `nested` treemap. */
66
- children?: TreeMapDatum[];
56
+ /** Category name, shown in the tile label, legend, and tooltip. */
57
+ label: string;
58
+ /** Tile value — drives the tile's area. Omit on a group with `children`. */
59
+ value?: number;
60
+ /** Tile/group colour; defaults to the palette in order. Leaves inherit it. */
61
+ fill?: string;
62
+ /** Subcategories for a `nested` treemap. */
63
+ children?: TreeMapDatum[];
67
64
  };
68
65
  /**
69
- * Tile palette, ordered by share: forest brass moss clay → stone. Each
70
- * entry pairs a tile `fill` with the `text` colour that reads on it (a tonal
71
- * tint of the same scale). Giddaa has no `chart-1`…`chart-N` tokens yet, so these
72
- * map to the brand scales; assign by order, or override per datum with `fill`.
66
+ * Tile palette, ordered by share. A tile's area already encodes magnitude and
67
+ * every tile is directly labelled, so the fill carries category *identity* the
68
+ * three validated categorical `chart-1`…`chart-3` tokens, then a neutral "Other"
69
+ * bucket for the fourth+ category (the brand has three validated categorical
70
+ * slots; see `styles/giddaa.css`). Each entry pairs a `fill` with the `text`
71
+ * colour that reads on it in both themes. Assign by order, or override per datum
72
+ * with `fill`.
73
73
  */
74
74
  declare const TREE_MAP_PALETTE: readonly [{
75
- readonly fill: "var(--color-forest-700)";
76
- readonly text: "var(--color-forest-100)";
75
+ readonly fill: "var(--color-chart-1)";
76
+ readonly text: "var(--color-forest-50)";
77
77
  }, {
78
- readonly fill: "var(--color-brass-500)";
79
- readonly text: "var(--color-brass-900)";
78
+ readonly fill: "var(--color-chart-2)";
79
+ readonly text: "var(--color-brass-900)";
80
80
  }, {
81
- readonly fill: "var(--color-moss-600)";
82
- readonly text: "var(--color-moss-100)";
81
+ readonly fill: "var(--color-chart-3)";
82
+ readonly text: "var(--color-clay-900)";
83
83
  }, {
84
- readonly fill: "var(--color-clay-500)";
85
- readonly text: "var(--color-clay-50)";
86
- }, {
87
- readonly fill: "var(--color-stone-500)";
88
- readonly text: "var(--color-stone-50)";
84
+ readonly fill: "var(--color-action-tertiary)";
85
+ readonly text: "var(--color-fg-primary)";
89
86
  }];
90
87
  type TreeMapLayout = {
91
- /** Plot box height in px. Width stays fluid via the ResponsiveContainer. */
92
- height: number;
93
- /** Inset around every tile in px — straddles edges to read as a gap. */
94
- gap: number;
95
- /** Tile corner radius in px. */
96
- radius: number;
97
- /** Tile label padding from the top-left corner in px. */
98
- labelPadding: number;
99
- /** Tile label (name) font size in px. */
100
- nameFontSize: number;
101
- /** Tile label (share) font size in px. */
102
- shareFontSize: number;
103
- /** Smallest tile width/height in px that still shows its label. */
104
- labelMinSide: number;
88
+ /** Plot box height in px. Width stays fluid via the ResponsiveContainer. */
89
+ height: number;
90
+ /** Inset around every tile in px — straddles edges to read as a gap. */
91
+ gap: number;
92
+ /** Tile corner radius in px. */
93
+ radius: number;
94
+ /** Tile label padding from the top-left corner in px. */
95
+ labelPadding: number;
96
+ /** Tile label (name) font size in px. */
97
+ nameFontSize: number;
98
+ /** Tile label (share) font size in px. */
99
+ shareFontSize: number;
100
+ /** Smallest tile width/height in px that still shows its label. */
101
+ labelMinSide: number;
105
102
  };
106
103
  declare const TREE_MAP_LAYOUT: Record<TreeMapSize, TreeMapLayout>;
107
104
  type TreeMapProps = Omit<React.ComponentProps<typeof ChartCard>, "size" | "children"> & {
108
- /** Categories — flat leaves, or groups carrying `children` (nested). */
109
- data: TreeMapDatum[];
110
- /** Explicit size; otherwise inherited from the nearest `SizeProvider`. */
111
- size?: TreeMapSize;
112
- /** Chart heading. Omit to hide the title. */
113
- title?: React.ReactNode;
114
- /** Supporting metadata (period, source). Omit to hide the description. */
115
- description?: React.ReactNode;
116
- /** Enable the hover value tooltip. Default false. */
117
- tooltip?: boolean;
118
- /** Legend placement — a right column or a wrapped bottom row. Default right. */
119
- legend?: TreeMapLegendPlacement;
120
- /** Format the tile value in the tooltip. Defaults to a localised number. */
121
- valueFormatter?: (value: number) => string;
122
- /** Value formatting for the tooltip. Defaults to `number`. */
123
- valueType?: ChartValueType;
105
+ /** Categories — flat leaves, or groups carrying `children` (nested). */
106
+ data: TreeMapDatum[];
107
+ /** Explicit size; otherwise inherited from the nearest `SizeProvider`. */
108
+ size?: TreeMapSize;
109
+ /** Chart heading. Omit to hide the title. */
110
+ title?: React.ReactNode;
111
+ /** Supporting metadata (period, source). Omit to hide the description. */
112
+ description?: React.ReactNode;
113
+ /** Enable the hover value tooltip. Default false. */
114
+ tooltip?: boolean;
115
+ /** Legend placement — a right column or a wrapped bottom row. Default right. */
116
+ legend?: TreeMapLegendPlacement;
117
+ /** Format the tile value in the tooltip. Defaults to a localised number. */
118
+ valueFormatter?: (value: number) => string;
119
+ /** Value formatting for the tooltip. Defaults to `number`. */
120
+ valueType?: ChartValueType;
124
121
  };
125
122
  declare function TreeMap({ data, size, title, description, tooltip, legend, valueFormatter, valueType, className, ...props }: TreeMapProps): React.JSX.Element;
126
-
127
- export { TREE_MAP_LAYOUT, TREE_MAP_PALETTE, TreeMap, type TreeMapDatum, type TreeMapLayout, type TreeMapLegendPlacement, type TreeMapProps, type TreeMapSize };
123
+ //#endregion
124
+ export { TREE_MAP_LAYOUT, TREE_MAP_PALETTE, TreeMap, type TreeMapDatum, type TreeMapLayout, type TreeMapLegendPlacement, type TreeMapProps, type TreeMapSize };