@giddaa-housing/ui 0.1.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 (315) hide show
  1. package/README.md +18 -6
  2. package/css/base.css +37 -0
  3. package/css/components.css +135 -0
  4. package/css/generated/shared.css +1 -0
  5. package/css/giddaa.css +402 -0
  6. package/css/preset.css +77 -0
  7. package/css/styles.css +2 -0
  8. package/css/theme.css +255 -0
  9. package/dist/accordion.d.ts +9 -10
  10. package/dist/accordion.js +41 -117
  11. package/dist/activity-timeline.d.ts +29 -0
  12. package/dist/activity-timeline.js +97 -0
  13. package/dist/alert.d.ts +8 -9
  14. package/dist/alert.js +53 -141
  15. package/dist/auth-layout.d.ts +23 -0
  16. package/dist/auth-layout.js +153 -0
  17. package/dist/avatar.d.ts +6 -6
  18. package/dist/avatar.js +40 -142
  19. package/dist/badge.d.ts +12 -13
  20. package/dist/badge.js +66 -114
  21. package/dist/bar-chart.d.ts +136 -114
  22. package/dist/bar-chart.js +244 -297
  23. package/dist/breadcrumb.d.ts +5 -5
  24. package/dist/breadcrumb.js +56 -148
  25. package/dist/bullet-chart.d.ts +33 -33
  26. package/dist/bullet-chart.js +123 -183
  27. package/dist/button-BZIeyUw6.d.ts +17 -0
  28. package/dist/button-group.d.ts +13 -16
  29. package/dist/button-group.js +38 -163
  30. package/dist/button.d.ts +2 -19
  31. package/dist/button.js +90 -142
  32. package/dist/calendar.d.ts +6 -6
  33. package/dist/calendar.js +134 -288
  34. package/dist/card.d.ts +14 -16
  35. package/dist/card.js +58 -174
  36. package/dist/carousel.d.ts +34 -35
  37. package/dist/carousel.js +319 -378
  38. package/dist/chart.d.ts +58 -59
  39. package/dist/chart.js +350 -466
  40. package/dist/checkbox.d.ts +10 -12
  41. package/dist/checkbox.js +84 -84
  42. package/dist/cn-BI_4DMBf.js +23 -0
  43. package/dist/collapsible.d.ts +7 -8
  44. package/dist/collapsible.js +23 -77
  45. package/dist/combobox.d.ts +10 -10
  46. package/dist/combobox.js +220 -696
  47. package/dist/cta.d.ts +64 -0
  48. package/dist/cta.js +192 -0
  49. package/dist/currency-selector.d.ts +41 -0
  50. package/dist/currency-selector.js +114 -0
  51. package/dist/data-table.d.ts +164 -0
  52. package/dist/data-table.js +673 -0
  53. package/dist/date-picker.d.ts +27 -20
  54. package/dist/date-picker.js +122 -520
  55. package/dist/details-card.d.ts +19 -0
  56. package/dist/details-card.js +118 -0
  57. package/dist/dialog.d.ts +13 -14
  58. package/dist/dialog.js +117 -320
  59. package/dist/dropdown-menu.d.ts +14 -14
  60. package/dist/dropdown-menu.js +170 -365
  61. package/dist/dropzone.d.ts +55 -55
  62. package/dist/dropzone.js +328 -467
  63. package/dist/editorial-card.d.ts +27 -0
  64. package/dist/editorial-card.js +144 -0
  65. package/dist/empty-state.d.ts +8 -9
  66. package/dist/empty-state.js +48 -135
  67. package/dist/field.d.ts +23 -25
  68. package/dist/field.js +111 -327
  69. package/dist/filter.d.ts +118 -0
  70. package/dist/filter.js +775 -0
  71. package/dist/footer.d.ts +40 -0
  72. package/dist/footer.js +227 -0
  73. package/dist/funnel-chart.d.ts +38 -41
  74. package/dist/funnel-chart.js +168 -563
  75. package/dist/gallery-indicator.d.ts +17 -0
  76. package/dist/gallery-indicator.js +75 -0
  77. package/dist/heatmap-chart.d.ts +95 -0
  78. package/dist/heatmap-chart.js +197 -0
  79. package/dist/infotip.d.ts +10 -0
  80. package/dist/infotip.js +40 -0
  81. package/dist/input-CfoEJ8A6.d.ts +12 -0
  82. package/dist/input-group.d.ts +16 -19
  83. package/dist/input-group.js +92 -372
  84. package/dist/input-size-context-C-SFx9sx.d.ts +10 -0
  85. package/dist/input-size-context.d.ts +2 -11
  86. package/dist/input-size-context.js +14 -20
  87. package/dist/input.d.ts +2 -13
  88. package/dist/input.js +23 -79
  89. package/dist/item.d.ts +7 -8
  90. package/dist/item.js +22 -89
  91. package/dist/kpi-card.d.ts +18 -20
  92. package/dist/kpi-card.js +84 -232
  93. package/dist/label.d.ts +6 -6
  94. package/dist/label.js +39 -66
  95. package/dist/line-chart.d.ts +88 -89
  96. package/dist/line-chart.js +143 -262
  97. package/dist/logo.d.ts +4 -4
  98. package/dist/logo.js +87 -141
  99. package/dist/map-indicator.d.ts +13 -0
  100. package/dist/map-indicator.js +83 -0
  101. package/dist/match.d.ts +15 -0
  102. package/dist/match.js +68 -0
  103. package/dist/media-gallery-hero.d.ts +58 -0
  104. package/dist/media-gallery-hero.js +201 -0
  105. package/dist/media-player.d.ts +60 -0
  106. package/dist/media-player.js +919 -0
  107. package/dist/multi-step-form.d.ts +56 -0
  108. package/dist/multi-step-form.js +342 -0
  109. package/dist/number-input.d.ts +34 -34
  110. package/dist/number-input.js +62 -413
  111. package/dist/page-header.d.ts +10 -11
  112. package/dist/page-header.js +34 -107
  113. package/dist/pagination.d.ts +17 -20
  114. package/dist/pagination.js +132 -341
  115. package/dist/password-input.d.ts +5 -12
  116. package/dist/password-input.js +32 -354
  117. package/dist/phone-input.d.ts +19 -19
  118. package/dist/phone-input.js +232 -561
  119. package/dist/photo-gallery.d.ts +20 -20
  120. package/dist/photo-gallery.js +314 -746
  121. package/dist/picker-lzgmsNfG.js +32 -0
  122. package/dist/pie-chart.d.ts +60 -60
  123. package/dist/pie-chart.js +141 -184
  124. package/dist/popover.d.ts +9 -9
  125. package/dist/popover.js +60 -156
  126. package/dist/price-tag.d.ts +34 -0
  127. package/dist/price-tag.js +118 -0
  128. package/dist/progress.d.ts +18 -16
  129. package/dist/progress.js +156 -300
  130. package/dist/property-listing-card.d.ts +29 -0
  131. package/dist/property-listing-card.js +117 -0
  132. package/dist/radar-chart.d.ts +108 -0
  133. package/dist/radar-chart.js +172 -0
  134. package/dist/radio-group.d.ts +11 -13
  135. package/dist/radio-group.js +47 -96
  136. package/dist/review-block.d.ts +18 -0
  137. package/dist/review-block.js +154 -0
  138. package/dist/rich-text-editor.d.ts +30 -14
  139. package/dist/rich-text-editor.js +594 -979
  140. package/dist/scatter-chart.d.ts +140 -0
  141. package/dist/scatter-chart.js +248 -0
  142. package/dist/search-input.d.ts +8 -15
  143. package/dist/search-input.js +58 -408
  144. package/dist/select.d.ts +8 -8
  145. package/dist/select.js +131 -291
  146. package/dist/separator.d.ts +8 -9
  147. package/dist/separator.js +31 -70
  148. package/dist/sheet.d.ts +11 -11
  149. package/dist/sheet.js +84 -262
  150. package/dist/sidebar.d.ts +32 -37
  151. package/dist/sidebar.js +380 -1055
  152. package/dist/size-context-D4mYvcg8.d.ts +10 -0
  153. package/dist/size-context.d.ts +2 -11
  154. package/dist/size-context.js +14 -18
  155. package/dist/skeleton.d.ts +4 -5
  156. package/dist/skeleton.js +9 -45
  157. package/dist/slider.d.ts +27 -0
  158. package/dist/slider.js +81 -0
  159. package/dist/sparkline.d.ts +43 -46
  160. package/dist/sparkline.js +223 -561
  161. package/dist/stepper.d.ts +23 -24
  162. package/dist/stepper.js +149 -276
  163. package/dist/styles.css +9995 -2
  164. package/dist/switch.d.ts +10 -12
  165. package/dist/switch.js +49 -106
  166. package/dist/table-card.d.ts +35 -0
  167. package/dist/table-card.js +125 -0
  168. package/dist/table.d.ts +18 -14
  169. package/dist/table.js +114 -182
  170. package/dist/tabs.d.ts +23 -15
  171. package/dist/tabs.js +62 -149
  172. package/dist/tag.d.ts +22 -23
  173. package/dist/tag.js +104 -156
  174. package/dist/testimonial-block.d.ts +33 -0
  175. package/dist/testimonial-block.js +208 -0
  176. package/dist/textarea-IS_D8pXf.d.ts +11 -0
  177. package/dist/textarea.d.ts +2 -12
  178. package/dist/textarea.js +20 -74
  179. package/dist/time-picker.d.ts +11 -11
  180. package/dist/time-picker.js +247 -464
  181. package/dist/toast.d.ts +16 -18
  182. package/dist/toast.js +154 -310
  183. package/dist/tooltip.d.ts +9 -10
  184. package/dist/tooltip.js +33 -91
  185. package/dist/tree-map.d.ts +54 -57
  186. package/dist/tree-map.js +231 -646
  187. package/dist/use-uncontrolled-CLfM1XbB.js +21 -0
  188. package/dist/waterfall-chart.d.ts +126 -0
  189. package/dist/waterfall-chart.js +480 -0
  190. package/package.json +123 -34
  191. package/dist/accordion.js.map +0 -1
  192. package/dist/alert.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/base.css +0 -32
  197. package/dist/breadcrumb.js.map +0 -1
  198. package/dist/bullet-chart.js.map +0 -1
  199. package/dist/button-group.js.map +0 -1
  200. package/dist/button.js.map +0 -1
  201. package/dist/calendar.js.map +0 -1
  202. package/dist/card.js.map +0 -1
  203. package/dist/carousel.js.map +0 -1
  204. package/dist/chart.js.map +0 -1
  205. package/dist/checkbox.js.map +0 -1
  206. package/dist/collapsible.js.map +0 -1
  207. package/dist/combobox.js.map +0 -1
  208. package/dist/date-picker.js.map +0 -1
  209. package/dist/dialog.js.map +0 -1
  210. package/dist/dropdown-menu.js.map +0 -1
  211. package/dist/dropzone.js.map +0 -1
  212. package/dist/empty-state.js.map +0 -1
  213. package/dist/field.js.map +0 -1
  214. package/dist/files/red-hat-display-latin-300-italic.woff +0 -0
  215. package/dist/files/red-hat-display-latin-300-italic.woff2 +0 -0
  216. package/dist/files/red-hat-display-latin-300-normal.woff +0 -0
  217. package/dist/files/red-hat-display-latin-300-normal.woff2 +0 -0
  218. package/dist/files/red-hat-display-latin-400-italic.woff +0 -0
  219. package/dist/files/red-hat-display-latin-400-italic.woff2 +0 -0
  220. package/dist/files/red-hat-display-latin-400-normal.woff +0 -0
  221. package/dist/files/red-hat-display-latin-400-normal.woff2 +0 -0
  222. package/dist/files/red-hat-display-latin-500-italic.woff +0 -0
  223. package/dist/files/red-hat-display-latin-500-italic.woff2 +0 -0
  224. package/dist/files/red-hat-display-latin-500-normal.woff +0 -0
  225. package/dist/files/red-hat-display-latin-500-normal.woff2 +0 -0
  226. package/dist/files/red-hat-display-latin-600-italic.woff +0 -0
  227. package/dist/files/red-hat-display-latin-600-italic.woff2 +0 -0
  228. package/dist/files/red-hat-display-latin-600-normal.woff +0 -0
  229. package/dist/files/red-hat-display-latin-600-normal.woff2 +0 -0
  230. package/dist/files/red-hat-display-latin-700-italic.woff +0 -0
  231. package/dist/files/red-hat-display-latin-700-italic.woff2 +0 -0
  232. package/dist/files/red-hat-display-latin-700-normal.woff +0 -0
  233. package/dist/files/red-hat-display-latin-700-normal.woff2 +0 -0
  234. package/dist/files/red-hat-display-latin-800-italic.woff +0 -0
  235. package/dist/files/red-hat-display-latin-800-italic.woff2 +0 -0
  236. package/dist/files/red-hat-display-latin-800-normal.woff +0 -0
  237. package/dist/files/red-hat-display-latin-800-normal.woff2 +0 -0
  238. package/dist/files/red-hat-display-latin-900-italic.woff +0 -0
  239. package/dist/files/red-hat-display-latin-900-italic.woff2 +0 -0
  240. package/dist/files/red-hat-display-latin-900-normal.woff +0 -0
  241. package/dist/files/red-hat-display-latin-900-normal.woff2 +0 -0
  242. package/dist/files/red-hat-display-latin-ext-300-italic.woff +0 -0
  243. package/dist/files/red-hat-display-latin-ext-300-italic.woff2 +0 -0
  244. package/dist/files/red-hat-display-latin-ext-300-normal.woff +0 -0
  245. package/dist/files/red-hat-display-latin-ext-300-normal.woff2 +0 -0
  246. package/dist/files/red-hat-display-latin-ext-400-italic.woff +0 -0
  247. package/dist/files/red-hat-display-latin-ext-400-italic.woff2 +0 -0
  248. package/dist/files/red-hat-display-latin-ext-400-normal.woff +0 -0
  249. package/dist/files/red-hat-display-latin-ext-400-normal.woff2 +0 -0
  250. package/dist/files/red-hat-display-latin-ext-500-italic.woff +0 -0
  251. package/dist/files/red-hat-display-latin-ext-500-italic.woff2 +0 -0
  252. package/dist/files/red-hat-display-latin-ext-500-normal.woff +0 -0
  253. package/dist/files/red-hat-display-latin-ext-500-normal.woff2 +0 -0
  254. package/dist/files/red-hat-display-latin-ext-600-italic.woff +0 -0
  255. package/dist/files/red-hat-display-latin-ext-600-italic.woff2 +0 -0
  256. package/dist/files/red-hat-display-latin-ext-600-normal.woff +0 -0
  257. package/dist/files/red-hat-display-latin-ext-600-normal.woff2 +0 -0
  258. package/dist/files/red-hat-display-latin-ext-700-italic.woff +0 -0
  259. package/dist/files/red-hat-display-latin-ext-700-italic.woff2 +0 -0
  260. package/dist/files/red-hat-display-latin-ext-700-normal.woff +0 -0
  261. package/dist/files/red-hat-display-latin-ext-700-normal.woff2 +0 -0
  262. package/dist/files/red-hat-display-latin-ext-800-italic.woff +0 -0
  263. package/dist/files/red-hat-display-latin-ext-800-italic.woff2 +0 -0
  264. package/dist/files/red-hat-display-latin-ext-800-normal.woff +0 -0
  265. package/dist/files/red-hat-display-latin-ext-800-normal.woff2 +0 -0
  266. package/dist/files/red-hat-display-latin-ext-900-italic.woff +0 -0
  267. package/dist/files/red-hat-display-latin-ext-900-italic.woff2 +0 -0
  268. package/dist/files/red-hat-display-latin-ext-900-normal.woff +0 -0
  269. package/dist/files/red-hat-display-latin-ext-900-normal.woff2 +0 -0
  270. package/dist/funnel-chart.js.map +0 -1
  271. package/dist/index.d.ts +0 -87
  272. package/dist/index.js +0 -10448
  273. package/dist/index.js.map +0 -1
  274. package/dist/input-group.js.map +0 -1
  275. package/dist/input-size-context.js.map +0 -1
  276. package/dist/input.js.map +0 -1
  277. package/dist/item.js.map +0 -1
  278. package/dist/kpi-card.js.map +0 -1
  279. package/dist/label.js.map +0 -1
  280. package/dist/line-chart.js.map +0 -1
  281. package/dist/logo.js.map +0 -1
  282. package/dist/number-input.js.map +0 -1
  283. package/dist/page-header.js.map +0 -1
  284. package/dist/pagination.js.map +0 -1
  285. package/dist/password-input.js.map +0 -1
  286. package/dist/phone-input.js.map +0 -1
  287. package/dist/photo-gallery.js.map +0 -1
  288. package/dist/pie-chart.js.map +0 -1
  289. package/dist/popover.js.map +0 -1
  290. package/dist/progress.js.map +0 -1
  291. package/dist/radio-group.js.map +0 -1
  292. package/dist/red-hat-display.css +0 -2
  293. package/dist/rich-text-editor.js.map +0 -1
  294. package/dist/search-input.js.map +0 -1
  295. package/dist/select.js.map +0 -1
  296. package/dist/separator.js.map +0 -1
  297. package/dist/sheet.js.map +0 -1
  298. package/dist/sidebar.js.map +0 -1
  299. package/dist/size-context.js.map +0 -1
  300. package/dist/skeleton.js.map +0 -1
  301. package/dist/sparkline.js.map +0 -1
  302. package/dist/stepper.js.map +0 -1
  303. package/dist/switch.js.map +0 -1
  304. package/dist/tab-list.d.ts +0 -38
  305. package/dist/tab-list.js +0 -394
  306. package/dist/tab-list.js.map +0 -1
  307. package/dist/table.js.map +0 -1
  308. package/dist/tabs.js.map +0 -1
  309. package/dist/tag.js.map +0 -1
  310. package/dist/textarea.js.map +0 -1
  311. package/dist/theme/giddaa.css +0 -2
  312. package/dist/time-picker.js.map +0 -1
  313. package/dist/toast.js.map +0 -1
  314. package/dist/tooltip.js.map +0 -1
  315. package/dist/tree-map.js.map +0 -1
