@giddaa-housing/ui 0.1.0 → 1.0.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 (334) 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.js +5 -35
  10. package/dist/accordion.js.map +1 -1
  11. package/dist/activity-timeline.d.ts +33 -0
  12. package/dist/activity-timeline.js +212 -0
  13. package/dist/activity-timeline.js.map +1 -0
  14. package/dist/alert.js +5 -35
  15. package/dist/alert.js.map +1 -1
  16. package/dist/auth-layout.d.ts +23 -0
  17. package/dist/auth-layout.js +304 -0
  18. package/dist/auth-layout.js.map +1 -0
  19. package/dist/avatar.js +10 -142
  20. package/dist/avatar.js.map +1 -1
  21. package/dist/badge.d.ts +3 -2
  22. package/dist/badge.js +6 -114
  23. package/dist/badge.js.map +1 -1
  24. package/dist/bar-chart.d.ts +101 -77
  25. package/dist/bar-chart.js +142 -220
  26. package/dist/bar-chart.js.map +1 -1
  27. package/dist/breadcrumb.js +5 -35
  28. package/dist/breadcrumb.js.map +1 -1
  29. package/dist/bullet-chart.js +15 -48
  30. package/dist/bullet-chart.js.map +1 -1
  31. package/dist/button-group.js +14 -90
  32. package/dist/button-group.js.map +1 -1
  33. package/dist/button.d.ts +5 -5
  34. package/dist/button.js +7 -140
  35. package/dist/button.js.map +1 -1
  36. package/dist/calendar.js +12 -287
  37. package/dist/calendar.js.map +1 -1
  38. package/dist/card.js +5 -35
  39. package/dist/card.js.map +1 -1
  40. package/dist/carousel.js +12 -386
  41. package/dist/carousel.js.map +1 -1
  42. package/dist/chart.js +16 -480
  43. package/dist/chart.js.map +1 -1
  44. package/dist/checkbox.d.ts +1 -1
  45. package/dist/checkbox.js +13 -48
  46. package/dist/checkbox.js.map +1 -1
  47. package/dist/chunk-322YCNVL.js +278 -0
  48. package/dist/chunk-322YCNVL.js.map +1 -0
  49. package/dist/chunk-3ACQVT7A.js +25 -0
  50. package/dist/chunk-3ACQVT7A.js.map +1 -0
  51. package/dist/chunk-3T65TLJX.js +334 -0
  52. package/dist/chunk-3T65TLJX.js.map +1 -0
  53. package/dist/chunk-6ZSGQHH2.js +192 -0
  54. package/dist/chunk-6ZSGQHH2.js.map +1 -0
  55. package/dist/chunk-7TBMLFGW.js +41 -0
  56. package/dist/chunk-7TBMLFGW.js.map +1 -0
  57. package/dist/chunk-B4H6RNDH.js +135 -0
  58. package/dist/chunk-B4H6RNDH.js.map +1 -0
  59. package/dist/chunk-BUXCGZ6X.js +219 -0
  60. package/dist/chunk-BUXCGZ6X.js.map +1 -0
  61. package/dist/chunk-CHII2QHH.js +58 -0
  62. package/dist/chunk-CHII2QHH.js.map +1 -0
  63. package/dist/chunk-DMNOXRRW.js +147 -0
  64. package/dist/chunk-DMNOXRRW.js.map +1 -0
  65. package/dist/chunk-EFSOSSIC.js +130 -0
  66. package/dist/chunk-EFSOSSIC.js.map +1 -0
  67. package/dist/chunk-FZDSVMKY.js +363 -0
  68. package/dist/chunk-FZDSVMKY.js.map +1 -0
  69. package/dist/chunk-GJOFIJS3.js +246 -0
  70. package/dist/chunk-GJOFIJS3.js.map +1 -0
  71. package/dist/chunk-HL3ZSYES.js +23 -0
  72. package/dist/chunk-HL3ZSYES.js.map +1 -0
  73. package/dist/chunk-JVLUBAPB.js +129 -0
  74. package/dist/chunk-JVLUBAPB.js.map +1 -0
  75. package/dist/chunk-KDPYSOYZ.js +64 -0
  76. package/dist/chunk-KDPYSOYZ.js.map +1 -0
  77. package/dist/chunk-KSMDANKI.js +43 -0
  78. package/dist/chunk-KSMDANKI.js.map +1 -0
  79. package/dist/chunk-MEKCCOP5.js +46 -0
  80. package/dist/chunk-MEKCCOP5.js.map +1 -0
  81. package/dist/chunk-NOFXVRWL.js +451 -0
  82. package/dist/chunk-NOFXVRWL.js.map +1 -0
  83. package/dist/chunk-PC5MHNVA.js +171 -0
  84. package/dist/chunk-PC5MHNVA.js.map +1 -0
  85. package/dist/chunk-QKAQZ2GU.js +122 -0
  86. package/dist/chunk-QKAQZ2GU.js.map +1 -0
  87. package/dist/chunk-QZHSHSVV.js +26 -0
  88. package/dist/chunk-QZHSHSVV.js.map +1 -0
  89. package/dist/chunk-RBMK26XD.js +19 -0
  90. package/dist/chunk-RBMK26XD.js.map +1 -0
  91. package/dist/chunk-SFNJGF6M.js +262 -0
  92. package/dist/chunk-SFNJGF6M.js.map +1 -0
  93. package/dist/chunk-UJJNLGTM.js +112 -0
  94. package/dist/chunk-UJJNLGTM.js.map +1 -0
  95. package/dist/chunk-VGR4ZWJ3.js +418 -0
  96. package/dist/chunk-VGR4ZWJ3.js.map +1 -0
  97. package/dist/chunk-XG47P6D4.js +99 -0
  98. package/dist/chunk-XG47P6D4.js.map +1 -0
  99. package/dist/chunk-XZZAHNVM.js +21 -0
  100. package/dist/chunk-XZZAHNVM.js.map +1 -0
  101. package/dist/chunk-Y4TTYVNE.js +36 -0
  102. package/dist/chunk-Y4TTYVNE.js.map +1 -0
  103. package/dist/chunk-YDWIHW6Q.js +69 -0
  104. package/dist/chunk-YDWIHW6Q.js.map +1 -0
  105. package/dist/collapsible.js +6 -35
  106. package/dist/collapsible.js.map +1 -1
  107. package/dist/combobox.js +26 -694
  108. package/dist/combobox.js.map +1 -1
  109. package/dist/cta.d.ts +66 -0
  110. package/dist/cta.js +358 -0
  111. package/dist/cta.js.map +1 -0
  112. package/dist/currency-selector.d.ts +42 -0
  113. package/dist/currency-selector.js +192 -0
  114. package/dist/currency-selector.js.map +1 -0
  115. package/dist/date-picker.d.ts +18 -10
  116. package/dist/date-picker.js +105 -430
  117. package/dist/date-picker.js.map +1 -1
  118. package/dist/details-card.d.ts +19 -0
  119. package/dist/details-card.js +267 -0
  120. package/dist/details-card.js.map +1 -0
  121. package/dist/dialog.js +36 -146
  122. package/dist/dialog.js.map +1 -1
  123. package/dist/dropdown-menu.d.ts +1 -1
  124. package/dist/dropdown-menu.js +20 -358
  125. package/dist/dropdown-menu.js.map +1 -1
  126. package/dist/dropzone.js +13 -40
  127. package/dist/dropzone.js.map +1 -1
  128. package/dist/editorial-card.d.ts +29 -0
  129. package/dist/editorial-card.js +311 -0
  130. package/dist/editorial-card.js.map +1 -0
  131. package/dist/empty-state.js +5 -35
  132. package/dist/empty-state.js.map +1 -1
  133. package/dist/field.js +30 -135
  134. package/dist/field.js.map +1 -1
  135. package/dist/footer.d.ts +47 -0
  136. package/dist/footer.js +430 -0
  137. package/dist/footer.js.map +1 -0
  138. package/dist/funnel-chart.js +42 -415
  139. package/dist/funnel-chart.js.map +1 -1
  140. package/dist/gallery-indicator.d.ts +18 -0
  141. package/dist/gallery-indicator.js +12 -0
  142. package/dist/gallery-indicator.js.map +1 -0
  143. package/dist/heatmap-chart.d.ts +98 -0
  144. package/dist/heatmap-chart.js +248 -0
  145. package/dist/heatmap-chart.js.map +1 -0
  146. package/dist/infotip.d.ts +11 -0
  147. package/dist/infotip.js +66 -0
  148. package/dist/infotip.js.map +1 -0
  149. package/dist/input-group.d.ts +2 -1
  150. package/dist/input-group.js +15 -371
  151. package/dist/input-group.js.map +1 -1
  152. package/dist/input-size-context.js +5 -19
  153. package/dist/input-size-context.js.map +1 -1
  154. package/dist/input.js +6 -78
  155. package/dist/input.js.map +1 -1
  156. package/dist/item.js +5 -35
  157. package/dist/item.js.map +1 -1
  158. package/dist/kpi-card.js +12 -52
  159. package/dist/kpi-card.js.map +1 -1
  160. package/dist/label.js +5 -64
  161. package/dist/label.js.map +1 -1
  162. package/dist/line-chart.js +9 -166
  163. package/dist/line-chart.js.map +1 -1
  164. package/dist/logo.js +4 -141
  165. package/dist/logo.js.map +1 -1
  166. package/dist/map-indicator.d.ts +13 -0
  167. package/dist/map-indicator.js +109 -0
  168. package/dist/map-indicator.js.map +1 -0
  169. package/dist/match.d.ts +16 -0
  170. package/dist/match.js +113 -0
  171. package/dist/match.js.map +1 -0
  172. package/dist/media-gallery-hero.d.ts +60 -0
  173. package/dist/media-gallery-hero.js +362 -0
  174. package/dist/media-gallery-hero.js.map +1 -0
  175. package/dist/media-player.d.ts +60 -0
  176. package/dist/media-player.js +1394 -0
  177. package/dist/media-player.js.map +1 -0
  178. package/dist/number-input.js +30 -325
  179. package/dist/number-input.js.map +1 -1
  180. package/dist/page-header.js +4 -32
  181. package/dist/page-header.js.map +1 -1
  182. package/dist/pagination.d.ts +1 -0
  183. package/dist/pagination.js +27 -161
  184. package/dist/pagination.js.map +1 -1
  185. package/dist/password-input.d.ts +1 -0
  186. package/dist/password-input.js +21 -319
  187. package/dist/password-input.js.map +1 -1
  188. package/dist/phone-input.d.ts +2 -1
  189. package/dist/phone-input.js +148 -359
  190. package/dist/phone-input.js.map +1 -1
  191. package/dist/photo-gallery.d.ts +1 -1
  192. package/dist/photo-gallery.js +97 -393
  193. package/dist/photo-gallery.js.map +1 -1
  194. package/dist/pie-chart.js +17 -52
  195. package/dist/pie-chart.js.map +1 -1
  196. package/dist/popover.js +13 -158
  197. package/dist/popover.js.map +1 -1
  198. package/dist/price-tag.d.ts +35 -0
  199. package/dist/price-tag.js +178 -0
  200. package/dist/price-tag.js.map +1 -0
  201. package/dist/progress.d.ts +5 -2
  202. package/dist/progress.js +14 -303
  203. package/dist/progress.js.map +1 -1
  204. package/dist/property-listing-card.d.ts +32 -0
  205. package/dist/property-listing-card.js +235 -0
  206. package/dist/property-listing-card.js.map +1 -0
  207. package/dist/radar-chart.d.ts +110 -0
  208. package/dist/radar-chart.js +147 -0
  209. package/dist/radar-chart.js.map +1 -0
  210. package/dist/radio-group.js +15 -50
  211. package/dist/radio-group.js.map +1 -1
  212. package/dist/review-block.d.ts +20 -0
  213. package/dist/review-block.js +10 -0
  214. package/dist/review-block.js.map +1 -0
  215. package/dist/rich-text-editor.js +172 -433
  216. package/dist/rich-text-editor.js.map +1 -1
  217. package/dist/scatter-chart.d.ts +142 -0
  218. package/dist/scatter-chart.js +252 -0
  219. package/dist/scatter-chart.js.map +1 -0
  220. package/dist/search-input.d.ts +1 -0
  221. package/dist/search-input.js +22 -320
  222. package/dist/search-input.js.map +1 -1
  223. package/dist/select.js +15 -292
  224. package/dist/select.js.map +1 -1
  225. package/dist/separator.js +5 -68
  226. package/dist/separator.js.map +1 -1
  227. package/dist/sheet.js +14 -271
  228. package/dist/sheet.js.map +1 -1
  229. package/dist/sidebar.d.ts +1 -1
  230. package/dist/sidebar.js +89 -494
  231. package/dist/sidebar.js.map +1 -1
  232. package/dist/size-context.js +5 -17
  233. package/dist/size-context.js.map +1 -1
  234. package/dist/skeleton.js +4 -44
  235. package/dist/skeleton.js.map +1 -1
  236. package/dist/slider.d.ts +28 -0
  237. package/dist/slider.js +152 -0
  238. package/dist/slider.js.map +1 -0
  239. package/dist/sparkline.js +33 -341
  240. package/dist/sparkline.js.map +1 -1
  241. package/dist/stepper.js +5 -35
  242. package/dist/stepper.js.map +1 -1
  243. package/dist/styles.css +9593 -2
  244. package/dist/switch.js +13 -48
  245. package/dist/switch.js.map +1 -1
  246. package/dist/tab-list.js +35 -306
  247. package/dist/tab-list.js.map +1 -1
  248. package/dist/table.js +5 -32
  249. package/dist/table.js.map +1 -1
  250. package/dist/tabs.js +10 -150
  251. package/dist/tabs.js.map +1 -1
  252. package/dist/tag.d.ts +7 -6
  253. package/dist/tag.js +101 -97
  254. package/dist/tag.js.map +1 -1
  255. package/dist/testimonial-block.d.ts +34 -0
  256. package/dist/testimonial-block.js +377 -0
  257. package/dist/testimonial-block.js.map +1 -0
  258. package/dist/textarea.js +6 -73
  259. package/dist/textarea.js.map +1 -1
  260. package/dist/time-picker.js +119 -279
  261. package/dist/time-picker.js.map +1 -1
  262. package/dist/toast.js +27 -132
  263. package/dist/toast.js.map +1 -1
  264. package/dist/tooltip.d.ts +5 -5
  265. package/dist/tooltip.js +7 -90
  266. package/dist/tooltip.js.map +1 -1
  267. package/dist/tree-map.js +41 -414
  268. package/dist/tree-map.js.map +1 -1
  269. package/dist/waterfall-chart.d.ts +129 -0
  270. package/dist/waterfall-chart.js +577 -0
  271. package/dist/waterfall-chart.js.map +1 -0
  272. package/package.json +98 -28
  273. package/dist/base.css +0 -32
  274. package/dist/files/red-hat-display-latin-300-italic.woff +0 -0
  275. package/dist/files/red-hat-display-latin-300-italic.woff2 +0 -0
  276. package/dist/files/red-hat-display-latin-300-normal.woff +0 -0
  277. package/dist/files/red-hat-display-latin-300-normal.woff2 +0 -0
  278. package/dist/files/red-hat-display-latin-400-italic.woff +0 -0
  279. package/dist/files/red-hat-display-latin-400-italic.woff2 +0 -0
  280. package/dist/files/red-hat-display-latin-400-normal.woff +0 -0
  281. package/dist/files/red-hat-display-latin-400-normal.woff2 +0 -0
  282. package/dist/files/red-hat-display-latin-500-italic.woff +0 -0
  283. package/dist/files/red-hat-display-latin-500-italic.woff2 +0 -0
  284. package/dist/files/red-hat-display-latin-500-normal.woff +0 -0
  285. package/dist/files/red-hat-display-latin-500-normal.woff2 +0 -0
  286. package/dist/files/red-hat-display-latin-600-italic.woff +0 -0
  287. package/dist/files/red-hat-display-latin-600-italic.woff2 +0 -0
  288. package/dist/files/red-hat-display-latin-600-normal.woff +0 -0
  289. package/dist/files/red-hat-display-latin-600-normal.woff2 +0 -0
  290. package/dist/files/red-hat-display-latin-700-italic.woff +0 -0
  291. package/dist/files/red-hat-display-latin-700-italic.woff2 +0 -0
  292. package/dist/files/red-hat-display-latin-700-normal.woff +0 -0
  293. package/dist/files/red-hat-display-latin-700-normal.woff2 +0 -0
  294. package/dist/files/red-hat-display-latin-800-italic.woff +0 -0
  295. package/dist/files/red-hat-display-latin-800-italic.woff2 +0 -0
  296. package/dist/files/red-hat-display-latin-800-normal.woff +0 -0
  297. package/dist/files/red-hat-display-latin-800-normal.woff2 +0 -0
  298. package/dist/files/red-hat-display-latin-900-italic.woff +0 -0
  299. package/dist/files/red-hat-display-latin-900-italic.woff2 +0 -0
  300. package/dist/files/red-hat-display-latin-900-normal.woff +0 -0
  301. package/dist/files/red-hat-display-latin-900-normal.woff2 +0 -0
  302. package/dist/files/red-hat-display-latin-ext-300-italic.woff +0 -0
  303. package/dist/files/red-hat-display-latin-ext-300-italic.woff2 +0 -0
  304. package/dist/files/red-hat-display-latin-ext-300-normal.woff +0 -0
  305. package/dist/files/red-hat-display-latin-ext-300-normal.woff2 +0 -0
  306. package/dist/files/red-hat-display-latin-ext-400-italic.woff +0 -0
  307. package/dist/files/red-hat-display-latin-ext-400-italic.woff2 +0 -0
  308. package/dist/files/red-hat-display-latin-ext-400-normal.woff +0 -0
  309. package/dist/files/red-hat-display-latin-ext-400-normal.woff2 +0 -0
  310. package/dist/files/red-hat-display-latin-ext-500-italic.woff +0 -0
  311. package/dist/files/red-hat-display-latin-ext-500-italic.woff2 +0 -0
  312. package/dist/files/red-hat-display-latin-ext-500-normal.woff +0 -0
  313. package/dist/files/red-hat-display-latin-ext-500-normal.woff2 +0 -0
  314. package/dist/files/red-hat-display-latin-ext-600-italic.woff +0 -0
  315. package/dist/files/red-hat-display-latin-ext-600-italic.woff2 +0 -0
  316. package/dist/files/red-hat-display-latin-ext-600-normal.woff +0 -0
  317. package/dist/files/red-hat-display-latin-ext-600-normal.woff2 +0 -0
  318. package/dist/files/red-hat-display-latin-ext-700-italic.woff +0 -0
  319. package/dist/files/red-hat-display-latin-ext-700-italic.woff2 +0 -0
  320. package/dist/files/red-hat-display-latin-ext-700-normal.woff +0 -0
  321. package/dist/files/red-hat-display-latin-ext-700-normal.woff2 +0 -0
  322. package/dist/files/red-hat-display-latin-ext-800-italic.woff +0 -0
  323. package/dist/files/red-hat-display-latin-ext-800-italic.woff2 +0 -0
  324. package/dist/files/red-hat-display-latin-ext-800-normal.woff +0 -0
  325. package/dist/files/red-hat-display-latin-ext-800-normal.woff2 +0 -0
  326. package/dist/files/red-hat-display-latin-ext-900-italic.woff +0 -0
  327. package/dist/files/red-hat-display-latin-ext-900-italic.woff2 +0 -0
  328. package/dist/files/red-hat-display-latin-ext-900-normal.woff +0 -0
  329. package/dist/files/red-hat-display-latin-ext-900-normal.woff2 +0 -0
  330. package/dist/index.d.ts +0 -87
  331. package/dist/index.js +0 -10448
  332. package/dist/index.js.map +0 -1
  333. package/dist/red-hat-display.css +0 -2
  334. package/dist/theme/giddaa.css +0 -2
