@giddaa-housing/ui 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/css/generated/shared.css +1 -1
  2. package/css/giddaa.css +12 -2
  3. package/dist/accordion.d.ts +9 -10
  4. package/dist/accordion.js +41 -87
  5. package/dist/activity-timeline.d.ts +12 -16
  6. package/dist/activity-timeline.js +83 -198
  7. package/dist/alert.d.ts +8 -9
  8. package/dist/alert.js +53 -111
  9. package/dist/auth-layout.d.ts +4 -4
  10. package/dist/auth-layout.js +143 -294
  11. package/dist/avatar.d.ts +6 -6
  12. package/dist/avatar.js +49 -19
  13. package/dist/badge.d.ts +12 -14
  14. package/dist/badge.js +71 -11
  15. package/dist/bar-chart.d.ts +65 -67
  16. package/dist/bar-chart.js +232 -207
  17. package/dist/breadcrumb.d.ts +5 -5
  18. package/dist/breadcrumb.js +56 -118
  19. package/dist/bullet-chart.d.ts +41 -37
  20. package/dist/bullet-chart.js +125 -148
  21. package/dist/button-BZIeyUw6.d.ts +17 -0
  22. package/dist/button-group.d.ts +13 -16
  23. package/dist/button-group.js +39 -88
  24. package/dist/button.d.ts +2 -19
  25. package/dist/button.js +94 -13
  26. package/dist/calendar.d.ts +6 -6
  27. package/dist/calendar.js +138 -17
  28. package/dist/card.d.ts +14 -16
  29. package/dist/card.js +59 -145
  30. package/dist/carousel.d.ts +34 -35
  31. package/dist/carousel.js +335 -20
  32. package/dist/chart.d.ts +90 -63
  33. package/dist/chart.js +573 -28
  34. package/dist/checkbox.d.ts +10 -12
  35. package/dist/checkbox.js +82 -47
  36. package/dist/cn-BI_4DMBf.js +23 -0
  37. package/dist/collapsible.d.ts +7 -8
  38. package/dist/collapsible.js +22 -47
  39. package/dist/combobox.d.ts +10 -10
  40. package/dist/combobox.js +236 -44
  41. package/dist/cta.d.ts +12 -14
  42. package/dist/cta.js +175 -341
  43. package/dist/currency-selector.d.ts +31 -32
  44. package/dist/currency-selector.js +106 -184
  45. package/dist/data-table.d.ts +168 -0
  46. package/dist/data-table.js +676 -0
  47. package/dist/date-picker.d.ts +22 -23
  48. package/dist/date-picker.js +119 -192
  49. package/dist/details-card.d.ts +7 -7
  50. package/dist/details-card.js +104 -253
  51. package/dist/dialog.d.ts +13 -14
  52. package/dist/dialog.js +116 -209
  53. package/dist/dropdown-menu.d.ts +13 -13
  54. package/dist/dropdown-menu.js +180 -37
  55. package/dist/dropzone.d.ts +55 -55
  56. package/dist/dropzone.js +327 -439
  57. package/dist/editorial-card.d.ts +23 -25
  58. package/dist/editorial-card.js +129 -296
  59. package/dist/empty-state.d.ts +8 -9
  60. package/dist/empty-state.js +48 -105
  61. package/dist/field.d.ts +23 -25
  62. package/dist/field.js +110 -221
  63. package/dist/filter.d.ts +118 -0
  64. package/dist/filter.js +775 -0
  65. package/dist/footer.d.ts +8 -15
  66. package/dist/footer.js +197 -400
  67. package/dist/funnel-chart.d.ts +49 -48
  68. package/dist/funnel-chart.js +170 -189
  69. package/dist/gallery-indicator.d.ts +11 -12
  70. package/dist/gallery-indicator.js +75 -12
  71. package/dist/heatmap-chart.d.ts +47 -50
  72. package/dist/heatmap-chart.js +186 -237
  73. package/dist/infotip.d.ts +8 -9
  74. package/dist/infotip.js +33 -59
  75. package/dist/input-CfoEJ8A6.d.ts +12 -0
  76. package/dist/input-group.d.ts +16 -20
  77. package/dist/input-group.js +99 -23
  78. package/dist/input-size-context-C-SFx9sx.d.ts +10 -0
  79. package/dist/input-size-context.d.ts +2 -11
  80. package/dist/input-size-context.js +17 -9
  81. package/dist/input.d.ts +2 -13
  82. package/dist/input.js +27 -11
  83. package/dist/item.d.ts +7 -8
  84. package/dist/item.js +22 -59
  85. package/dist/kpi-card.d.ts +18 -20
  86. package/dist/kpi-card.js +84 -192
  87. package/dist/label.d.ts +6 -6
  88. package/dist/label.js +40 -8
  89. package/dist/line-chart.d.ts +200 -129
  90. package/dist/line-chart.js +330 -105
  91. package/dist/list-item.d.ts +22 -0
  92. package/dist/list-item.js +84 -0
  93. package/dist/logo.d.ts +4 -4
  94. package/dist/logo.js +92 -9
  95. package/dist/map-indicator.d.ts +7 -7
  96. package/dist/map-indicator.js +80 -106
  97. package/dist/match.d.ts +10 -11
  98. package/dist/match.js +62 -107
  99. package/dist/media-gallery-hero.d.ts +40 -42
  100. package/dist/media-gallery-hero.js +182 -343
  101. package/dist/media-player.d.ts +17 -17
  102. package/dist/media-player.js +873 -1348
  103. package/dist/multi-step-form.d.ts +56 -0
  104. package/dist/multi-step-form.js +342 -0
  105. package/dist/number-input.d.ts +34 -34
  106. package/dist/number-input.js +64 -117
  107. package/dist/page-header.d.ts +10 -11
  108. package/dist/page-header.js +34 -79
  109. package/dist/pagination.d.ts +17 -21
  110. package/dist/pagination.js +132 -207
  111. package/dist/password-input.d.ts +5 -13
  112. package/dist/password-input.js +31 -55
  113. package/dist/phone-input.d.ts +19 -20
  114. package/dist/phone-input.js +226 -344
  115. package/dist/photo-gallery.d.ts +19 -19
  116. package/dist/photo-gallery.js +313 -449
  117. package/dist/picker-lzgmsNfG.js +32 -0
  118. package/dist/pie-chart.d.ts +121 -90
  119. package/dist/pie-chart.js +183 -149
  120. package/dist/popover.d.ts +9 -9
  121. package/dist/popover.js +72 -23
  122. package/dist/price-tag.d.ts +26 -27
  123. package/dist/price-tag.js +113 -173
  124. package/dist/progress.d.ts +16 -17
  125. package/dist/progress.js +169 -24
  126. package/dist/property-listing-card.d.ts +14 -17
  127. package/dist/property-listing-card.js +102 -220
  128. package/dist/purchase-option-card.d.ts +79 -0
  129. package/dist/purchase-option-card.js +176 -0
  130. package/dist/radar-chart.d.ts +29 -31
  131. package/dist/radar-chart.js +162 -137
  132. package/dist/radio-group.d.ts +11 -13
  133. package/dist/radio-group.js +46 -60
  134. package/dist/review-block.d.ts +14 -16
  135. package/dist/review-block.js +154 -10
  136. package/dist/rich-text-editor.d.ts +30 -14
  137. package/dist/rich-text-editor.js +592 -716
  138. package/dist/scatter-chart.d.ts +45 -47
  139. package/dist/scatter-chart.js +236 -240
  140. package/dist/search-input.d.ts +8 -16
  141. package/dist/search-input.js +57 -109
  142. package/dist/select.d.ts +8 -8
  143. package/dist/select.js +144 -27
  144. package/dist/separator.d.ts +8 -9
  145. package/dist/separator.js +32 -8
  146. package/dist/sheet.d.ts +11 -11
  147. package/dist/sheet.js +103 -24
  148. package/dist/sidebar.d.ts +32 -37
  149. package/dist/sidebar.js +364 -634
  150. package/dist/size-context-D4mYvcg8.d.ts +10 -0
  151. package/dist/size-context.d.ts +2 -11
  152. package/dist/size-context.js +17 -9
  153. package/dist/skeleton.d.ts +4 -5
  154. package/dist/skeleton.js +12 -8
  155. package/dist/slider.d.ts +8 -9
  156. package/dist/slider.js +64 -135
  157. package/dist/sparkline.d.ts +68 -58
  158. package/dist/sparkline.js +315 -251
  159. package/dist/stepper.d.ts +23 -24
  160. package/dist/stepper.js +149 -246
  161. package/dist/styles.css +1004 -116
  162. package/dist/switch.d.ts +10 -12
  163. package/dist/switch.js +48 -70
  164. package/dist/table-card.d.ts +35 -0
  165. package/dist/table-card.js +125 -0
  166. package/dist/table.d.ts +18 -14
  167. package/dist/table.js +117 -154
  168. package/dist/tabs.d.ts +33 -15
  169. package/dist/tabs.js +110 -18
  170. package/dist/tag.d.ts +21 -23
  171. package/dist/tag.js +103 -159
  172. package/dist/testimonial-block.d.ts +18 -19
  173. package/dist/testimonial-block.js +189 -358
  174. package/dist/textarea-IS_D8pXf.d.ts +11 -0
  175. package/dist/textarea.d.ts +2 -12
  176. package/dist/textarea.js +24 -11
  177. package/dist/time-picker.d.ts +11 -11
  178. package/dist/time-picker.js +245 -302
  179. package/dist/toast.d.ts +16 -18
  180. package/dist/toast.js +154 -205
  181. package/dist/tooltip.d.ts +8 -9
  182. package/dist/tooltip.js +37 -12
  183. package/dist/tree-map.d.ts +59 -62
  184. package/dist/tree-map.js +226 -269
  185. package/dist/use-uncontrolled-CLfM1XbB.js +21 -0
  186. package/dist/waterfall-chart.d.ts +94 -97
  187. package/dist/waterfall-chart.js +455 -552
  188. package/package.json +36 -9
  189. package/dist/accordion.js.map +0 -1
  190. package/dist/activity-timeline.js.map +0 -1
  191. package/dist/alert.js.map +0 -1
  192. package/dist/auth-layout.js.map +0 -1
  193. package/dist/avatar.js.map +0 -1
  194. package/dist/badge.js.map +0 -1
  195. package/dist/bar-chart.js.map +0 -1
  196. package/dist/breadcrumb.js.map +0 -1
  197. package/dist/bullet-chart.js.map +0 -1
  198. package/dist/button-group.js.map +0 -1
  199. package/dist/button.js.map +0 -1
  200. package/dist/calendar.js.map +0 -1
  201. package/dist/card.js.map +0 -1
  202. package/dist/carousel.js.map +0 -1
  203. package/dist/chart.js.map +0 -1
  204. package/dist/checkbox.js.map +0 -1
  205. package/dist/chunk-322YCNVL.js +0 -278
  206. package/dist/chunk-322YCNVL.js.map +0 -1
  207. package/dist/chunk-3ACQVT7A.js +0 -25
  208. package/dist/chunk-3ACQVT7A.js.map +0 -1
  209. package/dist/chunk-3T65TLJX.js +0 -334
  210. package/dist/chunk-3T65TLJX.js.map +0 -1
  211. package/dist/chunk-6ZSGQHH2.js +0 -192
  212. package/dist/chunk-6ZSGQHH2.js.map +0 -1
  213. package/dist/chunk-7TBMLFGW.js +0 -41
  214. package/dist/chunk-7TBMLFGW.js.map +0 -1
  215. package/dist/chunk-B4H6RNDH.js +0 -135
  216. package/dist/chunk-B4H6RNDH.js.map +0 -1
  217. package/dist/chunk-BUXCGZ6X.js +0 -219
  218. package/dist/chunk-BUXCGZ6X.js.map +0 -1
  219. package/dist/chunk-CHII2QHH.js +0 -58
  220. package/dist/chunk-CHII2QHH.js.map +0 -1
  221. package/dist/chunk-DMNOXRRW.js +0 -147
  222. package/dist/chunk-DMNOXRRW.js.map +0 -1
  223. package/dist/chunk-EFSOSSIC.js +0 -130
  224. package/dist/chunk-EFSOSSIC.js.map +0 -1
  225. package/dist/chunk-FZDSVMKY.js +0 -363
  226. package/dist/chunk-FZDSVMKY.js.map +0 -1
  227. package/dist/chunk-GJOFIJS3.js +0 -246
  228. package/dist/chunk-GJOFIJS3.js.map +0 -1
  229. package/dist/chunk-HL3ZSYES.js +0 -23
  230. package/dist/chunk-HL3ZSYES.js.map +0 -1
  231. package/dist/chunk-JVLUBAPB.js +0 -129
  232. package/dist/chunk-JVLUBAPB.js.map +0 -1
  233. package/dist/chunk-KDPYSOYZ.js +0 -64
  234. package/dist/chunk-KDPYSOYZ.js.map +0 -1
  235. package/dist/chunk-KSMDANKI.js +0 -43
  236. package/dist/chunk-KSMDANKI.js.map +0 -1
  237. package/dist/chunk-MEKCCOP5.js +0 -46
  238. package/dist/chunk-MEKCCOP5.js.map +0 -1
  239. package/dist/chunk-NOFXVRWL.js +0 -451
  240. package/dist/chunk-NOFXVRWL.js.map +0 -1
  241. package/dist/chunk-PC5MHNVA.js +0 -171
  242. package/dist/chunk-PC5MHNVA.js.map +0 -1
  243. package/dist/chunk-QKAQZ2GU.js +0 -122
  244. package/dist/chunk-QKAQZ2GU.js.map +0 -1
  245. package/dist/chunk-QZHSHSVV.js +0 -26
  246. package/dist/chunk-QZHSHSVV.js.map +0 -1
  247. package/dist/chunk-RBMK26XD.js +0 -19
  248. package/dist/chunk-RBMK26XD.js.map +0 -1
  249. package/dist/chunk-SFNJGF6M.js +0 -262
  250. package/dist/chunk-SFNJGF6M.js.map +0 -1
  251. package/dist/chunk-UJJNLGTM.js +0 -112
  252. package/dist/chunk-UJJNLGTM.js.map +0 -1
  253. package/dist/chunk-VGR4ZWJ3.js +0 -418
  254. package/dist/chunk-VGR4ZWJ3.js.map +0 -1
  255. package/dist/chunk-XG47P6D4.js +0 -99
  256. package/dist/chunk-XG47P6D4.js.map +0 -1
  257. package/dist/chunk-XZZAHNVM.js +0 -21
  258. package/dist/chunk-XZZAHNVM.js.map +0 -1
  259. package/dist/chunk-Y4TTYVNE.js +0 -36
  260. package/dist/chunk-Y4TTYVNE.js.map +0 -1
  261. package/dist/chunk-YDWIHW6Q.js +0 -69
  262. package/dist/chunk-YDWIHW6Q.js.map +0 -1
  263. package/dist/collapsible.js.map +0 -1
  264. package/dist/combobox.js.map +0 -1
  265. package/dist/cta.js.map +0 -1
  266. package/dist/currency-selector.js.map +0 -1
  267. package/dist/date-picker.js.map +0 -1
  268. package/dist/details-card.js.map +0 -1
  269. package/dist/dialog.js.map +0 -1
  270. package/dist/dropdown-menu.js.map +0 -1
  271. package/dist/dropzone.js.map +0 -1
  272. package/dist/editorial-card.js.map +0 -1
  273. package/dist/empty-state.js.map +0 -1
  274. package/dist/field.js.map +0 -1
  275. package/dist/footer.js.map +0 -1
  276. package/dist/funnel-chart.js.map +0 -1
  277. package/dist/gallery-indicator.js.map +0 -1
  278. package/dist/heatmap-chart.js.map +0 -1
  279. package/dist/infotip.js.map +0 -1
  280. package/dist/input-group.js.map +0 -1
  281. package/dist/input-size-context.js.map +0 -1
  282. package/dist/input.js.map +0 -1
  283. package/dist/item.js.map +0 -1
  284. package/dist/kpi-card.js.map +0 -1
  285. package/dist/label.js.map +0 -1
  286. package/dist/line-chart.js.map +0 -1
  287. package/dist/logo.js.map +0 -1
  288. package/dist/map-indicator.js.map +0 -1
  289. package/dist/match.js.map +0 -1
  290. package/dist/media-gallery-hero.js.map +0 -1
  291. package/dist/media-player.js.map +0 -1
  292. package/dist/number-input.js.map +0 -1
  293. package/dist/page-header.js.map +0 -1
  294. package/dist/pagination.js.map +0 -1
  295. package/dist/password-input.js.map +0 -1
  296. package/dist/phone-input.js.map +0 -1
  297. package/dist/photo-gallery.js.map +0 -1
  298. package/dist/pie-chart.js.map +0 -1
  299. package/dist/popover.js.map +0 -1
  300. package/dist/price-tag.js.map +0 -1
  301. package/dist/progress.js.map +0 -1
  302. package/dist/property-listing-card.js.map +0 -1
  303. package/dist/radar-chart.js.map +0 -1
  304. package/dist/radio-group.js.map +0 -1
  305. package/dist/review-block.js.map +0 -1
  306. package/dist/rich-text-editor.js.map +0 -1
  307. package/dist/scatter-chart.js.map +0 -1
  308. package/dist/search-input.js.map +0 -1
  309. package/dist/select.js.map +0 -1
  310. package/dist/separator.js.map +0 -1
  311. package/dist/sheet.js.map +0 -1
  312. package/dist/sidebar.js.map +0 -1
  313. package/dist/size-context.js.map +0 -1
  314. package/dist/skeleton.js.map +0 -1
  315. package/dist/slider.js.map +0 -1
  316. package/dist/sparkline.js.map +0 -1
  317. package/dist/stepper.js.map +0 -1
  318. package/dist/switch.js.map +0 -1
  319. package/dist/tab-list.d.ts +0 -38
  320. package/dist/tab-list.js +0 -123
  321. package/dist/tab-list.js.map +0 -1
  322. package/dist/table.js.map +0 -1
  323. package/dist/tabs.js.map +0 -1
  324. package/dist/tag.js.map +0 -1
  325. package/dist/testimonial-block.js.map +0 -1
  326. package/dist/textarea.js.map +0 -1
  327. package/dist/time-picker.js.map +0 -1
  328. package/dist/toast.js.map +0 -1
  329. package/dist/tooltip.js.map +0 -1
  330. package/dist/tree-map.js.map +0 -1
  331. package/dist/waterfall-chart.js.map +0 -1