package/dist/badge.js CHANGED
@@ -1,119 +1,71 @@
1
- // src/components/ui/badge.tsx
1
+ import { t as cn } from "./cn-BI_4DMBf.js";
2
+ import { useComponentSize } from "./size-context.js";
2
3
  import { mergeProps } from "@base-ui/react/merge-props";
3
4
  import { useRender } from "@base-ui/react/use-render";
4
5
  import { cva } from "class-variance-authority";
5
-
6
- // src/lib/cn.ts
7
- import { clsx } from "clsx";
8
- import { extendTailwindMerge } from "tailwind-merge";
9
- var twMerge = extendTailwindMerge({
10
- extend: {
11
- classGroups: {
12
- "font-size": [
13
- {
14
- text: [
15
- "gdt-display",
16
- "gdt-h1",
17
- "gdt-h2",
18
- "gdt-h3",
19
- "gdt-h4",
20
- "gdt-h5",
21
- "gdt-xl",
22
- "gdt-lg",
23
- "gdt-md",
24
- "gdt-sm",
25
- "gdt-xs",
26
- "gdt-subtext",
27
- "gdt-capitalized"
28
- ]
29
- }
30
- ]
31
- }
32
- }
6
+ //#region src/badge.tsx
7
+ const badgeVariants = cva("group/badge inline-flex w-fit shrink-0 items-center justify-center overflow-hidden border font-bold leading-none whitespace-nowrap transition-[background-color,border-color,color,box-shadow] outline-none focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] aria-invalid:border-line-danger aria-invalid:text-fg-danger [&>svg]:pointer-events-none [&>svg]:shrink-0 [&>svg]:text-current", {
8
+ variants: {
9
+ variant: {
10
+ default: "border-line bg-surface-raised text-fg-secondary",
11
+ accent: "border-transparent bg-surface-accent text-fg-on-accent",
12
+ info: "border-status-info/40 bg-surface-info-subtle text-status-info",
13
+ success: "border-status-success/40 bg-surface-brand-subtle text-status-success",
14
+ warning: "border-status-warning/40 bg-surface-accent-subtle text-status-warning",
15
+ danger: "border-line-danger bg-surface-danger-subtle text-status-danger",
16
+ secondary: "border-status-info/40 bg-surface-info-subtle text-status-info",
17
+ destructive: "border-line-danger bg-surface-danger-subtle text-status-danger",
18
+ outline: "border-line bg-transparent text-fg-secondary"
19
+ },
20
+ size: {
21
+ sm: "min-h-7 min-w-7 gap-1 px-2.5 py-1 text-gdt-xs [&>svg]:size-3",
22
+ md: "min-h-9 min-w-9 gap-1.5 px-3 py-1.5 text-gdt-sm [&>svg]:size-3.5",
23
+ lg: "min-h-10.5 min-w-10.5 gap-2 px-4 py-2 text-gdt-md [&>svg]:size-4"
24
+ },
25
+ shape: {
26
+ round: "rounded-4xl",
27
+ box: "rounded-lg"
28
+ },
29
+ border: {
30
+ true: "",
31
+ false: "border-transparent"
32
+ },
33
+ iconOnly: {
34
+ true: "py-0 px-0",
35
+ false: ""
36
+ }
37
+ },
38
+ defaultVariants: {
39
+ variant: "default",
40
+ size: "md",
41
+ shape: "round",
42
+ border: true
43
+ }
33
44
  });
34
- function cn(...inputs) {
35
- return twMerge(clsx(inputs));
45
+ function Badge({ className, variant = "default", size, shape = "round", border = true, iconOnly = false, render, children, ...props }) {
46
+ const resolvedSize = useComponentSize(size);
47
+ return useRender({
48
+ defaultTagName: "span",
49
+ props: mergeProps({
50
+ className: cn(badgeVariants({
51
+ variant,
52
+ size: resolvedSize,
53
+ shape,
54
+ border,
55
+ iconOnly
56
+ }), className),
57
+ children
58
+ }, props),
59
+ render,
60
+ state: {
61
+ slot: "badge",
62
+ variant,
63
+ size: resolvedSize,
64
+ shape,
65
+ border,
66
+ iconOnly
67
+ }
68
+ });
36
69
  }
37
-
38
- // src/components/ui/size-context.tsx
39
- import { createContext, useContext } from "react";
40
- import { Fragment, jsx } from "react/jsx-runtime";
41
- var SizeContext = createContext(void 0);
42
- function useComponentSize(size, fallback = "md") {
43
- const inheritedSize = useContext(SizeContext);
44
- return size ?? inheritedSize ?? fallback;
45
- }
46
-
47
- // src/components/ui/badge.tsx
48
- var badgeVariants = cva(
49
- "group/badge inline-flex w-fit shrink-0 items-center justify-center overflow-hidden border font-bold leading-none whitespace-nowrap transition-[background-color,border-color,color,box-shadow] outline-none focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] aria-invalid:border-line-danger aria-invalid:text-fg-danger [&>svg]:pointer-events-none [&>svg]:shrink-0 [&>svg]:text-current",
50
- {
51
- variants: {
52
- variant: {
53
- default: "border-line bg-surface-raised text-fg-secondary",
54
- info: "border-status-info/40 bg-surface-info-subtle text-status-info",
55
- success: "border-status-success/40 bg-surface-brand-subtle text-status-success",
56
- warning: "border-status-warning/40 bg-surface-accent-subtle text-status-warning",
57
- danger: "border-line-danger bg-surface-danger-subtle text-status-danger",
58
- secondary: "border-status-info/40 bg-surface-info-subtle text-status-info",
59
- destructive: "border-line-danger bg-surface-danger-subtle text-status-danger",
60
- outline: "border-line bg-transparent text-fg-secondary"
61
- },
62
- size: {
63
- sm: "gap-1 px-2.5 py-1 text-gdt-xs has-data-[icon=inline-start]:pl-2 has-data-[icon=inline-end]:pr-2 [&>svg]:size-3",
64
- md: "gap-1.5 px-3 py-1.5 text-gdt-sm has-data-[icon=inline-start]:pl-2.5 has-data-[icon=inline-end]:pr-2.5 [&>svg]:size-3.5",
65
- lg: "gap-2 px-4 py-2 text-gdt-md has-data-[icon=inline-start]:pl-3.5 has-data-[icon=inline-end]:pr-3.5 [&>svg]:size-4"
66
- },
67
- shape: {
68
- round: "rounded-4xl",
69
- box: "rounded-lg"
70
- },
71
- border: {
72
- true: "",
73
- false: "border-transparent"
74
- }
75
- },
76
- defaultVariants: {
77
- variant: "default",
78
- size: "md",
79
- shape: "round",
80
- border: true
81
- }
82
- }
83
- );
84
- function Badge({
85
- className,
86
- variant = "default",
87
- size,
88
- shape = "round",
89
- border = true,
90
- render,
91
- ...props
92
- }) {
93
- const resolvedSize = useComponentSize(size);
94
- return useRender({
95
- defaultTagName: "span",
96
- props: mergeProps(
97
- {
98
- className: cn(
99
- badgeVariants({ variant, size: resolvedSize, shape, border }),
100
- className
101
- )
102
- },
103
- props
104
- ),
105
- render,
106
- state: {
107
- slot: "badge",
108
- variant,
109
- size: resolvedSize,
110
- shape,
111
- border
112
- }
113
- });
114
- }
115
- export {
116
- Badge,
117
- badgeVariants
118
- };
119
- //# sourceMappingURL=badge.js.map
70
+ //#endregion
71
+ export { Badge, badgeVariants };
@@ -1,136 +1,158 @@
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 { ChartConfig } from "./chart.js";
3
+ import * as React from "react";
4
+ import { Bar, BarChart as BarChart$1, CartesianGrid, XAxis, YAxis } from "recharts";
5
+ //#region src/bar-chart.d.ts
4
6
  /**
5
- * Bar charts are composed from recharts plot primitives directly — recharts
6
- * identifies `Bar`, `XAxis`, `YAxis`, `CartesianGrid`, and `LabelList` by
7
- * component identity, so they cannot be wrapped without breaking the chart.
8
- * This module supplies the giddaa-specific defaults that would otherwise be
9
- * copy-pasted into every bar chart: per-size layout numbers and a value-label
10
- * renderer. Pair them with the shared frame and overlays from `./chart`.
7
+ * Bar charts are composable wrappers over the recharts cartesian primitives.
8
+ * recharts 3 registers graphical items through context when they render, so the
9
+ * primitives CAN be wrapped in our own components. Each wrapper bakes in the
10
+ * giddaa defaults (tokens, size-scaled type, mark specs) and forwards every
11
+ * recharts prop, so anything can be overridden in place or replaced with the
12
+ * raw recharts element.
13
+ *
14
+ * Anatomy: `BarChart` is the plot root (frame + responsive box + recharts
15
+ * chart); compose the grid, axes, series, and the shared overlays from
16
+ * `./chart` as children:
11
17
  *
12
18
  * @example
13
- * const chart = useBarChartLayout();
14
19
  * <ChartCard size="md">
15
20
  * <ChartHeader>
16
21
  * <ChartTitle>Revenue Overview</ChartTitle>
17
- * <ChartDescription>Monthly revenue · JanJul</ChartDescription>
22
+ * <ChartDescription>Monthly revenue - Jan-Jul</ChartDescription>
18
23
  * </ChartHeader>
19
- * <ChartContainer config={config} {...chart.container}>
20
- * <BarChart data={data} {...chart.chart}>
21
- * <CartesianGrid vertical={false} stroke="var(--color-line-subtle)" />
22
- * <XAxis dataKey="month" {...chart.xAxis} />
23
- * <YAxis {...chart.yAxis} />
24
- * <ChartLegend verticalAlign="top" content={<ChartLegendContent />} />
25
- * <ChartTooltip content={<ChartTooltipContent />} />
26
- * <Bar dataKey="revenue" fill="var(--color-revenue)" {...chart.bar}>
27
- * <LabelList dataKey="revenue" content={<BarValueLabel />} />
28
- * </Bar>
29
- * </BarChart>
30
- * </ChartContainer>
24
+ * <BarChart config={config} data={data}>
25
+ * <BarChartGrid />
26
+ * <BarChartXAxis dataKey="month" />
27
+ * <BarChartYAxis domain={[0, 120]} />
28
+ * <ChartTooltip content={<ChartTooltipContent />} />
29
+ * <BarChartSeries dataKey="revenue" name="Revenue">
30
+ * <LabelList dataKey="revenue" content={<BarValueLabel />} />
31
+ * </BarChartSeries>
32
+ * </BarChart>
31
33
  * </ChartCard>
32
34
  */
35
+ /**
36
+ * Categorical series palette - the theme-aware `chart-1`...`chart-3` tokens.
37
+ * Assign colours in this fixed order, never cycled: a fourth series folds into
38
+ * "Other" or becomes a second chart.
39
+ */
40
+ declare const BAR_CHART_PALETTE: readonly ["var(--color-chart-1)", "var(--color-chart-2)", "var(--color-chart-3)"];
41
+ type BarChartOrientation = "vertical" | "horizontal";
33
42
  type BarChartLayout = {
34
- /** Plot height in px. Width stays fluid via the ResponsiveContainer. */
35
- height: number;
36
- /** Outer margin top leaves room for value labels above the tallest bar. */
37
- margin: {
38
- top: number;
39
- right: number;
40
- bottom: number;
41
- left: number;
42
- };
43
- /** Cap on bar thickness so a few categories don't render slab-wide bars. */
44
- maxBarSize: number;
45
- /** Gap between categories (groups), as a percentage of the band. */
46
- barCategoryGap: string;
47
- /** Gap between bars within a group (grouped layout). */
48
- barGap: number;
49
- /** Corner radius for a bar. */
50
- barRadius: number;
51
- /** Axis tick label font size. */
52
- tickFontSize: number;
53
- /** Value label (on-bar number) font size. */
54
- valueFontSize: number;
55
- /** Reserved width for the value axis. */
56
- yAxisWidth: number;
57
- /** Space between an axis and its tick labels. */
58
- tickMargin: number;
43
+ /** Plot height in px. Width stays fluid via the ResponsiveContainer. */
44
+ height: number;
45
+ /** Outer margin - top leaves room for value labels above the tallest bar. */
46
+ margin: {
47
+ top: number;
48
+ right: number;
49
+ bottom: number;
50
+ left: number;
51
+ };
52
+ /** Cap on bar thickness so a few categories don't render slab-wide bars. */
53
+ maxBarSize: number;
54
+ /** Gap between categories (groups), as a percentage of the band. */
55
+ barCategoryGap: string;
56
+ /** Gap between bars within a group (grouped layout). */
57
+ barGap: number;
58
+ /** Corner radius for a bar. */
59
+ barRadius: number;
60
+ /** Axis tick label font size. */
61
+ tickFontSize: number;
62
+ /** Value label (on-bar number) font size. */
63
+ valueFontSize: number;
64
+ /** Reserved width for the value axis. */
65
+ yAxisWidth: number;
66
+ /** Space between an axis and its tick labels. */
67
+ tickMargin: number;
59
68
  };
60
69
  declare const BAR_CHART_LAYOUT: Record<ComponentSize, BarChartLayout>;
70
+ type BarChartProps = Omit<React.ComponentProps<typeof BarChart$1>, "width" | "height"> & {
71
+ /** Series labels/icons for the shared tooltip and legend (see `ChartConfig`). */
72
+ config?: ChartConfig;
73
+ /** Plot scale; inherited from the nearest `SizeProvider` when omitted. */
74
+ size?: ComponentSize;
75
+ /** Applied to the responsive plot box, e.g. to override its height. */
76
+ className?: string;
77
+ /** Visual bar direction. `horizontal` maps to recharts `layout="vertical"`. */
78
+ orientation?: BarChartOrientation;
79
+ };
61
80
  /**
62
- * Resolve the bar-chart layout for an explicit or inherited component size. The
63
- * returned object groups the giddaa defaults by the recharts component they
64
- * belong to spread each onto its element, then pass the data-specific props
65
- * (`config`, `data`, `dataKey`, `fill`, …) directly afterwards to add or
66
- * override anything:
67
- *
68
- * const chart = useBarChartLayout(size);
69
- * <ChartContainer config={config} {...chart.container}>
70
- * <BarChart data={data} {...chart.chart}>
71
- * <XAxis dataKey="month" {...chart.xAxis} />
72
- * <YAxis {...chart.yAxis} />
73
- * <Bar dataKey="revenue" fill="var(--color-revenue)" {...chart.bar} />
81
+ * Plot root - wraps the shared `ChartContainer` (tooltip/legend theming,
82
+ * responsive box) around the recharts `BarChart` with size-scaled height,
83
+ * margin, and bar gaps. `size` also flows to the child primitives through
84
+ * `SizeProvider`. Extra props reach the recharts chart (`data`, `syncId`,
85
+ * `layout`, ...); passing `layout` directly overrides `orientation`.
86
+ */
87
+ declare function BarChart({ config, size, className, children, orientation, layout, ...props }: BarChartProps): React.JSX.Element;
88
+ type BarChartGridProps = React.ComponentProps<typeof CartesianGrid>;
89
+ /**
90
+ * Value reference lines - recharts `CartesianGrid` with vertical lines hidden
91
+ * and the visible grid painted with the `line` token (`line-subtle` matches the
92
+ * chart card surface in both themes, so it would vanish). For horizontal bar
93
+ * charts, pass `horizontal={false} vertical`.
74
94
  */
75
- declare function useBarChartLayout(size?: ComponentSize): {
76
- container: {
77
- className: string;
78
- style: {
79
- height: number;
80
- };
81
- };
82
- chart: {
83
- accessibilityLayer: boolean;
84
- margin: {
85
- top: number;
86
- right: number;
87
- bottom: number;
88
- left: number;
89
- };
90
- barCategoryGap: string;
91
- barGap: number;
92
- };
93
- xAxis: {
94
- readonly tickLine: false;
95
- readonly axisLine: false;
96
- readonly tickMargin: number;
97
- readonly tick: {
98
- fontSize: number;
99
- };
100
- };
101
- yAxis: {
102
- readonly tickLine: false;
103
- readonly axisLine: false;
104
- readonly width: number;
105
- readonly tick: {
106
- fontSize: number;
107
- };
108
- };
109
- bar: {
110
- radius: [number, number, number, number];
111
- maxBarSize: number;
112
- };
95
+ declare function BarChartGrid(props: BarChartGridProps): React.JSX.Element;
96
+ type BarChartXAxisProps = React.ComponentProps<typeof XAxis> & {
97
+ /** Explicit axis scale; otherwise inherited from the chart's `size`. */
98
+ size?: ComponentSize;
113
99
  };
100
+ /**
101
+ * Category/value axis - recharts `XAxis` with no axis/tick lines,
102
+ * size-scaled tick margin, and caption-placeholder tick ink. Passing your own
103
+ * `tick` replaces the default styling entirely.
104
+ */
105
+ declare function BarChartXAxis({ size, tick, ...props }: BarChartXAxisProps): React.JSX.Element;
106
+ type BarChartYAxisProps = React.ComponentProps<typeof YAxis> & {
107
+ /** Explicit axis scale; otherwise inherited from the chart's `size`. */
108
+ size?: ComponentSize;
109
+ };
110
+ /**
111
+ * Value/category axis - recharts `YAxis` with no axis/tick lines,
112
+ * size-scaled tick type, and reserved width for value labels. Override `width`
113
+ * for long horizontal-category labels.
114
+ */
115
+ declare function BarChartYAxis({ size, tick, ...props }: BarChartYAxisProps): React.JSX.Element;
116
+ type BarChartSeriesProps = React.ComponentProps<typeof Bar> & {
117
+ /** Series colour for the bar. Defaults to the first categorical chart token. */
118
+ color?: string;
119
+ /** Explicit mark scale; otherwise inherited from the chart's `size`. */
120
+ size?: ComponentSize;
121
+ /** Override visual direction for radius when the root orientation is absent. */
122
+ orientation?: BarChartOrientation;
123
+ };
124
+ /**
125
+ * One data series - recharts `Bar` with the giddaa mark spec: a theme-aware
126
+ * series colour, size-scaled max thickness, and a small radius only on the
127
+ * leading edge (top for vertical bars, right for horizontal bars). `color`
128
+ * drives `fill`; `fill`, `radius`, and `maxBarSize` still win when passed
129
+ * directly.
130
+ */
131
+ declare function BarChartSeries({ color, size, orientation, ...props }: BarChartSeriesProps): React.JSX.Element;
114
132
  /**
115
133
  * Renderer for recharts `<LabelList content={<BarValueLabel />} />`. recharts
116
134
  * injects the bar geometry (`x`, `y`, `width`, `height`, `value`); the rest are
117
135
  * caller props. For a vertical bar the label sits above the bar; for a
118
- * horizontal bar (`orientation="horizontal"`) it sits to the right of the bar.
136
+ * horizontal bar it sits to the right of the bar. When used inside `BarChart`,
137
+ * the root `orientation` is inherited unless this component receives an
138
+ * explicit `orientation`.
119
139
  */
120
140
  type BarValueLabelProps = {
121
- /** Bar layout direction drives where the label is placed. */
122
- orientation?: "vertical" | "horizontal";
123
- /** Override the on-bar font size (defaults to the size-scaled value). */
124
- fontSize?: number;
125
- /** Format the raw value before display, e.g. `(v) => `₦${v}``. */
126
- formatter?: (value: React.ReactNode) => React.ReactNode;
127
- className?: string;
128
- x?: string | number;
129
- y?: string | number;
130
- width?: string | number;
131
- height?: string | number;
132
- value?: React.ReactNode;
141
+ /** Bar visual direction - drives where the label is placed. */
142
+ orientation?: BarChartOrientation;
143
+ /** Override the on-bar font size (defaults to the size-scaled value). */
144
+ fontSize?: number;
145
+ /** Format the raw value before display, e.g. `(v) => String(v)`. */
146
+ formatter?: (value: React.ReactNode) => React.ReactNode;
147
+ /** Explicit label scale; otherwise inherited from the chart's `size`. */
148
+ size?: ComponentSize;
149
+ className?: string;
150
+ x?: string | number;
151
+ y?: string | number;
152
+ width?: string | number;
153
+ height?: string | number;
154
+ value?: React.ReactNode;
133
155
  };
134
- declare function BarValueLabel({ orientation, fontSize, formatter, className, x, y, width, height, value, }: BarValueLabelProps): React.JSX.Element | null;
135
-
136
- export { BAR_CHART_LAYOUT, type BarChartLayout, BarValueLabel, type BarValueLabelProps, useBarChartLayout };
156
+ declare function BarValueLabel({ orientation, fontSize, formatter, size, className, x, y, width, height, value }: BarValueLabelProps): React.JSX.Element | null;
157
+ //#endregion
158
+ export { BAR_CHART_LAYOUT, BAR_CHART_PALETTE, BarChart, BarChartGrid, type BarChartGridProps, type BarChartLayout, type BarChartOrientation, type BarChartProps, BarChartSeries, type BarChartSeriesProps, BarChartXAxis, type BarChartXAxisProps, BarChartYAxis, type BarChartYAxisProps, BarValueLabel, type BarValueLabelProps };