@giddaa-housing/ui 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. package/css/generated/shared.css +1 -1
  2. package/dist/accordion.d.ts +9 -10
  3. package/dist/accordion.js +41 -87
  4. package/dist/activity-timeline.d.ts +12 -16
  5. package/dist/activity-timeline.js +83 -198
  6. package/dist/alert.d.ts +8 -9
  7. package/dist/alert.js +53 -111
  8. package/dist/auth-layout.d.ts +4 -4
  9. package/dist/auth-layout.js +143 -294
  10. package/dist/avatar.d.ts +6 -6
  11. package/dist/avatar.js +49 -19
  12. package/dist/badge.d.ts +12 -14
  13. package/dist/badge.js +71 -11
  14. package/dist/bar-chart.d.ts +65 -67
  15. package/dist/bar-chart.js +232 -207
  16. package/dist/breadcrumb.d.ts +5 -5
  17. package/dist/breadcrumb.js +56 -118
  18. package/dist/bullet-chart.d.ts +33 -33
  19. package/dist/bullet-chart.js +121 -148
  20. package/dist/button-BZIeyUw6.d.ts +17 -0
  21. package/dist/button-group.d.ts +13 -16
  22. package/dist/button-group.js +39 -88
  23. package/dist/button.d.ts +2 -19
  24. package/dist/button.js +94 -13
  25. package/dist/calendar.d.ts +6 -6
  26. package/dist/calendar.js +138 -17
  27. package/dist/card.d.ts +14 -16
  28. package/dist/card.js +59 -145
  29. package/dist/carousel.d.ts +34 -35
  30. package/dist/carousel.js +335 -20
  31. package/dist/chart.d.ts +58 -59
  32. package/dist/chart.js +376 -28
  33. package/dist/checkbox.d.ts +10 -12
  34. package/dist/checkbox.js +82 -47
  35. package/dist/cn-BI_4DMBf.js +23 -0
  36. package/dist/collapsible.d.ts +7 -8
  37. package/dist/collapsible.js +22 -47
  38. package/dist/combobox.d.ts +10 -10
  39. package/dist/combobox.js +236 -44
  40. package/dist/cta.d.ts +12 -14
  41. package/dist/cta.js +175 -341
  42. package/dist/currency-selector.d.ts +31 -32
  43. package/dist/currency-selector.js +106 -184
  44. package/dist/data-table.d.ts +164 -0
  45. package/dist/data-table.js +673 -0
  46. package/dist/date-picker.d.ts +22 -23
  47. package/dist/date-picker.js +119 -192
  48. package/dist/details-card.d.ts +7 -7
  49. package/dist/details-card.js +104 -253
  50. package/dist/dialog.d.ts +13 -14
  51. package/dist/dialog.js +116 -209
  52. package/dist/dropdown-menu.d.ts +13 -13
  53. package/dist/dropdown-menu.js +180 -37
  54. package/dist/dropzone.d.ts +55 -55
  55. package/dist/dropzone.js +327 -439
  56. package/dist/editorial-card.d.ts +23 -25
  57. package/dist/editorial-card.js +129 -296
  58. package/dist/empty-state.d.ts +8 -9
  59. package/dist/empty-state.js +48 -105
  60. package/dist/field.d.ts +23 -25
  61. package/dist/field.js +110 -221
  62. package/dist/filter.d.ts +118 -0
  63. package/dist/filter.js +775 -0
  64. package/dist/footer.d.ts +8 -15
  65. package/dist/footer.js +197 -400
  66. package/dist/funnel-chart.d.ts +38 -41
  67. package/dist/funnel-chart.js +167 -189
  68. package/dist/gallery-indicator.d.ts +11 -12
  69. package/dist/gallery-indicator.js +75 -12
  70. package/dist/heatmap-chart.d.ts +47 -50
  71. package/dist/heatmap-chart.js +186 -237
  72. package/dist/infotip.d.ts +8 -9
  73. package/dist/infotip.js +33 -59
  74. package/dist/input-CfoEJ8A6.d.ts +12 -0
  75. package/dist/input-group.d.ts +16 -20
  76. package/dist/input-group.js +99 -23
  77. package/dist/input-size-context-C-SFx9sx.d.ts +10 -0
  78. package/dist/input-size-context.d.ts +2 -11
  79. package/dist/input-size-context.js +17 -9
  80. package/dist/input.d.ts +2 -13
  81. package/dist/input.js +27 -11
  82. package/dist/item.d.ts +7 -8
  83. package/dist/item.js +22 -59
  84. package/dist/kpi-card.d.ts +18 -20
  85. package/dist/kpi-card.js +84 -192
  86. package/dist/label.d.ts +6 -6
  87. package/dist/label.js +40 -8
  88. package/dist/line-chart.d.ts +88 -89
  89. package/dist/line-chart.js +142 -104
  90. package/dist/logo.d.ts +4 -4
  91. package/dist/logo.js +92 -9
  92. package/dist/map-indicator.d.ts +7 -7
  93. package/dist/map-indicator.js +80 -106
  94. package/dist/match.d.ts +10 -11
  95. package/dist/match.js +62 -107
  96. package/dist/media-gallery-hero.d.ts +40 -42
  97. package/dist/media-gallery-hero.js +182 -343
  98. package/dist/media-player.d.ts +17 -17
  99. package/dist/media-player.js +873 -1348
  100. package/dist/multi-step-form.d.ts +56 -0
  101. package/dist/multi-step-form.js +342 -0
  102. package/dist/number-input.d.ts +34 -34
  103. package/dist/number-input.js +61 -117
  104. package/dist/page-header.d.ts +10 -11
  105. package/dist/page-header.js +34 -79
  106. package/dist/pagination.d.ts +17 -21
  107. package/dist/pagination.js +132 -207
  108. package/dist/password-input.d.ts +5 -13
  109. package/dist/password-input.js +31 -55
  110. package/dist/phone-input.d.ts +19 -20
  111. package/dist/phone-input.js +226 -344
  112. package/dist/photo-gallery.d.ts +19 -19
  113. package/dist/photo-gallery.js +313 -449
  114. package/dist/picker-lzgmsNfG.js +32 -0
  115. package/dist/pie-chart.d.ts +60 -60
  116. package/dist/pie-chart.js +140 -148
  117. package/dist/popover.d.ts +9 -9
  118. package/dist/popover.js +72 -23
  119. package/dist/price-tag.d.ts +26 -27
  120. package/dist/price-tag.js +113 -173
  121. package/dist/progress.d.ts +16 -17
  122. package/dist/progress.js +169 -24
  123. package/dist/property-listing-card.d.ts +14 -17
  124. package/dist/property-listing-card.js +102 -220
  125. package/dist/radar-chart.d.ts +29 -31
  126. package/dist/radar-chart.js +162 -137
  127. package/dist/radio-group.d.ts +11 -13
  128. package/dist/radio-group.js +46 -60
  129. package/dist/review-block.d.ts +14 -16
  130. package/dist/review-block.js +154 -10
  131. package/dist/rich-text-editor.d.ts +30 -14
  132. package/dist/rich-text-editor.js +592 -716
  133. package/dist/scatter-chart.d.ts +45 -47
  134. package/dist/scatter-chart.js +236 -240
  135. package/dist/search-input.d.ts +8 -16
  136. package/dist/search-input.js +57 -109
  137. package/dist/select.d.ts +8 -8
  138. package/dist/select.js +144 -27
  139. package/dist/separator.d.ts +8 -9
  140. package/dist/separator.js +32 -8
  141. package/dist/sheet.d.ts +11 -11
  142. package/dist/sheet.js +103 -24
  143. package/dist/sidebar.d.ts +32 -37
  144. package/dist/sidebar.js +364 -634
  145. package/dist/size-context-D4mYvcg8.d.ts +10 -0
  146. package/dist/size-context.d.ts +2 -11
  147. package/dist/size-context.js +17 -9
  148. package/dist/skeleton.d.ts +4 -5
  149. package/dist/skeleton.js +12 -8
  150. package/dist/slider.d.ts +8 -9
  151. package/dist/slider.js +64 -135
  152. package/dist/sparkline.d.ts +43 -46
  153. package/dist/sparkline.js +221 -251
  154. package/dist/stepper.d.ts +23 -24
  155. package/dist/stepper.js +149 -246
  156. package/dist/styles.css +510 -108
  157. package/dist/switch.d.ts +10 -12
  158. package/dist/switch.js +48 -70
  159. package/dist/table-card.d.ts +35 -0
  160. package/dist/table-card.js +125 -0
  161. package/dist/table.d.ts +18 -14
  162. package/dist/table.js +113 -154
  163. package/dist/tabs.d.ts +23 -15
  164. package/dist/tabs.js +71 -18
  165. package/dist/tag.d.ts +21 -23
  166. package/dist/tag.js +103 -159
  167. package/dist/testimonial-block.d.ts +18 -19
  168. package/dist/testimonial-block.js +189 -358
  169. package/dist/textarea-IS_D8pXf.d.ts +11 -0
  170. package/dist/textarea.d.ts +2 -12
  171. package/dist/textarea.js +24 -11
  172. package/dist/time-picker.d.ts +11 -11
  173. package/dist/time-picker.js +245 -302
  174. package/dist/toast.d.ts +16 -18
  175. package/dist/toast.js +154 -205
  176. package/dist/tooltip.d.ts +8 -9
  177. package/dist/tooltip.js +37 -12
  178. package/dist/tree-map.d.ts +54 -57
  179. package/dist/tree-map.js +227 -269
  180. package/dist/use-uncontrolled-CLfM1XbB.js +21 -0
  181. package/dist/waterfall-chart.d.ts +94 -97
  182. package/dist/waterfall-chart.js +455 -552
  183. package/package.json +28 -9
  184. package/dist/accordion.js.map +0 -1
  185. package/dist/activity-timeline.js.map +0 -1
  186. package/dist/alert.js.map +0 -1
  187. package/dist/auth-layout.js.map +0 -1
  188. package/dist/avatar.js.map +0 -1
  189. package/dist/badge.js.map +0 -1
  190. package/dist/bar-chart.js.map +0 -1
  191. package/dist/breadcrumb.js.map +0 -1
  192. package/dist/bullet-chart.js.map +0 -1
  193. package/dist/button-group.js.map +0 -1
  194. package/dist/button.js.map +0 -1
  195. package/dist/calendar.js.map +0 -1
  196. package/dist/card.js.map +0 -1
  197. package/dist/carousel.js.map +0 -1
  198. package/dist/chart.js.map +0 -1
  199. package/dist/checkbox.js.map +0 -1
  200. package/dist/chunk-322YCNVL.js +0 -278
  201. package/dist/chunk-322YCNVL.js.map +0 -1
  202. package/dist/chunk-3ACQVT7A.js +0 -25
  203. package/dist/chunk-3ACQVT7A.js.map +0 -1
  204. package/dist/chunk-3T65TLJX.js +0 -334
  205. package/dist/chunk-3T65TLJX.js.map +0 -1
  206. package/dist/chunk-6ZSGQHH2.js +0 -192
  207. package/dist/chunk-6ZSGQHH2.js.map +0 -1
  208. package/dist/chunk-7TBMLFGW.js +0 -41
  209. package/dist/chunk-7TBMLFGW.js.map +0 -1
  210. package/dist/chunk-B4H6RNDH.js +0 -135
  211. package/dist/chunk-B4H6RNDH.js.map +0 -1
  212. package/dist/chunk-BUXCGZ6X.js +0 -219
  213. package/dist/chunk-BUXCGZ6X.js.map +0 -1
  214. package/dist/chunk-CHII2QHH.js +0 -58
  215. package/dist/chunk-CHII2QHH.js.map +0 -1
  216. package/dist/chunk-DMNOXRRW.js +0 -147
  217. package/dist/chunk-DMNOXRRW.js.map +0 -1
  218. package/dist/chunk-EFSOSSIC.js +0 -130
  219. package/dist/chunk-EFSOSSIC.js.map +0 -1
  220. package/dist/chunk-FZDSVMKY.js +0 -363
  221. package/dist/chunk-FZDSVMKY.js.map +0 -1
  222. package/dist/chunk-GJOFIJS3.js +0 -246
  223. package/dist/chunk-GJOFIJS3.js.map +0 -1
  224. package/dist/chunk-HL3ZSYES.js +0 -23
  225. package/dist/chunk-HL3ZSYES.js.map +0 -1
  226. package/dist/chunk-JVLUBAPB.js +0 -129
  227. package/dist/chunk-JVLUBAPB.js.map +0 -1
  228. package/dist/chunk-KDPYSOYZ.js +0 -64
  229. package/dist/chunk-KDPYSOYZ.js.map +0 -1
  230. package/dist/chunk-KSMDANKI.js +0 -43
  231. package/dist/chunk-KSMDANKI.js.map +0 -1
  232. package/dist/chunk-MEKCCOP5.js +0 -46
  233. package/dist/chunk-MEKCCOP5.js.map +0 -1
  234. package/dist/chunk-NOFXVRWL.js +0 -451
  235. package/dist/chunk-NOFXVRWL.js.map +0 -1
  236. package/dist/chunk-PC5MHNVA.js +0 -171
  237. package/dist/chunk-PC5MHNVA.js.map +0 -1
  238. package/dist/chunk-QKAQZ2GU.js +0 -122
  239. package/dist/chunk-QKAQZ2GU.js.map +0 -1
  240. package/dist/chunk-QZHSHSVV.js +0 -26
  241. package/dist/chunk-QZHSHSVV.js.map +0 -1
  242. package/dist/chunk-RBMK26XD.js +0 -19
  243. package/dist/chunk-RBMK26XD.js.map +0 -1
  244. package/dist/chunk-SFNJGF6M.js +0 -262
  245. package/dist/chunk-SFNJGF6M.js.map +0 -1
  246. package/dist/chunk-UJJNLGTM.js +0 -112
  247. package/dist/chunk-UJJNLGTM.js.map +0 -1
  248. package/dist/chunk-VGR4ZWJ3.js +0 -418
  249. package/dist/chunk-VGR4ZWJ3.js.map +0 -1
  250. package/dist/chunk-XG47P6D4.js +0 -99
  251. package/dist/chunk-XG47P6D4.js.map +0 -1
  252. package/dist/chunk-XZZAHNVM.js +0 -21
  253. package/dist/chunk-XZZAHNVM.js.map +0 -1
  254. package/dist/chunk-Y4TTYVNE.js +0 -36
  255. package/dist/chunk-Y4TTYVNE.js.map +0 -1
  256. package/dist/chunk-YDWIHW6Q.js +0 -69
  257. package/dist/chunk-YDWIHW6Q.js.map +0 -1
  258. package/dist/collapsible.js.map +0 -1
  259. package/dist/combobox.js.map +0 -1
  260. package/dist/cta.js.map +0 -1
  261. package/dist/currency-selector.js.map +0 -1
  262. package/dist/date-picker.js.map +0 -1
  263. package/dist/details-card.js.map +0 -1
  264. package/dist/dialog.js.map +0 -1
  265. package/dist/dropdown-menu.js.map +0 -1
  266. package/dist/dropzone.js.map +0 -1
  267. package/dist/editorial-card.js.map +0 -1
  268. package/dist/empty-state.js.map +0 -1
  269. package/dist/field.js.map +0 -1
  270. package/dist/footer.js.map +0 -1
  271. package/dist/funnel-chart.js.map +0 -1
  272. package/dist/gallery-indicator.js.map +0 -1
  273. package/dist/heatmap-chart.js.map +0 -1
  274. package/dist/infotip.js.map +0 -1
  275. package/dist/input-group.js.map +0 -1
  276. package/dist/input-size-context.js.map +0 -1
  277. package/dist/input.js.map +0 -1
  278. package/dist/item.js.map +0 -1
  279. package/dist/kpi-card.js.map +0 -1
  280. package/dist/label.js.map +0 -1
  281. package/dist/line-chart.js.map +0 -1
  282. package/dist/logo.js.map +0 -1
  283. package/dist/map-indicator.js.map +0 -1
  284. package/dist/match.js.map +0 -1
  285. package/dist/media-gallery-hero.js.map +0 -1
  286. package/dist/media-player.js.map +0 -1
  287. package/dist/number-input.js.map +0 -1
  288. package/dist/page-header.js.map +0 -1
  289. package/dist/pagination.js.map +0 -1
  290. package/dist/password-input.js.map +0 -1
  291. package/dist/phone-input.js.map +0 -1
  292. package/dist/photo-gallery.js.map +0 -1
  293. package/dist/pie-chart.js.map +0 -1
  294. package/dist/popover.js.map +0 -1
  295. package/dist/price-tag.js.map +0 -1
  296. package/dist/progress.js.map +0 -1
  297. package/dist/property-listing-card.js.map +0 -1
  298. package/dist/radar-chart.js.map +0 -1
  299. package/dist/radio-group.js.map +0 -1
  300. package/dist/review-block.js.map +0 -1
  301. package/dist/rich-text-editor.js.map +0 -1
  302. package/dist/scatter-chart.js.map +0 -1
  303. package/dist/search-input.js.map +0 -1
  304. package/dist/select.js.map +0 -1
  305. package/dist/separator.js.map +0 -1
  306. package/dist/sheet.js.map +0 -1
  307. package/dist/sidebar.js.map +0 -1
  308. package/dist/size-context.js.map +0 -1
  309. package/dist/skeleton.js.map +0 -1
  310. package/dist/slider.js.map +0 -1
  311. package/dist/sparkline.js.map +0 -1
  312. package/dist/stepper.js.map +0 -1
  313. package/dist/switch.js.map +0 -1
  314. package/dist/tab-list.d.ts +0 -38
  315. package/dist/tab-list.js +0 -123
  316. package/dist/tab-list.js.map +0 -1
  317. package/dist/table.js.map +0 -1
  318. package/dist/tabs.js.map +0 -1
  319. package/dist/tag.js.map +0 -1
  320. package/dist/testimonial-block.js.map +0 -1
  321. package/dist/textarea.js.map +0 -1
  322. package/dist/time-picker.js.map +0 -1
  323. package/dist/toast.js.map +0 -1
  324. package/dist/tooltip.js.map +0 -1
  325. package/dist/tree-map.js.map +0 -1
  326. package/dist/waterfall-chart.js.map +0 -1