@@ -1,342 +1,36 @@
1
- // src/components/ui/photo-gallery.tsx
1
+ "use client";
2
+ import {
3
+ Button
4
+ } from "./chunk-B4H6RNDH.js";
5
+ import {
6
+ Carousel,
7
+ CarouselContent,
8
+ CarouselItem
9
+ } from "./chunk-FZDSVMKY.js";
10
+ import "./chunk-HL3ZSYES.js";
11
+ import {
12
+ cn
13
+ } from "./chunk-Y4TTYVNE.js";
14
+
15
+ // src/photo-gallery.tsx
2
16
  import { Dialog as DialogPrimitive } from "@base-ui/react/dialog";
3
17
  import {
4
- ChevronLeftIcon as ChevronLeftIcon2,
5
- ChevronRightIcon as ChevronRightIcon2,
18
+ ChevronLeftIcon,
19
+ ChevronRightIcon,
6
20
  Fullscreen,
7
21
  XIcon
8
22
  } from "lucide-react";
9
- import * as React2 from "react";
10
-
11
- // src/lib/cn.ts
12
- import { clsx } from "clsx";
13
- import { extendTailwindMerge } from "tailwind-merge";
14
- var twMerge = extendTailwindMerge({
15
- extend: {
16
- classGroups: {
17
- "font-size": [
18
- {
19
- text: [
20
- "gdt-display",
21
- "gdt-h1",
22
- "gdt-h2",
23
- "gdt-h3",
24
- "gdt-h4",
25
- "gdt-h5",
26
- "gdt-xl",
27
- "gdt-lg",
28
- "gdt-md",
29
- "gdt-sm",
30
- "gdt-xs",
31
- "gdt-subtext",
32
- "gdt-capitalized"
33
- ]
34
- }
35
- ]
36
- }
37
- }
38
- });
39
- function cn(...inputs) {
40
- return twMerge(clsx(inputs));
41
- }
42
-
43
- // src/components/ui/button.tsx
44
- import { Button as ButtonPrimitive } from "@base-ui/react/button";
45
- import { cva } from "class-variance-authority";
46
- import { Loader } from "lucide-react";
47
-
48
- // src/components/ui/size-context.tsx
49
- import { createContext, useContext } from "react";
50
- import { Fragment, jsx } from "react/jsx-runtime";
51
- var SizeContext = createContext(void 0);
52
- function useComponentSize(size, fallback = "md") {
53
- const inheritedSize = useContext(SizeContext);
54
- return size ?? inheritedSize ?? fallback;
55
- }
56
-
57
- // src/components/ui/button.tsx
58
- import { jsx as jsx2, jsxs } from "react/jsx-runtime";
59
- var buttonVariants = cva(
60
- "group/button inline-flex shrink-0 items-center justify-center rounded-full bg-clip-padding whitespace-nowrap font-bold transition-[background-color,color,border-color,box-shadow,transform] outline-none select-none focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 aria-invalid:border-line-danger aria-invalid:ring-3 aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
61
- {
62
- variants: {
63
- variant: {
64
- primary: "bg-action-primary text-fg-on-brand hover:bg-action-primary-hover active:bg-action-primary-pressed",
65
- "primary-outline": "border-2 border-action-primary bg-transparent text-fg-brand hover:bg-surface-brand-subtle active:bg-surface-brand-subtle data-focused:bg-surface-brand-subtle data-pressed:bg-surface-brand-subtle",
66
- secondary: "bg-surface-brand-subtle text-fg-brand hover:bg-action-primary-hover hover:text-fg-on-brand active:bg-action-primary-pressed active:text-fg-on-brand data-focused:bg-action-primary-hover data-pressed:bg-action-primary-pressed data-focused:text-fg-on-brand data-pressed:text-fg-on-brand",
67
- "secondary-outline": "border-2 border-action-secondary bg-transparent text-fg-brand hover:bg-surface-brand-subtle active:bg-surface-brand-subtle data-focused:bg-surface-brand-subtle data-pressed:bg-surface-brand-subtle",
68
- tertiary: "bg-action-tertiary text-fg-primary hover:bg-action-tertiary-hover active:bg-action-tertiary-pressed data-focused:bg-action-tertiary-hover data-pressed:bg-action-tertiary-pressed",
69
- "tertiary-outline": "border border-line-strong bg-transparent text-fg-primary hover:bg-surface active:bg-surface-raised data-focused:bg-surface data-pressed:bg-surface-raised",
70
- ghost: "bg-transparent text-fg-primary hover:bg-surface active:bg-surface-raised data-focused:bg-surface data-pressed:bg-surface-raised",
71
- danger: "bg-action-danger text-fg-on-brand hover:bg-action-danger-hover active:bg-action-danger-pressed data-focused:bg-action-danger-hover data-pressed:bg-action-danger-pressed",
72
- "glass-overlay": "bg-surface-glass-overlay-button text-fg-on-brand",
73
- "link-brand": "border-transparent bg-transparent px-0 text-fg-brand hover:underline active:underline active:opacity-70",
74
- "link-neutral": "border-transparent bg-transparent px-0 text-fg-secondary hover:underline active:underline active:opacity-70"
75
- },
76
- size: {
77
- sm: "h-8 gap-2 px-3.5 text-gdt-xs has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3 [&_svg:not([class*='size-'])]:size-3.5",
78
- md: "h-10 gap-2 px-4.5 text-gdt-sm has-data-[icon=inline-end]:pr-4 has-data-[icon=inline-start]:pl-4",
79
- lg: "h-12.5 gap-2.5 px-5.5 text-gdt-md has-data-[icon=inline-end]:pr-5 has-data-[icon=inline-start]:pl-5 [&_svg:not([class*='size-'])]:size-4.5",
80
- xl: "h-14 gap-3 px-6.5 text-gdt-lg has-data-[icon=inline-end]:pr-6 has-data-[icon=inline-start]:pl-6 [&_svg:not([class*='size-'])]:size-5",
81
- icon: "size-10",
82
- "icon-xs": "size-6 text-gdt-xs [&_svg:not([class*='size-'])]:size-3",
83
- "icon-sm": "size-8 text-gdt-sm [&_svg:not([class*='size-'])]:size-3.5",
84
- "icon-lg": "size-12.5 text-gdt-md [&_svg:not([class*='size-'])]:size-4.5",
85
- "icon-xl": "size-14 text-gdt-lg [&_svg:not([class*='size-'])]:size-5"
86
- }
87
- },
88
- defaultVariants: {
89
- variant: "primary",
90
- size: "md"
91
- }
92
- }
93
- );
94
- function Button({
95
- className,
96
- variant = "primary",
97
- size,
98
- isLoading = false,
99
- children,
100
- disabled = false,
101
- ...props
102
- }) {
103
- const inheritedSize = useComponentSize();
104
- const resolvedSize = size ?? inheritedSize;
105
- const _disabled = disabled || isLoading;
106
- return /* @__PURE__ */ jsxs(
107
- ButtonPrimitive,
108
- {
109
- "data-slot": "button",
110
- className: cn(buttonVariants({ variant, size: resolvedSize, className })),
111
- disabled: _disabled,
112
- ...props,
113
- children: [
114
- isLoading && /* @__PURE__ */ jsx2(Loader, { className: "size-4 animate-spin" }),
115
- " ",
116
- children
117
- ]
118
- }
119
- );
120
- }
121
-
122
- // src/components/ui/carousel.tsx
123
- import { cva as cva2 } from "class-variance-authority";
124
- import useEmblaCarousel from "embla-carousel-react";
125
- import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react";
126
23
  import * as React from "react";
