@moduix/solid-tailwind 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 (560) hide show
  1. package/LICENSE.md +9 -0
  2. package/README.md +130 -0
  3. package/THIRD_PARTY_NOTICES.md +49 -0
  4. package/dist/components/accordion/Accordion.d.ts +22 -0
  5. package/dist/components/accordion/Accordion.js +103 -0
  6. package/dist/components/accordion/Accordion.jsx +63 -0
  7. package/dist/components/accordion/index.d.ts +1 -0
  8. package/dist/components/accordion/index.js +1 -0
  9. package/dist/components/accordion/index.jsx +1 -0
  10. package/dist/components/alert/Alert.d.ts +20 -0
  11. package/dist/components/alert/Alert.js +116 -0
  12. package/dist/components/alert/Alert.jsx +66 -0
  13. package/dist/components/alert/index.d.ts +1 -0
  14. package/dist/components/alert/index.js +1 -0
  15. package/dist/components/alert/index.jsx +1 -0
  16. package/dist/components/angle-slider/AngleSlider.d.ts +37 -0
  17. package/dist/components/angle-slider/AngleSlider.js +165 -0
  18. package/dist/components/angle-slider/AngleSlider.jsx +97 -0
  19. package/dist/components/angle-slider/index.d.ts +1 -0
  20. package/dist/components/angle-slider/index.js +1 -0
  21. package/dist/components/angle-slider/index.jsx +1 -0
  22. package/dist/components/aspect-ratio/AspectRatio.d.ts +13 -0
  23. package/dist/components/aspect-ratio/AspectRatio.js +43 -0
  24. package/dist/components/aspect-ratio/AspectRatio.jsx +28 -0
  25. package/dist/components/aspect-ratio/index.d.ts +1 -0
  26. package/dist/components/aspect-ratio/index.js +1 -0
  27. package/dist/components/aspect-ratio/index.jsx +1 -0
  28. package/dist/components/avatar/Avatar.d.ts +21 -0
  29. package/dist/components/avatar/Avatar.js +88 -0
  30. package/dist/components/avatar/Avatar.jsx +59 -0
  31. package/dist/components/avatar/index.d.ts +1 -0
  32. package/dist/components/avatar/index.js +1 -0
  33. package/dist/components/avatar/index.jsx +1 -0
  34. package/dist/components/badge/Badge.d.ts +14 -0
  35. package/dist/components/badge/Badge.js +72 -0
  36. package/dist/components/badge/Badge.jsx +46 -0
  37. package/dist/components/badge/index.d.ts +1 -0
  38. package/dist/components/badge/index.js +1 -0
  39. package/dist/components/badge/index.jsx +1 -0
  40. package/dist/components/bleed/Bleed.d.ts +17 -0
  41. package/dist/components/bleed/Bleed.js +68 -0
  42. package/dist/components/bleed/Bleed.jsx +50 -0
  43. package/dist/components/bleed/index.d.ts +1 -0
  44. package/dist/components/bleed/index.js +1 -0
  45. package/dist/components/bleed/index.jsx +1 -0
  46. package/dist/components/breadcrumbs/Breadcrumbs.d.ts +30 -0
  47. package/dist/components/breadcrumbs/Breadcrumbs.js +158 -0
  48. package/dist/components/breadcrumbs/Breadcrumbs.jsx +88 -0
  49. package/dist/components/breadcrumbs/index.d.ts +1 -0
  50. package/dist/components/breadcrumbs/index.js +1 -0
  51. package/dist/components/breadcrumbs/index.jsx +1 -0
  52. package/dist/components/button/Button.d.ts +16 -0
  53. package/dist/components/button/Button.js +124 -0
  54. package/dist/components/button/Button.jsx +75 -0
  55. package/dist/components/button/index.d.ts +1 -0
  56. package/dist/components/button/index.js +1 -0
  57. package/dist/components/button/index.jsx +1 -0
  58. package/dist/components/card/Card.d.ts +28 -0
  59. package/dist/components/card/Card.js +210 -0
  60. package/dist/components/card/Card.jsx +103 -0
  61. package/dist/components/card/index.d.ts +1 -0
  62. package/dist/components/card/index.js +1 -0
  63. package/dist/components/card/index.jsx +1 -0
  64. package/dist/components/carousel/Carousel.d.ts +35 -0
  65. package/dist/components/carousel/Carousel.js +218 -0
  66. package/dist/components/carousel/Carousel.jsx +121 -0
  67. package/dist/components/carousel/index.d.ts +1 -0
  68. package/dist/components/carousel/index.js +1 -0
  69. package/dist/components/carousel/index.jsx +1 -0
  70. package/dist/components/chart/Chart.d.ts +34 -0
  71. package/dist/components/chart/Chart.js +450 -0
  72. package/dist/components/chart/Chart.jsx +265 -0
  73. package/dist/components/chart/index.d.ts +1 -0
  74. package/dist/components/chart/index.js +1 -0
  75. package/dist/components/chart/index.jsx +1 -0
  76. package/dist/components/checkbox/Checkbox.d.ts +26 -0
  77. package/dist/components/checkbox/Checkbox.js +139 -0
  78. package/dist/components/checkbox/Checkbox.jsx +76 -0
  79. package/dist/components/checkbox/index.d.ts +1 -0
  80. package/dist/components/checkbox/index.js +1 -0
  81. package/dist/components/checkbox/index.jsx +1 -0
  82. package/dist/components/clipboard/Clipboard.d.ts +26 -0
  83. package/dist/components/clipboard/Clipboard.js +143 -0
  84. package/dist/components/clipboard/Clipboard.jsx +85 -0
  85. package/dist/components/clipboard/index.d.ts +1 -0
  86. package/dist/components/clipboard/index.js +1 -0
  87. package/dist/components/clipboard/index.jsx +1 -0
  88. package/dist/components/close-button/CloseButton.d.ts +14 -0
  89. package/dist/components/close-button/CloseButton.js +89 -0
  90. package/dist/components/close-button/CloseButton.jsx +48 -0
  91. package/dist/components/close-button/index.d.ts +1 -0
  92. package/dist/components/close-button/index.js +1 -0
  93. package/dist/components/close-button/index.jsx +1 -0
  94. package/dist/components/collapsible/Collapsible.d.ts +19 -0
  95. package/dist/components/collapsible/Collapsible.js +92 -0
  96. package/dist/components/collapsible/Collapsible.jsx +56 -0
  97. package/dist/components/collapsible/index.d.ts +1 -0
  98. package/dist/components/collapsible/index.js +1 -0
  99. package/dist/components/collapsible/index.jsx +1 -0
  100. package/dist/components/color-picker/ColorPicker.d.ts +66 -0
  101. package/dist/components/color-picker/ColorPicker.js +514 -0
  102. package/dist/components/color-picker/ColorPicker.jsx +276 -0
  103. package/dist/components/color-picker/index.d.ts +1 -0
  104. package/dist/components/color-picker/index.js +1 -0
  105. package/dist/components/color-picker/index.jsx +1 -0
  106. package/dist/components/combobox/Combobox.d.ts +50 -0
  107. package/dist/components/combobox/Combobox.js +353 -0
  108. package/dist/components/combobox/Combobox.jsx +187 -0
  109. package/dist/components/combobox/index.d.ts +1 -0
  110. package/dist/components/combobox/index.js +1 -0
  111. package/dist/components/combobox/index.jsx +1 -0
  112. package/dist/components/command-palette/CommandPalette.d.ts +72 -0
  113. package/dist/components/command-palette/CommandPalette.js +575 -0
  114. package/dist/components/command-palette/CommandPalette.jsx +324 -0
  115. package/dist/components/command-palette/index.d.ts +1 -0
  116. package/dist/components/command-palette/index.js +1 -0
  117. package/dist/components/command-palette/index.jsx +1 -0
  118. package/dist/components/container/Container.d.ts +17 -0
  119. package/dist/components/container/Container.js +140 -0
  120. package/dist/components/container/Container.jsx +126 -0
  121. package/dist/components/container/index.d.ts +1 -0
  122. package/dist/components/container/index.js +1 -0
  123. package/dist/components/container/index.jsx +1 -0
  124. package/dist/components/date-input/DateInput.d.ts +25 -0
  125. package/dist/components/date-input/DateInput.js +136 -0
  126. package/dist/components/date-input/DateInput.jsx +76 -0
  127. package/dist/components/date-input/index.d.ts +1 -0
  128. package/dist/components/date-input/index.js +1 -0
  129. package/dist/components/date-input/index.jsx +1 -0
  130. package/dist/components/date-picker/DatePicker.d.ts +98 -0
  131. package/dist/components/date-picker/DatePicker.js +701 -0
  132. package/dist/components/date-picker/DatePicker.jsx +359 -0
  133. package/dist/components/date-picker/index.d.ts +2 -0
  134. package/dist/components/date-picker/index.js +1 -0
  135. package/dist/components/date-picker/index.jsx +1 -0
  136. package/dist/components/dialog/Dialog.d.ts +38 -0
  137. package/dist/components/dialog/Dialog.js +239 -0
  138. package/dist/components/dialog/Dialog.jsx +130 -0
  139. package/dist/components/dialog/index.d.ts +2 -0
  140. package/dist/components/dialog/index.js +1 -0
  141. package/dist/components/dialog/index.jsx +1 -0
  142. package/dist/components/drawer/Drawer.d.ts +54 -0
  143. package/dist/components/drawer/Drawer.js +333 -0
  144. package/dist/components/drawer/Drawer.jsx +179 -0
  145. package/dist/components/drawer/index.d.ts +1 -0
  146. package/dist/components/drawer/index.js +1 -0
  147. package/dist/components/drawer/index.jsx +1 -0
  148. package/dist/components/editable/Editable.d.ts +29 -0
  149. package/dist/components/editable/Editable.js +181 -0
  150. package/dist/components/editable/Editable.jsx +105 -0
  151. package/dist/components/editable/index.d.ts +1 -0
  152. package/dist/components/editable/index.js +1 -0
  153. package/dist/components/editable/index.jsx +1 -0
  154. package/dist/components/empty/Empty.d.ts +16 -0
  155. package/dist/components/empty/Empty.js +121 -0
  156. package/dist/components/empty/Empty.jsx +54 -0
  157. package/dist/components/empty/index.d.ts +1 -0
  158. package/dist/components/empty/index.js +1 -0
  159. package/dist/components/empty/index.jsx +1 -0
  160. package/dist/components/field/Field.d.ts +37 -0
  161. package/dist/components/field/Field.js +236 -0
  162. package/dist/components/field/Field.jsx +134 -0
  163. package/dist/components/field/index.d.ts +1 -0
  164. package/dist/components/field/index.js +1 -0
  165. package/dist/components/field/index.jsx +1 -0
  166. package/dist/components/fieldset/Fieldset.d.ts +16 -0
  167. package/dist/components/fieldset/Fieldset.js +93 -0
  168. package/dist/components/fieldset/Fieldset.jsx +47 -0
  169. package/dist/components/fieldset/index.d.ts +1 -0
  170. package/dist/components/fieldset/index.js +1 -0
  171. package/dist/components/fieldset/index.jsx +1 -0
  172. package/dist/components/file-upload/FileUpload.d.ts +44 -0
  173. package/dist/components/file-upload/FileUpload.js +325 -0
  174. package/dist/components/file-upload/FileUpload.jsx +178 -0
  175. package/dist/components/file-upload/index.d.ts +1 -0
  176. package/dist/components/file-upload/index.js +1 -0
  177. package/dist/components/file-upload/index.jsx +1 -0
  178. package/dist/components/floating-panel/FloatingPanel.d.ts +53 -0
  179. package/dist/components/floating-panel/FloatingPanel.js +338 -0
  180. package/dist/components/floating-panel/FloatingPanel.jsx +186 -0
  181. package/dist/components/floating-panel/index.d.ts +2 -0
  182. package/dist/components/floating-panel/index.js +1 -0
  183. package/dist/components/floating-panel/index.jsx +1 -0
  184. package/dist/components/heading/Heading.d.ts +20 -0
  185. package/dist/components/heading/Heading.js +82 -0
  186. package/dist/components/heading/Heading.jsx +62 -0
  187. package/dist/components/heading/index.d.ts +1 -0
  188. package/dist/components/heading/index.js +1 -0
  189. package/dist/components/heading/index.jsx +1 -0
  190. package/dist/components/highlight/Highlight.d.ts +12 -0
  191. package/dist/components/highlight/Highlight.js +24 -0
  192. package/dist/components/highlight/Highlight.jsx +16 -0
  193. package/dist/components/highlight/index.d.ts +1 -0
  194. package/dist/components/highlight/index.js +1 -0
  195. package/dist/components/highlight/index.jsx +1 -0
  196. package/dist/components/hover-card/HoverCard.d.ts +27 -0
  197. package/dist/components/hover-card/HoverCard.js +164 -0
  198. package/dist/components/hover-card/HoverCard.jsx +89 -0
  199. package/dist/components/hover-card/index.d.ts +1 -0
  200. package/dist/components/hover-card/index.js +1 -0
  201. package/dist/components/hover-card/index.jsx +1 -0
  202. package/dist/components/image/Image.d.ts +14 -0
  203. package/dist/components/image/Image.js +53 -0
  204. package/dist/components/image/Image.jsx +33 -0
  205. package/dist/components/image/index.d.ts +1 -0
  206. package/dist/components/image/index.js +1 -0
  207. package/dist/components/image/index.jsx +1 -0
  208. package/dist/components/image-cropper/ImageCropper.d.ts +27 -0
  209. package/dist/components/image-cropper/ImageCropper.js +131 -0
  210. package/dist/components/image-cropper/ImageCropper.jsx +72 -0
  211. package/dist/components/image-cropper/index.d.ts +1 -0
  212. package/dist/components/image-cropper/index.js +1 -0
  213. package/dist/components/image-cropper/index.jsx +1 -0
  214. package/dist/components/input/Input.d.ts +13 -0
  215. package/dist/components/input/Input.js +57 -0
  216. package/dist/components/input/Input.jsx +36 -0
  217. package/dist/components/input/index.d.ts +1 -0
  218. package/dist/components/input/index.js +1 -0
  219. package/dist/components/input/index.jsx +1 -0
  220. package/dist/components/input-group/InputGroup.d.ts +27 -0
  221. package/dist/components/input-group/InputGroup.js +191 -0
  222. package/dist/components/input-group/InputGroup.jsx +129 -0
  223. package/dist/components/input-group/index.d.ts +1 -0
  224. package/dist/components/input-group/index.js +1 -0
  225. package/dist/components/input-group/index.jsx +1 -0
  226. package/dist/components/json-tree-view/JsonTreeView.d.ts +11 -0
  227. package/dist/components/json-tree-view/JsonTreeView.js +69 -0
  228. package/dist/components/json-tree-view/JsonTreeView.jsx +37 -0
  229. package/dist/components/json-tree-view/index.d.ts +1 -0
  230. package/dist/components/json-tree-view/index.js +1 -0
  231. package/dist/components/json-tree-view/index.jsx +1 -0
  232. package/dist/components/kbd/Kbd.d.ts +8 -0
  233. package/dist/components/kbd/Kbd.js +36 -0
  234. package/dist/components/kbd/Kbd.jsx +20 -0
  235. package/dist/components/kbd/index.d.ts +1 -0
  236. package/dist/components/kbd/index.js +1 -0
  237. package/dist/components/kbd/index.jsx +1 -0
  238. package/dist/components/lightbox/Lightbox.d.ts +60 -0
  239. package/dist/components/lightbox/Lightbox.js +351 -0
  240. package/dist/components/lightbox/Lightbox.jsx +218 -0
  241. package/dist/components/lightbox/index.d.ts +2 -0
  242. package/dist/components/lightbox/index.js +1 -0
  243. package/dist/components/lightbox/index.jsx +1 -0
  244. package/dist/components/list/List.d.ts +36 -0
  245. package/dist/components/list/List.js +201 -0
  246. package/dist/components/list/List.jsx +133 -0
  247. package/dist/components/list/index.d.ts +1 -0
  248. package/dist/components/list/index.js +1 -0
  249. package/dist/components/list/index.jsx +1 -0
  250. package/dist/components/listbox/Listbox.d.ts +46 -0
  251. package/dist/components/listbox/Listbox.js +249 -0
  252. package/dist/components/listbox/Listbox.jsx +147 -0
  253. package/dist/components/listbox/index.d.ts +1 -0
  254. package/dist/components/listbox/index.js +1 -0
  255. package/dist/components/listbox/index.jsx +1 -0
  256. package/dist/components/marquee/Marquee.d.ts +18 -0
  257. package/dist/components/marquee/Marquee.js +120 -0
  258. package/dist/components/marquee/Marquee.jsx +80 -0
  259. package/dist/components/marquee/index.d.ts +1 -0
  260. package/dist/components/marquee/index.js +1 -0
  261. package/dist/components/marquee/index.jsx +1 -0
  262. package/dist/components/menu/Menu.d.ts +74 -0
  263. package/dist/components/menu/Menu.js +476 -0
  264. package/dist/components/menu/Menu.jsx +277 -0
  265. package/dist/components/menu/index.d.ts +1 -0
  266. package/dist/components/menu/index.js +1 -0
  267. package/dist/components/menu/index.jsx +1 -0
  268. package/dist/components/native-select/NativeSelect.d.ts +11 -0
  269. package/dist/components/native-select/NativeSelect.js +49 -0
  270. package/dist/components/native-select/NativeSelect.jsx +24 -0
  271. package/dist/components/native-select/index.d.ts +1 -0
  272. package/dist/components/native-select/index.js +1 -0
  273. package/dist/components/native-select/index.jsx +1 -0
  274. package/dist/components/navigation-menu/NavigationMenu.d.ts +31 -0
  275. package/dist/components/navigation-menu/NavigationMenu.js +156 -0
  276. package/dist/components/navigation-menu/NavigationMenu.jsx +92 -0
  277. package/dist/components/navigation-menu/index.d.ts +1 -0
  278. package/dist/components/navigation-menu/index.js +1 -0
  279. package/dist/components/navigation-menu/index.jsx +1 -0
  280. package/dist/components/number-input/NumberInput.d.ts +27 -0
  281. package/dist/components/number-input/NumberInput.js +167 -0
  282. package/dist/components/number-input/NumberInput.jsx +97 -0
  283. package/dist/components/number-input/index.d.ts +1 -0
  284. package/dist/components/number-input/index.js +1 -0
  285. package/dist/components/number-input/index.jsx +1 -0
  286. package/dist/components/pagination/Pagination.d.ts +28 -0
  287. package/dist/components/pagination/Pagination.js +218 -0
  288. package/dist/components/pagination/Pagination.jsx +115 -0
  289. package/dist/components/pagination/index.d.ts +1 -0
  290. package/dist/components/pagination/index.js +1 -0
  291. package/dist/components/pagination/index.jsx +1 -0
  292. package/dist/components/password-input/PasswordInput.d.ts +26 -0
  293. package/dist/components/password-input/PasswordInput.js +135 -0
  294. package/dist/components/password-input/PasswordInput.jsx +83 -0
  295. package/dist/components/password-input/index.d.ts +1 -0
  296. package/dist/components/password-input/index.js +1 -0
  297. package/dist/components/password-input/index.jsx +1 -0
  298. package/dist/components/pin-input/PinInput.d.ts +24 -0
  299. package/dist/components/pin-input/PinInput.js +144 -0
  300. package/dist/components/pin-input/PinInput.jsx +80 -0
  301. package/dist/components/pin-input/index.d.ts +1 -0
  302. package/dist/components/pin-input/index.js +1 -0
  303. package/dist/components/pin-input/index.jsx +1 -0
  304. package/dist/components/popover/Popover.d.ts +46 -0
  305. package/dist/components/popover/Popover.js +288 -0
  306. package/dist/components/popover/Popover.jsx +155 -0
  307. package/dist/components/popover/index.d.ts +1 -0
  308. package/dist/components/popover/index.js +1 -0
  309. package/dist/components/popover/index.jsx +1 -0
  310. package/dist/components/progress-circular/ProgressCircular.d.ts +28 -0
  311. package/dist/components/progress-circular/ProgressCircular.js +164 -0
  312. package/dist/components/progress-circular/ProgressCircular.jsx +89 -0
  313. package/dist/components/progress-circular/index.d.ts +1 -0
  314. package/dist/components/progress-circular/index.js +1 -0
  315. package/dist/components/progress-circular/index.jsx +1 -0
  316. package/dist/components/progress-linear/ProgressLinear.d.ts +23 -0
  317. package/dist/components/progress-linear/ProgressLinear.js +132 -0
  318. package/dist/components/progress-linear/ProgressLinear.jsx +71 -0
  319. package/dist/components/progress-linear/index.d.ts +1 -0
  320. package/dist/components/progress-linear/index.js +1 -0
  321. package/dist/components/progress-linear/index.jsx +1 -0
  322. package/dist/components/qr-code/QrCode.d.ts +19 -0
  323. package/dist/components/qr-code/QrCode.js +129 -0
  324. package/dist/components/qr-code/QrCode.jsx +70 -0
  325. package/dist/components/qr-code/index.d.ts +1 -0
  326. package/dist/components/qr-code/index.js +1 -0
  327. package/dist/components/qr-code/index.jsx +1 -0
  328. package/dist/components/radio-group/RadioGroup.d.ts +33 -0
  329. package/dist/components/radio-group/RadioGroup.js +158 -0
  330. package/dist/components/radio-group/RadioGroup.jsx +94 -0
  331. package/dist/components/radio-group/index.d.ts +2 -0
  332. package/dist/components/radio-group/index.js +1 -0
  333. package/dist/components/radio-group/index.jsx +1 -0
  334. package/dist/components/rating-group/RatingGroup.d.ts +33 -0
  335. package/dist/components/rating-group/RatingGroup.js +150 -0
  336. package/dist/components/rating-group/RatingGroup.jsx +80 -0
  337. package/dist/components/rating-group/index.d.ts +2 -0
  338. package/dist/components/rating-group/index.js +1 -0
  339. package/dist/components/rating-group/index.jsx +1 -0
  340. package/dist/components/scroll-area/ScrollArea.d.ts +30 -0
  341. package/dist/components/scroll-area/ScrollArea.js +109 -0
  342. package/dist/components/scroll-area/ScrollArea.jsx +61 -0
  343. package/dist/components/scroll-area/index.d.ts +2 -0
  344. package/dist/components/scroll-area/index.js +1 -0
  345. package/dist/components/scroll-area/index.jsx +1 -0
  346. package/dist/components/segment-group/SegmentGroup.d.ts +33 -0
  347. package/dist/components/segment-group/SegmentGroup.js +205 -0
  348. package/dist/components/segment-group/SegmentGroup.jsx +126 -0
  349. package/dist/components/segment-group/index.d.ts +1 -0
  350. package/dist/components/segment-group/index.js +1 -0
  351. package/dist/components/segment-group/index.jsx +1 -0
  352. package/dist/components/select/Select.d.ts +57 -0
  353. package/dist/components/select/Select.js +395 -0
  354. package/dist/components/select/Select.jsx +210 -0
  355. package/dist/components/select/index.d.ts +1 -0
  356. package/dist/components/select/index.js +1 -0
  357. package/dist/components/select/index.jsx +1 -0
  358. package/dist/components/separator/Separator.d.ts +17 -0
  359. package/dist/components/separator/Separator.js +127 -0
  360. package/dist/components/separator/Separator.jsx +100 -0
  361. package/dist/components/separator/index.d.ts +1 -0
  362. package/dist/components/separator/index.js +1 -0
  363. package/dist/components/separator/index.jsx +1 -0
  364. package/dist/components/sidebar/Sidebar.d.ts +82 -0
  365. package/dist/components/sidebar/Sidebar.js +590 -0
  366. package/dist/components/sidebar/Sidebar.jsx +308 -0
  367. package/dist/components/sidebar/index.d.ts +1 -0
  368. package/dist/components/sidebar/index.js +1 -0
  369. package/dist/components/sidebar/index.jsx +1 -0
  370. package/dist/components/signature-pad/SignaturePad.d.ts +30 -0
  371. package/dist/components/signature-pad/SignaturePad.js +211 -0
  372. package/dist/components/signature-pad/SignaturePad.jsx +116 -0
  373. package/dist/components/signature-pad/index.d.ts +1 -0
  374. package/dist/components/signature-pad/index.js +1 -0
  375. package/dist/components/signature-pad/index.jsx +1 -0
  376. package/dist/components/simple-grid/SimpleGrid.d.ts +17 -0
  377. package/dist/components/simple-grid/SimpleGrid.js +74 -0
  378. package/dist/components/simple-grid/SimpleGrid.jsx +59 -0
  379. package/dist/components/simple-grid/index.d.ts +1 -0
  380. package/dist/components/simple-grid/index.js +1 -0
  381. package/dist/components/simple-grid/index.jsx +1 -0
  382. package/dist/components/skeleton/Skeleton.d.ts +15 -0
  383. package/dist/components/skeleton/Skeleton.js +74 -0
  384. package/dist/components/skeleton/Skeleton.jsx +47 -0
  385. package/dist/components/skeleton/index.d.ts +1 -0
  386. package/dist/components/skeleton/index.js +1 -0
  387. package/dist/components/skeleton/index.jsx +1 -0
  388. package/dist/components/slider/Slider.d.ts +36 -0
  389. package/dist/components/slider/Slider.js +202 -0
  390. package/dist/components/slider/Slider.jsx +109 -0
  391. package/dist/components/slider/index.d.ts +1 -0
  392. package/dist/components/slider/index.js +1 -0
  393. package/dist/components/slider/index.jsx +1 -0
  394. package/dist/components/spinner/Spinner.d.ts +11 -0
  395. package/dist/components/spinner/Spinner.js +73 -0
  396. package/dist/components/spinner/Spinner.jsx +44 -0
  397. package/dist/components/spinner/index.d.ts +1 -0
  398. package/dist/components/spinner/index.js +1 -0
  399. package/dist/components/spinner/index.jsx +1 -0
  400. package/dist/components/split-button/SplitButton.d.ts +41 -0
  401. package/dist/components/split-button/SplitButton.js +197 -0
  402. package/dist/components/split-button/SplitButton.jsx +117 -0
  403. package/dist/components/split-button/index.d.ts +1 -0
  404. package/dist/components/split-button/index.js +1 -0
  405. package/dist/components/split-button/index.jsx +1 -0
  406. package/dist/components/splitter/Splitter.d.ts +18 -0
  407. package/dist/components/splitter/Splitter.js +101 -0
  408. package/dist/components/splitter/Splitter.jsx +58 -0
  409. package/dist/components/splitter/index.d.ts +1 -0
  410. package/dist/components/splitter/index.js +1 -0
  411. package/dist/components/splitter/index.jsx +1 -0
  412. package/dist/components/stack/Stack.d.ts +19 -0
  413. package/dist/components/stack/Stack.js +83 -0
  414. package/dist/components/stack/Stack.jsx +68 -0
  415. package/dist/components/stack/index.d.ts +1 -0
  416. package/dist/components/stack/index.js +1 -0
  417. package/dist/components/stack/index.jsx +1 -0
  418. package/dist/components/steps/Steps.d.ts +35 -0
  419. package/dist/components/steps/Steps.js +162 -0
  420. package/dist/components/steps/Steps.jsx +99 -0
  421. package/dist/components/steps/index.d.ts +1 -0
  422. package/dist/components/steps/index.js +1 -0
  423. package/dist/components/steps/index.jsx +1 -0
  424. package/dist/components/swap/Swap.d.ts +20 -0
  425. package/dist/components/swap/Swap.js +52 -0
  426. package/dist/components/swap/Swap.jsx +30 -0
  427. package/dist/components/swap/index.d.ts +1 -0
  428. package/dist/components/swap/index.js +1 -0
  429. package/dist/components/swap/index.jsx +1 -0
  430. package/dist/components/switch/Switch.d.ts +25 -0
  431. package/dist/components/switch/Switch.js +101 -0
  432. package/dist/components/switch/Switch.jsx +57 -0
  433. package/dist/components/switch/index.d.ts +1 -0
  434. package/dist/components/switch/index.js +1 -0
  435. package/dist/components/switch/index.jsx +1 -0
  436. package/dist/components/table/Table.d.ts +71 -0
  437. package/dist/components/table/Table.js +363 -0
  438. package/dist/components/table/Table.jsx +189 -0
  439. package/dist/components/table/index.d.ts +1 -0
  440. package/dist/components/table/index.js +1 -0
  441. package/dist/components/table/index.jsx +1 -0
  442. package/dist/components/tabs/Tabs.d.ts +25 -0
  443. package/dist/components/tabs/Tabs.js +98 -0
  444. package/dist/components/tabs/Tabs.jsx +55 -0
  445. package/dist/components/tabs/index.d.ts +1 -0
  446. package/dist/components/tabs/index.js +1 -0
  447. package/dist/components/tabs/index.jsx +1 -0
  448. package/dist/components/tag/Tag.d.ts +24 -0
  449. package/dist/components/tag/Tag.js +147 -0
  450. package/dist/components/tag/Tag.jsx +78 -0
  451. package/dist/components/tag/index.d.ts +1 -0
  452. package/dist/components/tag/index.js +1 -0
  453. package/dist/components/tag/index.jsx +1 -0
  454. package/dist/components/tags-input/TagsInput.d.ts +32 -0
  455. package/dist/components/tags-input/TagsInput.js +240 -0
  456. package/dist/components/tags-input/TagsInput.jsx +127 -0
  457. package/dist/components/tags-input/index.d.ts +1 -0
  458. package/dist/components/tags-input/index.js +1 -0
  459. package/dist/components/tags-input/index.jsx +1 -0
  460. package/dist/components/text/Text.d.ts +30 -0
  461. package/dist/components/text/Text.js +126 -0
  462. package/dist/components/text/Text.jsx +91 -0
  463. package/dist/components/text/index.d.ts +1 -0
  464. package/dist/components/text/index.js +1 -0
  465. package/dist/components/text/index.jsx +1 -0
  466. package/dist/components/textarea/Textarea.d.ts +9 -0
  467. package/dist/components/textarea/Textarea.js +45 -0
  468. package/dist/components/textarea/Textarea.jsx +26 -0
  469. package/dist/components/textarea/index.d.ts +1 -0
  470. package/dist/components/textarea/index.js +1 -0
  471. package/dist/components/textarea/index.jsx +1 -0
  472. package/dist/components/timer/Timer.d.ts +26 -0
  473. package/dist/components/timer/Timer.js +126 -0
  474. package/dist/components/timer/Timer.jsx +77 -0
  475. package/dist/components/timer/index.d.ts +1 -0
  476. package/dist/components/timer/index.js +1 -0
  477. package/dist/components/timer/index.jsx +1 -0
  478. package/dist/components/toast/Toast.d.ts +22 -0
  479. package/dist/components/toast/Toast.js +184 -0
  480. package/dist/components/toast/Toast.jsx +94 -0
  481. package/dist/components/toast/index.d.ts +1 -0
  482. package/dist/components/toast/index.js +1 -0
  483. package/dist/components/toast/index.jsx +1 -0
  484. package/dist/components/toc/Toc.d.ts +34 -0
  485. package/dist/components/toc/Toc.js +222 -0
  486. package/dist/components/toc/Toc.jsx +129 -0
  487. package/dist/components/toc/index.d.ts +1 -0
  488. package/dist/components/toc/index.js +1 -0
  489. package/dist/components/toc/index.jsx +1 -0
  490. package/dist/components/toggle/Toggle.d.ts +17 -0
  491. package/dist/components/toggle/Toggle.js +76 -0
  492. package/dist/components/toggle/Toggle.jsx +51 -0
  493. package/dist/components/toggle/index.d.ts +2 -0
  494. package/dist/components/toggle/index.js +1 -0
  495. package/dist/components/toggle/index.jsx +1 -0
  496. package/dist/components/toggle-group/ToggleGroup.d.ts +27 -0
  497. package/dist/components/toggle-group/ToggleGroup.js +165 -0
  498. package/dist/components/toggle-group/ToggleGroup.jsx +110 -0
  499. package/dist/components/toggle-group/index.d.ts +2 -0
  500. package/dist/components/toggle-group/index.js +1 -0
  501. package/dist/components/toggle-group/index.jsx +1 -0
  502. package/dist/components/tooltip/Tooltip.d.ts +29 -0
  503. package/dist/components/tooltip/Tooltip.js +192 -0
  504. package/dist/components/tooltip/Tooltip.jsx +108 -0
  505. package/dist/components/tooltip/index.d.ts +1 -0
  506. package/dist/components/tooltip/index.js +1 -0
  507. package/dist/components/tooltip/index.jsx +1 -0
  508. package/dist/components/tour/Tour.d.ts +46 -0
  509. package/dist/components/tour/Tour.js +274 -0
  510. package/dist/components/tour/Tour.jsx +155 -0
  511. package/dist/components/tour/index.d.ts +2 -0
  512. package/dist/components/tour/index.js +1 -0
  513. package/dist/components/tour/index.jsx +1 -0
  514. package/dist/components/tree-view/TreeView.d.ts +58 -0
  515. package/dist/components/tree-view/TreeView.js +296 -0
  516. package/dist/components/tree-view/TreeView.jsx +173 -0
  517. package/dist/components/tree-view/index.d.ts +1 -0
  518. package/dist/components/tree-view/index.js +1 -0
  519. package/dist/components/tree-view/index.jsx +1 -0
  520. package/dist/components/typeset/Typeset.d.ts +15 -0
  521. package/dist/components/typeset/Typeset.js +68 -0
  522. package/dist/components/typeset/Typeset.jsx +33 -0
  523. package/dist/components/typeset/Typeset.module.js +6 -0
  524. package/dist/components/typeset/Typeset.module.jsx +6 -0
  525. package/dist/components/typeset/Typeset_module.css +466 -0
  526. package/dist/components/typeset/index.d.ts +1 -0
  527. package/dist/components/typeset/index.js +1 -0
  528. package/dist/components/typeset/index.jsx +1 -0
  529. package/dist/internal/cn.d.ts +2 -0
  530. package/dist/internal/cn.js +40 -0
  531. package/dist/internal/cn.jsx +40 -0
  532. package/dist/internal/icons/ui/Icons.d.ts +37 -0
  533. package/dist/internal/icons/ui/Icons.js +115 -0
  534. package/dist/internal/icons/ui/Icons.jsx +93 -0
  535. package/dist/internal/icons/ui/index.d.ts +1 -0
  536. package/dist/internal/icons/ui/index.js +1 -0
  537. package/dist/internal/icons/ui/index.jsx +1 -0
  538. package/dist/internal/overlayPortal.d.ts +13 -0
  539. package/dist/internal/overlayPortal.js +39 -0
  540. package/dist/internal/overlayPortal.jsx +19 -0
  541. package/dist/locale.d.ts +1 -0
  542. package/dist/locale.js +1 -0
  543. package/dist/locale.jsx +1 -0
  544. package/dist/presets/contrast.css +65 -0
  545. package/dist/presets/dense.css +78 -0
  546. package/dist/presets/soft.css +77 -0
  547. package/dist/styles/animations.css +371 -0
  548. package/dist/styles/borders.css +10 -0
  549. package/dist/styles/colors.css +122 -0
  550. package/dist/styles/opacity.css +5 -0
  551. package/dist/styles/radius.css +11 -0
  552. package/dist/styles/shadows.css +5 -0
  553. package/dist/styles/sizing.css +11 -0
  554. package/dist/styles/spacing.css +26 -0
  555. package/dist/styles/style.css +180 -0
  556. package/dist/styles/transforms.css +4 -0
  557. package/dist/styles/transitions.css +32 -0
  558. package/dist/styles/typography.css +37 -0
  559. package/dist/styles/z-index.css +13 -0
  560. package/package.json +633 -0