@@ -1,65 +1,51 @@
1
1
  "use client";
2
- import {
3
- useComponentSize
4
- } from "./chunk-HL3ZSYES.js";
5
- import {
6
- cn
7
- } from "./chunk-Y4TTYVNE.js";
8
-
9
- // src/radio-group.tsx
10
- import { Radio as RadioPrimitive } from "@base-ui/react/radio";
11
- import { RadioGroup as RadioGroupPrimitive } from "@base-ui/react/radio-group";
12
- import { cva } from "class-variance-authority";
2
+ import { t as cn } from "./cn-BI_4DMBf.js";
3
+ import { useComponentSize } from "./size-context.js";
13
4
  import { jsx } from "react/jsx-runtime";
5
+ import { cva } from "class-variance-authority";
6
+ import { Radio } from "@base-ui/react/radio";
7
+ import { RadioGroup as RadioGroup$1 } from "@base-ui/react/radio-group";
8
+ //#region src/radio-group.tsx
14
9
  function RadioGroup({ className, ...props }) {
15
- return /* @__PURE__ */ jsx(
16
- RadioGroupPrimitive,
17
- {
18
- "data-slot": "radio-group",
19
- className: cn("grid w-full gap-2", className),
20
- ...props
21
- }
22
- );
10
+ return /* @__PURE__ */ jsx(RadioGroup$1, {
11
+ "data-slot": "radio-group",
12
+ className: cn("grid w-full gap-2", className),
13
+ ...props
14
+ });
23
15
  }