127
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
128
- var glassChrome = "border border-fg-on-brand/[0.18] bg-surface-glass-overlay-button backdrop-blur-[16px]";
129
- var carouselVariants = cva2(
130
- "relative overflow-hidden rounded-2xl bg-surface-brand-subtle",
131
- {
132
- variants: {
133
- imageSize: {
134
- sm: "w-[320px] max-w-full aspect-[320/220]",
135
- md: "w-[520px] max-w-full aspect-[520/340]",
136
- lg: "w-[800px] max-w-full aspect-[800/500]",
137
- full: "w-full"
138
- }
139
- },
140
- defaultVariants: {
141
- imageSize: "md"
142
- }
143
- }
144
- );
145
- var CarouselContext = React.createContext(null);
146
- function useCarousel() {
147
- const context = React.useContext(CarouselContext);
148
- if (!context) {
149
- throw new Error("useCarousel must be used within a <Carousel />");
150
- }
151
- return context;
152
- }
153
- function Carousel({
154
- orientation = "horizontal",
155
- opts,
156
- setApi,
157
- plugins,
158
- size,
159
- imageSize,
160
- className,
161
- children,
162
- ...props
163
- }) {
164
- const resolvedSize = useComponentSize(size);
165
- const [carouselRef, api] = useEmblaCarousel(
166
- {
167
- ...opts,
168
- axis: orientation === "horizontal" ? "x" : "y"
169
- },
170
- plugins
171
- );
172
- const [canScrollPrev, setCanScrollPrev] = React.useState(false);
173
- const [canScrollNext, setCanScrollNext] = React.useState(false);
174
- const [selectedIndex, setSelectedIndex] = React.useState(0);
175
- const [scrollSnaps, setScrollSnaps] = React.useState([]);
176
- const onSelect = React.useCallback((api2) => {
177
- if (!api2) return;
178
- setCanScrollPrev(api2.canScrollPrev());
179
- setCanScrollNext(api2.canScrollNext());
180
- setSelectedIndex(api2.selectedScrollSnap());
181
- }, []);
182
- const onReInit = React.useCallback(
183
- (api2) => {
184
- if (!api2) return;
185
- setScrollSnaps(api2.scrollSnapList());
186
- onSelect(api2);
187
- },
188
- [onSelect]
189
- );
190
- const scrollPrev = React.useCallback(() => {
191
- api?.scrollPrev();
192
- }, [api]);
193
- const scrollNext = React.useCallback(() => {
194
- api?.scrollNext();
195
- }, [api]);
196
- const scrollTo = React.useCallback(
197
- (index) => {
198
- api?.scrollTo(index);
199
- },
200
- [api]
201
- );
202
- const handleKeyDown = React.useCallback(
203
- (event) => {
204
- if (event.key === "ArrowLeft") {
205
- event.preventDefault();
206
- scrollPrev();
207
- } else if (event.key === "ArrowRight") {
208
- event.preventDefault();
209
- scrollNext();
210
- }
211
- },
212
- [scrollPrev, scrollNext]
213
- );
214
- React.useEffect(() => {
215
- if (!api || !setApi) return;
216
- setApi(api);
217
- }, [api, setApi]);
218
- React.useEffect(() => {
219
- if (!api) return;
220
- onReInit(api);
221
- api.on("reInit", onReInit);
222
- api.on("select", onSelect);
223
- return () => {
224
- api?.off("reInit", onReInit);
225
- api?.off("select", onSelect);
226
- };
227
- }, [api, onReInit, onSelect]);
228
- return /* @__PURE__ */ jsx3(
229
- CarouselContext.Provider,
230
- {
231
- value: {
232
- carouselRef,
233
- api,
234
- orientation,
235
- size: resolvedSize,
236
- scrollPrev,
237
- scrollNext,
238
- scrollTo,
239
- canScrollPrev,
240
- canScrollNext,
241
- selectedIndex,
242
- scrollSnaps
243
- },
244
- children: /* @__PURE__ */ jsx3(
245
- "div",
246
- {
247
- onKeyDownCapture: handleKeyDown,
248
- className: cn(carouselVariants({ imageSize }), className),
249
- role: "region",
250
- "aria-roledescription": "carousel",
251
- "data-slot": "carousel",
252
- ...props,
253
- children
254
- }
255
- )
256
- }
257
- );
258
- }
259
- function CarouselContent({ className, ...props }) {
260
- const { carouselRef, orientation } = useCarousel();
261
- return /* @__PURE__ */ jsx3(
262
- "div",
263
- {
264
- ref: carouselRef,
265
- className: "h-full overflow-hidden",
266
- "data-slot": "carousel-content",
267
- children: /* @__PURE__ */ jsx3(
268
- "div",
269
- {
270
- className: cn(
271
- "flex h-full",
272
- orientation === "horizontal" ? "" : "flex-col",
273
- className
274
- ),
275
- ...props
276
- }
277
- )
278
- }
279
- );
280
- }
281
- function CarouselItem({ className, ...props }) {
282
- return (
283
- // biome-ignore lint/a11y/useSemanticElements: a carousel slide is a role="group" with aria-roledescription per the W3C pattern, not a fieldset.
284
- /* @__PURE__ */ jsx3(
285
- "div",
286
- {
287
- role: "group",
288
- "aria-roledescription": "slide",
289
- "data-slot": "carousel-item",
290
- className: cn("min-w-0 shrink-0 grow-0 basis-full", className),
291
- ...props
292
- }
293
- )
294
- );
295
- }
296
- var arrowVariants = cva2(
297
- cn(
298
- "absolute top-1/2 z-10 grid -translate-y-1/2 place-items-center rounded-full text-fg-on-brand/95 shadow-1 transition-[transform,opacity] outline-none",
299
- glassChrome,
300
- "hover:scale-105 focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] active:scale-95 disabled:pointer-events-none disabled:opacity-40"
301
- ),
302
- {
303
- variants: {
304
- size: {
305
- sm: "size-8 [&_svg]:size-4",
306
- md: "size-10 [&_svg]:size-[18px]",
307
- lg: "size-12 [&_svg]:size-5"
308
- },
309
- side: {
310
- prev: "",
311
- next: ""
312
- }
313
- },
314
- compoundVariants: [
315
- { size: "sm", side: "prev", className: "left-3" },
316
- { size: "sm", side: "next", className: "right-3" },
317
- { size: "md", side: "prev", className: "left-4" },
318
- { size: "md", side: "next", className: "right-4" },
319
- { size: "lg", side: "prev", className: "left-5" },
320
- { size: "lg", side: "next", className: "right-5" }
321
- ],
322
- defaultVariants: {
323
- size: "md",
324
- side: "prev"
325
- }
326
- }
327
- );
328
-
329
- // src/components/ui/photo-gallery.tsx
330
- import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
24
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
331
25
  function useGalleryCarousel(index, onIndexChange) {
332
- const [api, setApi] = React2.useState();
333
- const [selectedIndex, setSelectedIndex] = React2.useState(index ?? 0);
334
- const initialIndexRef = React2.useRef(index ?? 0);
335
- const onIndexChangeRef = React2.useRef(onIndexChange);
336
- React2.useEffect(() => {
26
+ const [api, setApi] = React.useState();
27
+ const [selectedIndex, setSelectedIndex] = React.useState(index ?? 0);
28
+ const initialIndexRef = React.useRef(index ?? 0);
29
+ const onIndexChangeRef = React.useRef(onIndexChange);
30
+ React.useEffect(() => {
337
31
  onIndexChangeRef.current = onIndexChange;
338
32
  });
339
- React2.useEffect(() => {
33
+ React.useEffect(() => {
340
34
  if (!api) return;
341
35
  const onSelect = () => {
342
36
  const next = api.selectedScrollSnap();
@@ -349,17 +43,17 @@ function useGalleryCarousel(index, onIndexChange) {
349
43
  api.off("select", onSelect).off("reInit", onSelect);
350
44
  };
351
45
  }, [api]);
352
- React2.useEffect(() => {
46
+ React.useEffect(() => {
353
47
  if (api && index !== void 0 && index !== api.selectedScrollSnap()) {
354
48
  api.scrollTo(index, false);
355
49
  }
356
50
  }, [api, index]);
357
- const scrollTo = React2.useCallback(
51
+ const scrollTo = React.useCallback(
358
52
  (i) => api?.scrollTo(i, false),
359
53
  [api]
360
54
  );
361
- const scrollPrev = React2.useCallback(() => api?.scrollPrev(false), [api]);
362
- const scrollNext = React2.useCallback(() => api?.scrollNext(false), [api]);
55
+ const scrollPrev = React.useCallback(() => api?.scrollPrev(false), [api]);
56
+ const scrollNext = React.useCallback(() => api?.scrollNext(false), [api]);
363
57
  return {
364
58
  setApi,
365
59
  selectedIndex,
@@ -374,7 +68,7 @@ function GalleryFrame({
374
68
  fit = "cover",
375
69
  className
376
70
  }) {
377
- return /* @__PURE__ */ jsx4(
71
+ return /* @__PURE__ */ jsx(
378
72
  "div",
379
73
  {
380
74
  "data-slot": "photo-gallery-frame",
@@ -382,22 +76,21 @@ function GalleryFrame({
382
76
  "relative flex size-full items-center justify-center overflow-hidden",
383
77
  className
384
78
  ),
385
- children: image?.src ? /* @__PURE__ */ jsx4(
79
+ children: image?.src ? /* @__PURE__ */ jsx(
386
80
  "img",
387
81
  {
388
82
  src: image.src,
389
83
  alt: image.alt ?? "Property image",
390
84
  className: cn(
391
- "size-full",
392
- fit === "contain" ? "object-contain" : "object-cover"
85
+ fit === "contain" ? "max-h-full max-w-full rounded-lg object-contain" : "size-full object-cover"
393
86
  ),
394
87
  draggable: false
395
88
  }
396
- ) : /* @__PURE__ */ jsx4("span", { className: "text-gdt-sm font-medium text-fg-caption-placeholder", children: "Property Image" })
89
+ ) : /* @__PURE__ */ jsx("span", { className: "text-gdt-sm font-medium text-fg-caption-placeholder", children: "Property Image" })
397
90
  }
398
91
  );
399
92
  }
400
- var Images = (props) => /* @__PURE__ */ jsxs3(
93
+ var Images = (props) => /* @__PURE__ */ jsxs(
401
94
  "svg",
402
95
  {
403
96
  "aria-hidden": "true",
@@ -408,14 +101,14 @@ var Images = (props) => /* @__PURE__ */ jsxs3(
408
101
  fill: "none",
409
102
  ...props,
410
103
  children: [
411
- /* @__PURE__ */ jsx4(
104
+ /* @__PURE__ */ jsx(
412
105
  "path",
413
106
  {
414
107
  fill: "currentColor",
415
108
  d: "M6.72 14.332c-.705 0-1.38-.3-1.878-.83a2.935 2.935 0 0 1-.779-2.003V2.012l-3.02.738c-.36.102-.667.353-.853.697a1.587 1.587 0 0 0-.143 1.136l2.589 10.309c.083.318.261.598.507.798.246.2.546.309.856.31.115 0 .233-.015.349-.048l6.3-1.62H6.72ZM8.125 6c.69 0 1.25-.597 1.25-1.333 0-.735-.56-1.333-1.25-1.333s-1.25.598-1.25 1.333c0 .736.56 1.333 1.25 1.333Z"
416
109
  }
417
110
  ),
418
- /* @__PURE__ */ jsx4(
111
+ /* @__PURE__ */ jsx(
419
112
  "path",
420
113
  {
421
114
  fill: "currentColor",
@@ -431,7 +124,7 @@ function GalleryCounter({
431
124
  className
432
125
  }) {
433
126
  if (total <= 1) return null;
434
- return /* @__PURE__ */ jsxs3(
127
+ return /* @__PURE__ */ jsxs(
435
128
  "div",
436
129
  {
437
130
  "data-slot": "photo-gallery-counter",
@@ -440,8 +133,8 @@ function GalleryCounter({
440
133
  className
441
134
  ),
442
135
  children: [
443
- /* @__PURE__ */ jsx4(Images, { "aria-hidden": "true", className: "size-3.5" }),
444
- /* @__PURE__ */ jsxs3("span", { children: [
136
+ /* @__PURE__ */ jsx(Images, { "aria-hidden": "true", className: "size-3.5" }),
137
+ /* @__PURE__ */ jsxs("span", { children: [
445
138
  current,
446
139
  " / ",
447
140
  total
@@ -455,7 +148,7 @@ function GalleryButton({
455
148
  variant = "ghost",
456
149
  ...rest
457
150
  }) {
458
- return /* @__PURE__ */ jsx4(
151
+ return /* @__PURE__ */ jsx(
459
152
  Button,
460
153
  {
461
154
  size: "icon",
@@ -473,8 +166,8 @@ function GalleryArrow({
473
166
  onClick,
474
167
  className
475
168
  }) {
476
- const Icon = side === "prev" ? ChevronLeftIcon2 : ChevronRightIcon2;
477
- return /* @__PURE__ */ jsx4(
169
+ const Icon = side === "prev" ? ChevronLeftIcon : ChevronRightIcon;
170
+ return /* @__PURE__ */ jsx(
478
171
  GalleryButton,
479
172
  {
480
173
  type: "button",
@@ -489,7 +182,7 @@ function GalleryArrow({
489
182
  side === "prev" ? "left-2 sm:left-4" : "right-2 sm:right-4",
490
183
  className
491
184
  ),
492
- children: /* @__PURE__ */ jsx4(Icon, { className: "cn-rtl-flip size-4 sm:size-5" })
185
+ children: /* @__PURE__ */ jsx(Icon, { className: "cn-rtl-flip size-4 sm:size-5" })
493
186
  }
494
187
  );
495
188
  }
@@ -498,32 +191,45 @@ function GalleryThumbnails({
498
191
  selectedIndex,
499
192
  onSelect,
500
193
  colsClassName,
501
- className,
502
- activeVariant = "focus"
194
+ className
503
195
  }) {
504
- const containerRef = React2.useRef(null);
505
- React2.useEffect(() => {
196
+ const containerRef = React.useRef(null);
197
+ const hasPositionedRef = React.useRef(false);
198
+ const [overflowing, setOverflowing] = React.useState(false);
199
+ React.useEffect(() => {
200
+ const el = containerRef.current;
201
+ if (!el) return;
202
+ const update = () => setOverflowing(el.scrollWidth > el.clientWidth + 1);
203
+ update();
204
+ const observer = new ResizeObserver(update);
205
+ observer.observe(el);
206
+ return () => observer.disconnect();
207
+ }, []);
208
+ React.useEffect(() => {
506
209
  const active = containerRef.current?.children[selectedIndex];
507
- active?.scrollIntoView({
508
- behavior: "smooth",
210
+ if (!active) return;
211
+ active.scrollIntoView({
212
+ behavior: hasPositionedRef.current ? "smooth" : "auto",
509
213
  inline: "center",
510
214
  block: "nearest"
511
215
  });
216
+ hasPositionedRef.current = true;
512
217
  }, [selectedIndex]);
513
218
  if (images.length <= 1) return null;
514
- return /* @__PURE__ */ jsx4(
219
+ return /* @__PURE__ */ jsx(
515
220
  "div",
516
221
  {
517
222
  ref: containerRef,
518
223
  "data-slot": "photo-gallery-thumbnails",
519
224
  className: cn(
520
225
  "flex gap-2 overflow-x-auto [--gallery-gap:0.5rem] scrollbar-none [&::-webkit-scrollbar]:hidden",
226
+ overflowing ? "justify-start" : "justify-center",
521
227
  colsClassName,
522
228
  className
523
229
  ),
524
230
  children: images.map((image, index) => {
525
231
  const isActive = index === selectedIndex;
526
- return /* @__PURE__ */ jsx4(
232
+ return /* @__PURE__ */ jsx(
527
233
  "button",
528
234
  {
529
235
  type: "button",
@@ -535,10 +241,9 @@ function GalleryThumbnails({
535
241
  },
536
242
  className: cn(
537
243
  "relative aspect-4/3 shrink-0 overflow-hidden rounded-lg border-2 bg-surface-raised transition-[border-color,opacity] outline-none focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)]",
538
- activeVariant === "subtle" && "focus-visible:border-line-subtle focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-subtle)]",
539
- isActive ? activeVariant === "subtle" ? "border-line-subtle" : "border-line-focus" : "border-transparent opacity-80 hover:opacity-100"
244
+ isActive ? "border-line-focus" : "border-transparent opacity-80 hover:opacity-100"
540
245
  ),
541
- children: image.src ? /* @__PURE__ */ jsx4(
246
+ children: image.src ? /* @__PURE__ */ jsx(
542
247
  "img",
543
248
  {
544
249
  src: image.src,
@@ -571,7 +276,7 @@ function PhotoGallery({
571
276
  scrollNext
572
277
  } = useGalleryCarousel(index, onIndexChange);
573
278
  const hasMany = images.length > 1;
574
- return /* @__PURE__ */ jsxs3(
279
+ return /* @__PURE__ */ jsxs(
575
280
  "div",
576
281
  {
577
282
  "data-slot": "photo-gallery",
@@ -581,7 +286,7 @@ function PhotoGallery({
581
286
  ),
582
287
  ...props,
583
288
  children: [
584
- /* @__PURE__ */ jsxs3(
289
+ /* @__PURE__ */ jsxs(
585
290
  Carousel,
586
291
  {
587
292
  imageSize: "full",
@@ -589,22 +294,22 @@ function PhotoGallery({
589
294
  opts: { loop: true, startIndex: initialIndex, watchDrag: hasMany },
590
295
  className: "aspect-video rounded-xl bg-surface-raised",
591
296
  children: [
592
- /* @__PURE__ */ jsx4(CarouselContent, { children: images.map((image, i) => /* @__PURE__ */ jsx4(
297
+ /* @__PURE__ */ jsx(CarouselContent, { children: images.map((image, i) => /* @__PURE__ */ jsx(
593
298
  CarouselItem,
594
299
  {
595
- children: /* @__PURE__ */ jsx4(GalleryFrame, { image })
300
+ children: /* @__PURE__ */ jsx(GalleryFrame, { image })
596
301
  },
597
302
  i
598
303
  )) }),
599
- onImageClick && /* @__PURE__ */ jsx4(
304
+ onImageClick && /* @__PURE__ */ jsx(
600
305
  GalleryButton,
601
306
  {
602
307
  className: "absolute bottom-2 right-2 sm:bottom-4 sm:right-4",
603
308
  onClick: () => onImageClick(selectedIndex),
604
- children: /* @__PURE__ */ jsx4(Fullscreen, { className: "size-4 md:size-5" })
309
+ children: /* @__PURE__ */ jsx(Fullscreen, { className: "size-4 md:size-5" })
605
310
  }
606
311
  ),
607
- /* @__PURE__ */ jsx4(
312
+ /* @__PURE__ */ jsx(
608
313
  GalleryCounter,
609
314
  {
610
315
  current: selectedIndex + 1,
@@ -612,14 +317,14 @@ function PhotoGallery({
612
317
  className: "top-2 right-2 sm:top-4 md:right-4"
613
318
  }
614
319
  ),
615
- hasMany && /* @__PURE__ */ jsxs3(Fragment2, { children: [
616
- /* @__PURE__ */ jsx4(GalleryArrow, { side: "prev", onClick: scrollPrev }),
617
- /* @__PURE__ */ jsx4(GalleryArrow, { side: "next", onClick: scrollNext })
320
+ hasMany && /* @__PURE__ */ jsxs(Fragment, { children: [
321
+ /* @__PURE__ */ jsx(GalleryArrow, { side: "prev", onClick: scrollPrev }),
322
+ /* @__PURE__ */ jsx(GalleryArrow, { side: "next", onClick: scrollNext })
618
323
  ] })
619
324
  ]
620
325
  }
621
326
  ),
622
- /* @__PURE__ */ jsx4(
327
+ /* @__PURE__ */ jsx(
623
328
  GalleryThumbnails,
624
329
  {
625
330
  images,
@@ -658,24 +363,24 @@ function PhotoGalleryFullscreen({
658
363
  scrollNext();
659
364
  }
660
365
  };
661
- return /* @__PURE__ */ jsx4(DialogPrimitive.Root, { open, onOpenChange, children: /* @__PURE__ */ jsxs3(DialogPrimitive.Portal, { children: [
662
- /* @__PURE__ */ jsx4(
366
+ return /* @__PURE__ */ jsx(DialogPrimitive.Root, { open, onOpenChange, children: /* @__PURE__ */ jsxs(DialogPrimitive.Portal, { children: [
367
+ /* @__PURE__ */ jsx(
663
368
  DialogPrimitive.Backdrop,
664
369
  {
665
370
  "data-slot": "photo-gallery-fullscreen-backdrop",
666
- className: "fixed inset-0 z-50 bg-black/50 transition-opacity duration-150 data-closed:opacity-0 data-open:opacity-100"
371
+ className: "fixed inset-0 z-50 bg-black/90 transition-opacity duration-150 data-closed:opacity-0 data-open:opacity-100"
667
372
  }
668
373
  ),
669
- /* @__PURE__ */ jsxs3(
374
+ /* @__PURE__ */ jsxs(
670
375
  DialogPrimitive.Popup,
671
376
  {
672
377
  "data-slot": "photo-gallery-fullscreen",
673
378
  onKeyDown: handleKeyDown,
674
379
  className: "fixed inset-0 z-50 flex flex-col gap-4 p-4 sm:p-6 xl:p-8 outline-none transition-opacity duration-150 data-closed:opacity-0 data-open:opacity-100",
675
380
  children: [
676
- /* @__PURE__ */ jsx4(DialogPrimitive.Title, { className: "sr-only", children: "Photo Gallery" }),
677
- /* @__PURE__ */ jsxs3("div", { className: "w-full flex items-center justify-between", children: [
678
- /* @__PURE__ */ jsx4(
381
+ /* @__PURE__ */ jsx(DialogPrimitive.Title, { className: "sr-only", children: "Photo Gallery" }),
382
+ /* @__PURE__ */ jsxs("div", { className: "w-full flex items-center justify-between", children: [
383
+ /* @__PURE__ */ jsx(
679
384
  GalleryCounter,
680
385
  {
681
386
  current: selectedIndex + 1,
@@ -683,34 +388,34 @@ function PhotoGalleryFullscreen({
683
388
  className: "static"
684
389
  }
685
390
  ),
686
- /* @__PURE__ */ jsx4(
391
+ /* @__PURE__ */ jsx(
687
392
  DialogPrimitive.Close,
688
393
  {
689
394
  "data-slot": "photo-gallery-fullscreen-close",
690
395
  "aria-label": "Close gallery",
691
- render: /* @__PURE__ */ jsx4(GalleryButton, {}),
692
- children: /* @__PURE__ */ jsx4(XIcon, { className: "size-4 sm:size-5" })
396
+ render: /* @__PURE__ */ jsx(GalleryButton, {}),
397
+ children: /* @__PURE__ */ jsx(XIcon, { className: "size-4 sm:size-5" })
693
398
  }
694
399
  )
695
400
  ] }),
696
- /* @__PURE__ */ jsxs3(
401
+ /* @__PURE__ */ jsxs(
697
402
  Carousel,
698
403
  {
699
404
  imageSize: "full",
700
405
  setApi,
701
406
  opts: { loop: true, startIndex: initialIndex, watchDrag: hasMany },
702
- className: "flex-1 w-full rounded-xl bg-transparent",
407
+ className: "min-h-0 flex-1 w-full rounded-xl bg-transparent",
703
408
  children: [
704
- /* @__PURE__ */ jsx4(CarouselContent, { className: "items-center", children: images.map((image, i) => /* @__PURE__ */ jsx4(
409
+ /* @__PURE__ */ jsx(CarouselContent, { className: "items-center", children: images.map((image, i) => /* @__PURE__ */ jsx(
705
410
  CarouselItem,
706
411
  {
707
412
  className: "h-full",
708
- children: /* @__PURE__ */ jsx4(GalleryFrame, { image, fit: "contain" })
413
+ children: /* @__PURE__ */ jsx(GalleryFrame, { image, fit: "contain" })
709
414
  },
710
415
  i
711
416
  )) }),
712
- hasMany && /* @__PURE__ */ jsxs3(Fragment2, { children: [
713
- /* @__PURE__ */ jsx4(
417
+ hasMany && /* @__PURE__ */ jsxs(Fragment, { children: [
418
+ /* @__PURE__ */ jsx(
714
419
  GalleryArrow,
715
420
  {
716
421
  side: "prev",
@@ -718,7 +423,7 @@ function PhotoGalleryFullscreen({
718
423
  className: "left-0!"
719
424
  }
720
425
  ),
721
- /* @__PURE__ */ jsx4(
426
+ /* @__PURE__ */ jsx(
722
427
  GalleryArrow,
723
428
  {
724
429
  side: "next",
@@ -730,17 +435,16 @@ function PhotoGalleryFullscreen({
730
435
  ]
731
436
  }
732
437
  ),
733
- hasMany && /* @__PURE__ */ jsxs3("div", { className: "flex flex-col gap-3", children: [
734
- /* @__PURE__ */ jsx4("p", { className: "hidden text-center text-gdt-xs text-fg-secondary sm:block", children: "\u2190 \u2192 to navigate \xB7 ESC to close" }),
735
- /* @__PURE__ */ jsx4(
438
+ hasMany && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3", children: [
439
+ /* @__PURE__ */ jsx("p", { className: "hidden text-center text-gdt-xs text-fg-secondary sm:block", children: "\u2190 \u2192 to navigate \xB7 ESC to close" }),
440
+ /* @__PURE__ */ jsx(
736
441
  GalleryThumbnails,
737
442
  {
738
443
  images,
739
444
  selectedIndex,
740
445
  onSelect: scrollTo,
741
446
  colsClassName: "[--gallery-cols:5] sm:[--gallery-cols:10]",
742
- className: "mx-auto w-full max-w-3xl",
743
- activeVariant: "subtle"
447
+ className: "mx-auto w-full max-w-3xl"
744
448
  }
745
449
  )
746
450
  ] })