@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/switch.d.ts CHANGED
@@ -1,15 +1,13 @@
1
- import * as React from 'react';
2
- import * as class_variance_authority_types from 'class-variance-authority/types';
3
- import { Switch as Switch$1 } from '@base-ui/react/switch';
4
- import { VariantProps } from 'class-variance-authority';
5
-
1
+ import { VariantProps } from "class-variance-authority";
2
+ import { Switch as Switch$1 } from "@base-ui/react/switch";
3
+ //#region src/switch.d.ts
6
4
  declare const switchVariants: (props?: ({
7
- size?: "sm" | "md" | "lg" | null | undefined;
8
- } & class_variance_authority_types.ClassProp) | undefined) => string;
5
+ size?: "lg" | "md" | "sm" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
7
  type SwitchSize = NonNullable<VariantProps<typeof switchVariants>["size"]>;
10
8
  type SwitchProps = Omit<Switch$1.Root.Props, "children"> & {
11
- loading?: boolean;
12
- size?: SwitchSize;
9
+ loading?: boolean;
10
+ size?: SwitchSize;
13
11
  };
14
12
  /**
15
13
  * Compose with the shared field primitives for label and helper text.
@@ -24,6 +22,6 @@ type SwitchProps = Omit<Switch$1.Root.Props, "children"> & {
24
22
  * </Field>
25
23
  * ```
26
24
  */
27
- declare function Switch({ className, disabled, loading, readOnly, size, ...props }: SwitchProps): React.JSX.Element;
28
-
29
- export { Switch, switchVariants };
25
+ declare function Switch({ className, disabled, loading, readOnly, size, ...props }: SwitchProps): import("react").JSX.Element;
26
+ //#endregion
27
+ export { Switch, switchVariants };
package/dist/switch.js CHANGED
@@ -1,108 +1,51 @@
1
- // src/components/ui/switch.tsx
2
- import { Switch as SwitchPrimitive } from "@base-ui/react/switch";
1
+ "use client";
2
+ import { t as cn } from "./cn-BI_4DMBf.js";
3
+ import { useComponentSize } from "./size-context.js";
4
+ import { jsx } from "react/jsx-runtime";
3
5
  import { cva } from "class-variance-authority";