@@ -0,0 +1,32 @@
1
+ import { t as cn } from "./cn-BI_4DMBf.js";
2
+ import { Button } from "./button.js";
3
+ import { PopoverTrigger } from "./popover.js";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/lib/picker.tsx
6
+ function PickerTrigger({ icon: Icon, displayValue, placeholder, disabled, open, className }) {
7
+ return /* @__PURE__ */ jsxs(PopoverTrigger, {
8
+ disabled,
9
+ className: cn("flex h-10 w-full items-center justify-between rounded-full border px-3.5 text-gdt-sm transition-[border-color,box-shadow] outline-none", disabled ? "cursor-not-allowed border-line-subtle bg-surface text-fg-caption-placeholder" : open ? "border-line-focus bg-canvas text-fg-primary inset-ring-1 inset-ring-line-focus" : "border-line bg-canvas text-fg-primary hover:border-line-strong", className),
10
+ children: [/* @__PURE__ */ jsx("span", {
11
+ className: cn("min-w-0 truncate", !displayValue && "text-fg-caption-placeholder"),
12
+ children: displayValue || placeholder
13
+ }), /* @__PURE__ */ jsx(Icon, { className: cn("ml-2 size-4 shrink-0", disabled ? "text-fg-caption-placeholder" : "text-fg-secondary") })]
14
+ });
15
+ }
16
+ function PickerFooter({ secondaryLabel, onSecondary, onApply }) {
17
+ return /* @__PURE__ */ jsxs("div", {
18
+ className: "flex w-full items-center justify-between border-t border-line-subtle px-4 py-3",
19
+ children: [/* @__PURE__ */ jsx(Button, {
20
+ variant: "tertiary-outline",
21
+ size: "sm",
22
+ onClick: onSecondary,
23
+ children: secondaryLabel
24
+ }), /* @__PURE__ */ jsx(Button, {
25
+ size: "sm",
26
+ onClick: onApply,
27
+ children: "Apply"
28
+ })]
29
+ });
30
+ }
31
+ //#endregion
32
+ export { PickerTrigger as n, PickerFooter as t };
@@ -1,6 +1,6 @@
1
- import * as React from 'react';
2
- import { ComponentSize } from './size-context.js';
3
-
1
+ import { t as ComponentSize } from "./size-context-D4mYvcg8.js";
2
+ import * as React from "react";
3
+ //#region src/pie-chart.d.ts
4
4
  /**
5
5
  * Pie / donut charts are composed from recharts plot primitives directly —
6
6
  * recharts identifies `PieChart`, `Pie`, and `Cell` by component identity, so
@@ -31,20 +31,20 @@ import { ComponentSize } from './size-context.js';
31
31
  /** Pie sizes line up with the three shared `ComponentSize` values. */