@@ -0,0 +1,20 @@
1
+ import { ark } from "@ark-ui/solid/factory";
2
+ import { splitProps } from "solid-js";
3
+ import { cn } from "../../internal/cn.jsx";
4
+ function KbdRoot(props) {
5
+ const [local, others] = splitProps(props, [
6
+ 'class'
7
+ ]);
8
+ return <ark.kbd {...others} data-scope="kbd" data-part="root" data-slot="kbd-root" class={cn('box-border inline-flex min-h-control-xs max-w-full min-w-control-xs flex-none items-center justify-center rounded-sm border border-border bg-muted px-2 py-0 text-center align-middle font-mono text-xs font-medium wrap-anywhere text-foreground tabular-nums shadow-[inset_0_-1px_0_color-mix(in_oklab,currentColor_12%,transparent)] select-none', local.class)}/>;
9
+ }
10
+ function KbdGroupPart(props) {
11
+ const [local, others] = splitProps(props, [
12
+ 'class'
13
+ ]);
14
+ return <ark.span {...others} role="group" data-scope="kbd" data-part="group" data-slot="kbd-group" class={cn('box-border inline-flex max-w-full flex-wrap items-center gap-1 border-0 bg-transparent p-0 align-middle text-muted-foreground shadow-none', local.class)}/>;
15
+ }
16
+ const Kbd = Object.assign(KbdRoot, {
17
+ Root: KbdRoot,
18
+ Group: KbdGroupPart
19
+ });
20
+ export { Kbd };
@@ -0,0 +1 @@
1
+ export * from './Kbd.js';
@@ -0,0 +1 @@
1
+ export * from "./Kbd.js";
@@ -0,0 +1 @@
1
+ export * from "./Kbd.jsx";
@@ -0,0 +1,60 @@
1
+ import { Dialog as DialogPrimitive, useDialog, useDialogContext } from '@ark-ui/solid/dialog';
2
+ import type { HTMLArkProps } from '@ark-ui/solid/factory';
3
+ import type { ComponentProps } from 'solid-js';
4
+ import { type OverlayPortalProps } from '../../internal/overlayPortal.js';
5
+ type LightboxImageSelectDetails = {
6
+ alt?: string;
7
+ element: HTMLImageElement;
8
+ src: string;
9
+ };
10
+ type LightboxImageProps = ComponentProps<'img'> & {
11
+ closeOnClick?: boolean;
12
+ };
13
+ type LightboxRootProps = ComponentProps<typeof DialogPrimitive.Root> & OverlayPortalProps;
14
+ type LightboxRootProviderProps = ComponentProps<typeof DialogPrimitive.RootProvider> & OverlayPortalProps;
15
+ type LightboxBindProps = {
16
+ onImageSelect: (details: LightboxImageSelectDetails) => void;
17
+ selector: string;
18
+ rootRef?: HTMLElement | (() => HTMLElement | null | undefined);
19
+ rootSelector?: string;
20
+ };
21
+ declare function LightboxRoot(props: LightboxRootProps): import("solid-js").JSX.Element;
22
+ declare function LightboxRootProvider(props: LightboxRootProviderProps): import("solid-js").JSX.Element;
23
+ declare function LightboxTrigger(props: ComponentProps<typeof DialogPrimitive.Trigger>): import("solid-js").JSX.Element;
24
+ declare function LightboxBackdrop(props: ComponentProps<typeof DialogPrimitive.Backdrop>): import("solid-js").JSX.Element;
25
+ declare function LightboxPositioner(props: ComponentProps<typeof DialogPrimitive.Positioner>): import("solid-js").JSX.Element;
26
+ declare function LightboxContent(props: ComponentProps<typeof DialogPrimitive.Content>): import("solid-js").JSX.Element;
27
+ declare function LightboxTitle(props: ComponentProps<typeof DialogPrimitive.Title>): import("solid-js").JSX.Element;
28
+ declare function LightboxDescription(props: ComponentProps<typeof DialogPrimitive.Description>): import("solid-js").JSX.Element;
29
+ declare function LightboxCloseTrigger(props: ComponentProps<typeof DialogPrimitive.CloseTrigger>): import("solid-js").JSX.Element;
30
+ type LightboxCloseIconProps = Omit<ComponentProps<typeof DialogPrimitive.CloseTrigger>, 'asChild'>;
31
+ declare function LightboxCloseIcon(props: LightboxCloseIconProps): import("solid-js").JSX.Element;
32
+ declare function LightboxImage(props: LightboxImageProps): import("solid-js").JSX.Element;
33
+ declare function LightboxGallery(props: HTMLArkProps<'div'>): import("solid-js").JSX.Element;
34
+ declare function LightboxHeader(props: HTMLArkProps<'div'>): import("solid-js").JSX.Element;
35
+ declare function LightboxBody(props: HTMLArkProps<'div'>): import("solid-js").JSX.Element;
36
+ declare function LightboxFooter(props: HTMLArkProps<'div'>): import("solid-js").JSX.Element;
37
+ declare function LightboxBind(props: LightboxBindProps): import("solid-js").JSX.Element;
38
+ type LightboxComponent = typeof LightboxRoot & {
39
+ Root: typeof LightboxRoot;
40
+ RootProvider: typeof LightboxRootProvider;
41
+ Trigger: typeof LightboxTrigger;
42
+ Backdrop: typeof LightboxBackdrop;
43
+ Positioner: typeof LightboxPositioner;
44
+ Content: typeof LightboxContent;
45
+ Title: typeof LightboxTitle;
46
+ Description: typeof LightboxDescription;
47
+ CloseTrigger: typeof LightboxCloseTrigger;
48
+ CloseIcon: typeof LightboxCloseIcon;
49
+ Header: typeof LightboxHeader;
50
+ Body: typeof LightboxBody;
51
+ Footer: typeof LightboxFooter;
52
+ Image: typeof LightboxImage;
53
+ Gallery: typeof LightboxGallery;
54
+ Bind: typeof LightboxBind;
55
+ useLightbox: typeof useDialog;
56
+ useLightboxContext: typeof useDialogContext;
57
+ };
58
+ declare const Lightbox: LightboxComponent;
59
+ export { Lightbox, LightboxBind, LightboxGallery, LightboxImage, useDialog as useLightbox, useDialogContext as useLightboxContext, };
60
+ export type { LightboxBindProps, LightboxImageSelectDetails };
@@ -0,0 +1,351 @@
1
+ import { createComponent, delegateEvents, mergeProps, spread, template } from "solid-js/web";
2
+ import { Dialog, useDialog, useDialogContext } from "@ark-ui/solid/dialog";
3
+ import { ark } from "@ark-ui/solid/factory";
4
+ import { children, createEffect, onCleanup, splitProps } from "solid-js";
5
+ import { cn } from "../../internal/cn.js";
6
+ import { OverlayPortal, OverlayPortalProvider } from "../../internal/overlayPortal.js";
7
+ import { CloseButton } from "../close-button/index.js";
8
+ var _tmpl$ = /*#__PURE__*/ template("<img data-slot=lightbox-image>");
9
+ const DEFAULT_CLOSE_LABEL = 'Close image';
10
+ function preloadImage(src) {
11
+ if (!src || "u" < typeof Image) return;
12
+ const image = new Image();
13
+ image.src = src;
14
+ }
15
+ function resolveImage(target, selector, rootNode) {
16
+ if (!(target instanceof Element)) return null;
17
+ const matchedNode = target.closest(selector);
18
+ if (!matchedNode || !rootNode.contains(matchedNode)) return null;
19
+ const imageNode = matchedNode instanceof HTMLImageElement ? matchedNode : matchedNode.querySelector('img');
20
+ if (!(imageNode instanceof HTMLImageElement)) return null;
21
+ const src = imageNode.dataset.lightboxSrc ?? imageNode.currentSrc ?? imageNode.src;
22
+ if (!src) return null;
23
+ return {
24
+ src,
25
+ alt: imageNode.alt || void 0,
26
+ element: imageNode
27
+ };
28
+ }
29
+ function resolveRootNode(rootRef, rootSelector) {
30
+ const rootNode = 'function' == typeof rootRef ? rootRef() : rootRef;
31
+ return rootNode ?? (rootSelector ? document.querySelector(rootSelector) : null);
32
+ }
33
+ function LightboxRoot(props) {
34
+ const [local, others] = splitProps(props, [
35
+ 'children',
36
+ 'lazyMount',
37
+ 'portalled',
38
+ 'portalRef',
39
+ 'unmountOnExit'
40
+ ]);
41
+ return createComponent(OverlayPortalProvider, {
42
+ get portalled () {
43
+ return local.portalled;
44
+ },
45
+ get portalRef () {
46
+ return local.portalRef;
47
+ },
48
+ get children () {
49
+ return createComponent(Dialog.Root, mergeProps({
50
+ get lazyMount () {
51
+ return local.lazyMount ?? true;
52
+ },
53
+ get unmountOnExit () {
54
+ return local.unmountOnExit ?? true;
55
+ }
56
+ }, others, {
57
+ get children () {
58
+ return local.children;
59
+ }
60
+ }));
61
+ }
62
+ });
63
+ }
64
+ function LightboxRootProvider(props) {
65
+ const [local, others] = splitProps(props, [
66
+ 'children',
67
+ 'lazyMount',
68
+ 'portalled',
69
+ 'portalRef',
70
+ 'unmountOnExit'
71
+ ]);
72
+ return createComponent(OverlayPortalProvider, {
73
+ get portalled () {
74
+ return local.portalled;
75
+ },
76
+ get portalRef () {
77
+ return local.portalRef;
78
+ },
79
+ get children () {
80
+ return createComponent(Dialog.RootProvider, mergeProps({
81
+ get lazyMount () {
82
+ return local.lazyMount ?? true;
83
+ },
84
+ get unmountOnExit () {
85
+ return local.unmountOnExit ?? true;
86
+ }
87
+ }, others, {
88
+ get children () {
89
+ return local.children;
90
+ }
91
+ }));
92
+ }
93
+ });
94
+ }
95
+ function LightboxTrigger(props) {
96
+ const [local, others] = splitProps(props, [
97
+ 'asChild',
98
+ 'class'
99
+ ]);
100
+ return createComponent(Dialog.Trigger, mergeProps({
101
+ get asChild () {
102
+ return local.asChild;
103
+ },
104
+ "data-slot": "lightbox-trigger",
105
+ get ["class"] () {
106
+ return cn('cursor-zoom-in focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring', local.class);
107
+ }
108
+ }, others));
109
+ }
110
+ function LightboxBackdrop(props) {
111
+ const [local, others] = splitProps(props, [
112
+ 'class'
113
+ ]);
114
+ return createComponent(OverlayPortal, {
115
+ get children () {
116
+ return createComponent(Dialog.Backdrop, mergeProps({
117
+ "data-slot": "lightbox-backdrop",
118
+ get ["class"] () {
119
+ return cn('fixed inset-0 z-[calc(40+var(--layer-index,0))] min-h-dvh bg-overlay backdrop-blur-xs data-[state=closed]:animate-[moduix-fade-out_200ms_ease-in-out_forwards] data-[state=open]:animate-[moduix-fade-in_200ms_ease-in-out] motion-reduce:[animation-delay:0ms] motion-reduce:[animation-duration:1ms]', local.class);
120
+ }
121
+ }, others));
122
+ }
123
+ });
124
+ }
125
+ function LightboxPositioner(props) {
126
+ const [local, others] = splitProps(props, [
127
+ 'class'
128
+ ]);
129
+ return createComponent(OverlayPortal, {
130
+ get children () {
131
+ return createComponent(Dialog.Positioner, mergeProps({
132
+ "data-slot": "lightbox-positioner",
133
+ get ["class"] () {
134
+ return cn('fixed inset-0 z-[calc(50+var(--layer-index,0))] box-border grid place-items-center overflow-auto overscroll-contain p-4', local.class);
135
+ }
136
+ }, others));
137
+ }
138
+ });
139
+ }
140
+ function LightboxContent(props) {
141
+ const [local, others] = splitProps(props, [
142
+ 'class'
143
+ ]);
144
+ return createComponent(Dialog.Content, mergeProps({
145
+ "data-slot": "lightbox-content",
146
+ get ["class"] () {
147
+ return cn('relative box-border grid max-h-[min(80dvh,calc(100dvh-2rem))] w-fit max-w-[min(80vw,calc(100vw-2rem))] gap-3 border-0 bg-transparent outline-0 data-[state=closed]:animate-moduix-menu-closed data-[state=open]:animate-moduix-menu-open motion-reduce:[animation-delay:0ms] motion-reduce:[animation-duration:1ms]', local.class);
148
+ }
149
+ }, others));
150
+ }
151
+ function LightboxTitle(props) {
152
+ const [local, others] = splitProps(props, [
153
+ 'class'
154
+ ]);
155
+ return createComponent(Dialog.Title, mergeProps({
156
+ "data-slot": "lightbox-title",
157
+ get ["class"] () {
158
+ return cn('m-0 text-md leading-6 font-semibold text-foreground', local.class);
159
+ }
160
+ }, others));
161
+ }
162
+ function LightboxDescription(props) {
163
+ const [local, others] = splitProps(props, [
164
+ 'class'
165
+ ]);
166
+ return createComponent(Dialog.Description, mergeProps({
167
+ "data-slot": "lightbox-description",
168
+ get ["class"] () {
169
+ return cn('m-0 text-sm leading-5 text-muted-foreground', local.class);
170
+ }
171
+ }, others));
172
+ }
173
+ function LightboxCloseTrigger(props) {
174
+ const [local, others] = splitProps(props, [
175
+ 'asChild',
176
+ 'class'
177
+ ]);
178
+ return createComponent(Dialog.CloseTrigger, mergeProps({
179
+ get asChild () {
180
+ return local.asChild;
181
+ },
182
+ "data-slot": "lightbox-close-trigger",
183
+ get ["class"] () {
184
+ return local.class;
185
+ }
186
+ }, others));
187
+ }
188
+ function LightboxCloseIcon(props) {
189
+ const [local, others] = splitProps(props, [
190
+ 'aria-label',
191
+ 'aria-labelledby',
192
+ 'children',
193
+ 'class'
194
+ ]);
195
+ const dialog = useDialogContext();
196
+ const resolvedChildren = children(()=>local.children);
197
+ return createComponent(Dialog.CloseTrigger, mergeProps({
198
+ asChild: (triggerProps)=>createComponent(CloseButton.Root, mergeProps(triggerProps, {
199
+ "data-slot": "lightbox-close-icon",
200
+ get ["data-state"] () {
201
+ return dialog().open ? 'open' : 'closed';
202
+ },
203
+ get ["aria-label"] () {
204
+ return local['aria-label'] ?? DEFAULT_CLOSE_LABEL;
205
+ },
206
+ get ["aria-labelledby"] () {
207
+ return local['aria-labelledby'];
208
+ },
209
+ get ["class"] () {
210
+ return cn('pointer-events-none invisible fixed end-4 top-4 z-[calc(51+var(--layer-index,0))] size-8 rounded-sm border-0 bg-background p-0 text-foreground opacity-0 transition-[background-color,color,opacity] duration-200 ease-in-out select-none focus-visible:outline-1 focus-visible:-outline-offset-1 focus-visible:outline-ring data-[state=open]:pointer-events-auto data-[state=open]:visible data-[state=open]:opacity-100 motion-reduce:transition-none [&>svg]:size-3.5 [&>svg]:shrink-0 [@media(hover:hover)]:[&:not([data-disabled]):hover]:bg-muted', local.class);
211
+ },
212
+ get children () {
213
+ return resolvedChildren();
214
+ }
215
+ }))
216
+ }, others));
217
+ }
218
+ function LightboxImage(props) {
219
+ const [local, others] = splitProps(props, [
220
+ 'class',
221
+ 'closeOnClick',
222
+ 'onClick'
223
+ ]);
224
+ const dialog = useDialogContext();
225
+ const handleClick = (event)=>{
226
+ local.onClick?.(event);
227
+ if (local.closeOnClick && !event.defaultPrevented) dialog().setOpen(false);
228
+ };
229
+ return (()=>{
230
+ var _el$ = _tmpl$();
231
+ _el$.$$click = handleClick;
232
+ spread(_el$, mergeProps({
233
+ get ["data-close-on-click"] () {
234
+ return local.closeOnClick ? '' : void 0;
235
+ },
236
+ get ["class"] () {
237
+ return cn('block max-h-[min(80dvh,100%)] max-w-[min(80vw,100%)] rounded-md object-contain shadow-lg select-none data-[close-on-click]:cursor-zoom-out', local.class);
238
+ }
239
+ }, others), false, false);
240
+ return _el$;
241
+ })();
242
+ }
243
+ function LightboxGallery(props) {
244
+ const [local, others] = splitProps(props, [
245
+ 'class'
246
+ ]);
247
+ return createComponent(ark.div, mergeProps({
248
+ "data-slot": "lightbox-gallery",
249
+ get ["class"] () {
250
+ return cn('[&_[data-slot=carousel-indicator-group]]:mx-auto', 'max-w-[min(72rem,calc(100vw-2rem))] justify-self-center [&_[data-slot=carousel-control]]:items-center [&_[data-slot=carousel-indicator-group]]:w-fit [&_[data-slot=carousel-indicator-group]]:max-w-full [&_[data-slot=carousel-indicator-group]]:flex-wrap [&_[data-slot=carousel-indicator]:has(img)]:h-control-xl [&_[data-slot=carousel-indicator]:has(img)]:w-20 [&_[data-slot=carousel-indicator]:has(img)]:overflow-hidden [&_[data-slot=carousel-indicator]:has(img)]:rounded-md [&_[data-slot=carousel-indicator]:has(img)]:border [&_[data-slot=carousel-indicator]:has(img)]:border-transparent [&_[data-slot=carousel-indicator]:has(img)]:bg-transparent [&_[data-slot=carousel-indicator]:has(img)]:opacity-[0.65] [&_[data-slot=carousel-indicator]:has(img)]:transition [&_[data-slot=carousel-indicator]:has(img)]:duration-150 [&_[data-slot=carousel-indicator]:has(img)]:ease-in-out [&_[data-slot=carousel-indicator]:has(img)_img]:block [&_[data-slot=carousel-indicator]:has(img)_img]:size-full [&_[data-slot=carousel-indicator]:has(img)_img]:object-cover [&_[data-slot=carousel-indicator]:has(img):hover]:opacity-90 [&_[data-slot=carousel-indicator]:has(img)[data-current]]:-translate-y-px [&_[data-slot=carousel-indicator]:has(img)[data-current]]:border-primary [&_[data-slot=carousel-indicator]:has(img)[data-current]]:opacity-100 [&_[data-slot=carousel-item-group]]:aspect-[16/10] [&_[data-slot=carousel-item-group]]:max-h-[68dvh] [&_[data-slot=carousel-item-group]]:bg-black/90 [&_[data-slot=carousel-item]]:grid [&_[data-slot=carousel-item]]:h-full [&_[data-slot=carousel-item]]:place-items-center [&_[data-slot=carousel-item]_img]:block [&_[data-slot=carousel-item]_img]:size-full [&_[data-slot=carousel-item]_img]:rounded-md [&_[data-slot=carousel-item]_img]:object-contain [&_[data-slot=carousel-item]_img]:select-none [&_[data-slot=carousel-item]_video]:block [&_[data-slot=carousel-item]_video]:size-full [&_[data-slot=carousel-item]_video]:rounded-md [&_[data-slot=carousel-item]_video]:object-contain [&_[data-slot=carousel-item]_video]:select-none', local.class);
251
+ }
252
+ }, others));
253
+ }
254
+ function LightboxHeader(props) {
255
+ const [local, others] = splitProps(props, [
256
+ 'class'
257
+ ]);
258
+ return createComponent(ark.div, mergeProps({
259
+ "data-slot": "lightbox-header",
260
+ get ["class"] () {
261
+ return cn('grid gap-1', local.class);
262
+ }
263
+ }, others));
264
+ }
265
+ function LightboxBody(props) {
266
+ const [local, others] = splitProps(props, [
267
+ 'class'
268
+ ]);
269
+ return createComponent(ark.div, mergeProps({
270
+ "data-slot": "lightbox-body",
271
+ get ["class"] () {
272
+ return cn('grid gap-3', local.class);
273
+ }
274
+ }, others));
275
+ }
276
+ function LightboxFooter(props) {
277
+ const [local, others] = splitProps(props, [
278
+ 'class'
279
+ ]);
280
+ return createComponent(ark.div, mergeProps({
281
+ "data-slot": "lightbox-footer",
282
+ get ["class"] () {
283
+ return cn('flex items-center justify-end gap-2 text-sm leading-5 text-muted-foreground', local.class);
284
+ }
285
+ }, others));
286
+ }
287
+ function LightboxBind(props) {
288
+ const [local] = splitProps(props, [
289
+ 'onImageSelect',
290
+ 'rootRef',
291
+ 'rootSelector',
292
+ 'selector'
293
+ ]);
294
+ const dialog = useDialogContext();
295
+ createEffect(()=>{
296
+ const rootNode = resolveRootNode(local.rootRef, local.rootSelector);
297
+ const selector = local.selector;
298
+ const onImageSelect = local.onImageSelect;
299
+ if (!rootNode) return;
300
+ const handleClick = (event)=>{
301
+ const nextImage = resolveImage(event.target, selector, rootNode);
302
+ if (!nextImage) return;
303
+ onImageSelect(nextImage);
304
+ dialog().setOpen(true);
305
+ };
306
+ const preloadFromTarget = (target)=>{
307
+ const nextImage = resolveImage(target, selector, rootNode);
308
+ if (!nextImage) return;
309
+ preloadImage(nextImage.src);
310
+ };
311
+ const handlePointerEnter = (event)=>{
312
+ preloadFromTarget(event.target);
313
+ };
314
+ const handleFocusIn = (event)=>{
315
+ preloadFromTarget(event.target);
316
+ };
317
+ rootNode.addEventListener('click', handleClick);
318
+ rootNode.addEventListener('pointerenter', handlePointerEnter, true);
319
+ rootNode.addEventListener('focusin', handleFocusIn);
320
+ onCleanup(()=>{
321
+ rootNode.removeEventListener('click', handleClick);
322
+ rootNode.removeEventListener('pointerenter', handlePointerEnter, true);
323
+ rootNode.removeEventListener('focusin', handleFocusIn);
324
+ });
325
+ });
326
+ return [];
327
+ }
328
+ const Lightbox = Object.assign(LightboxRoot, {
329
+ Root: LightboxRoot,
330
+ RootProvider: LightboxRootProvider,
331
+ Trigger: LightboxTrigger,
332
+ Backdrop: LightboxBackdrop,
333
+ Positioner: LightboxPositioner,
334
+ Content: LightboxContent,
335
+ Title: LightboxTitle,
336
+ Description: LightboxDescription,
337
+ CloseTrigger: LightboxCloseTrigger,
338
+ CloseIcon: LightboxCloseIcon,
339
+ Header: LightboxHeader,
340
+ Body: LightboxBody,
341
+ Footer: LightboxFooter,
342
+ Image: LightboxImage,
343
+ Gallery: LightboxGallery,
344
+ Bind: LightboxBind,
345
+ useLightbox: useDialog,
346
+ useLightboxContext: useDialogContext
347
+ });
348
+ delegateEvents([
349
+ "click"
350
+ ]);
351
+ export { Lightbox, LightboxBind, LightboxGallery, LightboxImage, useDialog as useLightbox, useDialogContext as useLightboxContext };
@@ -0,0 +1,218 @@
1
+ import { Dialog, useDialog, useDialogContext } from "@ark-ui/solid/dialog";
2
+ import { ark } from "@ark-ui/solid/factory";
3
+ import { children, createEffect, onCleanup, splitProps } from "solid-js";
4
+ import { cn } from "../../internal/cn.jsx";
5
+ import { OverlayPortal, OverlayPortalProvider } from "../../internal/overlayPortal.jsx";
6
+ import { CloseButton } from "../close-button/index.jsx";
7
+ const DEFAULT_CLOSE_LABEL = 'Close image';
8
+ function preloadImage(src) {
9
+ if (!src || "u" < typeof Image) return;
10
+ const image = new Image();
11
+ image.src = src;
12
+ }
13
+ function resolveImage(target, selector, rootNode) {
14
+ if (!(target instanceof Element)) return null;
15
+ const matchedNode = target.closest(selector);
16
+ if (!matchedNode || !rootNode.contains(matchedNode)) return null;
17
+ const imageNode = matchedNode instanceof HTMLImageElement ? matchedNode : matchedNode.querySelector('img');
18
+ if (!(imageNode instanceof HTMLImageElement)) return null;
19
+ const src = imageNode.dataset.lightboxSrc ?? imageNode.currentSrc ?? imageNode.src;
20
+ if (!src) return null;
21
+ return {
22
+ src,
23
+ alt: imageNode.alt || void 0,
24
+ element: imageNode
25
+ };
26
+ }
27
+ function resolveRootNode(rootRef, rootSelector) {
28
+ const rootNode = 'function' == typeof rootRef ? rootRef() : rootRef;
29
+ return rootNode ?? (rootSelector ? document.querySelector(rootSelector) : null);
30
+ }
31
+ function LightboxRoot(props) {
32
+ const [local, others] = splitProps(props, [
33
+ 'children',
34
+ 'lazyMount',
35
+ 'portalled',
36
+ 'portalRef',
37
+ 'unmountOnExit'
38
+ ]);
39
+ return <OverlayPortalProvider portalled={local.portalled} portalRef={local.portalRef}>
40
+ <Dialog.Root lazyMount={local.lazyMount ?? true} unmountOnExit={local.unmountOnExit ?? true} {...others}>
41
+ {local.children}
42
+ </Dialog.Root>
43
+ </OverlayPortalProvider>;
44
+ }
45
+ function LightboxRootProvider(props) {
46
+ const [local, others] = splitProps(props, [
47
+ 'children',
48
+ 'lazyMount',
49
+ 'portalled',
50
+ 'portalRef',
51
+ 'unmountOnExit'
52
+ ]);
53
+ return <OverlayPortalProvider portalled={local.portalled} portalRef={local.portalRef}>
54
+ <Dialog.RootProvider lazyMount={local.lazyMount ?? true} unmountOnExit={local.unmountOnExit ?? true} {...others}>
55
+ {local.children}
56
+ </Dialog.RootProvider>
57
+ </OverlayPortalProvider>;
58
+ }
59
+ function LightboxTrigger(props) {
60
+ const [local, others] = splitProps(props, [
61
+ 'asChild',
62
+ 'class'
63
+ ]);
64
+ return <Dialog.Trigger asChild={local.asChild} data-slot="lightbox-trigger" class={cn('cursor-zoom-in focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring', local.class)} {...others}/>;
65
+ }
66
+ function LightboxBackdrop(props) {
67
+ const [local, others] = splitProps(props, [
68
+ 'class'
69
+ ]);
70
+ return <OverlayPortal>
71
+ <Dialog.Backdrop data-slot="lightbox-backdrop" class={cn('fixed inset-0 z-[calc(40+var(--layer-index,0))] min-h-dvh bg-overlay backdrop-blur-xs data-[state=closed]:animate-[moduix-fade-out_200ms_ease-in-out_forwards] data-[state=open]:animate-[moduix-fade-in_200ms_ease-in-out] motion-reduce:[animation-delay:0ms] motion-reduce:[animation-duration:1ms]', local.class)} {...others}/>
72
+ </OverlayPortal>;
73
+ }
74
+ function LightboxPositioner(props) {
75
+ const [local, others] = splitProps(props, [
76
+ 'class'
77
+ ]);
78
+ return <OverlayPortal>
79
+ <Dialog.Positioner data-slot="lightbox-positioner" class={cn('fixed inset-0 z-[calc(50+var(--layer-index,0))] box-border grid place-items-center overflow-auto overscroll-contain p-4', local.class)} {...others}/>
80
+ </OverlayPortal>;
81
+ }
82
+ function LightboxContent(props) {
83
+ const [local, others] = splitProps(props, [
84
+ 'class'
85
+ ]);
86
+ return <Dialog.Content data-slot="lightbox-content" class={cn('relative box-border grid max-h-[min(80dvh,calc(100dvh-2rem))] w-fit max-w-[min(80vw,calc(100vw-2rem))] gap-3 border-0 bg-transparent outline-0 data-[state=closed]:animate-moduix-menu-closed data-[state=open]:animate-moduix-menu-open motion-reduce:[animation-delay:0ms] motion-reduce:[animation-duration:1ms]', local.class)} {...others}/>;
87
+ }
88
+ function LightboxTitle(props) {
89
+ const [local, others] = splitProps(props, [
90
+ 'class'
91
+ ]);
92
+ return <Dialog.Title data-slot="lightbox-title" class={cn('m-0 text-md leading-6 font-semibold text-foreground', local.class)} {...others}/>;
93
+ }
94
+ function LightboxDescription(props) {
95
+ const [local, others] = splitProps(props, [
96
+ 'class'
97
+ ]);
98
+ return <Dialog.Description data-slot="lightbox-description" class={cn('m-0 text-sm leading-5 text-muted-foreground', local.class)} {...others}/>;
99
+ }
100
+ function LightboxCloseTrigger(props) {
101
+ const [local, others] = splitProps(props, [
102
+ 'asChild',
103
+ 'class'
104
+ ]);
105
+ return <Dialog.CloseTrigger asChild={local.asChild} data-slot="lightbox-close-trigger" class={local.class} {...others}/>;
106
+ }
107
+ function LightboxCloseIcon(props) {
108
+ const [local, others] = splitProps(props, [
109
+ 'aria-label',
110
+ 'aria-labelledby',
111
+ 'children',
112
+ 'class'
113
+ ]);
114
+ const dialog = useDialogContext();
115
+ const resolvedChildren = children(()=>local.children);
116
+ return <Dialog.CloseTrigger asChild={(triggerProps)=><CloseButton.Root {...triggerProps()} data-slot="lightbox-close-icon" data-state={dialog().open ? 'open' : 'closed'} aria-label={local['aria-label'] ?? DEFAULT_CLOSE_LABEL} aria-labelledby={local['aria-labelledby']} class={cn('pointer-events-none invisible fixed end-4 top-4 z-[calc(51+var(--layer-index,0))] size-8 rounded-sm border-0 bg-background p-0 text-foreground opacity-0 transition-[background-color,color,opacity] duration-200 ease-in-out select-none focus-visible:outline-1 focus-visible:-outline-offset-1 focus-visible:outline-ring data-[state=open]:pointer-events-auto data-[state=open]:visible data-[state=open]:opacity-100 motion-reduce:transition-none [&>svg]:size-3.5 [&>svg]:shrink-0 [@media(hover:hover)]:[&:not([data-disabled]):hover]:bg-muted', local.class)}>
117
+ {resolvedChildren()}
118
+ </CloseButton.Root>} {...others}/>;
119
+ }
120
+ function LightboxImage(props) {
121
+ const [local, others] = splitProps(props, [
122
+ 'class',
123
+ 'closeOnClick',
124
+ 'onClick'
125
+ ]);
126
+ const dialog = useDialogContext();
127
+ const handleClick = (event)=>{
128
+ local.onClick?.(event);
129
+ if (local.closeOnClick && !event.defaultPrevented) dialog().setOpen(false);
130
+ };
131
+ return <img data-slot="lightbox-image" data-close-on-click={local.closeOnClick ? '' : void 0} class={cn('block max-h-[min(80dvh,100%)] max-w-[min(80vw,100%)] rounded-md object-contain shadow-lg select-none data-[close-on-click]:cursor-zoom-out', local.class)} onClick={handleClick} {...others}/>;
132
+ }
133
+ function LightboxGallery(props) {
134
+ const [local, others] = splitProps(props, [
135
+ 'class'
136
+ ]);
137
+ return <ark.div data-slot="lightbox-gallery" class={cn('[&_[data-slot=carousel-indicator-group]]:mx-auto', 'max-w-[min(72rem,calc(100vw-2rem))] justify-self-center [&_[data-slot=carousel-control]]:items-center [&_[data-slot=carousel-indicator-group]]:w-fit [&_[data-slot=carousel-indicator-group]]:max-w-full [&_[data-slot=carousel-indicator-group]]:flex-wrap [&_[data-slot=carousel-indicator]:has(img)]:h-control-xl [&_[data-slot=carousel-indicator]:has(img)]:w-20 [&_[data-slot=carousel-indicator]:has(img)]:overflow-hidden [&_[data-slot=carousel-indicator]:has(img)]:rounded-md [&_[data-slot=carousel-indicator]:has(img)]:border [&_[data-slot=carousel-indicator]:has(img)]:border-transparent [&_[data-slot=carousel-indicator]:has(img)]:bg-transparent [&_[data-slot=carousel-indicator]:has(img)]:opacity-[0.65] [&_[data-slot=carousel-indicator]:has(img)]:transition [&_[data-slot=carousel-indicator]:has(img)]:duration-150 [&_[data-slot=carousel-indicator]:has(img)]:ease-in-out [&_[data-slot=carousel-indicator]:has(img)_img]:block [&_[data-slot=carousel-indicator]:has(img)_img]:size-full [&_[data-slot=carousel-indicator]:has(img)_img]:object-cover [&_[data-slot=carousel-indicator]:has(img):hover]:opacity-90 [&_[data-slot=carousel-indicator]:has(img)[data-current]]:-translate-y-px [&_[data-slot=carousel-indicator]:has(img)[data-current]]:border-primary [&_[data-slot=carousel-indicator]:has(img)[data-current]]:opacity-100 [&_[data-slot=carousel-item-group]]:aspect-[16/10] [&_[data-slot=carousel-item-group]]:max-h-[68dvh] [&_[data-slot=carousel-item-group]]:bg-black/90 [&_[data-slot=carousel-item]]:grid [&_[data-slot=carousel-item]]:h-full [&_[data-slot=carousel-item]]:place-items-center [&_[data-slot=carousel-item]_img]:block [&_[data-slot=carousel-item]_img]:size-full [&_[data-slot=carousel-item]_img]:rounded-md [&_[data-slot=carousel-item]_img]:object-contain [&_[data-slot=carousel-item]_img]:select-none [&_[data-slot=carousel-item]_video]:block [&_[data-slot=carousel-item]_video]:size-full [&_[data-slot=carousel-item]_video]:rounded-md [&_[data-slot=carousel-item]_video]:object-contain [&_[data-slot=carousel-item]_video]:select-none', local.class)} {...others}/>;
138
+ }
139
+ function LightboxHeader(props) {
140
+ const [local, others] = splitProps(props, [
141
+ 'class'
142
+ ]);
143
+ return <ark.div data-slot="lightbox-header" class={cn('grid gap-1', local.class)} {...others}/>;
144
+ }
145
+ function LightboxBody(props) {
146
+ const [local, others] = splitProps(props, [
147
+ 'class'
148
+ ]);
149
+ return <ark.div data-slot="lightbox-body" class={cn('grid gap-3', local.class)} {...others}/>;
150
+ }
151
+ function LightboxFooter(props) {
152
+ const [local, others] = splitProps(props, [
153
+ 'class'
154
+ ]);
155
+ return <ark.div data-slot="lightbox-footer" class={cn('flex items-center justify-end gap-2 text-sm leading-5 text-muted-foreground', local.class)} {...others}/>;
156
+ }
157
+ function LightboxBind(props) {
158
+ const [local] = splitProps(props, [
159
+ 'onImageSelect',
160
+ 'rootRef',
161
+ 'rootSelector',
162
+ 'selector'
163
+ ]);
164
+ const dialog = useDialogContext();
165
+ createEffect(()=>{
166
+ const rootNode = resolveRootNode(local.rootRef, local.rootSelector);
167
+ const selector = local.selector;
168
+ const onImageSelect = local.onImageSelect;
169
+ if (!rootNode) return;
170
+ const handleClick = (event)=>{
171
+ const nextImage = resolveImage(event.target, selector, rootNode);
172
+ if (!nextImage) return;
173
+ onImageSelect(nextImage);
174
+ dialog().setOpen(true);
175
+ };
176
+ const preloadFromTarget = (target)=>{
177
+ const nextImage = resolveImage(target, selector, rootNode);
178
+ if (!nextImage) return;
179
+ preloadImage(nextImage.src);
180
+ };
181
+ const handlePointerEnter = (event)=>{
182
+ preloadFromTarget(event.target);
183
+ };
184
+ const handleFocusIn = (event)=>{
185
+ preloadFromTarget(event.target);
186
+ };
187
+ rootNode.addEventListener('click', handleClick);
188
+ rootNode.addEventListener('pointerenter', handlePointerEnter, true);
189
+ rootNode.addEventListener('focusin', handleFocusIn);
190
+ onCleanup(()=>{
191
+ rootNode.removeEventListener('click', handleClick);
192
+ rootNode.removeEventListener('pointerenter', handlePointerEnter, true);
193
+ rootNode.removeEventListener('focusin', handleFocusIn);
194
+ });
195
+ });
196
+ return <></>;
197
+ }
198
+ const Lightbox = Object.assign(LightboxRoot, {
199
+ Root: LightboxRoot,
200
+ RootProvider: LightboxRootProvider,
201
+ Trigger: LightboxTrigger,
202
+ Backdrop: LightboxBackdrop,
203
+ Positioner: LightboxPositioner,
204
+ Content: LightboxContent,
205
+ Title: LightboxTitle,
206
+ Description: LightboxDescription,
207
+ CloseTrigger: LightboxCloseTrigger,
208
+ CloseIcon: LightboxCloseIcon,
209
+ Header: LightboxHeader,
210
+ Body: LightboxBody,
211
+ Footer: LightboxFooter,
212
+ Image: LightboxImage,
213
+ Gallery: LightboxGallery,
214
+ Bind: LightboxBind,
215
+ useLightbox: useDialog,
216
+ useLightboxContext: useDialogContext
217
+ });
218
+ export { Lightbox, LightboxBind, LightboxGallery, LightboxImage, useDialog as useLightbox, useDialogContext as useLightboxContext };
@@ -0,0 +1,2 @@
1
+ export { Lightbox, LightboxBind, LightboxGallery, LightboxImage, useLightbox, useLightboxContext, } from './Lightbox.js';
2
+ export type { LightboxBindProps, LightboxImageSelectDetails } from './Lightbox.js';
@@ -0,0 +1 @@
1
+ export { Lightbox, LightboxBind, LightboxGallery, LightboxImage, useLightbox, useLightboxContext } from "./Lightbox.js";
@@ -0,0 +1 @@
1
+ export { Lightbox, LightboxBind, LightboxGallery, LightboxImage, useLightbox, useLightboxContext } from "./Lightbox.jsx";