@giddaa-housing/ui 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/css/generated/shared.css +1 -1
  2. package/css/giddaa.css +12 -2
  3. package/dist/accordion.d.ts +9 -10
  4. package/dist/accordion.js +41 -87
  5. package/dist/activity-timeline.d.ts +12 -16
  6. package/dist/activity-timeline.js +83 -198
  7. package/dist/alert.d.ts +8 -9
  8. package/dist/alert.js +53 -111
  9. package/dist/auth-layout.d.ts +4 -4
  10. package/dist/auth-layout.js +143 -294
  11. package/dist/avatar.d.ts +6 -6
  12. package/dist/avatar.js +49 -19
  13. package/dist/badge.d.ts +12 -14
  14. package/dist/badge.js +71 -11
  15. package/dist/bar-chart.d.ts +65 -67
  16. package/dist/bar-chart.js +232 -207
  17. package/dist/breadcrumb.d.ts +5 -5
  18. package/dist/breadcrumb.js +56 -118
  19. package/dist/bullet-chart.d.ts +41 -37
  20. package/dist/bullet-chart.js +125 -148
  21. package/dist/button-BZIeyUw6.d.ts +17 -0
  22. package/dist/button-group.d.ts +13 -16
  23. package/dist/button-group.js +39 -88
  24. package/dist/button.d.ts +2 -19
  25. package/dist/button.js +94 -13
  26. package/dist/calendar.d.ts +6 -6
  27. package/dist/calendar.js +138 -17
  28. package/dist/card.d.ts +14 -16
  29. package/dist/card.js +59 -145
  30. package/dist/carousel.d.ts +34 -35
  31. package/dist/carousel.js +335 -20
  32. package/dist/chart.d.ts +90 -63
  33. package/dist/chart.js +573 -28
  34. package/dist/checkbox.d.ts +10 -12
  35. package/dist/checkbox.js +82 -47
  36. package/dist/cn-BI_4DMBf.js +23 -0
  37. package/dist/collapsible.d.ts +7 -8
  38. package/dist/collapsible.js +22 -47
  39. package/dist/combobox.d.ts +10 -10
  40. package/dist/combobox.js +236 -44
  41. package/dist/cta.d.ts +12 -14
  42. package/dist/cta.js +175 -341
  43. package/dist/currency-selector.d.ts +31 -32
  44. package/dist/currency-selector.js +106 -184
  45. package/dist/data-table.d.ts +168 -0
  46. package/dist/data-table.js +676 -0
  47. package/dist/date-picker.d.ts +22 -23
  48. package/dist/date-picker.js +119 -192
  49. package/dist/details-card.d.ts +7 -7
  50. package/dist/details-card.js +104 -253
  51. package/dist/dialog.d.ts +13 -14
  52. package/dist/dialog.js +116 -209
  53. package/dist/dropdown-menu.d.ts +13 -13
  54. package/dist/dropdown-menu.js +180 -37
  55. package/dist/dropzone.d.ts +55 -55
  56. package/dist/dropzone.js +327 -439
  57. package/dist/editorial-card.d.ts +23 -25
  58. package/dist/editorial-card.js +129 -296
  59. package/dist/empty-state.d.ts +8 -9
  60. package/dist/empty-state.js +48 -105
  61. package/dist/field.d.ts +23 -25
  62. package/dist/field.js +110 -221
  63. package/dist/filter.d.ts +118 -0
  64. package/dist/filter.js +775 -0
  65. package/dist/footer.d.ts +8 -15
  66. package/dist/footer.js +197 -400
  67. package/dist/funnel-chart.d.ts +49 -48
  68. package/dist/funnel-chart.js +170 -189
  69. package/dist/gallery-indicator.d.ts +11 -12
  70. package/dist/gallery-indicator.js +75 -12
  71. package/dist/heatmap-chart.d.ts +47 -50
  72. package/dist/heatmap-chart.js +186 -237
  73. package/dist/infotip.d.ts +8 -9
  74. package/dist/infotip.js +33 -59
  75. package/dist/input-CfoEJ8A6.d.ts +12 -0
  76. package/dist/input-group.d.ts +16 -20
  77. package/dist/input-group.js +99 -23
  78. package/dist/input-size-context-C-SFx9sx.d.ts +10 -0
  79. package/dist/input-size-context.d.ts +2 -11
  80. package/dist/input-size-context.js +17 -9
  81. package/dist/input.d.ts +2 -13
  82. package/dist/input.js +27 -11
  83. package/dist/item.d.ts +7 -8
  84. package/dist/item.js +22 -59
  85. package/dist/kpi-card.d.ts +18 -20
  86. package/dist/kpi-card.js +84 -192
  87. package/dist/label.d.ts +6 -6
  88. package/dist/label.js +40 -8
  89. package/dist/line-chart.d.ts +200 -129
  90. package/dist/line-chart.js +330 -105
  91. package/dist/list-item.d.ts +22 -0
  92. package/dist/list-item.js +84 -0
  93. package/dist/logo.d.ts +4 -4
  94. package/dist/logo.js +92 -9
  95. package/dist/map-indicator.d.ts +7 -7
  96. package/dist/map-indicator.js +80 -106
  97. package/dist/match.d.ts +10 -11
  98. package/dist/match.js +62 -107
  99. package/dist/media-gallery-hero.d.ts +40 -42
  100. package/dist/media-gallery-hero.js +182 -343
  101. package/dist/media-player.d.ts +17 -17
  102. package/dist/media-player.js +873 -1348
  103. package/dist/multi-step-form.d.ts +56 -0
  104. package/dist/multi-step-form.js +342 -0
  105. package/dist/number-input.d.ts +34 -34
  106. package/dist/number-input.js +64 -117
  107. package/dist/page-header.d.ts +10 -11
  108. package/dist/page-header.js +34 -79
  109. package/dist/pagination.d.ts +17 -21
  110. package/dist/pagination.js +132 -207
  111. package/dist/password-input.d.ts +5 -13
  112. package/dist/password-input.js +31 -55
  113. package/dist/phone-input.d.ts +19 -20
  114. package/dist/phone-input.js +226 -344
  115. package/dist/photo-gallery.d.ts +19 -19
  116. package/dist/photo-gallery.js +313 -449
  117. package/dist/picker-lzgmsNfG.js +32 -0
  118. package/dist/pie-chart.d.ts +121 -90
  119. package/dist/pie-chart.js +183 -149
  120. package/dist/popover.d.ts +9 -9
  121. package/dist/popover.js +72 -23
  122. package/dist/price-tag.d.ts +26 -27
  123. package/dist/price-tag.js +113 -173
  124. package/dist/progress.d.ts +16 -17
  125. package/dist/progress.js +169 -24
  126. package/dist/property-listing-card.d.ts +14 -17
  127. package/dist/property-listing-card.js +102 -220
  128. package/dist/purchase-option-card.d.ts +79 -0
  129. package/dist/purchase-option-card.js +176 -0
  130. package/dist/radar-chart.d.ts +29 -31
  131. package/dist/radar-chart.js +162 -137
  132. package/dist/radio-group.d.ts +11 -13
  133. package/dist/radio-group.js +46 -60
  134. package/dist/review-block.d.ts +14 -16
  135. package/dist/review-block.js +154 -10
  136. package/dist/rich-text-editor.d.ts +30 -14
  137. package/dist/rich-text-editor.js +592 -716
  138. package/dist/scatter-chart.d.ts +45 -47
  139. package/dist/scatter-chart.js +236 -240
  140. package/dist/search-input.d.ts +8 -16
  141. package/dist/search-input.js +57 -109
  142. package/dist/select.d.ts +8 -8
  143. package/dist/select.js +144 -27
  144. package/dist/separator.d.ts +8 -9
  145. package/dist/separator.js +32 -8
  146. package/dist/sheet.d.ts +11 -11
  147. package/dist/sheet.js +103 -24
  148. package/dist/sidebar.d.ts +32 -37
  149. package/dist/sidebar.js +364 -634
  150. package/dist/size-context-D4mYvcg8.d.ts +10 -0
  151. package/dist/size-context.d.ts +2 -11
  152. package/dist/size-context.js +17 -9
  153. package/dist/skeleton.d.ts +4 -5
  154. package/dist/skeleton.js +12 -8
  155. package/dist/slider.d.ts +8 -9
  156. package/dist/slider.js +64 -135
  157. package/dist/sparkline.d.ts +68 -58
  158. package/dist/sparkline.js +315 -251
  159. package/dist/stepper.d.ts +23 -24
  160. package/dist/stepper.js +149 -246
  161. package/dist/styles.css +1004 -116
  162. package/dist/switch.d.ts +10 -12
  163. package/dist/switch.js +48 -70
  164. package/dist/table-card.d.ts +35 -0
  165. package/dist/table-card.js +125 -0
  166. package/dist/table.d.ts +18 -14
  167. package/dist/table.js +117 -154
  168. package/dist/tabs.d.ts +33 -15
  169. package/dist/tabs.js +110 -18
  170. package/dist/tag.d.ts +21 -23
  171. package/dist/tag.js +103 -159
  172. package/dist/testimonial-block.d.ts +18 -19
  173. package/dist/testimonial-block.js +189 -358
  174. package/dist/textarea-IS_D8pXf.d.ts +11 -0
  175. package/dist/textarea.d.ts +2 -12
  176. package/dist/textarea.js +24 -11
  177. package/dist/time-picker.d.ts +11 -11
  178. package/dist/time-picker.js +245 -302
  179. package/dist/toast.d.ts +16 -18
  180. package/dist/toast.js +154 -205
  181. package/dist/tooltip.d.ts +8 -9
  182. package/dist/tooltip.js +37 -12
  183. package/dist/tree-map.d.ts +59 -62
  184. package/dist/tree-map.js +226 -269
  185. package/dist/use-uncontrolled-CLfM1XbB.js +21 -0
  186. package/dist/waterfall-chart.d.ts +94 -97
  187. package/dist/waterfall-chart.js +455 -552
  188. package/package.json +36 -9
  189. package/dist/accordion.js.map +0 -1
  190. package/dist/activity-timeline.js.map +0 -1
  191. package/dist/alert.js.map +0 -1
  192. package/dist/auth-layout.js.map +0 -1
  193. package/dist/avatar.js.map +0 -1
  194. package/dist/badge.js.map +0 -1
  195. package/dist/bar-chart.js.map +0 -1
  196. package/dist/breadcrumb.js.map +0 -1
  197. package/dist/bullet-chart.js.map +0 -1
  198. package/dist/button-group.js.map +0 -1
  199. package/dist/button.js.map +0 -1
  200. package/dist/calendar.js.map +0 -1
  201. package/dist/card.js.map +0 -1
  202. package/dist/carousel.js.map +0 -1
  203. package/dist/chart.js.map +0 -1
  204. package/dist/checkbox.js.map +0 -1
  205. package/dist/chunk-322YCNVL.js +0 -278
  206. package/dist/chunk-322YCNVL.js.map +0 -1
  207. package/dist/chunk-3ACQVT7A.js +0 -25
  208. package/dist/chunk-3ACQVT7A.js.map +0 -1
  209. package/dist/chunk-3T65TLJX.js +0 -334
  210. package/dist/chunk-3T65TLJX.js.map +0 -1
  211. package/dist/chunk-6ZSGQHH2.js +0 -192
  212. package/dist/chunk-6ZSGQHH2.js.map +0 -1
  213. package/dist/chunk-7TBMLFGW.js +0 -41
  214. package/dist/chunk-7TBMLFGW.js.map +0 -1
  215. package/dist/chunk-B4H6RNDH.js +0 -135
  216. package/dist/chunk-B4H6RNDH.js.map +0 -1
  217. package/dist/chunk-BUXCGZ6X.js +0 -219
  218. package/dist/chunk-BUXCGZ6X.js.map +0 -1
  219. package/dist/chunk-CHII2QHH.js +0 -58
  220. package/dist/chunk-CHII2QHH.js.map +0 -1
  221. package/dist/chunk-DMNOXRRW.js +0 -147
  222. package/dist/chunk-DMNOXRRW.js.map +0 -1
  223. package/dist/chunk-EFSOSSIC.js +0 -130
  224. package/dist/chunk-EFSOSSIC.js.map +0 -1
  225. package/dist/chunk-FZDSVMKY.js +0 -363
  226. package/dist/chunk-FZDSVMKY.js.map +0 -1
  227. package/dist/chunk-GJOFIJS3.js +0 -246
  228. package/dist/chunk-GJOFIJS3.js.map +0 -1
  229. package/dist/chunk-HL3ZSYES.js +0 -23
  230. package/dist/chunk-HL3ZSYES.js.map +0 -1
  231. package/dist/chunk-JVLUBAPB.js +0 -129
  232. package/dist/chunk-JVLUBAPB.js.map +0 -1
  233. package/dist/chunk-KDPYSOYZ.js +0 -64
  234. package/dist/chunk-KDPYSOYZ.js.map +0 -1
  235. package/dist/chunk-KSMDANKI.js +0 -43
  236. package/dist/chunk-KSMDANKI.js.map +0 -1
  237. package/dist/chunk-MEKCCOP5.js +0 -46
  238. package/dist/chunk-MEKCCOP5.js.map +0 -1
  239. package/dist/chunk-NOFXVRWL.js +0 -451
  240. package/dist/chunk-NOFXVRWL.js.map +0 -1
  241. package/dist/chunk-PC5MHNVA.js +0 -171
  242. package/dist/chunk-PC5MHNVA.js.map +0 -1
  243. package/dist/chunk-QKAQZ2GU.js +0 -122
  244. package/dist/chunk-QKAQZ2GU.js.map +0 -1
  245. package/dist/chunk-QZHSHSVV.js +0 -26
  246. package/dist/chunk-QZHSHSVV.js.map +0 -1
  247. package/dist/chunk-RBMK26XD.js +0 -19
  248. package/dist/chunk-RBMK26XD.js.map +0 -1
  249. package/dist/chunk-SFNJGF6M.js +0 -262
  250. package/dist/chunk-SFNJGF6M.js.map +0 -1
  251. package/dist/chunk-UJJNLGTM.js +0 -112
  252. package/dist/chunk-UJJNLGTM.js.map +0 -1
  253. package/dist/chunk-VGR4ZWJ3.js +0 -418
  254. package/dist/chunk-VGR4ZWJ3.js.map +0 -1
  255. package/dist/chunk-XG47P6D4.js +0 -99
  256. package/dist/chunk-XG47P6D4.js.map +0 -1
  257. package/dist/chunk-XZZAHNVM.js +0 -21
  258. package/dist/chunk-XZZAHNVM.js.map +0 -1
  259. package/dist/chunk-Y4TTYVNE.js +0 -36
  260. package/dist/chunk-Y4TTYVNE.js.map +0 -1
  261. package/dist/chunk-YDWIHW6Q.js +0 -69
  262. package/dist/chunk-YDWIHW6Q.js.map +0 -1
  263. package/dist/collapsible.js.map +0 -1
  264. package/dist/combobox.js.map +0 -1
  265. package/dist/cta.js.map +0 -1
  266. package/dist/currency-selector.js.map +0 -1
  267. package/dist/date-picker.js.map +0 -1
  268. package/dist/details-card.js.map +0 -1
  269. package/dist/dialog.js.map +0 -1
  270. package/dist/dropdown-menu.js.map +0 -1
  271. package/dist/dropzone.js.map +0 -1
  272. package/dist/editorial-card.js.map +0 -1
  273. package/dist/empty-state.js.map +0 -1
  274. package/dist/field.js.map +0 -1
  275. package/dist/footer.js.map +0 -1
  276. package/dist/funnel-chart.js.map +0 -1
  277. package/dist/gallery-indicator.js.map +0 -1
  278. package/dist/heatmap-chart.js.map +0 -1
  279. package/dist/infotip.js.map +0 -1
  280. package/dist/input-group.js.map +0 -1
  281. package/dist/input-size-context.js.map +0 -1
  282. package/dist/input.js.map +0 -1
  283. package/dist/item.js.map +0 -1
  284. package/dist/kpi-card.js.map +0 -1
  285. package/dist/label.js.map +0 -1
  286. package/dist/line-chart.js.map +0 -1
  287. package/dist/logo.js.map +0 -1
  288. package/dist/map-indicator.js.map +0 -1
  289. package/dist/match.js.map +0 -1
  290. package/dist/media-gallery-hero.js.map +0 -1
  291. package/dist/media-player.js.map +0 -1
  292. package/dist/number-input.js.map +0 -1
  293. package/dist/page-header.js.map +0 -1
  294. package/dist/pagination.js.map +0 -1
  295. package/dist/password-input.js.map +0 -1
  296. package/dist/phone-input.js.map +0 -1
  297. package/dist/photo-gallery.js.map +0 -1
  298. package/dist/pie-chart.js.map +0 -1
  299. package/dist/popover.js.map +0 -1
  300. package/dist/price-tag.js.map +0 -1
  301. package/dist/progress.js.map +0 -1
  302. package/dist/property-listing-card.js.map +0 -1
  303. package/dist/radar-chart.js.map +0 -1
  304. package/dist/radio-group.js.map +0 -1
  305. package/dist/review-block.js.map +0 -1
  306. package/dist/rich-text-editor.js.map +0 -1
  307. package/dist/scatter-chart.js.map +0 -1
  308. package/dist/search-input.js.map +0 -1
  309. package/dist/select.js.map +0 -1
  310. package/dist/separator.js.map +0 -1
  311. package/dist/sheet.js.map +0 -1
  312. package/dist/sidebar.js.map +0 -1
  313. package/dist/size-context.js.map +0 -1
  314. package/dist/skeleton.js.map +0 -1
  315. package/dist/slider.js.map +0 -1
  316. package/dist/sparkline.js.map +0 -1
  317. package/dist/stepper.js.map +0 -1
  318. package/dist/switch.js.map +0 -1
  319. package/dist/tab-list.d.ts +0 -38
  320. package/dist/tab-list.js +0 -123
  321. package/dist/tab-list.js.map +0 -1
  322. package/dist/table.js.map +0 -1
  323. package/dist/tabs.js.map +0 -1
  324. package/dist/tag.js.map +0 -1
  325. package/dist/testimonial-block.js.map +0 -1
  326. package/dist/textarea.js.map +0 -1
  327. package/dist/time-picker.js.map +0 -1
  328. package/dist/toast.js.map +0 -1
  329. package/dist/tooltip.js.map +0 -1
  330. package/dist/tree-map.js.map +0 -1
  331. package/dist/waterfall-chart.js.map +0 -1