32
32
  type PieChartSize = ComponentSize;
33
33
  type PieChartLayout = {
34
- /** Square plot box in px (width = height); width is NOT parent-driven here. */
35
- size: number;
36
- /** Donut hole radius in px. Pass `0` to the `Pie` for a filled pie. */
37
- innerRadius: number;
38
- /** Outer ring radius in px. */
39
- outerRadius: number;
40
- /** Gap between segments, in degrees. */
41
- paddingAngle: number;
42
- /** Corner radius of each segment. */
43
- cornerRadius: number;
44
- /** Center total font size. */
45
- totalFontSize: number;
46
- /** Center caption font size. */
47
- captionFontSize: number;
34
+ /** Square plot box in px (width = height); width is NOT parent-driven here. */
35
+ size: number;
36
+ /** Donut hole radius in px. Pass `0` to the `Pie` for a filled pie. */
37
+ innerRadius: number;
38
+ /** Outer ring radius in px. */
39
+ outerRadius: number;
40
+ /** Gap between segments, in degrees. */
41
+ paddingAngle: number;
42
+ /** Corner radius of each segment. */
43
+ cornerRadius: number;
44
+ /** Center total font size. */
45
+ totalFontSize: number;
46
+ /** Center caption font size. */
47
+ captionFontSize: number;
48
48
  };