4
-
5
- // src/lib/cn.ts
6
- import { clsx } from "clsx";
7
- import { extendTailwindMerge } from "tailwind-merge";
8
- var twMerge = extendTailwindMerge({
9
- extend: {
10
- classGroups: {
11
- "font-size": [
12
- {
13
- text: [
14
- "gdt-display",
15
- "gdt-h1",
16
- "gdt-h2",
17
- "gdt-h3",
18
- "gdt-h4",
19
- "gdt-h5",
20
- "gdt-xl",
21
- "gdt-lg",
22
- "gdt-md",
23
- "gdt-sm",
24
- "gdt-xs",
25
- "gdt-subtext",
26
- "gdt-capitalized"
27
- ]
28
- }
29
- ]
30
- }
31
- }
32
- });
33
- function cn(...inputs) {
34
- return twMerge(clsx(inputs));
6
+ import { Switch as Switch$1 } from "@base-ui/react/switch";
7
+ //#region src/switch.tsx
8
+ const switchVariants = cva("peer group/switch relative inline-flex shrink-0 items-center rounded-full border bg-clip-padding p-0.5 transition-[background-color,border-color,box-shadow,opacity] outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] aria-invalid:border-line-danger aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-checked:border-action-primary data-checked:bg-action-primary data-unchecked:border-line data-unchecked:bg-transparent data-[loading=true]:border-action-primary data-[loading=true]:bg-action-primary data-disabled:border-line-subtle! data-disabled:bg-transparent! data-disabled:cursor-not-allowed data-disabled:opacity-60 h-6 w-10 [--switch-spinner-size:0.75rem] [--switch-thumb-size:18px] [--switch-track-width:2.5rem] group-data-[size=sm]/field:h-5 group-data-[size=sm]/field:w-8 group-data-[size=sm]/field:[--switch-spinner-size:0.625rem] group-data-[size=sm]/field:[--switch-thumb-size:14px] group-data-[size=sm]/field:[--switch-track-width:2rem] group-data-[size=md]/field:h-6 group-data-[size=md]/field:w-10 group-data-[size=md]/field:[--switch-spinner-size:0.75rem] group-data-[size=md]/field:[--switch-thumb-size:18px] group-data-[size=md]/field:[--switch-track-width:2.5rem] group-data-[size=lg]/field:h-7 group-data-[size=lg]/field:w-12 group-data-[size=lg]/field:[--switch-spinner-size:0.875rem] group-data-[size=lg]/field:[--switch-thumb-size:22px] group-data-[size=lg]/field:[--switch-track-width:3rem]", { variants: { size: {
9
+ sm: "h-5 w-8 [--switch-spinner-size:0.625rem] [--switch-thumb-size:14px] [--switch-track-width:2rem]",
10
+ md: "h-6 w-10 [--switch-spinner-size:0.75rem] [--switch-thumb-size:18px] [--switch-track-width:2.5rem]",
11
+ lg: "h-7 w-12 [--switch-spinner-size:0.875rem] [--switch-thumb-size:22px] [--switch-track-width:3rem]"
12
+ } } });
13
+ /**
14
+ * Compose with the shared field primitives for label and helper text.
15
+ *
16
+ * ```tsx
17
+ * <Field orientation="horizontal" size="sm">
18
+ * <Switch id="notifications" />
19
+ * <FieldContent>
20
+ * <FieldLabel htmlFor="notifications">Notifications</FieldLabel>
21
+ * <FieldDescription>Receive product update emails.</FieldDescription>
22
+ * </FieldContent>
23
+ * </Field>
24
+ * ```
25
+ */
26
+ function Switch({ className, disabled = false, loading = false, readOnly = false, size, ...props }) {
27
+ const resolvedSize = useComponentSize(size);
28
+ const isDisabled = disabled;
29
+ const isReadOnly = readOnly || loading;
30
+ return /* @__PURE__ */ jsx(Switch$1.Root, {
31
+ "aria-busy": loading || void 0,
32
+ "data-slot": "switch",
33
+ "data-loading": loading,
34
+ "data-size": resolvedSize,
35
+ disabled: isDisabled,
36
+ readOnly: isReadOnly,
37
+ className: cn(switchVariants({ size: resolvedSize }), className),
38
+ ...props,
39
+ children: /* @__PURE__ */ jsx(Switch$1.Thumb, {
40
+ "data-slot": "switch-thumb",
41
+ className: cn("pointer-events-none grid size-(--switch-thumb-size) translate-x-0 place-items-center rounded-full bg-fg-on-brand text-fg-brand ring-0 transition-transform duration-200 ease-out data-checked:translate-x-[calc(var(--switch-track-width)-var(--switch-thumb-size)-4px)]", loading && "translate-x-[calc(var(--switch-track-width)-var(--switch-thumb-size)-4px)]", isDisabled && "translate-x-0! bg-line text-fg-caption-placeholder"),
42
+ children: loading && !isDisabled && /* @__PURE__ */ jsx("span", {
43
+ "aria-hidden": "true",
44
+ "data-slot": "switch-spinner",
45
+ className: "size-(--switch-spinner-size) animate-spin rounded-full border-2 border-current border-r-transparent"
46
+ })
47
+ })
48
+ });
35
49
  }
36
-
37
- // src/components/ui/size-context.tsx
38
- import { createContext, useContext } from "react";
39
- import { Fragment, jsx } from "react/jsx-runtime";
40
- var SizeContext = createContext(void 0);
41
- function useComponentSize(size, fallback = "md") {
42
- const inheritedSize = useContext(SizeContext);
43
- return size ?? inheritedSize ?? fallback;
44
- }
45
-
46
- // src/components/ui/switch.tsx
47
- import { jsx as jsx2 } from "react/jsx-runtime";
48
- var switchVariants = cva(
49
- "peer group/switch relative inline-flex shrink-0 items-center rounded-full border bg-clip-padding p-0.5 transition-[background-color,border-color,box-shadow,opacity] outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] aria-invalid:border-line-danger aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-checked:border-action-primary data-checked:bg-action-primary data-unchecked:border-line data-unchecked:bg-transparent data-[loading=true]:border-action-primary data-[loading=true]:bg-action-primary data-disabled:border-line-subtle! data-disabled:bg-transparent! data-disabled:cursor-not-allowed data-disabled:opacity-60 h-6 w-10 [--switch-spinner-size:0.75rem] [--switch-thumb-size:18px] [--switch-track-width:2.5rem] group-data-[size=sm]/field:h-5 group-data-[size=sm]/field:w-8 group-data-[size=sm]/field:[--switch-spinner-size:0.625rem] group-data-[size=sm]/field:[--switch-thumb-size:14px] group-data-[size=sm]/field:[--switch-track-width:2rem] group-data-[size=md]/field:h-6 group-data-[size=md]/field:w-10 group-data-[size=md]/field:[--switch-spinner-size:0.75rem] group-data-[size=md]/field:[--switch-thumb-size:18px] group-data-[size=md]/field:[--switch-track-width:2.5rem] group-data-[size=lg]/field:h-7 group-data-[size=lg]/field:w-12 group-data-[size=lg]/field:[--switch-spinner-size:0.875rem] group-data-[size=lg]/field:[--switch-thumb-size:22px] group-data-[size=lg]/field:[--switch-track-width:3rem]",
50
- {
51
- variants: {
52
- size: {
53
- sm: "h-5 w-8 [--switch-spinner-size:0.625rem] [--switch-thumb-size:14px] [--switch-track-width:2rem]",
54
- md: "h-6 w-10 [--switch-spinner-size:0.75rem] [--switch-thumb-size:18px] [--switch-track-width:2.5rem]",
55
- lg: "h-7 w-12 [--switch-spinner-size:0.875rem] [--switch-thumb-size:22px] [--switch-track-width:3rem]"
56
- }
57
- }
58
- }
59
- );
60
- function Switch({
61
- className,
62
- disabled = false,
63
- loading = false,
64
- readOnly = false,
65
- size,
66
- ...props
67
- }) {
68
- const resolvedSize = useComponentSize(size);
69
- const isDisabled = disabled;
70
- const isReadOnly = readOnly || loading;
71
- return /* @__PURE__ */ jsx2(
72
- SwitchPrimitive.Root,
73
- {
74
- "aria-busy": loading || void 0,
75
- "data-slot": "switch",
76
- "data-loading": loading,
77
- "data-size": resolvedSize,
78
- disabled: isDisabled,
79
- readOnly: isReadOnly,
80
- className: cn(switchVariants({ size: resolvedSize }), className),
81
- ...props,
82
- children: /* @__PURE__ */ jsx2(
83
- SwitchPrimitive.Thumb,
84
- {
85
- "data-slot": "switch-thumb",
86
- className: cn(
87
- "pointer-events-none grid size-(--switch-thumb-size) translate-x-0 place-items-center rounded-full bg-fg-on-brand text-fg-brand ring-0 transition-transform duration-200 ease-out data-checked:translate-x-[calc(var(--switch-track-width)-var(--switch-thumb-size)-4px)]",
88
- loading && "translate-x-[calc(var(--switch-track-width)-var(--switch-thumb-size)-4px)]",
89
- isDisabled && "translate-x-0! bg-line text-fg-caption-placeholder"
90
- ),
91
- children: loading && !isDisabled && /* @__PURE__ */ jsx2(
92
- "span",
93
- {
94
- "aria-hidden": "true",
95
- "data-slot": "switch-spinner",
96
- className: "size-(--switch-spinner-size) animate-spin rounded-full border-2 border-current border-r-transparent"
97
- }
98
- )
99
- }
100
- )
101
- }
102
- );
103
- }
104
- export {
105
- Switch,
106
- switchVariants
107
- };
108
- //# sourceMappingURL=switch.js.map
50
+ //#endregion
51
+ export { Switch, switchVariants };
@@ -0,0 +1,35 @@
1
+ import { useRender } from "@base-ui/react/use-render";
2
+ import { VariantProps } from "class-variance-authority";
3
+ import * as React from "react";
4
+ //#region src/table-card.d.ts
5
+ declare const tableCardVariants: (props?: ({
6
+ selected?: boolean | null | undefined;
7
+ size?: "lg" | "md" | "sm" | null | undefined;
8
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
+ type TableCardDetailItem = {
10
+ className?: string;
11
+ label: React.ReactNode;
12
+ labelClassName?: string;
13
+ value: React.ReactNode;
14
+ valueClassName?: string;
15
+ };
16
+ type TableCardProps = Omit<React.ComponentProps<"article">, "title"> & VariantProps<typeof tableCardVariants> & {
17
+ action?: React.ReactNode;
18
+ actions?: React.ReactNode;
19
+ badge?: React.ReactNode;
20
+ details?: TableCardDetailItem[];
21
+ selection?: React.ReactNode;
22
+ subtitle?: React.ReactNode;
23
+ title?: React.ReactNode;
24
+ };
25
+ declare function TableCard({ action, actions, badge, children, className, details, selection, selected, size, subtitle, title, ...props }: TableCardProps): React.JSX.Element;
26
+ declare function TableCardAction({ className, render, ...props }: useRender.ComponentProps<"button">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
27
+ declare function TableCardHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
28
+ declare function TableCardTitle({ className, ...props }: React.ComponentProps<"h3">): React.JSX.Element;
29
+ declare function TableCardSubtitle({ className, ...props }: React.ComponentProps<"p">): React.JSX.Element;
30
+ declare function TableCardSelection({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
31
+ declare function TableCardActions({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
32
+ declare function TableCardDetails({ className, ...props }: React.ComponentProps<"dl">): React.JSX.Element;
33
+ declare function TableCardDetail({ className, label, labelClassName, value, valueClassName }: TableCardDetailItem): React.JSX.Element | null;
34
+ //#endregion
35
+ export { TableCard, TableCardAction, TableCardActions, TableCardDetail, type TableCardDetailItem, TableCardDetails, TableCardHeader, type TableCardProps, TableCardSelection, TableCardSubtitle, TableCardTitle, tableCardVariants };
@@ -0,0 +1,125 @@
1
+ import { t as cn } from "./cn-BI_4DMBf.js";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { mergeProps } from "@base-ui/react/merge-props";
4
+ import { useRender } from "@base-ui/react/use-render";
5
+ import { cva } from "class-variance-authority";
6
+ //#region src/table-card.tsx
7
+ const tableCardVariants = cva("group/table-card relative flex w-full min-w-0 flex-col border border-line-subtle bg-canvas text-fg-primary shadow-1 outline-none transition-[background-color,border-color,box-shadow,filter,transform] hover:bg-surface hover:shadow-2 active:bg-surface-raised active:shadow-none has-[[data-slot=table-card-action]:focus-visible]:border-line-focus has-[[data-slot=table-card-action]:focus-visible]:inset-ring-1 has-[[data-slot=table-card-action]:focus-visible]:inset-ring-line-focus has-[[data-slot=table-card-action]]:cursor-pointer", {
8
+ variants: {
9
+ selected: {
10
+ true: "border-line-focus bg-surface-brand-subtle inset-ring-1 inset-ring-line-focus hover:bg-surface-brand-subtle hover:brightness-95 active:bg-surface-brand-subtle active:brightness-90",
11
+ false: ""
12
+ },
13
+ size: {
14
+ sm: "gap-4 rounded-xl p-4",
15
+ md: "gap-5 rounded-2xl p-5",
16
+ lg: "gap-6 rounded-[20px] p-6"
17
+ }
18
+ },
19
+ defaultVariants: {
20
+ selected: false,
21
+ size: "md"
22
+ }
23
+ });
24
+ function TableCard({ action, actions, badge, children, className, details, selection, selected = false, size = "md", subtitle, title, ...props }) {
25
+ return /* @__PURE__ */ jsx("article", {
26
+ "data-slot": "table-card",
27
+ "data-size": size,
28
+ "data-state": selected ? "selected" : void 0,
29
+ className: cn(tableCardVariants({
30
+ selected,
31
+ size
32
+ }), className),
33
+ ...props,
34
+ children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
35
+ action,
36
+ /* @__PURE__ */ jsxs(TableCardHeader, { children: [/* @__PURE__ */ jsxs("div", {
37
+ className: "flex min-w-0 flex-1 items-start gap-3",
38
+ children: [selection ? /* @__PURE__ */ jsx(TableCardSelection, { children: selection }) : null, /* @__PURE__ */ jsxs("div", {
39
+ className: "min-w-0 flex-1",
40
+ children: [title ? /* @__PURE__ */ jsx(TableCardTitle, { children: title }) : null, subtitle ? /* @__PURE__ */ jsx(TableCardSubtitle, { children: subtitle }) : null]
41
+ })]
42
+ }), actions ? /* @__PURE__ */ jsx(TableCardActions, { children: actions }) : null] }),
43
+ badge ? /* @__PURE__ */ jsx("div", {
44
+ "data-slot": "table-card-badge",
45
+ className: "pointer-events-none relative z-2 flex min-w-0 items-center",
46
+ children: badge
47
+ }) : null,
48
+ details?.length ? /* @__PURE__ */ jsx(TableCardDetails, { children: details.map((detail, index) => /* @__PURE__ */ jsx(TableCardDetail, { ...detail }, typeof detail.label === "string" ? detail.label : index.toString())) }) : null
49
+ ] })
50
+ });
51
+ }
52
+ function TableCardAction({ className, render, ...props }) {
53
+ return useRender({
54
+ defaultTagName: "button",
55
+ props: mergeProps({
56
+ "data-slot": "table-card-action",
57
+ className: cn("absolute inset-0 z-1 rounded-[inherit] border-0 bg-transparent p-0 text-transparent outline-none", className),
58
+ type: "button"
59
+ }, props),
60
+ render,
61
+ state: { slot: "table-card-action" }
62
+ });
63
+ }
64
+ function TableCardHeader({ className, ...props }) {
65
+ return /* @__PURE__ */ jsx("div", {
66
+ "data-slot": "table-card-header",
67
+ className: cn("pointer-events-none relative z-2 flex min-w-0 items-start justify-between gap-4", className),
68
+ ...props
69
+ });
70
+ }
71
+ function TableCardTitle({ className, ...props }) {
72
+ return /* @__PURE__ */ jsx("h3", {
73
+ "data-slot": "table-card-title",
74
+ className: cn("text-gdt-md font-bold text-fg-primary group-data-[size=lg]/table-card:text-gdt-lg", className),
75
+ ...props
76
+ });
77
+ }
78
+ function TableCardSubtitle({ className, ...props }) {
79
+ return /* @__PURE__ */ jsx("p", {
80
+ "data-slot": "table-card-subtitle",
81
+ className: cn("mt-1 text-gdt-sm text-fg-secondary [&_a]:pointer-events-auto [&_a]:relative [&_a]:z-3", className),
82
+ ...props
83
+ });
84
+ }
85
+ function TableCardSelection({ className, ...props }) {
86
+ return /* @__PURE__ */ jsx("div", {
87
+ "data-table-card-interactive": "",
88
+ "data-slot": "table-card-selection",
89
+ className: cn("pointer-events-auto relative z-3 flex shrink-0 pt-0.5", className),
90
+ ...props
91
+ });
92
+ }
93
+ function TableCardActions({ className, ...props }) {
94
+ return /* @__PURE__ */ jsx("div", {
95
+ "data-table-card-interactive": "",
96
+ "data-slot": "table-card-actions",
97
+ className: cn("pointer-events-auto relative z-3 -m-1 flex shrink-0 items-center justify-center p-1", className),
98
+ ...props
99
+ });
100
+ }
101
+ function TableCardDetails({ className, ...props }) {
102
+ return /* @__PURE__ */ jsx("dl", {
103
+ "data-slot": "table-card-details",
104
+ className: cn("pointer-events-none relative z-2 flex min-w-0 flex-col divide-y divide-line-subtle", className),
105
+ ...props
106
+ });
107
+ }
108
+ function TableCardDetail({ className, label, labelClassName, value, valueClassName }) {
109
+ if (value === null || value === void 0 || value === "") return null;
110
+ return /* @__PURE__ */ jsxs("div", {
111
+ "data-slot": "table-card-detail",
112
+ className: cn("grid min-w-0 grid-cols-[minmax(0,1fr)_minmax(0,max-content)] items-start gap-4 py-3 text-gdt-sm first:pt-0 last:pb-0", className),
113
+ children: [/* @__PURE__ */ jsx("dt", {
114
+ "data-slot": "table-card-detail-label",
115
+ className: cn("min-w-0 text-fg-secondary", labelClassName),
116
+ children: label
117
+ }), /* @__PURE__ */ jsx("dd", {
118
+ "data-slot": "table-card-detail-value",
119
+ className: cn("min-w-0 max-w-40 text-right font-semibold text-fg-primary [&_a]:pointer-events-auto [&_a]:relative [&_a]:z-3 [&_button]:pointer-events-auto [&_button]:relative [&_button]:z-3", valueClassName),
120
+ children: value
121
+ })]
122
+ });
123
+ }
124
+ //#endregion
125
+ export { TableCard, TableCardAction, TableCardActions, TableCardDetail, TableCardDetails, TableCardHeader, TableCardSelection, TableCardSubtitle, TableCardTitle, tableCardVariants };
package/dist/table.d.ts CHANGED
@@ -1,14 +1,15 @@
1
- import * as React from 'react';
2
-
1
+ import * as React from "react";
2
+ //#region src/table.d.ts
3
+ type TablePinnedSide = "left" | "right";
3
4
  /**
4
5
  * Outer card wrapper.
5
6
  *
6
- * Tokens: bg-surface-overlay (container fill), border-line (container border).
7
+ * Tokens: bg-canvas (container fill), border-line-subtle (container border).
7
8
  * Pass `containerClassName` to override scroll, sizing, or rounding for
8
9
  * individual call-sites (e.g. the data-table's max-height + rounded-[20px]).
9
10
  */
10
11
  declare function Table({ className, containerClassName, ...props }: React.ComponentProps<"table"> & {
11
- containerClassName?: string;
12
+ containerClassName?: string;
12
13
  }): React.JSX.Element;
13
14
  /**
14
15
  * Header band (thead).
@@ -17,7 +18,7 @@ declare function Table({ className, containerClassName, ...props }: React.Compon
17
18
  * Add `sticky` to pin the header and show Shadow-2 elevation while scrolled.
18
19
  */
19
20
  declare function TableHeader({ className, sticky, ...props }: React.ComponentProps<"thead"> & {
20
- sticky?: boolean;
21
+ sticky?: boolean;
21
22
  }): React.JSX.Element;
22
23
  declare function TableBody({ className, ...props }: React.ComponentProps<"tbody">): React.JSX.Element;
23
24
  /**
@@ -37,21 +38,24 @@ declare function TableRow({ className, ...props }: React.ComponentProps<"tr">):
37
38
  * Header cell (th).
38
39
  *
39
40
  * Tokens: bg-surface-raised (always applied so sticky/pinned th cells correctly
40
- * cover scrolling content), text-fg-secondary, text-gdt-capitalized + uppercase
41
- * for the tiny-caps column label style described in the design system.
41
+ * cover scrolling content), text-fg-secondary, text-gdt-sm semibold for the
42
+ * table header style in Figma.
42
43
  */
43
- declare function TableHead({ className, ...props }: React.ComponentProps<"th">): React.JSX.Element;
44
+ declare function TableHead({ className, pinnedSide, ...props }: React.ComponentProps<"th"> & {
45
+ pinnedSide?: TablePinnedSide;
46
+ }): React.JSX.Element;
44
47
  /**
45
48
  * Standard body cell (td).
46
49
  *
47
50
  * Token: text-fg-primary (body cell text), text-gdt-sm.
48
51
  * Pass `pinned` when the column is sticky. Pinned cells get an opaque
49
- * bg-canvas cover so scrolling content doesn't bleed through, and they
50
- * mirror the parent row's hover/selected states via group variants.
52
+ * bg-canvas cover so scrolling content doesn't bleed through. Pass
53
+ * `pinnedSide` to draw the 2px sticky-column divider from the Figma spec.
51
54
  * Non-pinned cells are left transparent so the parent row's surface shows through.
52
55
  */
53
- declare function TableCell({ className, pinned, ...props }: React.ComponentProps<"td"> & {
54
- pinned?: boolean;
56
+ declare function TableCell({ className, pinned, pinnedSide, ...props }: React.ComponentProps<"td"> & {
57
+ pinned?: boolean;
58
+ pinnedSide?: TablePinnedSide;
55
59
  }): React.JSX.Element;
56
60
  /**
57
61
  * Formatted cell title, for use within a TableCell
@@ -65,5 +69,5 @@ declare function TableCellCaption({ className, ...props }: React.ComponentProps<
65
69
  * Caption — rendered below the table, uses secondary text token.
66
70
  */
67
71
  declare function TableCaption({ className, ...props }: React.ComponentProps<"caption">): React.JSX.Element;
68
-
69
- export { Table, TableBody, TableCaption, TableCell, TableCellCaption, TableCellTitle, TableFooter, TableHead, TableHeader, TableRow };
72
+ //#endregion
73
+ export { Table, TableBody, TableCaption, TableCell, TableCellCaption, TableCellTitle, TableFooter, TableHead, TableHeader, TableRow };