@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/tag.js CHANGED
@@ -1,160 +1,108 @@
1
- // src/components/ui/tag.tsx
2
- import { cva } from "class-variance-authority";
1
+ "use client";
2
+ import { t as cn } from "./cn-BI_4DMBf.js";
3
+ import { useComponentSize } from "./size-context.js";
3
4
  import { X } from "lucide-react";
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
- }
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ import { cva } from "class-variance-authority";
7
+ //#region src/tag.tsx
8
+ const tagVariants = cva("group/tag inline-flex w-full shrink-0 items-center border bg-surface-raised font-bold leading-none text-fg-primary whitespace-nowrap transition-[background-color,border-color,color,box-shadow] select-none data-[shape=full]:rounded-4xl data-[shape=box]:data-[size=sm]:rounded-md data-[shape=box]:data-[size=md]:rounded-lg data-[shape=box]:data-[size=lg]:rounded-xl data-[has-close=true]:data-[size=sm]:pr-5 data-[has-close=true]:data-[size=md]:pr-7 data-[has-close=true]:data-[size=lg]:pr-8", {
9
+ variants: {
10
+ size: {
11
+ sm: "gap-1 py-0.5 pl-2 pr-1 text-gdt-xs",
12
+ md: "gap-1.5 py-1 pl-2.5 pr-1.5 text-gdt-sm",
13
+ lg: "gap-2 py-1.5 pl-3 pr-2 text-gdt-md"
14
+ },
15
+ border: {
16
+ true: "border-line",
17
+ false: "border-transparent"
18
+ },
19
+ clickable: {
20
+ true: "cursor-pointer hover:border-line-strong hover:bg-action-tertiary-hover active:border-line-strong active:bg-action-tertiary-pressed outline-none focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)]",
21
+ false: "cursor-default"
22
+ },
23
+ disabled: {
24
+ true: "border-line-subtle bg-surface text-fg-caption-placeholder",
25
+ false: ""
26
+ }
27
+ },
28
+ defaultVariants: {
29
+ size: "md",
30
+ border: false,
31
+ clickable: false,
32
+ disabled: false
33
+ }
32
34
  });
33
- function cn(...inputs) {
34
- return twMerge(clsx(inputs));
35
- }
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;
35
+ const tagCloseVariants = cva("absolute top-1/2 inline-flex shrink-0 -translate-y-1/2 items-center justify-center rounded-full text-current transition-[background-color,color] outline-none hover:bg-action-tertiary-hover hover:text-fg-primary focus-visible:bg-action-tertiary-hover focus-visible:text-fg-primary focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] active:bg-action-tertiary-pressed disabled:pointer-events-none disabled:text-fg-caption-placeholder", {
36
+ variants: { size: {
37
+ sm: "right-1 size-4 [&>svg]:size-2.5",
38
+ md: "right-1.5 size-5 [&>svg]:size-3",
39
+ lg: "right-2 size-5 [&>svg]:size-3.5"
40
+ } },
41
+ defaultVariants: { size: "md" }
42
+ });
43
+ function Tag({ label, leadingIcon, onClose, closeButtonProps, onClick, size, shape = "full", border = false, clickable = false, disabled = false, className, ...props }) {
44
+ const resolvedSize = useComponentSize(size);
45
+ const isInteractive = clickable && !disabled;
46
+ const { "aria-label": closeAriaLabel = `Remove ${label}`, className: closeClassName, onKeyDown: onCloseKeyDown, ...resolvedCloseButtonProps } = closeButtonProps ?? {};
47
+ return /* @__PURE__ */ jsxs("div", {
48
+ "data-slot": "tag",
49
+ className: "relative inline-flex w-fit shrink-0",
50
+ children: [clickable ? /* @__PURE__ */ jsx("button", {
51
+ type: "button",
52
+ "data-slot": "tag-surface",
53
+ "data-shape": shape,
54
+ "data-size": resolvedSize,
55
+ "data-has-close": Boolean(onClose),
56
+ disabled,
57
+ className: cn(tagVariants({
58
+ size: resolvedSize,
59
+ border,
60
+ clickable: isInteractive,
61
+ disabled
62
+ }), className),
63
+ onClick,
64
+ ...props,
65
+ children: /* @__PURE__ */ jsx(TagContent, {
66
+ label,
67
+ leadingIcon
68
+ })
69
+ }) : /* @__PURE__ */ jsx("span", {
70
+ "data-slot": "tag-surface",
71
+ "data-shape": shape,
72
+ "data-size": resolvedSize,
73
+ "data-has-close": Boolean(onClose),
74
+ className: cn(tagVariants({
75
+ size: resolvedSize,
76
+ border,
77
+ clickable: false,
78
+ disabled
79
+ }), className),
80
+ children: /* @__PURE__ */ jsx(TagContent, {
81
+ label,
82
+ leadingIcon
83
+ })
84
+ }), onClose && /* @__PURE__ */ jsx("button", {
85
+ type: "button",
86
+ "aria-label": closeAriaLabel,
87
+ disabled,
88
+ className: cn(tagCloseVariants({ size: resolvedSize }), closeClassName),
89
+ onClick: (e) => {
90
+ e.stopPropagation();
91
+ onClose(e);
92
+ },
93
+ onKeyDown: onCloseKeyDown,
94
+ ...resolvedCloseButtonProps,
95
+ children: /* @__PURE__ */ jsx(X, { "aria-hidden": "true" })
96
+ })]
97
+ });
44
98
  }