24
- var radioVariants = cva(
25
- "group/radio-group-item peer relative flex aspect-square shrink-0 rounded-full border-2 bg-transparent text-transparent outline-none transition-[background-color,border-color,box-shadow,color] 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 border-line-strong data-checked:border-action-primary data-checked:text-action-primary data-disabled:cursor-not-allowed data-disabled:border-line-subtle data-disabled:bg-surface data-disabled:text-fg-caption-placeholder size-5 [--radio-dot-size:0.75rem] group-data-[size=sm]/field:size-4 group-data-[size=sm]/field:[--radio-dot-size:0.625rem] group-data-[size=md]/field:size-5 group-data-[size=md]/field:[--radio-dot-size:0.75rem] group-data-[size=lg]/field:size-6 group-data-[size=lg]/field:[--radio-dot-size:0.875rem]",
26
- {
27
- variants: {
28
- size: {
29
- sm: "size-4 [--radio-dot-size:0.625rem]",
30
- md: "size-5 [--radio-dot-size:0.75rem]",
31
- lg: "size-6 [--radio-dot-size:0.875rem]"
32
- }
33
- }
34
- }
35
- );
36
- function RadioGroupItem({
37
- className,
38
- size,
39
- ...props
40
- }) {
41
- const resolvedSize = useComponentSize(size);
42
- return /* @__PURE__ */ jsx(
43
- RadioPrimitive.Root,
44
- {
45
- "data-slot": "radio-group-item",
46
- "data-size": resolvedSize,
47
- className: cn(radioVariants({ size: resolvedSize }), className),
48
- ...props,
49
- children: /* @__PURE__ */ jsx(
50
- RadioPrimitive.Indicator,
51
- {
52
- "data-slot": "radio-group-indicator",
53
- className: "flex size-full items-center justify-center",
54
- children: /* @__PURE__ */ jsx("span", { className: "absolute top-1/2 left-1/2 size-(--radio-dot-size) -translate-x-1/2 -translate-y-1/2 rounded-full bg-current" })
55
- }
56
- )
57
- }
58
- );
16
+ const radioVariants = cva("group/radio-group-item peer relative flex aspect-square shrink-0 rounded-full border-2 bg-transparent text-transparent outline-none transition-[background-color,border-color,box-shadow,color] 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-line-danger/20 aria-invalid:focus-visible:border-line-danger aria-invalid:focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-danger)] border-line-strong data-checked:border-action-primary data-checked:text-action-primary data-disabled:cursor-not-allowed data-disabled:border-line-subtle data-disabled:bg-surface data-disabled:text-fg-caption-placeholder size-5 [--radio-dot-size:0.75rem] group-data-[size=sm]/field:size-4 group-data-[size=sm]/field:[--radio-dot-size:0.625rem] group-data-[size=md]/field:size-5 group-data-[size=md]/field:[--radio-dot-size:0.75rem] group-data-[size=lg]/field:size-6 group-data-[size=lg]/field:[--radio-dot-size:0.875rem]", { variants: { size: {
17
+ sm: "size-4 [--radio-dot-size:0.625rem]",
18
+ md: "size-5 [--radio-dot-size:0.75rem]",
19
+ lg: "size-6 [--radio-dot-size:0.875rem]"
20
+ } } });
21
+ /**
22
+ * Compose each radio item with the shared field primitives.
23
+ *
24
+ * ```tsx
25
+ * <RadioGroup defaultValue="option-1">
26
+ * <Field orientation="horizontal" size="md">
27
+ * <RadioGroupItem id="option-1" value="option-1" />
28
+ * <FieldContent>
29
+ * <FieldLabel htmlFor="option-1">Radio label</FieldLabel>
30
+ * <FieldDescription>Optional helper description for context.</FieldDescription>
31
+ * </FieldContent>
32
+ * </Field>
33
+ * </RadioGroup>
34
+ * ```
35
+ */
36
+ function RadioGroupItem({ className, size, ...props }) {
37
+ const resolvedSize = useComponentSize(size);
38
+ return /* @__PURE__ */ jsx(Radio.Root, {
39
+ "data-slot": "radio-group-item",
40
+ "data-size": resolvedSize,
41
+ className: cn(radioVariants({ size: resolvedSize }), className),
42
+ ...props,
43
+ children: /* @__PURE__ */ jsx(Radio.Indicator, {
44
+ "data-slot": "radio-group-indicator",
45
+ className: "flex size-full items-center justify-center",
46
+ children: /* @__PURE__ */ jsx("span", { className: "absolute top-1/2 left-1/2 size-(--radio-dot-size) -translate-x-1/2 -translate-y-1/2 rounded-full bg-current" })
47
+ })
48
+ });
59
49
  }
60
- export {
61
- RadioGroup,
62
- RadioGroupItem,
63
- radioVariants
64
- };
65
- //# sourceMappingURL=radio-group.js.map
50
+ //#endregion
51
+ export { RadioGroup, RadioGroupItem, radioVariants };
@@ -1,20 +1,18 @@
1
- import * as React from 'react';
2
- import * as class_variance_authority_types from 'class-variance-authority/types';
3
- import { useRender } from '@base-ui/react/use-render';
4
- import { VariantProps } from 'class-variance-authority';
5
-
1
+ import { useRender } from "@base-ui/react/use-render";
2
+ import { VariantProps } from "class-variance-authority";
3
+ //#region src/review-block.d.ts
6
4
  declare const reviewBlockVariants: (props?: ({
7
- size?: "sm" | "md" | "lg" | "xs" | null | undefined;
8
- bordered?: boolean | null | undefined;
9
- showReviewText?: boolean | null | undefined;
10
- } & class_variance_authority_types.ClassProp) | undefined) => string;
5
+ size?: "lg" | "md" | "sm" | "xs" | null | undefined;
6
+ bordered?: boolean | null | undefined;
7
+ showReviewText?: boolean | null | undefined;
8
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
11
9
  type ReviewBlockSize = NonNullable<VariantProps<typeof reviewBlockVariants>["size"]>;
12
10
  type ReviewBlockProps = Omit<useRender.ComponentProps<"div">, "children"> & VariantProps<typeof reviewBlockVariants> & {
13
- rating: number;
14
- reviewCount?: number;
15
- reviewLabel?: string;
16
- ratingLabel?: string;
11
+ rating: number;
12
+ reviewCount?: number;
13
+ reviewLabel?: string;
14
+ ratingLabel?: string;
17
15
  };
18
- declare function ReviewBlock({ bordered, className, rating, ratingLabel, render, reviewCount, reviewLabel, size, showReviewText, ...props }: ReviewBlockProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
19
-
20
- export { ReviewBlock, type ReviewBlockProps, type ReviewBlockSize, reviewBlockVariants };
16
+ declare function ReviewBlock({ bordered, className, rating, ratingLabel, render, reviewCount, reviewLabel, size, showReviewText, ...props }: ReviewBlockProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
17
+ //#endregion
18
+ export { ReviewBlock, type ReviewBlockProps, type ReviewBlockSize, reviewBlockVariants };
@@ -1,10 +1,154 @@
1
- import {
2
- ReviewBlock,
3
- reviewBlockVariants
4
- } from "./chunk-BUXCGZ6X.js";
5
- import "./chunk-Y4TTYVNE.js";
6
- export {
7
- ReviewBlock,
8
- reviewBlockVariants
9
- };
10
- //# sourceMappingURL=review-block.js.map
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/review-block.tsx
7
+ const STAR_INDEXES = [
8
+ 0,
9
+ 1,
10
+ 2,
11
+ 3,
12
+ 4
13
+ ];
14
+ const reviewBlockVariants = cva("group/review-block inline-flex w-fit min-w-0 flex-col items-center justify-center rounded-full bg-canvas text-fg-primary transition-[background-color,border-color,box-shadow]", {
15
+ variants: {
16
+ size: {
17
+ xs: "gap-[2px] border px-6 py-1.5",
18
+ sm: "gap-[3px] border-[1.5px] px-10 py-1.5",
19
+ md: "gap-1 border-2 px-14 py-2",
20
+ lg: "gap-[5px] border-[2.5px] px-18 py-2.5"
21
+ },
22
+ bordered: {
23
+ true: "border-line-focus",
24
+ false: "border-transparent"
25
+ },
26
+ showReviewText: {
27
+ true: "",
28
+ false: ""
29
+ }
30
+ },
31
+ defaultVariants: {
32
+ size: "md",
33
+ bordered: true,
34
+ showReviewText: true
35
+ }
36
+ });
37
+ const reviewBlockStarsVariants = cva("inline-flex shrink-0 items-center", {
38
+ variants: { size: {
39
+ xs: "gap-1.5",
40
+ sm: "gap-2",
41
+ md: "gap-2.5",
42
+ lg: "gap-3.5"
43
+ } },
44
+ defaultVariants: { size: "md" }
45
+ });
46
+ const reviewBlockStarVariants = cva("relative inline-flex shrink-0", {
47
+ variants: { size: {
48
+ xs: "size-4",
49
+ sm: "size-6",
50
+ md: "size-9",
51
+ lg: "size-12"
52
+ } },
53
+ defaultVariants: { size: "md" }
54
+ });
55
+ const reviewBlockStarIconVariants = cva("block h-full max-w-none", {
56
+ variants: { size: {
57
+ xs: "w-4",
58
+ sm: "w-6",
59
+ md: "w-9",
60
+ lg: "w-12"
61
+ } },
62
+ defaultVariants: { size: "md" }
63
+ });
64
+ const reviewBlockTextVariants = cva("text-center font-medium text-fg-primary whitespace-nowrap", {
65
+ variants: { size: {
66
+ xs: "text-[0.75rem] leading-[1.125rem]",
67
+ sm: "text-gdt-sm",
68
+ md: "text-[1rem] leading-[1.375rem]",
69
+ lg: "text-[1.125rem] leading-[1.5rem]"
70
+ } },
71
+ defaultVariants: { size: "md" }
72
+ });
73
+ function clampRating(rating) {
74
+ if (!Number.isFinite(rating)) return 0;
75
+ return Math.min(5, Math.max(0, rating));
76
+ }
77
+ function getStarFill(index, rating) {
78
+ return Math.min(1, Math.max(0, rating - index)) * 100;
79
+ }
80
+ function formatRating(rating) {
81
+ return Number.isInteger(rating) ? rating.toString() : rating.toFixed(2).replace(/0+$/, "").replace(/\.$/, "");
82
+ }
83
+ function formatReviewText(reviewCount, reviewLabel = "Review") {
84
+ const normalizedLabel = reviewCount === 1 ? reviewLabel : `${reviewLabel}s`;
85
+ return `${reviewCount.toLocaleString()} ${normalizedLabel}`;
86
+ }
87
+ function ReviewStarIcon(props) {
88
+ return /* @__PURE__ */ jsx("svg", {
89
+ "aria-hidden": "true",
90
+ fill: "none",
91
+ focusable: "false",
92
+ viewBox: "0 0 35 33",
93
+ xmlns: "http://www.w3.org/2000/svg",
94
+ ...props,
95
+ children: /* @__PURE__ */ jsx("path", {
96
+ d: "m17.119 0 4.042 12.437h13.077l-10.58 7.688L27.7 32.562l-10.58-7.686-10.58 7.686 4.04-12.437L0 12.438h13.077L17.12 0Z",
97
+ fill: "currentColor"
98
+ })
99
+ });
100
+ }
101
+ function ReviewStar({ fillPercent, size }) {
102
+ return /* @__PURE__ */ jsxs("span", {
103
+ className: reviewBlockStarVariants({ size }),
104
+ children: [/* @__PURE__ */ jsx(ReviewStarIcon, {
105
+ "aria-hidden": "true",
106
+ className: cn("text-line-focus", reviewBlockStarIconVariants({ size }))
107
+ }), /* @__PURE__ */ jsx("span", {
108
+ "aria-hidden": "true",
109
+ className: "absolute inset-y-0 left-0 overflow-hidden text-line-focus",
110
+ style: { width: `${fillPercent}%` },
111
+ children: /* @__PURE__ */ jsx(ReviewStarIcon, { className: reviewBlockStarIconVariants({ size }) })
112
+ })]
113
+ });
114
+ }
115
+ function ReviewBlock({ bordered = true, className, rating, ratingLabel, render, reviewCount, reviewLabel, size = "md", showReviewText = true, ...props }) {
116
+ const resolvedSize = size ?? "md";
117
+ const normalizedRating = clampRating(rating);
118
+ const formattedRating = formatRating(normalizedRating);
119
+ const reviewText = showReviewText && typeof reviewCount === "number" ? formatReviewText(reviewCount, reviewLabel) : null;
120
+ return useRender({
121
+ defaultTagName: "div",
122
+ props: mergeProps({
123
+ "aria-label": ratingLabel ?? (reviewText ? `${formattedRating} out of 5 stars, ${reviewText}` : `${formattedRating} out of 5 stars`),
124
+ className: cn(reviewBlockVariants({
125
+ bordered,
126
+ size: resolvedSize,
127
+ showReviewText: Boolean(reviewText)
128
+ }), className),
129
+ children: /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
130
+ "aria-hidden": "true",
131
+ className: reviewBlockStarsVariants({ size: resolvedSize }),
132
+ children: STAR_INDEXES.map((index) => /* @__PURE__ */ jsx(ReviewStar, {
133
+ fillPercent: getStarFill(index, normalizedRating),
134
+ size: resolvedSize
135
+ }, index))
136
+ }), reviewText ? /* @__PURE__ */ jsx("span", {
137
+ className: reviewBlockTextVariants({ size: resolvedSize }),
138
+ children: reviewText
139
+ }) : null] }),
140
+ role: "img"
141
+ }, props),
142
+ render,
143
+ state: {
144
+ bordered,
145
+ rating: normalizedRating,
146
+ reviewCount,
147
+ size: resolvedSize,
148
+ showReviewText: Boolean(reviewText),
149
+ slot: "review-block"
150
+ }
151
+ });
152
+ }
153
+ //#endregion
154
+ export { ReviewBlock, reviewBlockVariants };
@@ -1,16 +1,32 @@
1
- import * as React from 'react';
2
- import { ComponentSize } from './size-context.js';
3
-
1
+ import { t as ComponentSize } from "./size-context-D4mYvcg8.js";
2
+ import * as React from "react";
3
+ //#region src/rich-text-editor.d.ts
4
4
  interface RichTextEditorProps {
5
- value?: string;
6
- defaultValue?: string;
7
- onChange?: (html: string) => void;
8
- size?: ComponentSize;
9
- placeholder?: string;
10
- disabled?: boolean;
11
- className?: string;
12
- "aria-label"?: string;
5
+ value?: string;
6
+ defaultValue?: string;
7
+ onChange?: (html: string) => void;
8
+ size?: ComponentSize;
9
+ placeholder?: string;
10
+ disabled?: boolean;
11
+ className?: string;
12
+ /**
13
+ * Associates the editor with a `<label htmlFor={id}>`. Because the editable
14
+ * surface is a contenteditable div (not a labelable form control), clicking
15
+ * such a label focuses the editor via a manual handler rather than natively.
16
+ */
17
+ id?: string;
18
+ "aria-label"?: string;
19
+ /**
20
+ * Marks the field as invalid. Mirrors the `aria-invalid` convention used by
21
+ * the other form controls and drives the danger border/ring styling.
22
+ */
23
+ "aria-invalid"?: React.AriaAttributes["aria-invalid"];
13
24
  }
14
- declare function RichTextEditor({ value, defaultValue, onChange, size, placeholder, disabled, className, "aria-label": ariaLabel, }: RichTextEditorProps): React.JSX.Element;
15
-
16
- export { RichTextEditor, type RichTextEditorProps };
25
+ /** Imperative handle exposing native-like focus control (e.g. for RHF error focus). */
26
+ interface RichTextEditorHandle {
27
+ focus: () => void;
28
+ blur: () => void;
29
+ }
30
+ declare const RichTextEditor: React.ForwardRefExoticComponent<RichTextEditorProps & React.RefAttributes<RichTextEditorHandle>>;
31
+ //#endregion
32
+ export { RichTextEditor, type RichTextEditorHandle, type RichTextEditorProps };