package/dist/table.js CHANGED
@@ -1,170 +1,133 @@
1
1
  "use client";
2
- import {
3
- cn
4
- } from "./chunk-Y4TTYVNE.js";
5
-
6
- // src/table.tsx
2
+ import { t as cn } from "./cn-BI_4DMBf.js";
7
3
  import { jsx } from "react/jsx-runtime";
8
- function Table({
9
- className,
10
- containerClassName,
11
- ...props
12
- }) {
13
- return /* @__PURE__ */ jsx(
14
- "div",
15
- {
16
- "data-slot": "table-container",
17
- className: cn(
18
- "relative w-full overflow-x-auto rounded-xl border border-line bg-surface-overlay",
19
- containerClassName
20
- ),
21
- children: /* @__PURE__ */ jsx(
22
- "table",
23
- {
24
- "data-slot": "table",
25
- className: cn("min-w-full caption-bottom", className),
26
- ...props
27
- }
28
- )
29
- }
30
- );
4
+ //#region src/table.tsx
5
+ function getPinnedDividerClassName(pinnedSide) {
6
+ if (!pinnedSide) return;
7
+ return cn("after:pointer-events-none after:absolute after:inset-y-0 after:z-10 after:w-0.5 after:bg-line after:content-['']", pinnedSide === "left" && "after:right-0", pinnedSide === "right" && "after:left-0");
31
8
  }
32
- function TableHeader({
33
- className,
34
- sticky = false,
35
- ...props
36
- }) {
37
- return /* @__PURE__ */ jsx(
38
- "thead",
39
- {
40
- "data-slot": "table-header",
41
- className: cn(
42
- "bg-surface-raised",
43
- sticky && "sticky top-0 z-2 shadow-(--elevation-e2-shadow)",
44
- className
45
- ),
46
- ...props
47
- }
48
- );
9
+ /**
10
+ * Outer card wrapper.
11
+ *
12
+ * Tokens: bg-canvas (container fill), border-line-subtle (container border).
13
+ * Pass `containerClassName` to override scroll, sizing, or rounding for
14
+ * individual call-sites (e.g. the data-table's max-height + rounded-[20px]).
15
+ */
16
+ function Table({ className, containerClassName, ...props }) {
17
+ return /* @__PURE__ */ jsx("div", {
18
+ "data-slot": "table-container",
19
+ className: cn("relative w-full overflow-x-auto rounded-2xl border border-line-subtle bg-canvas", containerClassName),
20
+ children: /* @__PURE__ */ jsx("table", {
21
+ "data-slot": "table",
22
+ className: cn("min-w-full caption-bottom", className),
23
+ ...props
24
+ })
25
+ });
26
+ }
27
+ /**
28
+ * Header band (thead).
29
+ *
30
+ * Token: bg-surface-raised (header fill).
31
+ * Add `sticky` to pin the header and show Shadow-2 elevation while scrolled.
32
+ */
33
+ function TableHeader({ className, sticky = false, ...props }) {
34
+ return /* @__PURE__ */ jsx("thead", {
35
+ "data-slot": "table-header",
36
+ className: cn("bg-surface-raised", sticky && "sticky top-0 z-2 shadow-(--elevation-e2-shadow)", className),
37
+ ...props
38
+ });
49
39
  }
50
40
  function TableBody({ className, ...props }) {
51
- return /* @__PURE__ */ jsx(
52
- "tbody",
53
- {
54
- "data-slot": "table-body",
55
- className: cn("[&_tr:last-child]:border-0", className),
56
- ...props
57
- }
58
- );
41
+ return /* @__PURE__ */ jsx("tbody", {
42
+ "data-slot": "table-body",
43
+ className: cn("[&_tr:last-child]:border-0", className),
44
+ ...props
45
+ });
59
46
  }
47
+ /**
48
+ * Footer band (tfoot).
49
+ *
50
+ * Shares the same raised surface as the header.
51
+ */
60
52
  function TableFooter({ className, ...props }) {
61
- return /* @__PURE__ */ jsx(
62
- "tfoot",
63
- {
64
- "data-slot": "table-footer",
65
- className: cn(
66
- "border-t border-line bg-surface-raised font-medium [&>tr]:last:border-b-0",
67
- className
68
- ),
69
- ...props
70
- }
71
- );
53
+ return /* @__PURE__ */ jsx("tfoot", {
54
+ "data-slot": "table-footer",
55
+ className: cn("border-t border-line bg-surface-raised font-medium [&>tr]:last:border-b-0", className),
56
+ ...props
57
+ });
72
58
  }
59
+ /**
60
+ * Table row (tr).
61
+ *
62
+ * Token: border-line-subtle (row divider). The last body row has no border
63
+ * via the [&_tr:last-child]:border-0 rule on TableBody.
64
+ */
73
65
  function TableRow({ className, ...props }) {
74
- return /* @__PURE__ */ jsx(
75
- "tr",
76
- {
77
- "data-slot": "table-row",
78
- className: cn(
79
- "group border-b border-line-subtle transition-colors",
80
- "hover:bg-surface has-aria-expanded:bg-surface",
81
- "data-[state=selected]:bg-surface-brand-subtle",
82
- className
83
- ),
84
- ...props
85
- }
86
- );
66
+ return /* @__PURE__ */ jsx("tr", {
67
+ "data-slot": "table-row",
68
+ className: cn("group border-b border-line-subtle bg-canvas transition-[background-color,filter]", "hover:bg-surface active:bg-surface-raised has-aria-expanded:bg-surface", "data-[state=selected]:bg-surface-brand-subtle data-[state=selected]:hover:bg-surface-brand-subtle data-[state=selected]:hover:brightness-95 data-[state=selected]:active:brightness-90", className),
69
+ ...props
70
+ });
87
71
  }
88
- function TableHead({ className, ...props }) {
89
- return /* @__PURE__ */ jsx(
90
- "th",
91
- {
92
- "data-slot": "table-head",
93
- className: cn(
94
- "h-11 px-5 py-3.5 text-left align-middle bg-surface-raised",
95
- "text-gdt-capitalized font-bold uppercase tracking-wide text-fg-secondary",
96
- "whitespace-nowrap has-[[role=checkbox]]:pr-0",
97
- className
98
- ),
99
- ...props
100
- }
101
- );
72
+ /**
73
+ * Header cell (th).
74
+ *
75
+ * Tokens: bg-surface-raised (always applied so sticky/pinned th cells correctly
76
+ * cover scrolling content), text-fg-secondary, text-gdt-sm semibold for the
77
+ * table header style in Figma.
78
+ */
79
+ function TableHead({ className, pinnedSide, ...props }) {
80
+ return /* @__PURE__ */ jsx("th", {
81
+ "data-slot": "table-head",
82
+ className: cn("relative h-14 px-6 py-4 text-left align-middle bg-surface-raised", "text-gdt-sm font-semibold text-fg-secondary", "whitespace-nowrap has-[[role=checkbox]]:pr-0", getPinnedDividerClassName(pinnedSide), className),
83
+ ...props
84
+ });
102
85
  }
103
- function TableCell({
104
- className,
105
- pinned = false,
106
- ...props
107
- }) {
108
- return /* @__PURE__ */ jsx(
109
- "td",
110
- {
111
- "data-slot": "table-cell",
112
- className: cn(
113
- "px-5 py-3.5 align-middle text-gdt-sm text-fg-primary",
114
- "whitespace-nowrap",
115
- pinned && "bg-surface-raised group-hover:bg-surface group-data-[state=selected]:bg-surface-brand-subtle",
116
- className
117
- ),
118
- ...props
119
- }
120
- );
86
+ /**
87
+ * Standard body cell (td).
88
+ *
89
+ * Token: text-fg-primary (body cell text), text-gdt-sm.
90
+ * Pass `pinned` when the column is sticky. Pinned cells get an opaque
91
+ * bg-canvas cover so scrolling content doesn't bleed through. Pass
92
+ * `pinnedSide` to draw the 2px sticky-column divider from the Figma spec.
93
+ * Non-pinned cells are left transparent so the parent row's surface shows through.
94
+ */
95
+ function TableCell({ className, pinned = false, pinnedSide, ...props }) {
96
+ return /* @__PURE__ */ jsx("td", {
97
+ "data-slot": "table-cell",
98
+ className: cn("relative h-14 px-6 py-4 align-middle text-gdt-sm text-fg-primary", "whitespace-nowrap", pinned && "bg-canvas transition-[background-color,filter] group-hover:bg-surface group-active:bg-surface-raised group-data-[state=selected]:bg-surface-brand-subtle group-data-[state=selected]:group-hover:bg-surface-brand-subtle group-data-[state=selected]:group-hover:brightness-95 group-data-[state=selected]:group-active:brightness-90", getPinnedDividerClassName(pinnedSide), className),
99
+ ...props
100
+ });
121
101
  }
102
+ /**
103
+ * Formatted cell title, for use within a TableCell
104
+ */
122
105
  function TableCellTitle({ className, ...props }) {
123
- return /* @__PURE__ */ jsx(
124
- "span",
125
- {
126
- "data-slot": "table-cell-title",
127
- className: cn("text-gdt-sm font-semibold", className),
128
- ...props
129
- }
130
- );
106
+ return /* @__PURE__ */ jsx("span", {
107
+ "data-slot": "table-cell-title",
108
+ className: cn("text-gdt-sm font-semibold", className),
109
+ ...props
110
+ });
131
111
  }
132
- function TableCellCaption({
133
- className,
134
- ...props
135
- }) {
136
- return /* @__PURE__ */ jsx(
137
- "span",
138
- {
139
- "data-slot": "table-cell-caption",
140
- className: cn("text-gdt-xs text-fg-secondary", className),
141
- ...props
142
- }
143
- );
112
+ /**
113
+ * Formatted cell caption, for use within a TableCell. Usually for auxiliary info below the title, uses the secondary text token and smaller size.
114
+ */
115
+ function TableCellCaption({ className, ...props }) {
116
+ return /* @__PURE__ */ jsx("span", {
117
+ "data-slot": "table-cell-caption",
118
+ className: cn("text-gdt-xs text-fg-secondary", className),
119
+ ...props
120
+ });
144
121
  }
145
- function TableCaption({
146
- className,
147
- ...props
148
- }) {
149
- return /* @__PURE__ */ jsx(
150
- "caption",
151
- {
152
- "data-slot": "table-caption",
153
- className: cn("mt-4 text-gdt-sm text-fg-secondary", className),
154
- ...props
155
- }
156
- );
122
+ /**
123
+ * Caption — rendered below the table, uses secondary text token.
124
+ */
125
+ function TableCaption({ className, ...props }) {
126
+ return /* @__PURE__ */ jsx("caption", {
127
+ "data-slot": "table-caption",
128
+ className: cn("mt-4 text-gdt-sm text-fg-secondary", className),
129
+ ...props
130
+ });
157
131
  }
158
- export {
159
- Table,
160
- TableBody,
161
- TableCaption,
162
- TableCell,
163
- TableCellCaption,
164
- TableCellTitle,
165
- TableFooter,
166
- TableHead,
167
- TableHeader,
168
- TableRow
169
- };
170
- //# sourceMappingURL=table.js.map
132
+ //#endregion
133
+ export { Table, TableBody, TableCaption, TableCell, TableCellCaption, TableCellTitle, TableFooter, TableHead, TableHeader, TableRow };
package/dist/tabs.d.ts CHANGED
@@ -1,18 +1,36 @@
1
- import * as class_variance_authority_types from 'class-variance-authority/types';
2
- import * as React from 'react';
3
- import { ComponentPropsWithoutRef } from 'react';
4
- import { Tabs as Tabs$1 } from '@base-ui/react/tabs';
5
-
1
+ import { t as ComponentSize } from "./size-context-D4mYvcg8.js";
2
+ import { ComponentPropsWithoutRef } from "react";
3
+ import { Tabs as Tabs$1 } from "@base-ui/react/tabs";
4
+ //#region src/tabs.d.ts
6
5
  type TabsListVariant = "default" | "line" | "secondary" | "underline";
7
- declare function Tabs({ className, orientation, ...props }: Tabs$1.Root.Props): React.JSX.Element;
6
+ declare function Tabs({ className, orientation, size, ...props }: Tabs$1.Root.Props & {
7
+ size?: ComponentSize;
8
+ }): import("react").JSX.Element;
8
9
  declare const tabsListVariants: (props?: ({
9
- variant?: "secondary" | "underline" | null | undefined;
10
- } & class_variance_authority_types.ClassProp) | undefined) => string;
10
+ variant?: "secondary" | "underline" | null | undefined;
11
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
11
12
  declare function TabsList({ className, variant, children, ...props }: Tabs$1.List.Props & {
12
- variant?: TabsListVariant;
13
- }): React.JSX.Element;
14
- declare function TabsTrigger({ className, nativeButton, ...props }: Tabs$1.Tab.Props): React.JSX.Element;
15
- declare function TabsCount({ className, ...props }: ComponentPropsWithoutRef<"span">): React.JSX.Element;
16
- declare function TabsContent({ className, ...props }: Tabs$1.Panel.Props): React.JSX.Element;
17
-
18
- export { Tabs, TabsContent, TabsCount, TabsList, TabsTrigger, tabsListVariants };
13
+ variant?: TabsListVariant;
14
+ }): import("react").JSX.Element;
15
+ /**
16
+ * Trigger styling, exported so recipes (e.g. an overflow "More" button that
17
+ * isn't a real tab) can render the same look. Reads `variant` off the parent
18
+ * `group/tabs-list` and `size` off the ancestor `group/tabs`, so it stays in
19
+ * sync wherever it lives inside a `Tabs` tree.
20
+ */
21
+ declare const tabsTriggerClassName: string;
22
+ declare function TabsTrigger({ className, nativeButton, ...props }: Tabs$1.Tab.Props): import("react").JSX.Element;
23
+ type TabsCountProps = ComponentPropsWithoutRef<"span"> & {
24
+ /** Raw value to render. Takes precedence over `children` when provided. */
25
+ count?: number;
26
+ /** Shorten large values, e.g. `2200` → `2.2K`, `2_000_000` → `2M`. */
27
+ abbreviate?: boolean;
28
+ /** Cap the display, e.g. `max={99}` renders `100` as `99+`. */
29
+ max?: number;
30
+ /** Render a pulsing placeholder while the count is being fetched. */
31
+ loading?: boolean;
32
+ };
33
+ declare function TabsCount({ className, count, abbreviate, max, loading, children, ...props }: TabsCountProps): import("react").JSX.Element;
34
+ declare function TabsContent({ className, ...props }: Tabs$1.Panel.Props): import("react").JSX.Element;
35
+ //#endregion
36
+ export { Tabs, TabsContent, TabsCount, TabsList, TabsTrigger, tabsListVariants, tabsTriggerClassName };
package/dist/tabs.js CHANGED
@@ -1,19 +1,111 @@
1
1
  "use client";
2
- import {
3
- Tabs,
4
- TabsContent,
5
- TabsCount,
6
- TabsList,
7
- TabsTrigger,
8
- tabsListVariants
9
- } from "./chunk-EFSOSSIC.js";
10
- import "./chunk-Y4TTYVNE.js";
11
- export {
12
- Tabs,
13
- TabsContent,
14
- TabsCount,
15
- TabsList,
16
- TabsTrigger,
17
- tabsListVariants
18
- };
19
- //# sourceMappingURL=tabs.js.map
2
+ import { t as cn } from "./cn-BI_4DMBf.js";
3
+ import { useComponentSize } from "./size-context.js";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { cva } from "class-variance-authority";
6
+ import { Tabs as Tabs$1 } from "@base-ui/react/tabs";
7
+ //#region src/tabs.tsx
8
+ /**
9
+ * Keep friendly aliases in the public API, but collapse to the two concrete
10
+ * looks the design system ships: `underline` (Primary) and `secondary` (Pill).
11
+ */
12
+ function resolveTabsListVariant(variant) {
13
+ return variant === "default" ? "secondary" : variant === "line" ? "underline" : variant;
14
+ }
15
+ function Tabs({ className, orientation = "horizontal", size, ...props }) {
16
+ const resolvedSize = useComponentSize(size);
17
+ return /* @__PURE__ */ jsx(Tabs$1.Root, {
18
+ "data-slot": "tabs",
19
+ "data-orientation": orientation,
20
+ "data-size": resolvedSize,
21
+ className: cn("group/tabs flex gap-3 data-[orientation=horizontal]:flex-col", className),
22
+ ...props
23
+ });
24
+ }
25
+ const tabsListVariants = cva(cn("group/tabs-list relative inline-flex w-fit shrink-0 items-center gap-1 text-fg-secondary", "group-data-[orientation=horizontal]/tabs:border-b group-data-[orientation=horizontal]/tabs:border-line-subtle", "group-data-[orientation=vertical]/tabs:flex-col group-data-[orientation=vertical]/tabs:border-l group-data-[orientation=vertical]/tabs:border-line-subtle"), {
26
+ variants: { variant: {
27
+ underline: "rounded-none bg-transparent p-0",
28
+ secondary: "rounded-4xl bg-transparent p-0"
29
+ } },
30
+ defaultVariants: { variant: "underline" }
31
+ });
32
+ function TabsList({ className, variant = "underline", children, ...props }) {
33
+ const resolvedVariant = resolveTabsListVariant(variant);
34
+ return /* @__PURE__ */ jsxs(Tabs$1.List, {
35
+ "data-slot": "tabs-list",
36
+ "data-variant": resolvedVariant,
37
+ className: cn(tabsListVariants({ variant: resolvedVariant }), className),
38
+ ...props,
39
+ children: [children, /* @__PURE__ */ jsx(Tabs$1.Indicator, { className: cn("pointer-events-none absolute left-0 top-0 z-0 h-(--active-tab-height) w-(--active-tab-width) translate-x-(--active-tab-left) translate-y-(--active-tab-top) transition-[transform,width,height] duration-200 ease-in-out", "group-data-[variant=secondary]/tabs-list:hidden", "group-data-[variant=underline]/tabs-list:rounded-none group-data-[variant=underline]/tabs-list:bg-line-focus group-data-[variant=underline]/tabs-list:shadow-none", "group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:top-auto group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:bottom-[-1px] group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:h-0.5! group-data-[orientation=horizontal]/tabs:group-data-[variant=underline]/tabs-list:translate-y-0", "group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:left-auto group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:right-[-1px] group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:w-0.5! group-data-[orientation=vertical]/tabs:group-data-[variant=underline]/tabs-list:translate-x-0") })]
40
+ });
41
+ }
42
+ /**
43
+ * Trigger styling, exported so recipes (e.g. an overflow "More" button that
44
+ * isn't a real tab) can render the same look. Reads `variant` off the parent
45
+ * `group/tabs-list` and `size` off the ancestor `group/tabs`, so it stays in
46
+ * sync wherever it lives inside a `Tabs` tree.
47
+ */
48
+ const tabsTriggerClassName = cn("group/tabs-trigger relative inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap border border-transparent font-semibold outline-none transition-[background-color,color,box-shadow]", "focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)]", "disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50", "group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start", "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:text-current", "group-data-[size=sm]/tabs:text-gdt-xs group-data-[size=sm]/tabs:[&_svg:not([class*='size-'])]:size-3.5", "group-data-[size=md]/tabs:text-gdt-sm group-data-[size=md]/tabs:[&_svg:not([class*='size-'])]:size-4", "group-data-[size=lg]/tabs:text-gdt-md group-data-[size=lg]/tabs:[&_svg:not([class*='size-'])]:size-4.5", "group-data-[variant=underline]/tabs-list:group-data-[size=sm]/tabs:px-3 group-data-[variant=underline]/tabs-list:group-data-[size=sm]/tabs:py-1", "group-data-[variant=underline]/tabs-list:group-data-[size=md]/tabs:px-3.5 group-data-[variant=underline]/tabs-list:group-data-[size=md]/tabs:py-1.5", "group-data-[variant=underline]/tabs-list:group-data-[size=lg]/tabs:px-4 group-data-[variant=underline]/tabs-list:group-data-[size=lg]/tabs:py-1.5", "group-data-[variant=secondary]/tabs-list:group-data-[size=sm]/tabs:px-3 group-data-[variant=secondary]/tabs-list:group-data-[size=sm]/tabs:py-1", "group-data-[variant=secondary]/tabs-list:group-data-[size=md]/tabs:px-3.5 group-data-[variant=secondary]/tabs-list:group-data-[size=md]/tabs:py-1.5", "group-data-[variant=secondary]/tabs-list:group-data-[size=lg]/tabs:px-4 group-data-[variant=secondary]/tabs-list:group-data-[size=lg]/tabs:py-2", "group-data-[variant=underline]/tabs-list:-mb-px group-data-[variant=underline]/tabs-list:rounded-none group-data-[variant=underline]/tabs-list:text-fg-secondary group-data-[variant=underline]/tabs-list:hover:text-fg-primary group-data-[variant=underline]/tabs-list:data-active:text-fg-primary", "group-data-[variant=secondary]/tabs-list:rounded-4xl group-data-[variant=secondary]/tabs-list:bg-surface-raised group-data-[variant=secondary]/tabs-list:text-fg-secondary group-data-[variant=secondary]/tabs-list:hover:bg-surface group-data-[variant=secondary]/tabs-list:hover:text-fg-primary group-data-[variant=secondary]/tabs-list:data-active:bg-surface-brand group-data-[variant=secondary]/tabs-list:data-active:text-fg-on-brand group-data-[variant=secondary]/tabs-list:data-active:shadow-(--elevation-e1-shadow) group-data-[variant=secondary]/tabs-list:data-active:hover:bg-surface-brand group-data-[variant=secondary]/tabs-list:data-active:hover:text-fg-on-brand");
49
+ function TabsTrigger({ className, nativeButton = true, ...props }) {
50
+ return /* @__PURE__ */ jsx(Tabs$1.Tab, {
51
+ "data-slot": "tabs-trigger",
52
+ nativeButton,
53
+ className: cn(tabsTriggerClassName, className),
54
+ ...props
55
+ });
56
+ }
57
+ /**
58
+ * Compact a raw number into a short chip label — 2200 → "2.2K", 2_000_000 →
59
+ * "2M". Keeps one decimal place and trims a trailing `.0`.
60
+ */
61
+ function abbreviateCount(value) {
62
+ const abs = Math.abs(value);
63
+ if (abs < 1e3) return String(value);
64
+ const unit = [
65
+ {
66
+ value: 1e9,
67
+ suffix: "B"
68
+ },
69
+ {
70
+ value: 1e6,
71
+ suffix: "M"
72
+ },
73
+ {
74
+ value: 1e3,
75
+ suffix: "K"
76
+ }
77
+ ].find((candidate) => abs >= candidate.value);
78
+ if (!unit) return String(value);
79
+ return `${Math.round(value / unit.value * 10) / 10}${unit.suffix}`;
80
+ }
81
+ function formatTabsCount(value, { abbreviate, max }) {
82
+ if (max !== void 0 && value > max) return `${abbreviate ? abbreviateCount(max) : max}+`;
83
+ return abbreviate ? abbreviateCount(value) : String(value);
84
+ }
85
+ function TabsCount({ className, count, abbreviate, max, loading, children, ...props }) {
86
+ const content = loading ? /* @__PURE__ */ jsx("span", {
87
+ "aria-hidden": true,
88
+ className: "invisible",
89
+ children: "00"
90
+ }) : count !== void 0 ? formatTabsCount(count, {
91
+ abbreviate,
92
+ max
93
+ }) : children;
94
+ return /* @__PURE__ */ jsx("span", {
95
+ "data-slot": "tabs-count",
96
+ "data-loading": loading || void 0,
97
+ "aria-busy": loading || void 0,
98
+ className: cn("inline-flex items-center justify-center rounded-full font-semibold leading-none transition-[background-color,color]", "group-data-[size=sm]/tabs:h-4 group-data-[size=sm]/tabs:min-w-4 group-data-[size=sm]/tabs:px-1 group-data-[size=sm]/tabs:text-[10px]", "group-data-[size=md]/tabs:h-5 group-data-[size=md]/tabs:min-w-5 group-data-[size=md]/tabs:px-1 group-data-[size=md]/tabs:text-[11px]", "group-data-[size=lg]/tabs:h-5 group-data-[size=lg]/tabs:min-w-5 group-data-[size=lg]/tabs:px-1.5 group-data-[size=lg]/tabs:text-gdt-xs", "group-data-[variant=underline]/tabs-list:bg-surface-raised group-data-[variant=underline]/tabs-list:text-fg-secondary group-data-[variant=underline]/tabs-list:group-data-[active]/tabs-trigger:bg-surface-brand-subtle group-data-[variant=underline]/tabs-list:group-data-[active]/tabs-trigger:text-fg-brand", "group-data-[variant=secondary]/tabs-list:bg-surface-overlay group-data-[variant=secondary]/tabs-list:text-fg-secondary group-data-[variant=secondary]/tabs-list:group-data-[active]/tabs-trigger:bg-surface-brand-subtle group-data-[variant=secondary]/tabs-list:group-data-[active]/tabs-trigger:text-fg-brand", "data-loading:animate-pulse", className),
99
+ ...props,
100
+ children: content
101
+ });
102
+ }
103
+ function TabsContent({ className, ...props }) {
104
+ return /* @__PURE__ */ jsx(Tabs$1.Panel, {
105
+ "data-slot": "tabs-content",
106
+ className: cn("flex-1 text-sm outline-none", className),
107
+ ...props
108
+ });
109
+ }
110
+ //#endregion
111
+ export { Tabs, TabsContent, TabsCount, TabsList, TabsTrigger, tabsListVariants, tabsTriggerClassName };
package/dist/tag.d.ts CHANGED
@@ -1,26 +1,24 @@
1
- import * as React from 'react';
2
- import { ButtonHTMLAttributes, ReactNode, MouseEvent } from 'react';
3
- import * as class_variance_authority_types from 'class-variance-authority/types';
4
- import { ComponentSize } from './size-context.js';
5
-
1
+ import { t as ComponentSize } from "./size-context-D4mYvcg8.js";
2
+ import { ButtonHTMLAttributes, MouseEvent, ReactNode } from "react";
3
+ //#region src/tag.d.ts
6
4
  declare const tagVariants: (props?: ({
7
- size?: "sm" | "md" | "lg" | null | undefined;
8
- border?: boolean | null | undefined;
9
- clickable?: boolean | null | undefined;
10
- disabled?: boolean | null | undefined;
11
- } & class_variance_authority_types.ClassProp) | undefined) => string;
5
+ size?: "lg" | "md" | "sm" | null | undefined;
6
+ border?: boolean | null | undefined;
7
+ clickable?: boolean | null | undefined;
8
+ disabled?: boolean | null | undefined;
9
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
10
  interface TagProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children" | "disabled" | "onClick" | "type"> {
13
- label: string;
14
- leadingIcon?: ReactNode;
15
- onClose?: (e: MouseEvent<HTMLButtonElement>) => void;
16
- closeButtonProps?: Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children" | "disabled" | "onClick" | "type">;
17
- onClick?: (e: MouseEvent<HTMLButtonElement>) => void;
18
- size?: ComponentSize;
19
- shape?: "full" | "box";
20
- border?: boolean;
21
- clickable?: boolean;
22
- disabled?: boolean;
11
+ label: string;
12
+ leadingIcon?: ReactNode;
13
+ onClose?: (e: MouseEvent<HTMLButtonElement>) => void;
14
+ closeButtonProps?: Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children" | "disabled" | "onClick" | "type">;
15
+ onClick?: (e: MouseEvent<HTMLButtonElement>) => void;
16
+ size?: ComponentSize;
17
+ shape?: "full" | "box";
18
+ border?: boolean;
19
+ clickable?: boolean;
20
+ disabled?: boolean;
23
21
  }
24
- declare function Tag({ label, leadingIcon, onClose, closeButtonProps, onClick, size, shape, border, clickable, disabled, className, ...props }: TagProps): React.JSX.Element;
25
-
26
- export { Tag, type TagProps, tagVariants };
22
+ declare function Tag({ label, leadingIcon, onClose, closeButtonProps, onClick, size, shape, border, clickable, disabled, className, ...props }: TagProps): import("react").JSX.Element;
23
+ //#endregion
24
+ export { Tag, type TagProps, tagVariants };