@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
@@ -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/bullet-chart.d.ts
4
4
  /**
5
5
  * A bullet chart — a compact linear gauge for KPI-vs-goal reporting where a full
6
6
  * bar chart would be excessive. It encodes three things on one horizontal track:
@@ -55,44 +55,48 @@ type BulletChartSize = ComponentSize;
55
55
  /** Measure-bar sentiment — `auto` derives it from `value` vs `target`. */
56
56
  type BulletChartStatus = "auto" | "success" | "warning";
57
57
  type BulletChartLayout = {
58
- /** Thickness of the range-band track (the pill) in px. */
59
- trackHeight: number;
60
- /** Thickness of the centered measure bar in px. */
61
- measureHeight: number;
62
- /** Height of the target marker in px — taller than the bar, inside the track. */
63
- markerHeight: number;
64
- /** Target marker thickness in px. */
65
- markerWidth: number;
66
- /** Axis tick label class. */
67
- tickClass: string;
58
+ /** Thickness of the range-band track (the pill) in px. */
59
+ trackHeight: number;
60
+ /** Thickness of the centered measure bar in px. */
61
+ measureHeight: number;
62
+ /** Height of the target marker in px — taller than the bar, inside the track. */
63
+ markerHeight: number;
64
+ /** Target marker thickness in px. */
65
+ markerWidth: number;
66
+ /** Axis tick label class. */
67
+ tickClass: string;
68
68
  };
69
69
  declare const BULLET_CHART_LAYOUT: Record<BulletChartSize, BulletChartLayout>;
70
70
  /**
71
- * Range-band shades, ordered poor → good. The base track is the lightest shade,
72
- * so the first (poorest) zone blends into it and each higher zone darkens —
73
- * giving the gauge its qualitative context without competing with the bar.
71
+ * Range-band shades, ordered poor → good, on the theme-aware neutral `line`
72
+ * tokens. The poorest zone (`line-subtle`) matches the card surface in both
73
+ * themes, so it blends into the track, and each higher zone steps toward
74
+ * `line-strong` — giving the gauge its qualitative context without competing
75
+ * with the bar. Using the semantic tokens (not raw `stone-200/300/400`) keeps
76
+ * the ramp correct on the dark surface, where the raw light grays would read as
77
+ * bright bands instead of recessive ones.
74
78
  */
75
- declare const BULLET_RANGE_PALETTE: readonly ["var(--color-stone-200)", "var(--color-stone-300)", "var(--color-stone-400)"];
79
+ declare const BULLET_RANGE_PALETTE: readonly ["var(--color-line-subtle)", "var(--color-line)", "var(--color-line-strong)"];
76
80
  type BulletChartProps = Omit<React.ComponentProps<"div">, "children"> & {
77
- /** The realized (actualized) value — drives the measure bar length. */
78
- value: number;
79
- /** The goal to beat — drives the target marker and the auto status colour. */
80
- target: number;
81
- /** Axis start. Default 0. */
82
- min?: number;
83
- /** Axis end. Default the largest of `value`, `target`, and the top range. */
84
- max?: number;
85
- /** Internal thresholds dividing [min, max] into qualitative zones, ascending. */
86
- ranges?: number[];
87
- /** Axis tick values. Default `[min, midpoint, max]`. Pass `[]` to hide. */
88
- ticks?: number[];
89
- /** Measure-bar sentiment. Default `auto` (success when `value >= target`). */
90
- status?: BulletChartStatus;
91
- /** Explicit size; otherwise inherited from the nearest `SizeProvider`. */
92
- size?: BulletChartSize;
93
- /** Format the tick labels (and the aria summary). Default grouped integer. */
94
- valueFormatter?: (value: number) => string;
81
+ /** The realized (actualized) value — drives the measure bar length. */
82
+ value: number;
83
+ /** The goal to beat — drives the target marker and the auto status colour. */
84
+ target: number;
85
+ /** Axis start. Default 0. */
86
+ min?: number;
87
+ /** Axis end. Default the largest of `value`, `target`, and the top range. */
88
+ max?: number;
89
+ /** Internal thresholds dividing [min, max] into qualitative zones, ascending. */
90
+ ranges?: number[];
91
+ /** Axis tick values. Default `[min, midpoint, max]`. Pass `[]` to hide. */
92
+ ticks?: number[];
93
+ /** Measure-bar sentiment. Default `auto` (success when `value >= target`). */
94
+ status?: BulletChartStatus;
95
+ /** Explicit size; otherwise inherited from the nearest `SizeProvider`. */
96
+ size?: BulletChartSize;
97
+ /** Format the tick labels (and the aria summary). Default grouped integer. */
98
+ valueFormatter?: (value: number) => string;
95
99
  };