45
-
46
- // src/components/ui/tag.tsx
47
- import { jsx as jsx2, jsxs } from "react/jsx-runtime";
48
- var tagVariants = cva(
49
- "group/tag inline-flex w-fit shrink-0 items-center font-bold leading-none whitespace-nowrap rounded-4xl border bg-surface-raised text-fg-secondary transition-[background-color,border-color] select-none",
50
- {
51
- variants: {
52
- size: {
53
- sm: "gap-1 py-0.5 pl-2 pr-1 text-gdt-xs",
54
- md: "gap-1.5 py-1 pl-2.5 pr-1.5 text-gdt-sm",
55
- lg: "gap-2 py-1.5 pl-3 pr-2 text-gdt-md"
56
- },
57
- border: {
58
- true: "border-line",
59
- false: "border-transparent"
60
- },
61
- clickable: {
62
- true: "cursor-pointer hover:bg-action-tertiary-hover active:bg-action-tertiary-pressed outline-none focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)]",
63
- false: "cursor-default"
64
- },
65
- disabled: {
66
- true: "opacity-50 pointer-events-none",
67
- false: ""
68
- }
69
- },
70
- defaultVariants: {
71
- size: "md",
72
- border: false,
73
- clickable: false,
74
- disabled: false
75
- }
76
- }
77
- );
78
- var tagCloseVariants = cva(
79
- "inline-flex shrink-0 items-center justify-center rounded-full text-fg-secondary transition-[background-color,color] outline-none hover:bg-action-tertiary-hover hover:text-fg-primary focus-visible:bg-action-tertiary-hover focus-visible:text-fg-primary focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] active:bg-action-tertiary-pressed disabled:pointer-events-none",
80
- {
81
- variants: {
82
- size: {
83
- sm: "size-4 [&>svg]:size-2.5",
84
- md: "size-5 [&>svg]:size-3",
85
- lg: "size-5 [&>svg]:size-3.5"
86
- }
87
- },
88
- defaultVariants: {
89
- size: "md"
90
- }
91
- }
92
- );
93
- function Tag({
94
- label,
95
- leadingIcon,
96
- onClose,
97
- onClick,
98
- size,
99
- border = false,
100
- clickable = false,
101
- disabled = false,
102
- className
103
- }) {
104
- const resolvedSize = useComponentSize(size);
105
- const handleKeyDown = (e) => {
106
- if (e.key === "Enter" || e.key === " ") {
107
- e.preventDefault();
108
- onClick?.();
109
- }
110
- };
111
- return (
112
- // biome-ignore lint/a11y/noStaticElementInteractions: clickable tags set button semantics, focus, and keyboard activation while still allowing a nested close action.
113
- /* @__PURE__ */ jsxs(
114
- "div",
115
- {
116
- role: clickable ? "button" : void 0,
117
- tabIndex: clickable && !disabled ? 0 : void 0,
118
- "aria-disabled": disabled ? true : void 0,
119
- "data-slot": "tag",
120
- className: cn(
121
- tagVariants({ size: resolvedSize, border, clickable, disabled }),
122
- className
123
- ),
124
- onClick: clickable ? onClick : void 0,
125
- onKeyDown: clickable ? handleKeyDown : void 0,
126
- children: [
127
- leadingIcon && /* @__PURE__ */ jsx2(
128
- "span",
129
- {
130
- "aria-hidden": "true",
131
- "data-slot": "tag-leading-icon",
132
- className: "inline-flex shrink-0 items-center [&>svg]:size-[1em]",
133
- children: leadingIcon
134
- }
135
- ),
136
- /* @__PURE__ */ jsx2("span", { children: label }),
137
- /* @__PURE__ */ jsx2(
138
- "button",
139
- {
140
- type: "button",
141
- "aria-label": `Remove ${label}`,
142
- disabled,
143
- className: cn(tagCloseVariants({ size: resolvedSize })),
144
- onClick: (e) => {
145
- e.stopPropagation();
146
- onClose?.(e);
147
- },
148
- children: /* @__PURE__ */ jsx2(X, { "aria-hidden": "true" })
149
- }
150
- )
151
- ]
152
- }
153
- )
154
- );
99
+ function TagContent({ label, leadingIcon }) {
100
+ return /* @__PURE__ */ jsxs(Fragment, { children: [leadingIcon && /* @__PURE__ */ jsx("span", {
101
+ "aria-hidden": "true",
102
+ "data-slot": "tag-leading-icon",
103
+ className: "inline-flex shrink-0 items-center [&>svg]:size-[1em]",
104
+ children: leadingIcon
105
+ }), /* @__PURE__ */ jsx("span", { children: label })] });
155
106
  }
156
- export {
157
- Tag,
158
- tagVariants
159
- };
160
- //# sourceMappingURL=tag.js.map
107
+ //#endregion
108
+ export { Tag, tagVariants };
@@ -0,0 +1,33 @@
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/testimonial-block.d.ts
5
+ declare const testimonialBlockVariants: (props?: ({
6
+ tone?: "brand" | "neutral" | null | undefined;
7
+ orientation?: "horizontal" | "vertical" | null | undefined;
8
+ size?: "lg" | "md" | "sm" | null | undefined;
9
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
10
+ type TestimonialBlockProps = useRender.ComponentProps<"article"> & VariantProps<typeof testimonialBlockVariants>;
11
+ declare function TestimonialBlock({ className, orientation, render, size, tone, ...props }: TestimonialBlockProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
12
+ declare function TestimonialBlockContent({ className, render, ...props }: useRender.ComponentProps<"div">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
13
+ declare function TestimonialBlockMedia({ className, render, ...props }: useRender.ComponentProps<"div">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
14
+ declare function TestimonialBlockPlayButton({ "aria-label": ariaLabel, children, className, render, ...props }: useRender.ComponentProps<"button">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
15
+ type TestimonialBlockRatingProps = Omit<useRender.ComponentProps<"div">, "children"> & {
16
+ rating: number;
17
+ source?: React.ReactNode;
18
+ totalReviews?: number;
19
+ reviewLabel?: string;
20
+ showScore?: boolean;
21
+ };
22
+ declare function TestimonialBlockRating({ className, rating, render, reviewLabel, showScore, source, totalReviews, ...props }: TestimonialBlockRatingProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
23
+ declare function TestimonialBlockQuote({ className, render, ...props }: useRender.ComponentProps<"blockquote">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
24
+ declare function TestimonialBlockFooter({ className, render, ...props }: useRender.ComponentProps<"div">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
25
+ type TestimonialBlockReviewerProps = Omit<useRender.ComponentProps<"div">, "children"> & {
26
+ name: string;
27
+ photo?: string;
28
+ reviewerRole?: React.ReactNode;
29
+ };
30
+ declare function TestimonialBlockReviewer({ className, name, photo, render, reviewerRole, ...props }: TestimonialBlockReviewerProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
31
+ declare function TestimonialBlockAction({ "aria-label": ariaLabel, children, className, render, ...props }: useRender.ComponentProps<"a">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
32
+ //#endregion
33
+ export { TestimonialBlock, TestimonialBlockAction, TestimonialBlockContent, TestimonialBlockFooter, TestimonialBlockMedia, TestimonialBlockPlayButton, type TestimonialBlockProps, TestimonialBlockQuote, TestimonialBlockRating, TestimonialBlockReviewer, type TestimonialBlockReviewerProps, testimonialBlockVariants };
@@ -0,0 +1,208 @@
1
+ import { t as cn } from "./cn-BI_4DMBf.js";
2
+ import { Avatar, AvatarFallback, AvatarImage } from "./avatar.js";
3
+ import { buttonVariants } from "./button.js";
4
+ import { ArrowUpRight, Play, Star } from "lucide-react";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ import { mergeProps } from "@base-ui/react/merge-props";
7
+ import { useRender } from "@base-ui/react/use-render";
8
+ import { cva } from "class-variance-authority";
9
+ //#region src/testimonial-block.tsx
10
+ const STAR_INDEXES = [
11
+ 0,
12
+ 1,
13
+ 2,
14
+ 3,
15
+ 4
16
+ ];
17
+ const testimonialBlockVariants = cva("group/testimonial-block relative flex w-full min-w-0 overflow-hidden rounded-xl text-fg-primary shadow-1 transition-[background-color,border-color,box-shadow,transform]", {
18
+ variants: {
19
+ tone: {
20
+ neutral: "border border-line-subtle bg-surface hover:bg-surface-raised hover:shadow-2 active:bg-surface-raised active:shadow-none",
21
+ brand: "border border-transparent bg-surface-brand text-fg-on-brand hover:bg-action-primary-hover hover:shadow-2 active:bg-action-primary-pressed active:shadow-none"
22
+ },
23
+ orientation: {
24
+ vertical: "flex-col",
25
+ horizontal: "flex-row"
26
+ },
27
+ size: {
28
+ sm: "gap-3.5 p-5",
29
+ md: "gap-4 p-7",
30
+ lg: "gap-5 p-8.5 rounded-2xl"
31
+ }
32
+ },
33
+ defaultVariants: {
34
+ orientation: "vertical",
35
+ size: "md",
36
+ tone: "neutral"
37
+ }
38
+ });
39
+ function TestimonialBlock({ className, orientation = "vertical", render, size = "md", tone = "neutral", ...props }) {
40
+ return useRender({
41
+ defaultTagName: "article",
42
+ props: mergeProps({ className: cn(testimonialBlockVariants({
43
+ orientation,
44
+ size,
45
+ tone
46
+ }), className) }, props),
47
+ render,
48
+ state: {
49
+ orientation,
50
+ size,
51
+ slot: "testimonial-block",
52
+ tone
53
+ }
54
+ });
55
+ }
56
+ function TestimonialBlockContent({ className, render, ...props }) {
57
+ return useRender({
58
+ defaultTagName: "div",
59
+ props: mergeProps({ className: cn("flex min-w-0 flex-1 flex-col gap-gdt-md group-data-[size=lg]/testimonial-block:gap-gdt-lg", className) }, props),
60
+ render,
61
+ state: { slot: "testimonial-block-content" }
62
+ });
63
+ }
64
+ function TestimonialBlockMedia({ className, render, ...props }) {
65
+ return useRender({
66
+ defaultTagName: "div",
67
+ props: mergeProps({ className: cn("relative isolate flex min-w-0 items-center justify-center overflow-hidden rounded-2xl bg-surface-raised", "min-h-32 group-data-[size=sm]/testimonial-block:min-h-28 group-data-[size=lg]/testimonial-block:min-h-44", "group-data-[orientation=horizontal]/testimonial-block:w-2/5 group-data-[orientation=horizontal]/testimonial-block:shrink-0", "[&>img]:absolute [&>img]:inset-0 [&>img]:size-full [&>img]:object-cover", className) }, props),
68
+ render,
69
+ state: { slot: "testimonial-block-media" }
70
+ });
71
+ }
72
+ function TestimonialBlockPlayButton({ "aria-label": ariaLabel = "Play testimonial", children, className, render, ...props }) {
73
+ return useRender({
74
+ defaultTagName: "button",
75
+ props: mergeProps({
76
+ "aria-label": ariaLabel,
77
+ children: children ?? /* @__PURE__ */ jsx(Play, {
78
+ "aria-hidden": "true",
79
+ fill: "currentColor"
80
+ }),
81
+ className: cn(buttonVariants({
82
+ variant: "glass-overlay",
83
+ size: "icon-lg"
84
+ }), "size-12 group-data-[size=lg]/testimonial-block:size-14", "[&>svg]:ml-0.5 [&>svg]:size-5 group-data-[size=lg]/testimonial-block:[&>svg]:size-6", className)
85
+ }, props),
86
+ render,
87
+ state: { slot: "testimonial-block-play-button" }
88
+ });
89
+ }
90
+ function clampRating(rating) {
91
+ return Math.min(5, Math.max(0, rating));
92
+ }
93
+ function getInitials(name) {
94
+ return name.trim().split(/\s+/).slice(0, 2).map((part) => part[0]?.toUpperCase()).join("");
95
+ }
96
+ function formatRating(rating) {
97
+ return clampRating(rating).toFixed(1);
98
+ }
99
+ function formatReviewSource({ reviewLabel, source, totalReviews }) {
100
+ const label = reviewLabel ?? (totalReviews === 1 ? "review" : "reviews");
101
+ if (source && typeof totalReviews === "number") return /* @__PURE__ */ jsxs(Fragment, { children: [
102
+ totalReviews.toLocaleString(),
103
+ " ",
104
+ source,
105
+ " ",
106
+ label
107
+ ] });
108
+ if (source) return source;
109
+ if (typeof totalReviews === "number") return `${totalReviews.toLocaleString()} ${label}`;
110
+ return null;
111
+ }
112
+ function TestimonialBlockRating({ className, rating, render, reviewLabel, showScore = true, source, totalReviews, ...props }) {
113
+ const formattedRating = formatRating(rating);
114
+ const roundedRating = Math.round(clampRating(rating));
115
+ const reviewSource = formatReviewSource({
116
+ reviewLabel,
117
+ source,
118
+ totalReviews
119
+ });
120
+ return useRender({
121
+ defaultTagName: "div",
122
+ props: mergeProps({
123
+ className: cn("flex min-w-0 flex-wrap items-center gap-gdt-sm text-fg-primary group-data-[tone=brand]/testimonial-block:text-fg-on-brand", className),
124
+ children: /* @__PURE__ */ jsxs(Fragment, { children: [
125
+ showScore ? /* @__PURE__ */ jsx("span", {
126
+ className: "font-bold text-gdt-lg group-data-[size=md]/testimonial-block:text-gdt-xl group-data-[size=lg]/testimonial-block:text-gdt-h5",
127
+ children: formattedRating
128
+ }) : null,
129
+ /* @__PURE__ */ jsx("span", {
130
+ className: cn("inline-flex shrink-0 items-center gap-0.5 text-surface-accent group-data-[tone=brand]/testimonial-block:text-fg-on-brand", "[&>svg]:size-4.5 group-data-[size=md]/testimonial-block:[&>svg]:size-5 group-data-[size=lg]/testimonial-block:[&>svg]:size-6"),
131
+ children: STAR_INDEXES.map((index) => /* @__PURE__ */ jsx(Star, {
132
+ "aria-hidden": "true",
133
+ fill: index < roundedRating ? "currentColor" : "none"
134
+ }, index))
135
+ }),
136
+ reviewSource ? /* @__PURE__ */ jsx("span", {
137
+ className: "text-gdt-xs text-fg-secondary group-data-[size=md]/testimonial-block:text-gdt-sm group-data-[size=lg]/testimonial-block:text-gdt-md group-data-[tone=brand]/testimonial-block:text-fg-on-brand",
138
+ children: reviewSource
139
+ }) : null
140
+ ] })
141
+ }, props),
142
+ render,
143
+ state: {
144
+ rating: formattedRating,
145
+ slot: "testimonial-block-rating"
146
+ }
147
+ });
148
+ }
149
+ function TestimonialBlockQuote({ className, render, ...props }) {
150
+ return useRender({
151
+ defaultTagName: "blockquote",
152
+ props: mergeProps({ className: cn("text-gdt-sm text-fg-primary group-data-[size=md]/testimonial-block:text-gdt-md group-data-[size=lg]/testimonial-block:text-gdt-lg", "group-data-[tone=brand]/testimonial-block:text-fg-on-brand", className) }, props),
153
+ render,
154
+ state: { slot: "testimonial-block-quote" }
155
+ });
156
+ }
157
+ function TestimonialBlockFooter({ className, render, ...props }) {
158
+ return useRender({
159
+ defaultTagName: "div",
160
+ props: mergeProps({ className: cn("mt-auto flex min-w-0 items-center gap-gdt-md", className) }, props),
161
+ render,
162
+ state: { slot: "testimonial-block-footer" }
163
+ });
164
+ }
165
+ function TestimonialBlockReviewer({ className, name, photo, render, reviewerRole, ...props }) {
166
+ return useRender({
167
+ defaultTagName: "div",
168
+ props: mergeProps({
169
+ className: cn("flex min-w-0 flex-1 items-center gap-gdt-sm", className),
170
+ children: /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(Avatar, {
171
+ size: "md",
172
+ className: cn("size-10 border border-line-subtle bg-canvas", "group-data-[size=sm]/testimonial-block:size-8 group-data-[size=lg]/testimonial-block:size-12", "group-data-[tone=brand]/testimonial-block:border-transparent"),
173
+ children: [photo ? /* @__PURE__ */ jsx(AvatarImage, {
174
+ alt: name,
175
+ src: photo
176
+ }) : null, /* @__PURE__ */ jsx(AvatarFallback, {
177
+ className: cn("bg-canvas text-fg-secondary", "group-data-[tone=brand]/testimonial-block:bg-canvas group-data-[tone=brand]/testimonial-block:text-fg-secondary"),
178
+ children: getInitials(name)
179
+ })]
180
+ }), /* @__PURE__ */ jsxs("div", {
181
+ className: "min-w-0",
182
+ children: [/* @__PURE__ */ jsx("span", {
183
+ className: "block truncate font-bold text-gdt-sm text-fg-primary group-data-[size=md]/testimonial-block:text-gdt-md group-data-[size=lg]/testimonial-block:text-gdt-lg group-data-[tone=brand]/testimonial-block:text-fg-on-brand",
184
+ children: name
185
+ }), reviewerRole ? /* @__PURE__ */ jsx("span", {
186
+ className: "block truncate text-gdt-xs text-fg-secondary group-data-[size=md]/testimonial-block:text-gdt-sm group-data-[size=lg]/testimonial-block:text-gdt-md group-data-[tone=brand]/testimonial-block:text-fg-on-brand/85",
187
+ children: reviewerRole
188
+ }) : null]
189
+ })] })
190
+ }, props),
191
+ render,
192
+ state: { slot: "testimonial-block-reviewer" }
193
+ });
194
+ }
195
+ function TestimonialBlockAction({ "aria-label": ariaLabel = "Open review", children, className, render, ...props }) {
196
+ return useRender({
197
+ defaultTagName: "a",
198
+ props: mergeProps({
199
+ "aria-label": ariaLabel,
200
+ children: children ?? /* @__PURE__ */ jsx(ArrowUpRight, { "aria-hidden": "true" }),
201
+ className: cn("inline-flex shrink-0 items-center justify-center rounded-full bg-action-primary text-fg-on-brand transition-[background-color,box-shadow,transform]", "size-10 hover:bg-action-primary-hover active:scale-95 active:bg-action-primary-pressed", "group-data-[size=md]/testimonial-block:size-12 group-data-[size=lg]/testimonial-block:size-14", "group-data-[tone=brand]/testimonial-block:bg-canvas group-data-[tone=brand]/testimonial-block:text-fg-brand group-data-[tone=brand]/testimonial-block:hover:bg-surface", "focus-visible:outline-none focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)]", "[&>svg]:size-5", className)
202
+ }, props),
203
+ render,
204
+ state: { slot: "testimonial-block-action" }
205
+ });
206
+ }
207
+ //#endregion
208
+ export { TestimonialBlock, TestimonialBlockAction, TestimonialBlockContent, TestimonialBlockFooter, TestimonialBlockMedia, TestimonialBlockPlayButton, TestimonialBlockQuote, TestimonialBlockRating, TestimonialBlockReviewer, testimonialBlockVariants };
@@ -0,0 +1,11 @@
1
+ import { VariantProps } from "class-variance-authority";
2
+ import * as React from "react";
3
+ //#region src/textarea.d.ts
4
+ declare const textareaVariants: (props?: ({
5
+ size?: "lg" | "md" | "sm" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ type TextareaProps = Omit<React.ComponentProps<"textarea">, "size"> & VariantProps<typeof textareaVariants>;
8
+ type TextareaSize = NonNullable<VariantProps<typeof textareaVariants>["size"]>;
9
+ declare function Textarea({ className, size, ...props }: TextareaProps): React.JSX.Element;
10
+ //#endregion
11
+ export { TextareaSize as n, textareaVariants as r, Textarea as t };
@@ -1,12 +1,2 @@
1
- import * as class_variance_authority_types from 'class-variance-authority/types';
2
- import { VariantProps } from 'class-variance-authority';
3
- import * as React from 'react';
4
-
5
- declare const textareaVariants: (props?: ({
6
- size?: "sm" | "md" | "lg" | null | undefined;
7
- } & class_variance_authority_types.ClassProp) | undefined) => string;
8
- type TextareaProps = Omit<React.ComponentProps<"textarea">, "size"> & VariantProps<typeof textareaVariants>;
9
- type TextareaSize = NonNullable<VariantProps<typeof textareaVariants>["size"]>;
10
- declare function Textarea({ className, size, ...props }: TextareaProps): React.JSX.Element;
11
-
12
- export { Textarea, type TextareaSize, textareaVariants };
1
+ import { n as TextareaSize, r as textareaVariants, t as Textarea } from "./textarea-IS_D8pXf.js";
2
+ export { Textarea, type TextareaSize, textareaVariants };
package/dist/textarea.js CHANGED
@@ -1,78 +1,24 @@
1
- // src/components/ui/textarea.tsx
1
+ import { t as cn } from "./cn-BI_4DMBf.js";
2
+ import { useComponentSize } from "./size-context.js";
3
+ import { jsx } from "react/jsx-runtime";
2
4
  import { cva } from "class-variance-authority";
3
-
4
- // src/lib/cn.ts
5
- import { clsx } from "clsx";
6
- import { extendTailwindMerge } from "tailwind-merge";
7
- var twMerge = extendTailwindMerge({
8
- extend: {
9
- classGroups: {
10
- "font-size": [
11
- {
12
- text: [
13
- "gdt-display",
14
- "gdt-h1",
15
- "gdt-h2",
16
- "gdt-h3",
17
- "gdt-h4",
18
- "gdt-h5",
19
- "gdt-xl",
20
- "gdt-lg",
21
- "gdt-md",
22
- "gdt-sm",
23
- "gdt-xs",
24
- "gdt-subtext",
25
- "gdt-capitalized"
26
- ]
27
- }
28
- ]
29
- }
30
- }
5
+ //#region src/textarea.tsx
6
+ const textareaVariants = cva("flex field-sizing-content w-full min-w-0 resize-y rounded-xl border border-line bg-canvas text-fg-primary transition-[background-color,border-color,box-shadow,color] outline-none placeholder:text-fg-caption-placeholder hover:border-line-strong focus-visible:border-line-focus focus-visible:inset-ring-1 inset-ring-line-focus disabled:pointer-events-none disabled:cursor-not-allowed disabled:border-line-subtle disabled:bg-surface disabled:text-fg-caption-placeholder disabled:placeholder:text-fg-caption-placeholder aria-invalid:border-line-danger aria-invalid:text-fg-danger aria-invalid:placeholder:text-fg-danger aria-invalid:shadow-none", {
7
+ variants: { size: {
8
+ sm: "min-h-22 px-3 py-2 text-gdt-xs",
9
+ md: "min-h-26 px-3.5 py-2.5 text-gdt-sm",
10
+ lg: "min-h-31 px-4 py-3 text-gdt-md"
11
+ } },
12
+ defaultVariants: { size: "md" }
31
13
  });
32
- function cn(...inputs) {
33
- return twMerge(clsx(inputs));
34
- }
35
-
36
- // src/components/ui/size-context.tsx
37
- import { createContext, useContext } from "react";
38
- import { Fragment, jsx } from "react/jsx-runtime";
39
- var SizeContext = createContext(void 0);
40
- function useComponentSize(size, fallback = "md") {
41
- const inheritedSize = useContext(SizeContext);
42
- return size ?? inheritedSize ?? fallback;
43
- }
44
-
45
- // src/components/ui/textarea.tsx
46
- import { jsx as jsx2 } from "react/jsx-runtime";
47
- var textareaVariants = cva(
48
- "flex field-sizing-content w-full min-w-0 resize-y rounded-xl border border-line bg-canvas text-fg-primary transition-[background-color,border-color,box-shadow,color] outline-none placeholder:text-fg-caption-placeholder hover:border-line-strong focus-visible:border-line-focus focus-visible:inset-ring-1 inset-ring-line-focus disabled:pointer-events-none disabled:cursor-not-allowed disabled:border-line-subtle disabled:bg-surface disabled:text-fg-caption-placeholder disabled:placeholder:text-fg-caption-placeholder aria-invalid:border-line-danger aria-invalid:text-fg-danger aria-invalid:placeholder:text-fg-danger aria-invalid:shadow-none",
49
- {
50
- variants: {
51
- size: {
52
- sm: "min-h-22 px-3 py-2 text-gdt-xs",
53
- md: "min-h-26 px-3.5 py-2.5 text-gdt-sm",
54
- lg: "min-h-31 px-4 py-3 text-gdt-md"
55
- }
56
- },
57
- defaultVariants: {
58
- size: "md"
59
- }
60
- }
61
- );
62
14
  function Textarea({ className, size, ...props }) {
63
- const resolvedSize = useComponentSize(size);
64
- return /* @__PURE__ */ jsx2(
65
- "textarea",
66
- {
67
- "data-slot": "textarea",
68
- "data-size": resolvedSize,
69
- className: cn(textareaVariants({ size: resolvedSize }), className),
70
- ...props
71
- }
72
- );
15
+ const resolvedSize = useComponentSize(size);
16
+ return /* @__PURE__ */ jsx("textarea", {
17
+ "data-slot": "textarea",
18
+ "data-size": resolvedSize,
19
+ className: cn(textareaVariants({ size: resolvedSize }), className),
20
+ ...props
21
+ });
73
22
  }
74
- export {
75
- Textarea,
76
- textareaVariants
77
- };
78
- //# sourceMappingURL=textarea.js.map
23
+ //#endregion
24
+ export { Textarea, textareaVariants };
@@ -1,13 +1,13 @@
1
- import * as React from 'react';
2
-
1
+ import * as React from "react";
2
+ //#region src/time-picker.d.ts
3
3
  interface TimePickerProps {
4
- value?: string;
5
- onChange?: (time: string | undefined) => void;
6
- format?: "12h" | "24h";
7
- disabled?: boolean;
8
- placeholder?: string;
9
- className?: string;
4
+ value?: string;
5
+ onChange?: (time: string | undefined) => void;
6
+ format?: "12h" | "24h";
7
+ disabled?: boolean;
8
+ placeholder?: string;
9
+ className?: string;
10
10
  }
11
- declare function TimePicker({ value, onChange, format, disabled, placeholder, className, }: TimePickerProps): React.JSX.Element;
12
-
13
- export { TimePicker, type TimePickerProps };
11
+ declare function TimePicker({ value, onChange, format, disabled, placeholder, className }: TimePickerProps): React.JSX.Element;
12
+ //#endregion
13
+ export { TimePicker, type TimePickerProps };