49
49
  declare const PIE_CHART_LAYOUT: Record<PieChartSize, PieChartLayout>;
50
50
  /**
@@ -60,28 +60,28 @@ declare const PIE_CHART_PALETTE: readonly ["var(--color-forest-700)", "var(--col
60
60
  * onto `Pie`, then pass the data-specific props (`data`, `dataKey`, `nameKey`)
61
61
  * directly afterwards. `type="pie"` collapses the donut hole (`innerRadius` 0).
62
62
  */
63
- declare function usePieChartLayout({ size, type, }?: {
64
- size?: PieChartSize;
65
- type?: "donut" | "pie";
63
+ declare function usePieChartLayout({ size, type }?: {
64
+ size?: PieChartSize;
65
+ type?: "donut" | "pie";
66
66
  }): {
67
- container: {
68
- className: string;
69
- style: {
70
- width: number;
71
- height: number;
72
- };
73
- };
74
- pie: {
75
- innerRadius: number;
76
- outerRadius: number;
77
- paddingAngle: number;
78
- cornerRadius: number;
79
- strokeWidth: number;
80
- };
81
- label: {
82
- totalFontSize: number;
83
- captionFontSize: number;
67
+ container: {
68
+ className: string;
69
+ style: {
70
+ width: number;
71
+ height: number;
84
72
  };
73
+ };
74
+ pie: {
75
+ innerRadius: number;
76
+ outerRadius: number;
77
+ paddingAngle: number;
78
+ cornerRadius: number;
79
+ strokeWidth: number;
80
+ };
81
+ label: {
82
+ totalFontSize: number;
83
+ captionFontSize: number;
84
+ };
85
85
  };
86
86
  /**
87
87
  * Center label for a donut — the hero total over a short caption. Pass it to
@@ -89,18 +89,18 @@ declare function usePieChartLayout({ size, type, }?: {
89
89
  * the `Pie`; recharts injects the `viewBox` carrying the polar center (cx/cy).
90
90
  */
91
91
  type PieCenterLabelProps = {
92
- /** Hero figure — pre-formatted, e.g. "₦1.1M". */
93
- total: React.ReactNode;
94
- /** Short label describing what the total represents, e.g. "Total spend". */
95
- caption?: React.ReactNode;
96
- /** Explicit size; otherwise inherited from the nearest `SizeProvider`. */
97
- size?: PieChartSize;
98
- viewBox?: {
99
- cx?: number;
100
- cy?: number;
101
- };
92
+ /** Hero figure — pre-formatted, e.g. "₦1.1M". */
93
+ total: React.ReactNode;
94
+ /** Short label describing what the total represents, e.g. "Total spend". */
95
+ caption?: React.ReactNode;
96
+ /** Explicit size; otherwise inherited from the nearest `SizeProvider`. */
97
+ size?: PieChartSize;
98
+ viewBox?: {
99
+ cx?: number;
100
+ cy?: number;
101
+ };
102
102
  };
103
- declare function PieCenterLabel({ total, caption, size, viewBox, }: PieCenterLabelProps): React.JSX.Element | null;
103
+ declare function PieCenterLabel({ total, caption, size, viewBox }: PieCenterLabelProps): React.JSX.Element | null;
104
104
  /**
105
105
  * Rich legend for pie/donut charts. Unlike the shared `ChartLegendContent`
106
106
  * (marker + label only), each row pairs a colour dot with the category name, its
@@ -108,18 +108,18 @@ declare function PieCenterLabel({ total, caption, size, viewBox, }: PieCenterLab
108
108
  * mini table. Values and percentages are pre-formatted by the caller.
109
109
  */
110
110
  type PieLegendItem = {
111
- /** Category name, e.g. "Housing". */
112
- label: string;
113
- /** Segment colour — should match the matching `Cell` fill. */
114
- color: string;
115
- /** Pre-formatted value, e.g. "₦420k". */
116
- value: React.ReactNode;
117
- /** Pre-formatted share, e.g. "38%". */
118
- percentage: React.ReactNode;
111
+ /** Category name, e.g. "Housing". */
112
+ label: string;
113
+ /** Segment colour — should match the matching `Cell` fill. */
114
+ color: string;
115
+ /** Pre-formatted value, e.g. "₦420k". */
116
+ value: React.ReactNode;
117
+ /** Pre-formatted share, e.g. "38%". */
118
+ percentage: React.ReactNode;
119
119
  };
120
120
  declare function PieChartLegend({ items, size, className, ...props }: React.ComponentProps<"ul"> & {
121
- items: PieLegendItem[];
122
- size?: PieChartSize;
121
+ items: PieLegendItem[];
122
+ size?: PieChartSize;
123
123
  }): React.JSX.Element;
124
-
125
- export { PIE_CHART_LAYOUT, PIE_CHART_PALETTE, PieCenterLabel, type PieCenterLabelProps, type PieChartLayout, PieChartLegend, type PieChartSize, type PieLegendItem, usePieChartLayout };
124
+ //#endregion
125
+ export { PIE_CHART_LAYOUT, PIE_CHART_PALETTE, PieCenterLabel, type PieCenterLabelProps, type PieChartLayout, PieChartLegend, type PieChartSize, type PieLegendItem, usePieChartLayout };
package/dist/pie-chart.js CHANGED
@@ -1,157 +1,149 @@
1
1
  "use client";
2
- import {
3
- useComponentSize
4
- } from "./chunk-HL3ZSYES.js";
5
- import {
6
- cn
7
- } from "./chunk-Y4TTYVNE.js";
8
-
9
- // src/pie-chart.tsx
10
- import { cva } from "class-variance-authority";
2
+ import { t as cn } from "./cn-BI_4DMBf.js";
3
+ import { useComponentSize } from "./size-context.js";
11
4
  import { jsx, jsxs } from "react/jsx-runtime";
12
- var PIE_CHART_LAYOUT = {
13
- sm: {
14
- size: 132,
15
- innerRadius: 42,
16
- outerRadius: 64,
17
- paddingAngle: 2,
18
- cornerRadius: 0,
19
- totalFontSize: 18,
20
- captionFontSize: 9
21
- },
22
- md: {
23
- size: 176,
24
- innerRadius: 56,
25
- outerRadius: 84,
26
- paddingAngle: 2,
27
- cornerRadius: 0,
28
- totalFontSize: 24,
29
- captionFontSize: 11
30
- },
31
- lg: {
32
- size: 224,
33
- innerRadius: 72,
34
- outerRadius: 108,
35
- paddingAngle: 2,
36
- cornerRadius: 0,
37
- totalFontSize: 30,
38
- captionFontSize: 12
39
- }
5
+ import { cva } from "class-variance-authority";
6
+ //#region src/pie-chart.tsx
7
+ const PIE_CHART_LAYOUT = {
8
+ sm: {
9
+ size: 132,
10
+ innerRadius: 42,
11
+ outerRadius: 64,
12
+ paddingAngle: 2,
13
+ cornerRadius: 0,
14
+ totalFontSize: 18,
15
+ captionFontSize: 9
16
+ },
17
+ md: {
18
+ size: 176,
19
+ innerRadius: 56,
20
+ outerRadius: 84,
21
+ paddingAngle: 2,
22
+ cornerRadius: 0,
23
+ totalFontSize: 24,
24
+ captionFontSize: 11
25
+ },
26
+ lg: {
27
+ size: 224,
28
+ innerRadius: 72,
29
+ outerRadius: 108,
30
+ paddingAngle: 2,
31
+ cornerRadius: 0,
32
+ totalFontSize: 30,
33
+ captionFontSize: 12
34
+ }
40
35
  };
41
- var PIE_CHART_PALETTE = [
42
- "var(--color-forest-700)",
43
- "var(--color-brass-500)",
44
- "var(--color-moss-600)",
45
- "var(--color-clay-500)",
46
- "var(--color-stone-500)"
36
+ /**
37
+ * Categorical palette for pie/donut segments, ordered by share. Giddaa has no
38
+ * `chart-1`…`chart-N` tokens yet, so these map to the brand scales: forest →
39
+ * brass → moss → clay → stone. Assign by index, or override per `Cell`.
40
+ */
41
+ const PIE_CHART_PALETTE = [
42
+ "var(--color-forest-700)",
43
+ "var(--color-brass-500)",
44
+ "var(--color-moss-600)",
45
+ "var(--color-clay-500)",
46
+ "var(--color-stone-500)"
47
47
  ];
48
- function usePieChartLayout({
49
- size,
50
- type = "donut"
51
- } = {}) {
52
- const layout = PIE_CHART_LAYOUT[useComponentSize(size)];
53
- return {
54
- container: {
55
- className: "aspect-square shrink-0",
56
- style: { width: layout.size, height: layout.size }
57
- },
58
- pie: {
59
- innerRadius: type === "pie" ? 0 : layout.innerRadius,
60
- outerRadius: layout.outerRadius,
61
- paddingAngle: type === "pie" ? 0 : layout.paddingAngle,
62
- cornerRadius: layout.cornerRadius,
63
- strokeWidth: 0
64
- },
65
- label: {
66
- totalFontSize: layout.totalFontSize,
67
- captionFontSize: layout.captionFontSize
68
- }
69
- };
48
+ /**
49
+ * Resolve the pie-chart layout for an explicit or inherited component size and
50
+ * chart `type`. The returned object groups the giddaa defaults by the recharts
51
+ * component they belong to — spread `container` onto `ChartContainer` and `pie`
52
+ * onto `Pie`, then pass the data-specific props (`data`, `dataKey`, `nameKey`)
53
+ * directly afterwards. `type="pie"` collapses the donut hole (`innerRadius` 0).
54
+ */
55
+ function usePieChartLayout({ size, type = "donut" } = {}) {
56
+ const layout = PIE_CHART_LAYOUT[useComponentSize(size)];
57
+ return {
58
+ container: {
59
+ className: "aspect-square shrink-0",
60
+ style: {
61
+ width: layout.size,
62
+ height: layout.size
63
+ }
64
+ },
65
+ pie: {
66
+ innerRadius: type === "pie" ? 0 : layout.innerRadius,
67
+ outerRadius: layout.outerRadius,
68
+ paddingAngle: type === "pie" ? 0 : layout.paddingAngle,
69
+ cornerRadius: layout.cornerRadius,
70
+ strokeWidth: 0
71
+ },
72
+ label: {
73
+ totalFontSize: layout.totalFontSize,
74
+ captionFontSize: layout.captionFontSize
75
+ }
76
+ };
70
77
  }
71
- function PieCenterLabel({
72
- total,
73
- caption,
74
- size,
75
- viewBox
76
- }) {
77
- const { label } = usePieChartLayout({ size });
78
- if (!viewBox || viewBox.cx == null || viewBox.cy == null) {
79
- return null;
80
- }
81
- const { cx, cy } = viewBox;
82
- const captionY = cy + label.totalFontSize * 0.72;
83
- return /* @__PURE__ */ jsxs("text", { x: cx, y: cy, textAnchor: "middle", dominantBaseline: "central", children: [
84
- /* @__PURE__ */ jsx(
85
- "tspan",
86
- {
87
- x: cx,
88
- y: caption == null ? cy : cy - label.captionFontSize * 0.5,
89
- className: "fill-fg-primary font-extrabold tabular-nums",
90
- style: { fontSize: label.totalFontSize },
91
- children: total
92
- }
93
- ),
94
- caption != null && /* @__PURE__ */ jsx(
95
- "tspan",
96
- {
97
- x: cx,
98
- y: captionY,
99
- className: "fill-fg-secondary font-medium",
100
- style: { fontSize: label.captionFontSize },
101
- children: caption
102
- }
103
- )
104
- ] });
78
+ function PieCenterLabel({ total, caption, size, viewBox }) {
79
+ const { label } = usePieChartLayout({ size });
80
+ if (!viewBox || viewBox.cx == null || viewBox.cy == null) return null;
81
+ const { cx, cy } = viewBox;
82
+ const captionY = cy + label.totalFontSize * .72;
83
+ return /* @__PURE__ */ jsxs("text", {
84
+ x: cx,
85
+ y: cy,
86
+ textAnchor: "middle",
87
+ dominantBaseline: "central",
88
+ children: [/* @__PURE__ */ jsx("tspan", {
89
+ x: cx,
90
+ y: caption == null ? cy : cy - label.captionFontSize * .5,
91
+ className: "fill-fg-primary font-extrabold tabular-nums",
92
+ style: { fontSize: label.totalFontSize },
93
+ children: total
94
+ }), caption != null && /* @__PURE__ */ jsx("tspan", {
95
+ x: cx,
96
+ y: captionY,
97
+ className: "fill-fg-secondary font-medium",
98
+ style: { fontSize: label.captionFontSize },
99
+ children: caption
100
+ })]
101
+ });
105
102
  }
106
- var pieLegendVariants = cva("flex min-w-0 flex-col", {
107
- variants: {
108
- size: {
109
- sm: "gap-1.5 text-gdt-xs",
110
- md: "gap-2 text-gdt-sm",
111
- lg: "gap-2.5 text-gdt-sm"
112
- }
113
- },
114
- defaultVariants: { size: "md" }
103
+ const pieLegendVariants = cva("flex min-w-0 flex-col", {
104
+ variants: { size: {
105
+ sm: "gap-1.5 text-gdt-xs",
106
+ md: "gap-2 text-gdt-sm",
107
+ lg: "gap-2.5 text-gdt-sm"
108
+ } },
109
+ defaultVariants: { size: "md" }
115
110
  });
116
- var pieLegendDotVariants = cva("shrink-0 rounded-full", {
117
- variants: {
118
- size: { sm: "size-2", md: "size-2.5", lg: "size-3" }
119
- },
120
- defaultVariants: { size: "md" }
111
+ const pieLegendDotVariants = cva("shrink-0 rounded-full", {
112
+ variants: { size: {
113
+ sm: "size-2",
114
+ md: "size-2.5",
115
+ lg: "size-3"
116
+ } },
117
+ defaultVariants: { size: "md" }
121
118
  });
122
- function PieChartLegend({
123
- items,
124
- size,
125
- className,
126
- ...props
127
- }) {
128
- const resolvedSize = useComponentSize(size);
129
- return /* @__PURE__ */ jsx(
130
- "ul",
131
- {
132
- className: cn(pieLegendVariants({ size: resolvedSize }), className),
133
- ...props,
134
- children: items.map((item) => /* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2.5", children: [
135
- /* @__PURE__ */ jsx(
136
- "span",
137
- {
138
- "aria-hidden": "true",
139
- className: cn(pieLegendDotVariants({ size: resolvedSize })),
140
- style: { backgroundColor: item.color }
141
- }
142
- ),
143
- /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate text-fg-primary", children: item.label }),
144
- /* @__PURE__ */ jsx("span", { className: "shrink-0 tabular-nums text-fg-secondary", children: item.value }),
145
- /* @__PURE__ */ jsx("span", { className: "w-9 shrink-0 text-right font-bold tabular-nums text-fg-primary", children: item.percentage })
146
- ] }, item.label))
147
- }
148
- );
119
+ function PieChartLegend({ items, size, className, ...props }) {
120
+ const resolvedSize = useComponentSize(size);
121
+ return /* @__PURE__ */ jsx("ul", {
122
+ className: cn(pieLegendVariants({ size: resolvedSize }), className),
123
+ ...props,
124
+ children: items.map((item) => /* @__PURE__ */ jsxs("li", {
125
+ className: "flex items-center gap-2.5",
126
+ children: [
127
+ /* @__PURE__ */ jsx("span", {
128
+ "aria-hidden": "true",
129
+ className: cn(pieLegendDotVariants({ size: resolvedSize })),
130
+ style: { backgroundColor: item.color }
131
+ }),
132
+ /* @__PURE__ */ jsx("span", {
133
+ className: "min-w-0 flex-1 truncate text-fg-primary",
134
+ children: item.label
135
+ }),
136
+ /* @__PURE__ */ jsx("span", {
137
+ className: "shrink-0 tabular-nums text-fg-secondary",
138
+ children: item.value
139
+ }),
140
+ /* @__PURE__ */ jsx("span", {
141
+ className: "w-9 shrink-0 text-right font-bold tabular-nums text-fg-primary",
142
+ children: item.percentage
143
+ })
144
+ ]
145
+ }, item.label))
146
+ });
149
147
  }
150
- export {
151
- PIE_CHART_LAYOUT,
152
- PIE_CHART_PALETTE,
153
- PieCenterLabel,
154
- PieChartLegend,
155
- usePieChartLayout
156
- };
157
- //# sourceMappingURL=pie-chart.js.map
148
+ //#endregion
149
+ export { PIE_CHART_LAYOUT, PIE_CHART_PALETTE, PieCenterLabel, PieChartLegend, usePieChartLayout };
package/dist/popover.d.ts CHANGED
@@ -1,20 +1,20 @@
1
- import { Popover as Popover$1 } from '@base-ui/react/popover';
2
- import * as React from 'react';
3
- import { ComponentSize } from './size-context.js';
4
-
1
+ import { t as ComponentSize } from "./size-context-D4mYvcg8.js";
2
+ import * as React from "react";
3
+ import { Popover as Popover$1 } from "@base-ui/react/popover";
4
+ //#region src/popover.d.ts
5
5
  declare function Popover({ ...props }: Popover$1.Root.Props): React.JSX.Element;
6
6
  declare function PopoverTrigger({ ...props }: Popover$1.Trigger.Props): React.JSX.Element;
7
7
  type PopoverContentProps = Popover$1.Popup.Props & Pick<Popover$1.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset"> & {
8
- showArrow?: boolean;
9
- size?: ComponentSize;
8
+ showArrow?: boolean;
9
+ size?: ComponentSize;
10
10
  };
11
11
  declare function PopoverContent({ className, align, alignOffset, side, sideOffset, showArrow, size, children, ...props }: PopoverContentProps): React.JSX.Element;
12
12
  declare function PopoverHeader({ className, border, ...props }: React.ComponentProps<"div"> & {
13
- border?: boolean;
13
+ border?: boolean;
14
14
  }): React.JSX.Element;
15
15
  declare function PopoverBody({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
16
16
  declare function PopoverFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
17
17
  declare function PopoverTitle({ className, ...props }: Popover$1.Title.Props): React.JSX.Element;
18
18
  declare function PopoverDescription({ className, ...props }: Popover$1.Description.Props): React.JSX.Element;
19
-
20
- export { Popover, PopoverBody, PopoverContent, PopoverDescription, PopoverFooter, PopoverHeader, PopoverTitle, PopoverTrigger };
19
+ //#endregion
20
+ export { Popover, PopoverBody, PopoverContent, PopoverDescription, PopoverFooter, PopoverHeader, PopoverTitle, PopoverTrigger };
package/dist/popover.js CHANGED
@@ -1,24 +1,73 @@
1
1
  "use client";
2
- import {
3
- Popover,
4
- PopoverBody,
5
- PopoverContent,
6
- PopoverDescription,
7
- PopoverFooter,
8
- PopoverHeader,
9
- PopoverTitle,
10
- PopoverTrigger
11
- } from "./chunk-JVLUBAPB.js";
12
- import "./chunk-HL3ZSYES.js";
13
- import "./chunk-Y4TTYVNE.js";
14
- export {
15
- Popover,
16
- PopoverBody,
17
- PopoverContent,
18
- PopoverDescription,
19
- PopoverFooter,
20
- PopoverHeader,
21
- PopoverTitle,
22
- PopoverTrigger
23
- };
24
- //# sourceMappingURL=popover.js.map
2
+ import { t as cn } from "./cn-BI_4DMBf.js";
3
+ import { SizeProvider } from "./size-context.js";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { Popover as Popover$1 } from "@base-ui/react/popover";
6
+ //#region src/popover.tsx
7
+ function Popover({ ...props }) {
8
+ return /* @__PURE__ */ jsx(Popover$1.Root, {
9
+ "data-slot": "popover",
10
+ ...props
11
+ });
12
+ }
13
+ function PopoverTrigger({ ...props }) {
14
+ return /* @__PURE__ */ jsx(Popover$1.Trigger, {
15
+ "data-slot": "popover-trigger",
16
+ ...props
17
+ });
18
+ }
19
+ function PopoverContent({ className, align = "center", alignOffset = 0, side = "bottom", sideOffset = 6, showArrow = true, size = "md", children, ...props }) {
20
+ return /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(Popover$1.Positioner, {
21
+ align,
22
+ alignOffset,
23
+ side,
24
+ sideOffset,
25
+ className: "isolate z-50",
26
+ children: /* @__PURE__ */ jsxs(Popover$1.Popup, {
27
+ "data-slot": "popover-content",
28
+ className: cn("z-50 relative flex w-72 max-w-[calc(100vw-2rem)] origin-(--transform-origin) flex-col rounded-lg border-0 bg-surface-overlay py-4 text-gdt-sm text-fg-primary shadow-2 outline-hidden duration-100 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-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 has-[&_[data-slot=popover-footer]]:pb-0", className),
29
+ ...props,
30
+ children: [/* @__PURE__ */ jsx(SizeProvider, {
31
+ size,
32
+ children
33
+ }), showArrow ? /* @__PURE__ */ jsx(Popover$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]
34
+ })
35
+ }) });
36
+ }
37
+ function PopoverHeader({ className, border, ...props }) {
38
+ return /* @__PURE__ */ jsx("div", {
39
+ "data-slot": "popover-header",
40
+ className: cn("flex flex-col gap-0.5 px-4", border && "border-b border-line-subtle pb-3", className),
41
+ ...props
42
+ });
43
+ }
44
+ function PopoverBody({ className, ...props }) {
45
+ return /* @__PURE__ */ jsx("div", {
46
+ "data-slot": "popover-body",
47
+ className: cn("px-4 py-2", className),
48
+ ...props
49
+ });
50
+ }
51
+ function PopoverFooter({ className, ...props }) {
52
+ return /* @__PURE__ */ jsx("div", {
53
+ "data-slot": "popover-footer",
54
+ className: cn("flex flex-row items-center gap-2 px-4 border-t border-line-subtle pt-3", className),
55
+ ...props
56
+ });
57
+ }
58
+ function PopoverTitle({ className, ...props }) {
59
+ return /* @__PURE__ */ jsx(Popover$1.Title, {
60
+ "data-slot": "popover-title",
61
+ className: cn("text-gdt-sm font-semibold text-fg-primary", className),
62
+ ...props
63
+ });
64
+ }
65
+ function PopoverDescription({ className, ...props }) {
66
+ return /* @__PURE__ */ jsx(Popover$1.Description, {
67
+ "data-slot": "popover-description",
68
+ className: cn("text-gdt-xs font-normal text-fg-secondary", className),
69
+ ...props
70
+ });
71
+ }
72
+ //#endregion
73
+ export { Popover, PopoverBody, PopoverContent, PopoverDescription, PopoverFooter, PopoverHeader, PopoverTitle, PopoverTrigger };