96
100
  declare function BulletChart({ value, target, min, max, ranges, ticks, status, size, valueFormatter, className, ...props }: BulletChartProps): React.JSX.Element;
97
-
98
- export { BULLET_CHART_LAYOUT, BULLET_RANGE_PALETTE, BulletChart, type BulletChartLayout, type BulletChartProps, type BulletChartSize, type BulletChartStatus };
101
+ //#endregion
102
+ export { BULLET_CHART_LAYOUT, BULLET_RANGE_PALETTE, BulletChart, type BulletChartLayout, type BulletChartProps, type BulletChartSize, type BulletChartStatus };
@@ -1,156 +1,133 @@
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/bullet-chart.tsx
2
+ import { t as cn } from "./cn-BI_4DMBf.js";
3
+ import { useComponentSize } from "./size-context.js";
10
4
  import { jsx, jsxs } from "react/jsx-runtime";
11
- var BULLET_CHART_LAYOUT = {
12
- sm: {
13
- trackHeight: 26,
14
- measureHeight: 11,
15
- markerHeight: 20,
16
- markerWidth: 3,
17
- tickClass: "text-gdt-xs"
18
- },
19
- md: {
20
- trackHeight: 34,
21
- measureHeight: 15,
22
- markerHeight: 26,
23
- markerWidth: 4,
24
- tickClass: "text-gdt-sm"
25
- },
26
- lg: {
27
- trackHeight: 44,
28
- measureHeight: 19,
29
- markerHeight: 34,
30
- markerWidth: 5,
31
- tickClass: "text-gdt-sm"
32
- }
5
+ //#region src/bullet-chart.tsx
6
+ const BULLET_CHART_LAYOUT = {
7
+ sm: {
8
+ trackHeight: 26,
9
+ measureHeight: 11,
10
+ markerHeight: 20,
11
+ markerWidth: 3,
12
+ tickClass: "text-gdt-xs"
13
+ },
14
+ md: {
15
+ trackHeight: 34,
16
+ measureHeight: 15,
17
+ markerHeight: 26,
18
+ markerWidth: 4,
19
+ tickClass: "text-gdt-sm"
20
+ },
21
+ lg: {
22
+ trackHeight: 44,
23
+ measureHeight: 19,
24
+ markerHeight: 34,
25
+ markerWidth: 5,
26
+ tickClass: "text-gdt-sm"
27
+ }
33
28
  };
34
- var BULLET_RANGE_PALETTE = [
35
- "var(--color-stone-200)",
36
- "var(--color-stone-300)",
37
- "var(--color-stone-400)"
29
+ /**
30
+ * Range-band shades, ordered poor → good, on the theme-aware neutral `line`
31
+ * tokens. The poorest zone (`line-subtle`) matches the card surface in both
32
+ * themes, so it blends into the track, and each higher zone steps toward
33
+ * `line-strong` — giving the gauge its qualitative context without competing
34
+ * with the bar. Using the semantic tokens (not raw `stone-200/300/400`) keeps
35
+ * the ramp correct on the dark surface, where the raw light grays would read as
36
+ * bright bands instead of recessive ones.
37
+ */
38
+ const BULLET_RANGE_PALETTE = [
39
+ "var(--color-line-subtle)",
40
+ "var(--color-line)",
41
+ "var(--color-line-strong)"
38
42
  ];
39
- var STATUS_COLOR = {
40
- success: "var(--color-status-success)",
41
- warning: "var(--color-status-warning)"
43
+ const STATUS_COLOR = {
44
+ success: "var(--color-status-success)",
45
+ warning: "var(--color-status-warning)"
42
46
  };
47
+ /** Clamp a value into [min, max] and express it as a 0–100 track percentage. */
43
48
  function toPercent(value, min, max) {
44
- if (max <= min) return 0;
45
- const ratio = (value - min) / (max - min);
46
- return Math.min(Math.max(ratio, 0), 1) * 100;
49
+ if (max <= min) return 0;
50
+ const ratio = (value - min) / (max - min);
51
+ return Math.min(Math.max(ratio, 0), 1) * 100;
47
52
  }
48
- function BulletChart({
49
- value,
50
- target,
51
- min = 0,
52
- max,
53
- ranges,
54
- ticks,
55
- status = "auto",
56
- size,
57
- valueFormatter = (v) => v.toLocaleString("en-NG"),
58
- className,
59
- ...props
60
- }) {
61
- const layout = BULLET_CHART_LAYOUT[useComponentSize(size)];
62
- const topRange = ranges?.length ? Math.max(...ranges) : 0;
63
- const resolvedMax = max ?? (Math.max(value, target, topRange) || 1);
64
- const resolvedTicks = ticks ?? [min, (min + resolvedMax) / 2, resolvedMax];
65
- const resolvedStatus = status === "auto" ? value >= target ? "success" : "warning" : status;
66
- const measureColor = STATUS_COLOR[resolvedStatus];
67
- const thresholds = [
68
- min,
69
- ...(ranges ?? []).filter((r) => r > min && r < resolvedMax).sort((a, b) => a - b),
70
- resolvedMax
71
- ];
72
- const zones = thresholds.slice(0, -1).map((from, i) => ({
73
- from,
74
- to: thresholds[i + 1],
75
- color: BULLET_RANGE_PALETTE[Math.min(i, BULLET_RANGE_PALETTE.length - 1)]
76
- }));
77
- const ariaLabel = props["aria-label"] ?? `${valueFormatter(value)} of ${valueFormatter(target)} target \u2014 ${resolvedStatus === "success" ? "on track" : "behind"}`;
78
- return /* @__PURE__ */ jsxs(
79
- "div",
80
- {
81
- ...props,
82
- role: "img",
83
- "aria-label": ariaLabel,
84
- className: cn("flex w-full flex-col gap-2", className),
85
- children: [
86
- /* @__PURE__ */ jsxs("div", { className: "relative w-full", style: { height: layout.trackHeight }, children: [
87
- /* @__PURE__ */ jsx(
88
- "div",
89
- {
90
- className: "absolute inset-0 overflow-hidden rounded-full",
91
- style: { backgroundColor: BULLET_RANGE_PALETTE[0] },
92
- children: zones.map((zone) => /* @__PURE__ */ jsx(
93
- "div",
94
- {
95
- className: "absolute inset-y-0",
96
- style: {
97
- left: `${toPercent(zone.from, min, resolvedMax)}%`,
98
- width: `${toPercent(zone.to, min, resolvedMax) - toPercent(zone.from, min, resolvedMax)}%`,
99
- backgroundColor: zone.color
100
- }
101
- },
102
- zone.from
103
- ))
104
- }
105
- ),
106
- /* @__PURE__ */ jsx(
107
- "div",
108
- {
109
- className: "absolute left-0 top-1/2 rounded-full",
110
- style: {
111
- height: layout.measureHeight,
112
- width: `${toPercent(value, min, resolvedMax)}%`,
113
- backgroundColor: measureColor,
114
- transform: "translateY(-50%)"
115
- }
116
- }
117
- ),
118
- /* @__PURE__ */ jsx(
119
- "div",
120
- {
121
- className: "absolute top-1/2 rounded-full bg-fg-primary",
122
- style: {
123
- height: layout.markerHeight,
124
- width: layout.markerWidth,
125
- left: `${toPercent(target, min, resolvedMax)}%`,
126
- transform: "translate(-50%, -50%)"
127
- }
128
- }
129
- )
130
- ] }),
131
- resolvedTicks.length > 0 && /* @__PURE__ */ jsx("div", { className: "relative h-4 w-full", children: resolvedTicks.map((tick) => {
132
- const pct = toPercent(tick, min, resolvedMax);
133
- const transform = pct <= 0 ? "translateX(0)" : pct >= 100 ? "translateX(-100%)" : "translateX(-50%)";
134
- return /* @__PURE__ */ jsx(
135
- "span",
136
- {
137
- className: cn(
138
- "absolute top-0 whitespace-nowrap tabular-nums text-fg-caption-placeholder",
139
- layout.tickClass
140
- ),
141
- style: { left: `${pct}%`, transform },
142
- children: valueFormatter(tick)
143
- },
144
- tick
145
- );
146
- }) })
147
- ]
148
- }
149
- );
53
+ function BulletChart({ value, target, min = 0, max, ranges, ticks, status = "auto", size, valueFormatter = (v) => v.toLocaleString("en-NG"), className, ...props }) {
54
+ const layout = BULLET_CHART_LAYOUT[useComponentSize(size)];
55
+ const topRange = ranges?.length ? Math.max(...ranges) : 0;
56
+ const resolvedMax = max ?? (Math.max(value, target, topRange) || 1);
57
+ const resolvedTicks = ticks ?? [
58
+ min,
59
+ (min + resolvedMax) / 2,
60
+ resolvedMax
61
+ ];
62
+ const resolvedStatus = status === "auto" ? value >= target ? "success" : "warning" : status;
63
+ const measureColor = STATUS_COLOR[resolvedStatus];
64
+ const thresholds = [
65
+ min,
66
+ ...(ranges ?? []).filter((r) => r > min && r < resolvedMax).sort((a, b) => a - b),
67
+ resolvedMax
68
+ ];
69
+ const zones = thresholds.slice(0, -1).map((from, i) => ({
70
+ from,
71
+ to: thresholds[i + 1],
72
+ color: BULLET_RANGE_PALETTE[Math.min(i, BULLET_RANGE_PALETTE.length - 1)]
73
+ }));
74
+ const ariaLabel = props["aria-label"] ?? `${valueFormatter(value)} of ${valueFormatter(target)} target ${resolvedStatus === "success" ? "on track" : "behind"}`;
75
+ return /* @__PURE__ */ jsxs("div", {
76
+ ...props,
77
+ role: "img",
78
+ "aria-label": ariaLabel,
79
+ className: cn("flex w-full flex-col gap-2", className),
80
+ children: [/* @__PURE__ */ jsxs("div", {
81
+ className: "relative w-full",
82
+ style: { height: layout.trackHeight },
83
+ children: [
84
+ /* @__PURE__ */ jsx("div", {
85
+ className: "absolute inset-0 overflow-hidden rounded-full",
86
+ style: { backgroundColor: BULLET_RANGE_PALETTE[0] },
87
+ children: zones.map((zone) => /* @__PURE__ */ jsx("div", {
88
+ className: "absolute inset-y-0",
89
+ style: {
90
+ left: `${toPercent(zone.from, min, resolvedMax)}%`,
91
+ width: `${toPercent(zone.to, min, resolvedMax) - toPercent(zone.from, min, resolvedMax)}%`,
92
+ backgroundColor: zone.color
93
+ }
94
+ }, zone.from))
95
+ }),
96
+ /* @__PURE__ */ jsx("div", {
97
+ className: "absolute left-0 top-1/2 rounded-full",
98
+ style: {
99
+ height: layout.measureHeight,
100
+ width: `${toPercent(value, min, resolvedMax)}%`,
101
+ backgroundColor: measureColor,
102
+ transform: "translateY(-50%)"
103
+ }
104
+ }),
105
+ /* @__PURE__ */ jsx("div", {
106
+ className: "absolute top-1/2 rounded-full bg-fg-primary",
107
+ style: {
108
+ height: layout.markerHeight,
109
+ width: layout.markerWidth,
110
+ left: `${toPercent(target, min, resolvedMax)}%`,
111
+ transform: "translate(-50%, -50%)"
112
+ }
113
+ })
114
+ ]
115
+ }), resolvedTicks.length > 0 && /* @__PURE__ */ jsx("div", {
116
+ className: "relative h-4 w-full",
117
+ children: resolvedTicks.map((tick) => {
118
+ const pct = toPercent(tick, min, resolvedMax);
119
+ const transform = pct <= 0 ? "translateX(0)" : pct >= 100 ? "translateX(-100%)" : "translateX(-50%)";
120
+ return /* @__PURE__ */ jsx("span", {
121
+ className: cn("absolute top-0 whitespace-nowrap tabular-nums text-fg-caption-placeholder", layout.tickClass),
122
+ style: {
123
+ left: `${pct}%`,
124
+ transform
125
+ },
126
+ children: valueFormatter(tick)
127
+ }, tick);
128
+ })
129
+ })]
130
+ });
150
131
  }
151
- export {
152
- BULLET_CHART_LAYOUT,
153
- BULLET_RANGE_PALETTE,
154
- BulletChart
155
- };
156
- //# sourceMappingURL=bullet-chart.js.map
132
+ //#endregion
133
+ export { BULLET_CHART_LAYOUT, BULLET_RANGE_PALETTE, BulletChart };
@@ -0,0 +1,17 @@
1
+ import { useRender } from "@base-ui/react/use-render";
2
+ import { VariantProps } from "class-variance-authority";
3
+ import { Button } from "@base-ui/react/button";
4
+ //#region src/button.d.ts
5
+ declare const buttonVariants: (props?: ({
6
+ variant?: "danger" | "ghost" | "glass-overlay" | "link-brand" | "link-neutral" | "primary" | "primary-outline" | "secondary" | "secondary-outline" | "tertiary" | "tertiary-outline" | "whatsapp" | null | undefined;
7
+ size?: "icon" | "icon-lg" | "icon-sm" | "icon-xl" | "icon-xs" | "lg" | "md" | "sm" | "xl" | null | undefined;
8
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
+ declare function Button$1({ className, variant, size, isLoading, children, disabled, ...props }: Button.Props & VariantProps<typeof buttonVariants> & {
10
+ isLoading?: boolean;
11
+ }): import("react").JSX.Element;
12
+ type ButtonLinkProps = useRender.ComponentProps<"a"> & VariantProps<typeof buttonVariants> & {
13
+ disabled?: boolean;
14
+ };
15
+ declare function ButtonLink({ className, render, variant, size, disabled, onClick, children, ...props }: ButtonLinkProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
16
+ //#endregion
17
+ export { ButtonLink as n, buttonVariants as r, Button$1 as t };
@@ -1,18 +1,15 @@
1
- import * as React$1 from 'react';
2
- import * as class_variance_authority_types from 'class-variance-authority/types';
3
- import { useRender } from '@base-ui/react/use-render';
4
- import { VariantProps } from 'class-variance-authority';
5
- import { Separator } from './separator.js';
6
- import { ComponentSize } from './size-context.js';
7
- import '@base-ui/react/separator';
8
-
1
+ import { t as ComponentSize } from "./size-context-D4mYvcg8.js";
2
+ import { Separator } from "./separator.js";
3
+ import { useRender } from "@base-ui/react/use-render";
4
+ import { VariantProps } from "class-variance-authority";
5
+ //#region src/button-group.d.ts
9
6
  declare const buttonGroupVariants: (props?: ({
10
- orientation?: "horizontal" | "vertical" | null | undefined;
11
- } & class_variance_authority_types.ClassProp) | undefined) => string;
7
+ orientation?: "horizontal" | "vertical" | null | undefined;
8
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
9
  declare function ButtonGroup({ className, orientation, ...props }: React.ComponentProps<"div"> & VariantProps<typeof buttonGroupVariants> & {
13
- size?: ComponentSize;
14
- }): React$1.JSX.Element;
15
- declare function ButtonGroupText({ className, render, ...props }: useRender.ComponentProps<"div">): React$1.ReactElement<unknown, string | React$1.JSXElementConstructor<any>>;
16
- declare function ButtonGroupSeparator({ className, orientation, ...props }: React.ComponentProps<typeof Separator>): React$1.JSX.Element;
17
-
18
- export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };
10
+ size?: ComponentSize;
11
+ }): import("react").JSX.Element;
12
+ declare function ButtonGroupText({ className, render, ...props }: useRender.ComponentProps<"div">): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
13
+ declare function ButtonGroupSeparator({ className, orientation, ...props }: React.ComponentProps<typeof Separator>): import("react").JSX.Element;
14
+ //#endregion
15
+ export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };
@@ -1,94 +1,45 @@
1
- import {
2
- Separator
3
- } from "./chunk-CHII2QHH.js";
4
- import {
5
- SizeProvider,
6
- useComponentSize
7
- } from "./chunk-HL3ZSYES.js";
8
- import {
9
- cn
10
- } from "./chunk-Y4TTYVNE.js";
11
-
12
- // src/button-group.tsx
1
+ import { t as cn } from "./cn-BI_4DMBf.js";
2
+ import { SizeProvider, useComponentSize } from "./size-context.js";
3
+ import { Separator } from "./separator.js";
4
+ import { jsx } from "react/jsx-runtime";
13
5
  import { mergeProps } from "@base-ui/react/merge-props";
14
6
  import { useRender } from "@base-ui/react/use-render";
15
7
  import { cva } from "class-variance-authority";
16
- import { jsx } from "react/jsx-runtime";
17
- var buttonGroupVariants = cva(
18
- "flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",
19
- {
20
- variants: {
21
- orientation: {
22
- horizontal: "*:data-slot:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-full! [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0",
23
- vertical: "flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-full! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0"
24
- }
25
- },
26
- defaultVariants: {
27
- orientation: "horizontal"
28
- }
29
- }
30
- );
31
- function ButtonGroup({
32
- className,
33
- orientation,
34
- ...props
35
- }) {
36
- const size = useComponentSize();
37
- return /* @__PURE__ */ jsx(SizeProvider, { size, children: /* @__PURE__ */ jsx(
38
- "div",
39
- {
40
- role: "group",
41
- "data-slot": "button-group",
42
- "data-orientation": orientation,
43
- className: cn(buttonGroupVariants({ orientation }), className),
44
- ...props
45
- }
46
- ) });
8
+ //#region src/button-group.tsx
9
+ const buttonGroupVariants = cva("flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-lg [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1", {
10
+ variants: { orientation: {
11
+ horizontal: "*:data-slot:rounded-r-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-r-full! [&>[data-slot]~[data-slot]]:rounded-l-none [&>[data-slot]~[data-slot]]:border-l-0",
12
+ vertical: "flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-full! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0"
13
+ } },
14
+ defaultVariants: { orientation: "horizontal" }
15
+ });
16
+ function ButtonGroup({ className, orientation, ...props }) {
17
+ return /* @__PURE__ */ jsx(SizeProvider, {
18
+ size: useComponentSize(),
19
+ children: /* @__PURE__ */ jsx("div", {
20
+ role: "group",
21
+ "data-slot": "button-group",
22
+ "data-orientation": orientation,
23
+ className: cn(buttonGroupVariants({ orientation }), className),
24
+ ...props
25
+ })
26
+ });
47
27
  }
48
- function ButtonGroupText({
49
- className,
50
- render,
51
- ...props
52
- }) {
53
- return useRender({
54
- defaultTagName: "div",
55
- props: mergeProps(
56
- {
57
- className: cn(
58
- "flex items-center gap-2 rounded-lg border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
59
- className
60
- )
61
- },
62
- props
63
- ),
64
- render,
65
- state: {
66
- slot: "button-group-text"
67
- }
68
- });
28
+ function ButtonGroupText({ className, render, ...props }) {
29
+ return useRender({
30
+ defaultTagName: "div",
31
+ props: mergeProps({ className: cn("flex items-center gap-2 rounded-lg border bg-muted px-2.5 text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className) }, props),
32
+ render,
33
+ state: { slot: "button-group-text" }
34
+ });
69
35
  }
70
- function ButtonGroupSeparator({
71
- className,
72
- orientation = "vertical",
73
- ...props
74
- }) {
75
- return /* @__PURE__ */ jsx(
76
- Separator,
77
- {
78
- "data-slot": "button-group-separator",
79
- orientation,
80
- className: cn(
81
- "relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto",
82
- className
83
- ),
84
- ...props
85
- }
86
- );
36
+ function ButtonGroupSeparator({ className, orientation = "vertical", ...props }) {
37
+ return /* @__PURE__ */ jsx(Separator, {
38
+ "data-slot": "button-group-separator",
39
+ orientation,
40
+ className: cn("relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto", className),
41
+ ...props
42
+ });
87
43
  }
88
- export {
89
- ButtonGroup,
90
- ButtonGroupSeparator,
91
- ButtonGroupText,
92
- buttonGroupVariants
93
- };
94
- //# sourceMappingURL=button-group.js.map
44
+ //#endregion
45
+ export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };
package/dist/button.d.ts CHANGED
@@ -1,19 +1,2 @@
1
- import * as React from 'react';
2
- import * as class_variance_authority_types from 'class-variance-authority/types';
3
- import { Button as Button$1 } from '@base-ui/react/button';
4
- import { useRender } from '@base-ui/react/use-render';
5
- import { VariantProps } from 'class-variance-authority';
6
-
7
- declare const buttonVariants: (props?: ({
8
- variant?: "danger" | "secondary" | "primary" | "primary-outline" | "secondary-outline" | "tertiary" | "tertiary-outline" | "ghost" | "whatsapp" | "glass-overlay" | "link-brand" | "link-neutral" | null | undefined;
9
- size?: "sm" | "md" | "lg" | "icon" | "xl" | "icon-xs" | "icon-sm" | "icon-lg" | "icon-xl" | null | undefined;
10
- } & class_variance_authority_types.ClassProp) | undefined) => string;
11
- declare function Button({ className, variant, size, isLoading, children, disabled, ...props }: Button$1.Props & VariantProps<typeof buttonVariants> & {
12
- isLoading?: boolean;
13
- }): React.JSX.Element;
14
- type ButtonLinkProps = useRender.ComponentProps<"a"> & VariantProps<typeof buttonVariants> & {
15
- disabled?: boolean;
16
- };
17
- declare function ButtonLink({ className, render, variant, size, disabled, onClick, children, ...props }: ButtonLinkProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
18
-
19
- export { Button, ButtonLink, buttonVariants };
1
+ import { n as ButtonLink, r as buttonVariants, t as Button } from "./button-BZIeyUw6.js";
2
+ export { Button, ButtonLink, buttonVariants };