@vamos-ui/react 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (665) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +27 -2
  3. package/dist/blocks/block-heading.d.ts +29 -0
  4. package/dist/blocks/block-heading.js +39 -0
  5. package/dist/blocks/block-image.d.ts +52 -0
  6. package/dist/blocks/block-image.js +48 -0
  7. package/dist/blocks/block-link.d.ts +30 -0
  8. package/dist/blocks/block-link.js +36 -0
  9. package/dist/blocks/create-blocks.d.ts +54 -0
  10. package/dist/blocks/create-blocks.js +52 -0
  11. package/dist/blocks/index.d.ts +55 -0
  12. package/dist/blocks/index.js +59 -0
  13. package/dist/blocks/json-ld.d.ts +18 -0
  14. package/dist/blocks/json-ld.js +44 -0
  15. package/dist/blocks/labels.d.ts +20 -0
  16. package/dist/blocks/labels.js +43 -0
  17. package/dist/blocks/rich-text.d.ts +36 -0
  18. package/dist/blocks/rich-text.js +106 -0
  19. package/dist/blocks/schema/define-block.d.ts +151 -0
  20. package/dist/blocks/schema/define-block.js +120 -0
  21. package/dist/blocks/schema/emphasis.d.ts +17 -0
  22. package/dist/blocks/schema/emphasis.js +69 -0
  23. package/dist/blocks/schema/fields.d.ts +497 -0
  24. package/dist/blocks/schema/fields.js +240 -0
  25. package/dist/blocks/schema/icons.d.ts +2 -0
  26. package/dist/blocks/schema/icons.js +26 -0
  27. package/dist/blocks/schema/index.d.ts +18 -0
  28. package/dist/blocks/schema/index.js +21 -0
  29. package/dist/blocks/schema/lint-types.d.ts +16 -0
  30. package/dist/blocks/schema/lint-types.js +2 -0
  31. package/dist/blocks/schema/lint.d.ts +32 -0
  32. package/dist/blocks/schema/lint.js +164 -0
  33. package/dist/blocks/schema/localize.d.ts +20 -0
  34. package/dist/blocks/schema/localize.js +29 -0
  35. package/dist/blocks/schema/localized.d.ts +25 -0
  36. package/dist/blocks/schema/localized.js +53 -0
  37. package/dist/blocks/schema/migrate.d.ts +24 -0
  38. package/dist/blocks/schema/migrate.js +75 -0
  39. package/dist/blocks/schema/nodes.d.ts +196 -0
  40. package/dist/blocks/schema/nodes.js +78 -0
  41. package/dist/blocks/schema/rich-doc-schema.d.ts +32 -0
  42. package/dist/blocks/schema/rich-doc-schema.js +66 -0
  43. package/dist/blocks/schema/rich-doc.d.ts +90 -0
  44. package/dist/blocks/schema/rich-doc.js +62 -0
  45. package/dist/blocks/schema/safety.d.ts +20 -0
  46. package/dist/blocks/schema/safety.js +49 -0
  47. package/dist/blocks/schema/types.d.ts +172 -0
  48. package/dist/blocks/schema/types.js +3 -0
  49. package/dist/blocks/schema/validate.d.ts +17 -0
  50. package/dist/blocks/schema/validate.js +32 -0
  51. package/dist/blocks/schema/walk.d.ts +22 -0
  52. package/dist/blocks/schema/walk.js +60 -0
  53. package/dist/blocks/section-header.d.ts +38 -0
  54. package/dist/blocks/section-header.js +22 -0
  55. package/dist/blocks/section.d.ts +59 -0
  56. package/dist/blocks/section.js +66 -0
  57. package/dist/blocks/site/_kit-1.d.ts +100 -0
  58. package/dist/blocks/site/_kit-1.js +135 -0
  59. package/dist/blocks/site/_site-icon-1.d.ts +6 -0
  60. package/dist/blocks/site/_site-icon-1.js +15 -0
  61. package/dist/blocks/site/announcement-bar.d.ts +42 -0
  62. package/dist/blocks/site/announcement-bar.js +38 -0
  63. package/dist/blocks/site/announcement-dismiss.d.ts +18 -0
  64. package/dist/blocks/site/announcement-dismiss.js +28 -0
  65. package/dist/blocks/site/article-layout.d.ts +65 -0
  66. package/dist/blocks/site/article-layout.js +88 -0
  67. package/dist/blocks/site/blog-list.d.ts +79 -0
  68. package/dist/blocks/site/blog-list.js +78 -0
  69. package/dist/blocks/site/comparison-table.d.ts +54 -0
  70. package/dist/blocks/site/comparison-table.js +38 -0
  71. package/dist/blocks/site/consent-banner.d.ts +52 -0
  72. package/dist/blocks/site/consent-banner.js +33 -0
  73. package/dist/blocks/site/contact-dock.d.ts +52 -0
  74. package/dist/blocks/site/contact-dock.js +55 -0
  75. package/dist/blocks/site/contact-form.d.ts +60 -0
  76. package/dist/blocks/site/contact-form.js +45 -0
  77. package/dist/blocks/site/cta-booking.d.ts +43 -0
  78. package/dist/blocks/site/cta-booking.js +69 -0
  79. package/dist/blocks/site/cta.d.ts +74 -0
  80. package/dist/blocks/site/cta.js +112 -0
  81. package/dist/blocks/site/embed-facade.d.ts +20 -0
  82. package/dist/blocks/site/embed-facade.js +21 -0
  83. package/dist/blocks/site/faq.d.ts +48 -0
  84. package/dist/blocks/site/faq.js +51 -0
  85. package/dist/blocks/site/feature-grid.d.ts +46 -0
  86. package/dist/blocks/site/feature-grid.js +49 -0
  87. package/dist/blocks/site/feature-tabs.d.ts +22 -0
  88. package/dist/blocks/site/feature-tabs.js +11 -0
  89. package/dist/blocks/site/footer.d.ts +68 -0
  90. package/dist/blocks/site/footer.js +61 -0
  91. package/dist/blocks/site/gallery-section.d.ts +42 -0
  92. package/dist/blocks/site/gallery-section.js +47 -0
  93. package/dist/blocks/site/hero-video.d.ts +15 -0
  94. package/dist/blocks/site/hero-video.js +31 -0
  95. package/dist/blocks/site/hero.d.ts +64 -0
  96. package/dist/blocks/site/hero.js +67 -0
  97. package/dist/blocks/site/logo-strip.d.ts +42 -0
  98. package/dist/blocks/site/logo-strip.js +26 -0
  99. package/dist/blocks/site/map-hours.d.ts +83 -0
  100. package/dist/blocks/site/map-hours.js +125 -0
  101. package/dist/blocks/site/media-text.d.ts +45 -0
  102. package/dist/blocks/site/media-text.js +55 -0
  103. package/dist/blocks/site/menu-list.d.ts +74 -0
  104. package/dist/blocks/site/menu-list.js +84 -0
  105. package/dist/blocks/site/navbar-submenu.d.ts +18 -0
  106. package/dist/blocks/site/navbar-submenu.js +51 -0
  107. package/dist/blocks/site/navbar.d.ts +67 -0
  108. package/dist/blocks/site/navbar.js +64 -0
  109. package/dist/blocks/site/not-found.d.ts +40 -0
  110. package/dist/blocks/site/not-found.js +38 -0
  111. package/dist/blocks/site/page-intro.d.ts +46 -0
  112. package/dist/blocks/site/page-intro.js +44 -0
  113. package/dist/blocks/site/pricing-table.d.ts +67 -0
  114. package/dist/blocks/site/pricing-table.js +82 -0
  115. package/dist/blocks/site/process.d.ts +36 -0
  116. package/dist/blocks/site/process.js +41 -0
  117. package/dist/blocks/site/registry-1.d.ts +720 -0
  118. package/dist/blocks/site/registry-1.js +783 -0
  119. package/dist/blocks/site/registry-2.d.ts +914 -0
  120. package/dist/blocks/site/registry-2.js +563 -0
  121. package/dist/blocks/site/rich-text-section.d.ts +34 -0
  122. package/dist/blocks/site/rich-text-section.js +32 -0
  123. package/dist/blocks/site/shared/brand-icons.d.ts +21 -0
  124. package/dist/blocks/site/shared/brand-icons.js +56 -0
  125. package/dist/blocks/site/shared/consent-gate.d.ts +41 -0
  126. package/dist/blocks/site/shared/consent-gate.js +43 -0
  127. package/dist/blocks/site/shared/consent-island.d.ts +38 -0
  128. package/dist/blocks/site/shared/consent-island.js +63 -0
  129. package/dist/blocks/site/shared/consent.d.ts +49 -0
  130. package/dist/blocks/site/shared/consent.js +130 -0
  131. package/dist/blocks/site/shared/contact-form-island.d.ts +41 -0
  132. package/dist/blocks/site/shared/contact-form-island.js +100 -0
  133. package/dist/blocks/site/shared/copy-link.d.ts +10 -0
  134. package/dist/blocks/site/shared/copy-link.js +25 -0
  135. package/dist/blocks/site/shared/dock-avoid.d.ts +15 -0
  136. package/dist/blocks/site/shared/dock-avoid.js +107 -0
  137. package/dist/blocks/site/shared/dock-hours.d.ts +13 -0
  138. package/dist/blocks/site/shared/dock-hours.js +25 -0
  139. package/dist/blocks/site/shared/gallery-lightbox.d.ts +12 -0
  140. package/dist/blocks/site/shared/gallery-lightbox.js +10 -0
  141. package/dist/blocks/site/shared/island-keys.d.ts +10 -0
  142. package/dist/blocks/site/shared/island-keys.js +44 -0
  143. package/dist/blocks/site/shared/kit-2.d.ts +55 -0
  144. package/dist/blocks/site/shared/kit-2.js +84 -0
  145. package/dist/blocks/site/shared/labels-2.d.ts +209 -0
  146. package/dist/blocks/site/shared/labels-2.js +427 -0
  147. package/dist/blocks/site/shared/open-now.d.ts +22 -0
  148. package/dist/blocks/site/shared/open-now.js +27 -0
  149. package/dist/blocks/site/shared/opening-hours.d.ts +117 -0
  150. package/dist/blocks/site/shared/opening-hours.js +245 -0
  151. package/dist/blocks/site/shared/site-accent.d.ts +48 -0
  152. package/dist/blocks/site/shared/site-accent.js +249 -0
  153. package/dist/blocks/site/shared/site-form.d.ts +79 -0
  154. package/dist/blocks/site/shared/site-form.js +111 -0
  155. package/dist/blocks/site/shared/site-routing.d.ts +54 -0
  156. package/dist/blocks/site/shared/site-routing.js +86 -0
  157. package/dist/blocks/site/shared/testimonials-carousel.d.ts +17 -0
  158. package/dist/blocks/site/shared/testimonials-carousel.js +64 -0
  159. package/dist/blocks/site/site-shell.d.ts +97 -0
  160. package/dist/blocks/site/site-shell.js +227 -0
  161. package/dist/blocks/site/stats-band.d.ts +40 -0
  162. package/dist/blocks/site/stats-band.js +41 -0
  163. package/dist/blocks/site/team.d.ts +44 -0
  164. package/dist/blocks/site/team.js +48 -0
  165. package/dist/blocks/site/testimonials.d.ts +68 -0
  166. package/dist/blocks/site/testimonials.js +65 -0
  167. package/dist/blocks/types.d.ts +63 -0
  168. package/dist/blocks/types.js +2 -0
  169. package/dist/business/approval-flow.d.ts +152 -0
  170. package/dist/business/approval-flow.js +221 -0
  171. package/dist/business/export-core.d.ts +55 -0
  172. package/dist/business/export-core.js +101 -0
  173. package/dist/business/export.d.ts +148 -0
  174. package/dist/business/export.js +264 -0
  175. package/dist/business/import-core.d.ts +104 -0
  176. package/dist/business/import-core.js +281 -0
  177. package/dist/business/import-wizard.d.ts +186 -0
  178. package/dist/business/import-wizard.js +401 -0
  179. package/dist/business/index.d.ts +11 -0
  180. package/dist/business/index.js +20 -0
  181. package/dist/business/line-items-core.d.ts +129 -0
  182. package/dist/business/line-items-core.js +183 -0
  183. package/dist/business/line-items.d.ts +119 -0
  184. package/dist/business/line-items.js +299 -0
  185. package/dist/business/multi-step-form.d.ts +131 -0
  186. package/dist/business/multi-step-form.js +337 -0
  187. package/dist/business/permission-core.d.ts +59 -0
  188. package/dist/business/permission-core.js +99 -0
  189. package/dist/business/permission-matrix.d.ts +158 -0
  190. package/dist/business/permission-matrix.js +341 -0
  191. package/dist/business/setup-checklist.d.ts +80 -0
  192. package/dist/business/setup-checklist.js +92 -0
  193. package/dist/charts/area-chart.d.ts +35 -0
  194. package/dist/charts/area-chart.js +33 -0
  195. package/dist/charts/bar-chart.d.ts +27 -0
  196. package/dist/charts/bar-chart.js +42 -0
  197. package/dist/charts/bar-list.d.ts +47 -0
  198. package/dist/charts/bar-list.js +60 -0
  199. package/dist/charts/chart-shell.d.ts +173 -0
  200. package/dist/charts/chart-shell.js +205 -0
  201. package/dist/charts/chart.d.ts +73 -0
  202. package/dist/charts/chart.js +106 -0
  203. package/dist/charts/combo-chart.d.ts +29 -0
  204. package/dist/charts/combo-chart.js +47 -0
  205. package/dist/charts/donut-chart.d.ts +33 -0
  206. package/dist/charts/donut-chart.js +113 -0
  207. package/dist/charts/funnel.d.ts +51 -0
  208. package/dist/charts/funnel.js +69 -0
  209. package/dist/charts/gauge.d.ts +62 -0
  210. package/dist/charts/gauge.js +104 -0
  211. package/dist/charts/heatmap.d.ts +81 -0
  212. package/dist/charts/heatmap.js +338 -0
  213. package/dist/charts/index.d.ts +12 -0
  214. package/dist/charts/index.js +14 -0
  215. package/dist/charts/line-chart.d.ts +21 -0
  216. package/dist/charts/line-chart.js +36 -0
  217. package/dist/charts/test-utils.d.ts +2 -0
  218. package/dist/charts/test-utils.js +38 -0
  219. package/dist/charts/utils.d.ts +130 -0
  220. package/dist/charts/utils.js +262 -0
  221. package/dist/components/accordion.d.ts +47 -0
  222. package/dist/components/accordion.js +70 -0
  223. package/dist/components/activity-timeline.d.ts +149 -0
  224. package/dist/components/activity-timeline.js +122 -0
  225. package/dist/components/address-field.d.ts +116 -0
  226. package/dist/components/address-field.js +219 -0
  227. package/dist/components/alert-dialog.d.ts +99 -0
  228. package/dist/components/alert-dialog.js +192 -0
  229. package/dist/components/alert.d.ts +42 -0
  230. package/dist/components/alert.js +82 -0
  231. package/dist/components/app-shell.d.ts +159 -0
  232. package/dist/components/app-shell.js +289 -0
  233. package/dist/components/attachment-list.d.ts +96 -0
  234. package/dist/components/attachment-list.js +196 -0
  235. package/dist/components/audit-log.d.ts +150 -0
  236. package/dist/components/audit-log.js +205 -0
  237. package/dist/components/avatar.d.ts +87 -0
  238. package/dist/components/avatar.js +126 -0
  239. package/dist/components/badge.d.ts +41 -0
  240. package/dist/components/badge.js +68 -0
  241. package/dist/components/breadcrumb.d.ts +78 -0
  242. package/dist/components/breadcrumb.js +106 -0
  243. package/dist/components/button-group.d.ts +52 -0
  244. package/dist/components/button-group.js +77 -0
  245. package/dist/components/button.d.ts +58 -0
  246. package/dist/components/button.js +107 -0
  247. package/dist/components/calendar.d.ts +240 -0
  248. package/dist/components/calendar.js +483 -0
  249. package/dist/components/card.d.ts +66 -0
  250. package/dist/components/card.js +76 -0
  251. package/dist/components/carousel.d.ts +170 -0
  252. package/dist/components/carousel.js +348 -0
  253. package/dist/components/checkbox.d.ts +78 -0
  254. package/dist/components/checkbox.js +138 -0
  255. package/dist/components/color-picker.d.ts +112 -0
  256. package/dist/components/color-picker.js +235 -0
  257. package/dist/components/combobox.d.ts +136 -0
  258. package/dist/components/combobox.js +294 -0
  259. package/dist/components/command.d.ts +275 -0
  260. package/dist/components/command.js +493 -0
  261. package/dist/components/comment-thread.d.ts +252 -0
  262. package/dist/components/comment-thread.js +449 -0
  263. package/dist/components/context-menu.d.ts +77 -0
  264. package/dist/components/context-menu.js +82 -0
  265. package/dist/components/currency-input.d.ts +43 -0
  266. package/dist/components/currency-input.js +85 -0
  267. package/dist/components/date-picker.d.ts +141 -0
  268. package/dist/components/date-picker.js +241 -0
  269. package/dist/components/date-range-picker.d.ts +91 -0
  270. package/dist/components/date-range-picker.js +251 -0
  271. package/dist/components/description-list.d.ts +92 -0
  272. package/dist/components/description-list.js +42 -0
  273. package/dist/components/dialog.d.ts +139 -0
  274. package/dist/components/dialog.js +185 -0
  275. package/dist/components/dropdown-menu.d.ts +100 -0
  276. package/dist/components/dropdown-menu.js +102 -0
  277. package/dist/components/editor-layout.d.ts +166 -0
  278. package/dist/components/editor-layout.js +237 -0
  279. package/dist/components/empty-state.d.ts +49 -0
  280. package/dist/components/empty-state.js +68 -0
  281. package/dist/components/entity-card.d.ts +83 -0
  282. package/dist/components/entity-card.js +92 -0
  283. package/dist/components/file-upload.d.ts +256 -0
  284. package/dist/components/file-upload.js +490 -0
  285. package/dist/components/formatted-input.d.ts +177 -0
  286. package/dist/components/formatted-input.js +399 -0
  287. package/dist/components/hierarchy-chart.d.ts +190 -0
  288. package/dist/components/hierarchy-chart.js +890 -0
  289. package/dist/components/hover-card.d.ts +21 -0
  290. package/dist/components/hover-card.js +32 -0
  291. package/dist/components/iban-input.d.ts +38 -0
  292. package/dist/components/iban-input.js +112 -0
  293. package/dist/components/id-input.d.ts +65 -0
  294. package/dist/components/id-input.js +130 -0
  295. package/dist/components/image.d.ts +130 -0
  296. package/dist/components/image.js +168 -0
  297. package/dist/components/input-otp.d.ts +62 -0
  298. package/dist/components/input-otp.js +73 -0
  299. package/dist/components/input.d.ts +141 -0
  300. package/dist/components/input.js +187 -0
  301. package/dist/components/item.d.ts +96 -0
  302. package/dist/components/item.js +113 -0
  303. package/dist/components/kbd.d.ts +64 -0
  304. package/dist/components/kbd.js +119 -0
  305. package/dist/components/list-layout.d.ts +144 -0
  306. package/dist/components/list-layout.js +210 -0
  307. package/dist/components/native-select.d.ts +33 -0
  308. package/dist/components/native-select.js +48 -0
  309. package/dist/components/navigation-menu.d.ts +127 -0
  310. package/dist/components/navigation-menu.js +129 -0
  311. package/dist/components/notification-center.d.ts +164 -0
  312. package/dist/components/notification-center.js +399 -0
  313. package/dist/components/page-header.d.ts +60 -0
  314. package/dist/components/page-header.js +60 -0
  315. package/dist/components/pagination.d.ts +121 -0
  316. package/dist/components/pagination.js +174 -0
  317. package/dist/components/phone-input.d.ts +49 -0
  318. package/dist/components/phone-input.js +266 -0
  319. package/dist/components/popover.d.ts +38 -0
  320. package/dist/components/popover.js +69 -0
  321. package/dist/components/progress.d.ts +79 -0
  322. package/dist/components/progress.js +97 -0
  323. package/dist/components/radio-group.d.ts +43 -0
  324. package/dist/components/radio-group.js +81 -0
  325. package/dist/components/record-detail-layout.d.ts +167 -0
  326. package/dist/components/record-detail-layout.js +233 -0
  327. package/dist/components/record-picker.d.ts +199 -0
  328. package/dist/components/record-picker.js +650 -0
  329. package/dist/components/resizable.d.ts +50 -0
  330. package/dist/components/resizable.js +88 -0
  331. package/dist/components/scroll-area.d.ts +40 -0
  332. package/dist/components/scroll-area.js +56 -0
  333. package/dist/components/select.d.ts +126 -0
  334. package/dist/components/select.js +137 -0
  335. package/dist/components/separator.d.ts +31 -0
  336. package/dist/components/separator.js +41 -0
  337. package/dist/components/settings-layout.d.ts +134 -0
  338. package/dist/components/settings-layout.js +180 -0
  339. package/dist/components/sheet.d.ts +103 -0
  340. package/dist/components/sheet.js +165 -0
  341. package/dist/components/sidebar.d.ts +171 -0
  342. package/dist/components/sidebar.js +421 -0
  343. package/dist/components/signature-pad.d.ts +85 -0
  344. package/dist/components/signature-pad.js +283 -0
  345. package/dist/components/skeleton.d.ts +64 -0
  346. package/dist/components/skeleton.js +53 -0
  347. package/dist/components/slider.d.ts +57 -0
  348. package/dist/components/slider.js +133 -0
  349. package/dist/components/slug-input.d.ts +69 -0
  350. package/dist/components/slug-input.js +201 -0
  351. package/dist/components/sparkline.d.ts +54 -0
  352. package/dist/components/sparkline.js +122 -0
  353. package/dist/components/spinner.d.ts +34 -0
  354. package/dist/components/spinner.js +34 -0
  355. package/dist/components/stat.d.ts +135 -0
  356. package/dist/components/stat.js +130 -0
  357. package/dist/components/status-picker.d.ts +107 -0
  358. package/dist/components/status-picker.js +175 -0
  359. package/dist/components/stepper.d.ts +86 -0
  360. package/dist/components/stepper.js +103 -0
  361. package/dist/components/switch.d.ts +34 -0
  362. package/dist/components/switch.js +70 -0
  363. package/dist/components/table.d.ts +101 -0
  364. package/dist/components/table.js +72 -0
  365. package/dist/components/tabs.d.ts +103 -0
  366. package/dist/components/tabs.js +173 -0
  367. package/dist/components/tag-input.d.ts +77 -0
  368. package/dist/components/tag-input.js +305 -0
  369. package/dist/components/task-list.d.ts +89 -0
  370. package/dist/components/task-list.js +238 -0
  371. package/dist/components/time-picker.d.ts +119 -0
  372. package/dist/components/time-picker.js +399 -0
  373. package/dist/components/toast.d.ts +87 -0
  374. package/dist/components/toast.js +142 -0
  375. package/dist/components/toggle.d.ts +77 -0
  376. package/dist/components/toggle.js +109 -0
  377. package/dist/components/tooltip.d.ts +69 -0
  378. package/dist/components/tooltip.js +105 -0
  379. package/dist/components/top-bar.d.ts +87 -0
  380. package/dist/components/top-bar.js +99 -0
  381. package/dist/components/tree-select.d.ts +89 -0
  382. package/dist/components/tree-select.js +243 -0
  383. package/dist/components/tree-view.d.ts +109 -0
  384. package/dist/components/tree-view.js +170 -0
  385. package/dist/components/typography.d.ts +107 -0
  386. package/dist/components/typography.js +128 -0
  387. package/dist/components/user-picker.d.ts +89 -0
  388. package/dist/components/user-picker.js +162 -0
  389. package/dist/components/version-history.d.ts +191 -0
  390. package/dist/components/version-history.js +431 -0
  391. package/dist/data-table/csv.d.ts +27 -0
  392. package/dist/data-table/csv.js +68 -0
  393. package/dist/data-table/data-table.d.ts +423 -0
  394. package/dist/data-table/data-table.js +1259 -0
  395. package/dist/data-table/filter-bar.d.ts +146 -0
  396. package/dist/data-table/filter-bar.js +569 -0
  397. package/dist/data-table/filter-fns.d.ts +65 -0
  398. package/dist/data-table/filter-fns.js +382 -0
  399. package/dist/data-table/index.d.ts +8 -0
  400. package/dist/data-table/index.js +9 -0
  401. package/dist/data-table/saved-views.d.ts +100 -0
  402. package/dist/data-table/saved-views.js +251 -0
  403. package/dist/data-table/types.d.ts +168 -0
  404. package/dist/data-table/types.js +87 -0
  405. package/dist/data-table/url-state.d.ts +94 -0
  406. package/dist/data-table/url-state.js +303 -0
  407. package/dist/data-table/view-state.d.ts +16 -0
  408. package/dist/data-table/view-state.js +81 -0
  409. package/dist/editor/_test-setup.d.ts +1 -0
  410. package/dist/editor/_test-setup.js +33 -0
  411. package/dist/editor/block-editor.d.ts +137 -0
  412. package/dist/editor/block-editor.js +280 -0
  413. package/dist/editor/commands.d.ts +31 -0
  414. package/dist/editor/commands.js +150 -0
  415. package/dist/editor/context.d.ts +108 -0
  416. package/dist/editor/context.js +30 -0
  417. package/dist/editor/convert.d.ts +66 -0
  418. package/dist/editor/convert.js +567 -0
  419. package/dist/editor/drag-handle.d.ts +10 -0
  420. package/dist/editor/drag-handle.js +69 -0
  421. package/dist/editor/extensions.d.ts +34 -0
  422. package/dist/editor/extensions.js +239 -0
  423. package/dist/editor/index.d.ts +14 -0
  424. package/dist/editor/index.js +17 -0
  425. package/dist/editor/inserter.d.ts +12 -0
  426. package/dist/editor/inserter.js +88 -0
  427. package/dist/editor/inspector.d.ts +17 -0
  428. package/dist/editor/inspector.js +65 -0
  429. package/dist/editor/items.d.ts +62 -0
  430. package/dist/editor/items.js +195 -0
  431. package/dist/editor/labels.d.ts +119 -0
  432. package/dist/editor/labels.js +130 -0
  433. package/dist/editor/markdown.d.ts +14 -0
  434. package/dist/editor/markdown.js +209 -0
  435. package/dist/editor/menus.d.ts +20 -0
  436. package/dist/editor/menus.js +236 -0
  437. package/dist/editor/nodes.d.ts +14 -0
  438. package/dist/editor/nodes.js +201 -0
  439. package/dist/editor/outline.d.ts +11 -0
  440. package/dist/editor/outline.js +52 -0
  441. package/dist/editor/schema-form.d.ts +64 -0
  442. package/dist/editor/schema-form.js +290 -0
  443. package/dist/editor/slash-menu.d.ts +15 -0
  444. package/dist/editor/slash-menu.js +119 -0
  445. package/dist/fonts/catalog.d.ts +53 -0
  446. package/dist/fonts/catalog.js +121 -0
  447. package/dist/fonts/font-picker.d.ts +70 -0
  448. package/dist/fonts/font-picker.js +225 -0
  449. package/dist/fonts/index.d.ts +6 -0
  450. package/dist/fonts/index.js +7 -0
  451. package/dist/fonts/loader.d.ts +66 -0
  452. package/dist/fonts/loader.js +161 -0
  453. package/dist/fonts/pairing-picker.d.ts +31 -0
  454. package/dist/fonts/pairing-picker.js +81 -0
  455. package/dist/fonts/pairings.d.ts +84 -0
  456. package/dist/fonts/pairings.js +149 -0
  457. package/dist/fonts/provider.d.ts +34 -0
  458. package/dist/fonts/provider.js +51 -0
  459. package/dist/form/index.d.ts +1 -0
  460. package/dist/form/index.js +1 -0
  461. package/dist/format/core.d.ts +149 -0
  462. package/dist/format/core.js +357 -0
  463. package/dist/format/index.d.ts +4 -0
  464. package/dist/format/index.js +5 -0
  465. package/dist/format/use-format.d.ts +1 -0
  466. package/dist/format/use-format.js +3 -0
  467. package/dist/index.d.ts +86 -0
  468. package/dist/index.js +87 -0
  469. package/dist/lib/cn.d.ts +3 -0
  470. package/dist/lib/cn.js +16 -0
  471. package/dist/lib/color.d.ts +64 -0
  472. package/dist/lib/color.js +177 -0
  473. package/dist/lib/compose-refs.d.ts +24 -0
  474. package/dist/lib/compose-refs.js +45 -0
  475. package/dist/lib/data-islands.d.ts +194 -0
  476. package/dist/lib/data-islands.js +368 -0
  477. package/dist/lib/date.d.ts +129 -0
  478. package/dist/lib/date.js +386 -0
  479. package/dist/lib/field-context.d.ts +64 -0
  480. package/dist/lib/field-context.js +62 -0
  481. package/dist/lib/floating-arrow.d.ts +18 -0
  482. package/dist/lib/floating-arrow.js +15 -0
  483. package/dist/lib/islands.d.ts +38 -0
  484. package/dist/lib/islands.js +40 -0
  485. package/dist/lib/labels.d.ts +51 -0
  486. package/dist/lib/labels.js +56 -0
  487. package/dist/lib/layer.d.ts +36 -0
  488. package/dist/lib/layer.js +42 -0
  489. package/dist/lib/locale.d.ts +85 -0
  490. package/dist/lib/locale.js +105 -0
  491. package/dist/lib/menu.d.ts +58 -0
  492. package/dist/lib/menu.js +99 -0
  493. package/dist/lib/message-format.d.ts +20 -0
  494. package/dist/lib/message-format.js +116 -0
  495. package/dist/lib/nav.d.ts +132 -0
  496. package/dist/lib/nav.js +178 -0
  497. package/dist/lib/provider.d.ts +100 -0
  498. package/dist/lib/provider.js +105 -0
  499. package/dist/lib/public.d.ts +22 -0
  500. package/dist/lib/public.js +33 -0
  501. package/dist/lib/sr-name.d.ts +18 -0
  502. package/dist/lib/sr-name.js +17 -0
  503. package/dist/lib/text.d.ts +100 -0
  504. package/dist/lib/text.js +233 -0
  505. package/dist/lib/theme-scope.d.ts +58 -0
  506. package/dist/lib/theme-scope.js +59 -0
  507. package/dist/lib/use-async-list.d.ts +60 -0
  508. package/dist/lib/use-async-list.js +119 -0
  509. package/dist/lib/use-container-width.d.ts +19 -0
  510. package/dist/lib/use-container-width.js +39 -0
  511. package/dist/lib/use-controllable-state.d.ts +33 -0
  512. package/dist/lib/use-controllable-state.js +56 -0
  513. package/dist/lib/use-edge-fade.d.ts +13 -0
  514. package/dist/lib/use-edge-fade.js +43 -0
  515. package/dist/lib/use-formatted-input.d.ts +69 -0
  516. package/dist/lib/use-formatted-input.js +152 -0
  517. package/dist/lib/use-hotkeys.d.ts +80 -0
  518. package/dist/lib/use-hotkeys.js +221 -0
  519. package/dist/lib/use-hover-intent.d.ts +44 -0
  520. package/dist/lib/use-hover-intent.js +119 -0
  521. package/dist/lib/use-media-query.d.ts +21 -0
  522. package/dist/lib/use-media-query.js +28 -0
  523. package/dist/lib/use-reduced-motion.d.ts +8 -0
  524. package/dist/lib/use-reduced-motion.js +13 -0
  525. package/dist/lib/use-tree.d.ts +153 -0
  526. package/dist/lib/use-tree.js +534 -0
  527. package/dist/lib/value-format.d.ts +25 -0
  528. package/dist/lib/value-format.js +56 -0
  529. package/dist/lib/variants.d.ts +131 -0
  530. package/dist/lib/variants.js +109 -0
  531. package/dist/locale-data/core/date.d.ts +24 -0
  532. package/dist/locale-data/core/date.js +68 -0
  533. package/dist/locale-data/core/decimal.d.ts +19 -0
  534. package/dist/locale-data/core/decimal.js +79 -0
  535. package/dist/locale-data/core/holidays.d.ts +30 -0
  536. package/dist/locale-data/core/holidays.js +79 -0
  537. package/dist/locale-data/core/iban.d.ts +29 -0
  538. package/dist/locale-data/core/iban.js +74 -0
  539. package/dist/locale-data/core/index.d.ts +7 -0
  540. package/dist/locale-data/core/index.js +6 -0
  541. package/dist/locale-data/core/types.d.ts +173 -0
  542. package/dist/locale-data/core/types.js +6 -0
  543. package/dist/locale-data/core/week-info.d.ts +23 -0
  544. package/dist/locale-data/core/week-info.js +85 -0
  545. package/dist/locale-data/core/working-days.d.ts +27 -0
  546. package/dist/locale-data/core/working-days.js +133 -0
  547. package/dist/locale-data/index.d.ts +2 -0
  548. package/dist/locale-data/index.js +4 -0
  549. package/dist/locale-data/tr/address-tr.json +1 -0
  550. package/dist/locale-data/tr/address.d.ts +23 -0
  551. package/dist/locale-data/tr/address.js +52 -0
  552. package/dist/locale-data/tr/holidays.d.ts +31 -0
  553. package/dist/locale-data/tr/holidays.js +81 -0
  554. package/dist/locale-data/tr/iban.d.ts +21 -0
  555. package/dist/locale-data/tr/iban.js +45 -0
  556. package/dist/locale-data/tr/id.d.ts +36 -0
  557. package/dist/locale-data/tr/id.js +120 -0
  558. package/dist/locale-data/tr/index.d.ts +12 -0
  559. package/dist/locale-data/tr/index.js +33 -0
  560. package/dist/locale-data/tr/kdv.d.ts +91 -0
  561. package/dist/locale-data/tr/kdv.js +222 -0
  562. package/dist/locales/en.d.ts +2102 -0
  563. package/dist/locales/en.js +2088 -0
  564. package/dist/locales/tr.d.ts +2086 -0
  565. package/dist/locales/tr.js +2087 -0
  566. package/dist/media/focal-point.d.ts +42 -0
  567. package/dist/media/focal-point.js +96 -0
  568. package/dist/media/gallery-layout.d.ts +19 -0
  569. package/dist/media/gallery-layout.js +61 -0
  570. package/dist/media/gallery.d.ts +64 -0
  571. package/dist/media/gallery.js +138 -0
  572. package/dist/media/image-cropper.d.ts +86 -0
  573. package/dist/media/image-cropper.js +170 -0
  574. package/dist/media/image-field.d.ts +115 -0
  575. package/dist/media/image-field.js +212 -0
  576. package/dist/media/index.d.ts +19 -0
  577. package/dist/media/index.js +23 -0
  578. package/dist/media/lightbox.d.ts +82 -0
  579. package/dist/media/lightbox.js +171 -0
  580. package/dist/media/link-preview.d.ts +97 -0
  581. package/dist/media/link-preview.js +177 -0
  582. package/dist/media/media-library.d.ts +244 -0
  583. package/dist/media/media-library.js +776 -0
  584. package/dist/media/media-picker.d.ts +96 -0
  585. package/dist/media/media-picker.js +209 -0
  586. package/dist/media/media-provider.d.ts +23 -0
  587. package/dist/media/media-provider.js +44 -0
  588. package/dist/media/media-utils.d.ts +39 -0
  589. package/dist/media/media-utils.js +145 -0
  590. package/dist/media/memory-adapter.d.ts +22 -0
  591. package/dist/media/memory-adapter.js +162 -0
  592. package/dist/media/rest-adapter.d.ts +90 -0
  593. package/dist/media/rest-adapter.js +208 -0
  594. package/dist/media/serp.d.ts +62 -0
  595. package/dist/media/serp.js +108 -0
  596. package/dist/media/test-fixtures.d.ts +3 -0
  597. package/dist/media/test-fixtures.js +37 -0
  598. package/dist/media/types.d.ts +183 -0
  599. package/dist/media/types.js +3 -0
  600. package/dist/media/use-pan-zoom.d.ts +51 -0
  601. package/dist/media/use-pan-zoom.js +156 -0
  602. package/dist/media/use-upload-queue.d.ts +64 -0
  603. package/dist/media/use-upload-queue.js +115 -0
  604. package/dist/media/video-player.d.ts +135 -0
  605. package/dist/media/video-player.js +319 -0
  606. package/dist/next/index.d.ts +42 -0
  607. package/dist/next/index.js +36 -0
  608. package/dist/render/block-renderer.d.ts +56 -0
  609. package/dist/render/block-renderer.js +137 -0
  610. package/dist/render/index.d.ts +6 -0
  611. package/dist/render/index.js +7 -0
  612. package/dist/render/prepare.d.ts +61 -0
  613. package/dist/render/prepare.js +119 -0
  614. package/dist/scheduler/core/duration.d.ts +83 -0
  615. package/dist/scheduler/core/duration.js +174 -0
  616. package/dist/scheduler/core/gantt.d.ts +63 -0
  617. package/dist/scheduler/core/gantt.js +226 -0
  618. package/dist/scheduler/core/index.d.ts +6 -0
  619. package/dist/scheduler/core/index.js +7 -0
  620. package/dist/scheduler/core/layout.d.ts +97 -0
  621. package/dist/scheduler/core/layout.js +249 -0
  622. package/dist/scheduler/core/time-scale.d.ts +89 -0
  623. package/dist/scheduler/core/time-scale.js +173 -0
  624. package/dist/scheduler/gantt.d.ts +125 -0
  625. package/dist/scheduler/gantt.js +532 -0
  626. package/dist/scheduler/index.d.ts +6 -0
  627. package/dist/scheduler/index.js +7 -0
  628. package/dist/scheduler/resource-calendar.d.ts +218 -0
  629. package/dist/scheduler/resource-calendar.js +661 -0
  630. package/dist/scheduler/scheduler.d.ts +168 -0
  631. package/dist/scheduler/scheduler.js +768 -0
  632. package/dist/scheduler/shared.d.ts +63 -0
  633. package/dist/scheduler/shared.js +145 -0
  634. package/dist/scheduler/time-tracker.d.ts +138 -0
  635. package/dist/scheduler/time-tracker.js +403 -0
  636. package/dist/sortable/core.d.ts +67 -0
  637. package/dist/sortable/core.js +167 -0
  638. package/dist/sortable/index.d.ts +8 -0
  639. package/dist/sortable/index.js +10 -0
  640. package/dist/sortable/kanban-core.d.ts +70 -0
  641. package/dist/sortable/kanban-core.js +67 -0
  642. package/dist/sortable/kanban.d.ts +147 -0
  643. package/dist/sortable/kanban.js +472 -0
  644. package/dist/sortable/sortable-list.d.ts +71 -0
  645. package/dist/sortable/sortable-list.js +76 -0
  646. package/dist/sortable/sortable-tree.d.ts +101 -0
  647. package/dist/sortable/sortable-tree.js +450 -0
  648. package/dist/sortable/sortable.d.ts +188 -0
  649. package/dist/sortable/sortable.js +485 -0
  650. package/dist/sortable/use-pointer-drag.d.ts +75 -0
  651. package/dist/sortable/use-pointer-drag.js +173 -0
  652. package/dist/sortable/use-time-scale.d.ts +11 -0
  653. package/dist/sortable/use-time-scale.js +19 -0
  654. package/dist/styles/base.css +51 -0
  655. package/dist/styles/blocks.css +949 -0
  656. package/dist/styles/calendar.css +642 -0
  657. package/dist/styles/charts.css +264 -0
  658. package/dist/styles/data.css +474 -0
  659. package/dist/styles/editors.css +1022 -0
  660. package/dist/styles/forms.css +406 -0
  661. package/dist/styles/media.css +515 -0
  662. package/dist/styles/navigation.css +293 -0
  663. package/dist/styles/overlays.css +244 -0
  664. package/dist/styles.css +742 -0
  665. package/package.json +156 -4
@@ -0,0 +1,170 @@
1
+ import * as React from "react";
2
+ import useEmblaCarousel, { type UseEmblaCarouselType } from "embla-carousel-react";
3
+ import { IconButton } from "./button.js";
4
+ type EmblaApi = NonNullable<UseEmblaCarouselType[1]>;
5
+ export type CarouselApi = EmblaApi;
6
+ export type CarouselOptions = NonNullable<Parameters<typeof useEmblaCarousel>[0]>;
7
+ export type CarouselPlugin = NonNullable<Parameters<typeof useEmblaCarousel>[1]>[number];
8
+ declare const carouselLabels: {
9
+ carousel: string;
10
+ slide: string;
11
+ slideOf: string;
12
+ previous: string;
13
+ next: string;
14
+ goTo: string;
15
+ pause: string;
16
+ play: string;
17
+ counter: string;
18
+ dots: string;
19
+ thumbs: string;
20
+ empty: string;
21
+ loading: string;
22
+ };
23
+ export type CarouselLabels = typeof carouselLabels;
24
+ export type CarouselPreset = "default" | "gallery" | "hero" | "strip";
25
+ type Breakpoint = "base" | "sm" | "md" | "lg" | "xl";
26
+ /**
27
+ * State and commands of the surrounding carousel, for custom controls.
28
+ *
29
+ * ```tsx
30
+ * const { index, count, scrollTo, playing } = useCarousel();
31
+ * ```
32
+ */
33
+ export declare function useCarousel(): {
34
+ api: import("embla-carousel").EmblaCarouselType | undefined;
35
+ index: number;
36
+ count: number;
37
+ canPrev: boolean;
38
+ canNext: boolean;
39
+ playing: boolean;
40
+ scrollTo: (i: number) => void;
41
+ scrollPrev: () => void;
42
+ scrollNext: () => void;
43
+ play: () => void;
44
+ pause: () => void;
45
+ toggle: () => void;
46
+ };
47
+ export declare const carouselVariants: (props?: ({
48
+ preset?: "gallery" | "default" | "hero" | "strip" | null | undefined;
49
+ controls?: "hidden" | "inside" | "outside" | null | undefined;
50
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
51
+ export interface CarouselAutoplayOptions {
52
+ /** ms per slide. Default 6000. */
53
+ delay?: number;
54
+ /** Stop for good after a manual swipe or arrow click. Default `false` (resume after). */
55
+ stopOnInteraction?: boolean;
56
+ }
57
+ export interface CarouselProps extends Omit<React.HTMLAttributes<HTMLElement>, "dir"> {
58
+ /** Required accessible name: "Featured listings", "Customer stories". */
59
+ label: string;
60
+ preset?: CarouselPreset;
61
+ orientation?: "horizontal" | "vertical";
62
+ /** Slides visible at once, or per breakpoint (`{ base: 1, md: 2, lg: 3 }`), or `"auto"` (slide sets its width). */
63
+ slidesPerView?: number | "auto" | Partial<Record<Breakpoint, number>>;
64
+ /** Space between slides, from `--gap`. */
65
+ gap?: "none" | "sm" | "md" | "lg";
66
+ loop?: boolean;
67
+ align?: "start" | "center";
68
+ /** `fade` cross-fades (one slide per view). Reduced motion: instant. */
69
+ transition?: "slide" | "fade";
70
+ /** Advance on a timer. A pause button is always rendered; off under reduced motion. */
71
+ autoplay?: boolean | CarouselAutoplayOptions;
72
+ /** Arrow placement. Default: `inside` for hero / gallery, `outside` otherwise. */
73
+ controls?: "inside" | "outside" | "hidden";
74
+ index?: number;
75
+ defaultIndex?: number;
76
+ onIndexChange?: (index: number) => void;
77
+ /** First slide shows a skeleton. */
78
+ loading?: boolean;
79
+ /** Escape hatch: raw engine options / plugins. */
80
+ options?: CarouselOptions;
81
+ plugins?: CarouselPlugin[];
82
+ /** Receives the engine API once ready. */
83
+ setApi?: (api: CarouselApi | undefined) => void;
84
+ labels?: Partial<CarouselLabels>;
85
+ }
86
+ /**
87
+ * One scrolling core for panels and websites: card sliders, hero slider, gallery with thumbnails,
88
+ * KPI strip. WAI-ARIA carousel pattern, arrows / Home / End when focus is inside, a mandatory
89
+ * pause button with autoplay, `inert` off-screen slides, RTL-aware.
90
+ *
91
+ * ```tsx
92
+ * <Carousel label="Featured stays" slidesPerView={{ base: 1, md: 2, lg: 3 }}>
93
+ * <CarouselViewport>
94
+ * {stays.map((s) => <CarouselSlide key={s.id}>…</CarouselSlide>)}
95
+ * </CarouselViewport>
96
+ * <CarouselDots />
97
+ * </Carousel>
98
+ * ```
99
+ */
100
+ export declare const Carousel: React.ForwardRefExoticComponent<CarouselProps & React.RefAttributes<HTMLElement>>;
101
+ export interface CarouselViewportProps extends React.HTMLAttributes<HTMLDivElement> {
102
+ /** Built-in previous / next arrows on the stage. Default `true` (hidden when `controls="hidden"` or one slide). */
103
+ arrows?: boolean;
104
+ /** Built-in pause button when autoplay is on. Turn off only if you render `CarouselPlayPause` yourself. */
105
+ playPause?: boolean;
106
+ /** Shown when there are no slides. */
107
+ empty?: React.ReactNode;
108
+ /** Class of the scrolling track (the flex row of slides). */
109
+ containerClassName?: string;
110
+ }
111
+ /**
112
+ * The clipping viewport and the slide track. Children are `CarouselSlide`s. Renders the arrows
113
+ * (and the pause button with autoplay) on the stage, so they line up with the slides.
114
+ */
115
+ export declare const CarouselViewport: React.ForwardRefExoticComponent<CarouselViewportProps & React.RefAttributes<HTMLDivElement>>;
116
+ export interface CarouselSlideProps extends React.HTMLAttributes<HTMLDivElement> {
117
+ }
118
+ /** One slide: `role="group"`, `aria-roledescription="slide"`, labelled "3 of 7"; `inert` while off-screen. */
119
+ export declare const CarouselSlide: React.ForwardRefExoticComponent<CarouselSlideProps & React.RefAttributes<HTMLDivElement>>;
120
+ type ArrowProps = Omit<React.ComponentPropsWithoutRef<typeof IconButton>, "label" | "children"> & {
121
+ label?: string;
122
+ children?: React.ReactNode;
123
+ };
124
+ /** Previous slide. Disabled at the start (unless `loop`). */
125
+ export declare function CarouselPrev(props: ArrowProps): React.JSX.Element;
126
+ /** Next slide. Disabled at the end (unless `loop`). */
127
+ export declare function CarouselNext(props: ArrowProps): React.JSX.Element;
128
+ export interface CarouselDotsProps extends React.HTMLAttributes<HTMLDivElement> {
129
+ }
130
+ /** One button per slide; the current one is `aria-current` and painted with `--accent`. */
131
+ export declare const CarouselDots: React.ForwardRefExoticComponent<CarouselDotsProps & React.RefAttributes<HTMLDivElement>>;
132
+ export interface CarouselThumbsProps extends React.HTMLAttributes<HTMLDivElement> {
133
+ /** One thumbnail per slide (URL or `{ src, alt }`). */
134
+ items: (string | {
135
+ src: string;
136
+ alt?: string;
137
+ })[];
138
+ /** Thumbnail box ratio. Default 4/3. */
139
+ aspect?: number;
140
+ /** Center the row while it fits (it still scrolls when it overflows). Default `"start"`. */
141
+ align?: "start" | "center";
142
+ }
143
+ /** A row of thumbnail buttons under a gallery carousel; the selected one gets a `--ring` border. */
144
+ export declare const CarouselThumbs: React.ForwardRefExoticComponent<CarouselThumbsProps & React.RefAttributes<HTMLDivElement>>;
145
+ export interface CarouselPlayPauseProps extends Omit<ArrowProps, "onClick"> {
146
+ }
147
+ /** Pause / resume autoplay. Rendered automatically on the stage while autoplay is on. */
148
+ export declare function CarouselPlayPause({ className, size, ...props }: CarouselPlayPauseProps): React.JSX.Element | null;
149
+ export interface CarouselCounterProps extends React.HTMLAttributes<HTMLSpanElement> {
150
+ }
151
+ /** "3 / 7" in the locale's digits. */
152
+ export declare const CarouselCounter: React.ForwardRefExoticComponent<CarouselCounterProps & React.RefAttributes<HTMLSpanElement>>;
153
+ export interface MarqueeProps extends React.HTMLAttributes<HTMLDivElement> {
154
+ /** Accessible name of the list ("Customers"). */
155
+ label: string;
156
+ /** Seconds per loop. Default 40. */
157
+ duration?: number;
158
+ reverse?: boolean;
159
+ /** Pause while hovered or focused. Default `true`. */
160
+ pauseOnHover?: boolean;
161
+ /** Fade the edges. Default `true`. */
162
+ fade?: boolean;
163
+ gap?: "sm" | "md" | "lg";
164
+ }
165
+ /**
166
+ * Endless logo band in pure CSS: no JS, renders with SSR. The items are listed once for assistive
167
+ * tech; a duplicate track (aria-hidden) closes the loop. Reduced motion: static, scrollable row.
168
+ */
169
+ export declare function Marquee({ label, duration, reverse, pauseOnHover, fade, gap, className, style, children, ...props }: MarqueeProps): React.JSX.Element;
170
+ export {};
@@ -0,0 +1,348 @@
1
+ "use client";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import useEmblaCarousel from "embla-carousel-react";
5
+ import Autoplay from "embla-carousel-autoplay";
6
+ import Fade from "embla-carousel-fade";
7
+ import { cva } from "class-variance-authority";
8
+ import { ChevronLeft, ChevronRight, ChevronUp, ChevronDown, Pause, Play } from "lucide-react";
9
+ import { cn } from "../lib/cn.js";
10
+ import { useLabels } from "../lib/labels.js";
11
+ import { useLocale } from "../lib/locale.js";
12
+ import { useReducedMotion } from "../lib/use-reduced-motion.js";
13
+ import { useControllableState, useIsomorphicLayoutEffect } from "../lib/use-controllable-state.js";
14
+ import { IconButton } from "./button.js";
15
+ import { Skeleton } from "./skeleton.js";
16
+ const carouselLabels = {
17
+ carousel: "carousel",
18
+ slide: "slide",
19
+ slideOf: "{index} of {total}",
20
+ previous: "Previous slide",
21
+ next: "Next slide",
22
+ goTo: "Go to slide {index}",
23
+ pause: "Pause autoplay",
24
+ play: "Start autoplay",
25
+ counter: "Slide {index} of {total}",
26
+ dots: "Choose slide",
27
+ thumbs: "Slide thumbnails",
28
+ empty: "Nothing to show yet",
29
+ loading: "Loading slides",
30
+ };
31
+ const CarouselContext = React.createContext(null);
32
+ function useCarouselContext(part) {
33
+ const ctx = React.useContext(CarouselContext);
34
+ if (!ctx)
35
+ throw new Error(`${part} must be used inside <Carousel>.`);
36
+ return ctx;
37
+ }
38
+ /**
39
+ * State and commands of the surrounding carousel, for custom controls.
40
+ *
41
+ * ```tsx
42
+ * const { index, count, scrollTo, playing } = useCarousel();
43
+ * ```
44
+ */
45
+ export function useCarousel() {
46
+ const c = useCarouselContext("useCarousel");
47
+ return {
48
+ api: c.api,
49
+ index: c.index,
50
+ count: c.count,
51
+ canPrev: c.canPrev,
52
+ canNext: c.canNext,
53
+ playing: c.playing,
54
+ scrollTo: c.scrollTo,
55
+ scrollPrev: c.scrollPrev,
56
+ scrollNext: c.scrollNext,
57
+ play: c.play,
58
+ pause: c.pause,
59
+ toggle: c.playing ? c.pause : c.play,
60
+ };
61
+ }
62
+ /* ------------------------------------------------------------------ */
63
+ /* Root */
64
+ /* ------------------------------------------------------------------ */
65
+ export const carouselVariants = cva("vui-carousel relative min-w-0", {
66
+ variants: {
67
+ preset: {
68
+ default: "",
69
+ /** Thumbnail strip below. */
70
+ gallery: "",
71
+ /** Full-bleed, glass arrows inside, dots over the bottom edge. */
72
+ hero: "vui-carousel-hero overflow-hidden",
73
+ /** Arrows outside, faded edges. */
74
+ strip: "vui-carousel-strip",
75
+ },
76
+ controls: {
77
+ inside: "",
78
+ outside: "vui-carousel-outside",
79
+ hidden: "",
80
+ },
81
+ },
82
+ defaultVariants: { preset: "default", controls: "outside" },
83
+ });
84
+ const GAP = {
85
+ none: "0px",
86
+ sm: "calc(var(--gap) * 0.5)",
87
+ md: "calc(var(--gap) * 0.8)",
88
+ lg: "var(--gap)",
89
+ };
90
+ /**
91
+ * One scrolling core for panels and websites: card sliders, hero slider, gallery with thumbnails,
92
+ * KPI strip. WAI-ARIA carousel pattern, arrows / Home / End when focus is inside, a mandatory
93
+ * pause button with autoplay, `inert` off-screen slides, RTL-aware.
94
+ *
95
+ * ```tsx
96
+ * <Carousel label="Featured stays" slidesPerView={{ base: 1, md: 2, lg: 3 }}>
97
+ * <CarouselViewport>
98
+ * {stays.map((s) => <CarouselSlide key={s.id}>…</CarouselSlide>)}
99
+ * </CarouselViewport>
100
+ * <CarouselDots />
101
+ * </Carousel>
102
+ * ```
103
+ */
104
+ export const Carousel = React.forwardRef(function Carousel({ label, preset = "default", orientation = "horizontal", slidesPerView, gap = "md", loop = false, align = "start", transition = "slide", autoplay = false, controls: controlsProp, index: indexProp, defaultIndex = 0, onIndexChange, loading = false, options, plugins: extraPlugins, setApi, labels, className, style, onKeyDown, children, ...props }, ref) {
105
+ const t = useLabels("carousel", carouselLabels, labels);
106
+ const { dir, locale } = useLocale();
107
+ const reduced = useReducedMotion();
108
+ const controls = controlsProp ?? (preset === "hero" || preset === "gallery" ? "inside" : "outside");
109
+ const fade = transition === "fade" && !reduced;
110
+ const autoplayOn = Boolean(autoplay) && !reduced;
111
+ const autoplayOpts = typeof autoplay === "object" ? autoplay : {};
112
+ const delay = autoplayOpts.delay ?? 6000;
113
+ const stopOnInteraction = autoplayOpts.stopOnInteraction ?? false;
114
+ const [index, setIndex] = useControllableState({ value: indexProp, defaultValue: defaultIndex, onChange: onIndexChange, name: "Carousel" });
115
+ const [snapCount, setSnapCount] = React.useState(0);
116
+ const [slideCount, setSlideCount] = React.useState(0);
117
+ const [canPrev, setCanPrev] = React.useState(false);
118
+ const [canNext, setCanNext] = React.useState(false);
119
+ const [playing, setPlaying] = React.useState(autoplayOn);
120
+ const [inView, setInView] = React.useState(null);
121
+ const [dragging, setDragging] = React.useState(false);
122
+ const plugins = React.useMemo(() => {
123
+ const list = [];
124
+ if (fade)
125
+ list.push(Fade());
126
+ if (autoplayOn)
127
+ list.push(Autoplay({ delay, stopOnInteraction, stopOnMouseEnter: true, stopOnFocusIn: true, playOnInit: true }));
128
+ return [...list, ...(extraPlugins ?? [])];
129
+ }, [fade, autoplayOn, delay, stopOnInteraction, extraPlugins]);
130
+ const [viewportRef, api] = useEmblaCarousel({
131
+ loop,
132
+ align: fade ? "center" : align,
133
+ axis: orientation === "vertical" ? "y" : "x",
134
+ direction: orientation === "horizontal" ? dir : "ltr",
135
+ startIndex: indexProp ?? defaultIndex,
136
+ containScroll: loop ? false : "trimSnaps",
137
+ watchDrag: slideCount > 1,
138
+ duration: 28,
139
+ ...options,
140
+ }, plugins);
141
+ const count = api ? snapCount : slideCount;
142
+ React.useEffect(() => setApi?.(api), [api, setApi]);
143
+ const indexRef = React.useRef(index);
144
+ indexRef.current = index;
145
+ React.useEffect(() => {
146
+ if (!api)
147
+ return;
148
+ const sync = () => {
149
+ const i = api.selectedScrollSnap();
150
+ setCanPrev(api.canScrollPrev());
151
+ setCanNext(api.canScrollNext());
152
+ if (i !== indexRef.current)
153
+ setIndex(i);
154
+ };
155
+ const view = () => setInView(new Set(fade ? [api.selectedScrollSnap()] : api.slidesInView()));
156
+ const down = () => setDragging(true);
157
+ const up = () => setDragging(false);
158
+ const onPlay = () => setPlaying(true);
159
+ const onStop = () => setPlaying(false);
160
+ sync();
161
+ view();
162
+ setSnapCount(api.scrollSnapList().length);
163
+ const reinit = () => {
164
+ setSnapCount(api.scrollSnapList().length);
165
+ sync();
166
+ view();
167
+ };
168
+ api.on("select", sync).on("select", view).on("reInit", reinit).on("slidesInView", view).on("pointerDown", down).on("pointerUp", up).on("settle", up);
169
+ api.on("autoplay:play", onPlay).on("autoplay:stop", onStop);
170
+ setPlaying(Boolean(api.plugins().autoplay?.isPlaying()));
171
+ return () => {
172
+ api.off("select", sync).off("select", view).off("reInit", reinit).off("slidesInView", view).off("pointerDown", down).off("pointerUp", up).off("settle", up);
173
+ api.off("autoplay:play", onPlay).off("autoplay:stop", onStop);
174
+ };
175
+ }, [api, fade, setIndex]);
176
+ // Controlled index → engine.
177
+ React.useEffect(() => {
178
+ if (!api || indexProp === undefined)
179
+ return;
180
+ if (api.selectedScrollSnap() !== indexProp)
181
+ api.scrollTo(indexProp, reduced);
182
+ }, [api, indexProp, reduced]);
183
+ const scrollTo = React.useCallback((i) => {
184
+ if (api)
185
+ api.scrollTo(i, reduced);
186
+ else
187
+ setIndex(i);
188
+ }, [api, reduced, setIndex]);
189
+ const scrollPrev = React.useCallback(() => api?.scrollPrev(reduced), [api, reduced]);
190
+ const scrollNext = React.useCallback(() => api?.scrollNext(reduced), [api, reduced]);
191
+ const play = React.useCallback(() => api?.plugins().autoplay?.play(), [api]);
192
+ const pause = React.useCallback(() => api?.plugins().autoplay?.stop(), [api]);
193
+ const nf = React.useMemo(() => new Intl.NumberFormat(locale), [locale]);
194
+ const total = count;
195
+ const ctx = React.useMemo(() => ({
196
+ api,
197
+ viewportRef,
198
+ index,
199
+ count: total,
200
+ slideCount,
201
+ setSlideCount,
202
+ canPrev: api ? canPrev : index > 0,
203
+ canNext: api ? canNext : index < total - 1,
204
+ playing,
205
+ autoplay: autoplayOn,
206
+ inView,
207
+ preset,
208
+ controls,
209
+ orientation,
210
+ transition: fade ? "fade" : "slide",
211
+ loading,
212
+ t,
213
+ nf,
214
+ scrollTo,
215
+ scrollPrev,
216
+ scrollNext,
217
+ play,
218
+ pause,
219
+ }), [api, viewportRef, index, total, slideCount, canPrev, canNext, playing, autoplayOn, inView, preset, controls, orientation, fade, loading, t, nf, scrollTo, scrollPrev, scrollNext, play, pause]);
220
+ const handleKeyDown = (e) => {
221
+ onKeyDown?.(e);
222
+ if (e.defaultPrevented || e.altKey || e.ctrlKey || e.metaKey)
223
+ return;
224
+ const target = e.target;
225
+ if (target.closest("input, textarea, select, [contenteditable=true], [role=slider], [role=tablist]"))
226
+ return;
227
+ const vertical = orientation === "vertical";
228
+ const back = vertical ? "ArrowUp" : dir === "rtl" ? "ArrowRight" : "ArrowLeft";
229
+ const fwd = vertical ? "ArrowDown" : dir === "rtl" ? "ArrowLeft" : "ArrowRight";
230
+ if (e.key === back)
231
+ scrollPrev();
232
+ else if (e.key === fwd)
233
+ scrollNext();
234
+ else if (e.key === "Home")
235
+ scrollTo(0);
236
+ else if (e.key === "End")
237
+ scrollTo(Math.max(0, total - 1));
238
+ else
239
+ return;
240
+ e.preventDefault();
241
+ };
242
+ const spv = slidesPerView ?? 1;
243
+ const spvVars = {};
244
+ const spvAttrs = {};
245
+ if (spv === "auto")
246
+ spvAttrs["data-spv-auto"] = "";
247
+ else if (typeof spv === "number")
248
+ spvVars["--spv-base"] = String(fade ? 1 : spv);
249
+ else
250
+ for (const [bp, n] of Object.entries(spv)) {
251
+ spvVars[`--spv-${bp}`] = String(fade ? 1 : n);
252
+ if (bp !== "base")
253
+ spvAttrs[`data-spv-${bp}`] = "";
254
+ }
255
+ return (_jsx(CarouselContext.Provider, { value: ctx, children: _jsx("section", { ref: ref, role: "region", "aria-roledescription": t("carousel"), "aria-label": label, "data-slot": "carousel", "data-preset": preset, "data-controls": controls, "data-orientation": orientation, "data-transition": fade ? "fade" : "slide", "data-dragging": dragging ? "" : undefined, "data-single": total <= 1 ? "" : undefined, className: cn(carouselVariants({ preset, controls }), className), style: { "--carousel-gap": fade ? "0px" : GAP[gap], ...spvVars, ...style }, onKeyDown: handleKeyDown, ...spvAttrs, ...props, children: children }) }));
256
+ });
257
+ /* ------------------------------------------------------------------ */
258
+ /* Viewport + slides */
259
+ /* ------------------------------------------------------------------ */
260
+ const SlideIndexContext = React.createContext({ index: -1, total: 0 });
261
+ /**
262
+ * The clipping viewport and the slide track. Children are `CarouselSlide`s. Renders the arrows
263
+ * (and the pause button with autoplay) on the stage, so they line up with the slides.
264
+ */
265
+ export const CarouselViewport = React.forwardRef(function CarouselViewport({ arrows = true, playPause = true, empty, containerClassName, className, children, ...props }, ref) {
266
+ const c = useCarouselContext("CarouselViewport");
267
+ const slides = React.Children.toArray(children).filter(React.isValidElement);
268
+ const n = slides.length;
269
+ const { setSlideCount } = c;
270
+ useIsomorphicLayoutEffect(() => setSlideCount(n), [n, setSlideCount]);
271
+ if (n === 0 && !c.loading) {
272
+ return (_jsx("div", { ref: ref, "data-slot": "carousel-empty", className: cn("flex min-h-40 items-center justify-center rounded-ui border border-dashed border-line text-sm text-fg-muted", className), ...props, children: empty ?? c.t("empty") }));
273
+ }
274
+ const vertical = c.orientation === "vertical";
275
+ const showArrows = arrows && c.controls !== "hidden" && c.slideCount > 1;
276
+ return (_jsxs("div", { "data-slot": "carousel-stage", className: "vui-carousel-stage relative", children: [c.autoplay && playPause ? _jsx(CarouselPlayPause, { className: "vui-carousel-playpause absolute end-3 top-3 z-20" }) : null, _jsx("div", { ref: ref, className: cn("vui-carousel-viewport overflow-hidden", className), "data-slot": "carousel-viewport", ...props, children: _jsx("div", { ref: c.viewportRef, className: "h-full", children: _jsx("div", { "data-slot": "carousel-container", "aria-live": c.playing ? "off" : "polite", "aria-busy": c.loading || undefined, className: cn("vui-carousel-container flex", vertical ? "h-full flex-col" : "touch-pan-y", containerClassName), children: c.loading && n === 0 ? (_jsx(CarouselSlide, { "aria-label": c.t("loading"), children: _jsx(Skeleton, { className: "ui-shimmer aspect-video w-full rounded-ui" }) })) : (slides.map((slide, i) => (_jsx(SlideIndexContext.Provider, { value: { index: i, total: n }, children: slide }, slide.key ?? i)))) }) }) }), showArrows ? (_jsxs(_Fragment, { children: [_jsx(CarouselPrev, { className: cn("vui-carousel-arrow absolute z-10", vertical ? "start-1/2 top-2 -translate-x-1/2 rtl:translate-x-1/2" : "start-3 top-1/2 -translate-y-1/2") }), _jsx(CarouselNext, { className: cn("vui-carousel-arrow absolute z-10", vertical ? "start-1/2 bottom-2 -translate-x-1/2 rtl:translate-x-1/2" : "end-3 top-1/2 -translate-y-1/2") })] })) : null] }));
277
+ });
278
+ /** One slide: `role="group"`, `aria-roledescription="slide"`, labelled "3 of 7"; `inert` while off-screen. */
279
+ export const CarouselSlide = React.forwardRef(function CarouselSlide({ className, children, ...props }, ref) {
280
+ const c = useCarouselContext("CarouselSlide");
281
+ const { index: i, total } = React.useContext(SlideIndexContext);
282
+ const hidden = c.inView !== null && i >= 0 && !c.inView.has(i);
283
+ return (_jsx("div", { ref: ref, role: "group", "aria-roledescription": c.t("slide"), "aria-label": i >= 0 ? c.t("slideOf", { index: c.nf.format(i + 1), total: c.nf.format(Math.max(total, i + 1)) }) : undefined, "data-slot": "carousel-slide", "data-active": i === c.index ? "" : undefined, inert: hidden || undefined, className: cn("vui-carousel-slide min-w-0 shrink-0 grow-0", className), ...props, children: children }));
284
+ });
285
+ function ArrowButton({ direction, label, className, onClick, size, variant, ...props }) {
286
+ const c = useCarouselContext(direction === "prev" ? "CarouselPrev" : "CarouselNext");
287
+ const vertical = c.orientation === "vertical";
288
+ const Icon = direction === "prev" ? (vertical ? ChevronUp : ChevronLeft) : vertical ? ChevronDown : ChevronRight;
289
+ const disabled = direction === "prev" ? !c.canPrev : !c.canNext;
290
+ const overlay = c.controls === "inside" || c.preset === "hero";
291
+ return (_jsx(IconButton, { label: label ?? c.t(direction === "prev" ? "previous" : "next"), tooltip: false, size: size ?? (c.preset === "hero" ? "lg" : "md"), variant: variant ?? (overlay ? "ghost" : "secondary"), "data-slot": direction === "prev" ? "carousel-prev" : "carousel-next", disabled: disabled, onClick: (e) => {
292
+ onClick?.(e);
293
+ if (!e.defaultPrevented)
294
+ (direction === "prev" ? c.scrollPrev : c.scrollNext)();
295
+ }, className: cn("rounded-full!", overlay && "surface-popover hover:bg-popover", !vertical && "rtl:[&_svg]:-scale-x-100", className), ...props, children: _jsx(Icon, { "aria-hidden": true }) }));
296
+ }
297
+ /** Previous slide. Disabled at the start (unless `loop`). */
298
+ export function CarouselPrev(props) {
299
+ return _jsx(ArrowButton, { direction: "prev", ...props });
300
+ }
301
+ /** Next slide. Disabled at the end (unless `loop`). */
302
+ export function CarouselNext(props) {
303
+ return _jsx(ArrowButton, { direction: "next", ...props });
304
+ }
305
+ /** One button per slide; the current one is `aria-current` and painted with `--accent`. */
306
+ export const CarouselDots = React.forwardRef(function CarouselDots({ className, ...props }, ref) {
307
+ const c = useCarouselContext("CarouselDots");
308
+ if (c.count <= 1)
309
+ return null;
310
+ return (_jsx("div", { ref: ref, role: "group", "aria-label": c.t("dots"), "data-slot": "carousel-dots", className: cn("vui-carousel-dots flex items-center justify-center gap-1", c.preset === "hero" ? "absolute inset-x-0 bottom-4 z-10" : "mt-4", className), ...props, children: Array.from({ length: c.count }, (_, i) => (_jsx("button", { type: "button", "aria-label": c.t("goTo", { index: c.nf.format(i + 1) }), "aria-current": i === c.index ? "true" : undefined, "data-slot": "carousel-dot", onClick: () => c.scrollTo(i), className: "vui-carousel-dot focus-ring group/dot relative flex h-6 min-w-6 items-center justify-center rounded-full", children: _jsx("span", { "aria-hidden": true, className: "block h-1.5 rounded-full" }) }, i))) }));
311
+ });
312
+ /** A row of thumbnail buttons under a gallery carousel; the selected one gets a `--ring` border. */
313
+ export const CarouselThumbs = React.forwardRef(function CarouselThumbs({ items, aspect = 4 / 3, align = "start", className, ...props }, ref) {
314
+ const c = useCarouselContext("CarouselThumbs");
315
+ const listRef = React.useRef(null);
316
+ React.useEffect(() => {
317
+ const el = listRef.current?.querySelector(`[data-index="${c.index}"]`);
318
+ el?.scrollIntoView?.({ block: "nearest", inline: "nearest", behavior: "smooth" });
319
+ }, [c.index]);
320
+ return (_jsx("div", { ref: ref, role: "group", "aria-label": c.t("thumbs"), "data-slot": "carousel-thumbs", className: cn("mt-3", className), ...props, children: _jsx("div", { ref: listRef, className: cn("vui-carousel-thumbs-track scrollbar-none flex gap-2 overflow-x-auto p-1", align === "center" && "[&>:first-child]:ms-auto [&>:last-child]:me-auto"), children: items.map((item, i) => {
321
+ const src = typeof item === "string" ? item : item.src;
322
+ const alt = typeof item === "string" ? "" : item.alt ?? "";
323
+ return (_jsx("button", { type: "button", "data-index": i, "data-slot": "carousel-thumb", "aria-label": c.t("goTo", { index: c.nf.format(i + 1) }) + (alt ? `: ${alt}` : ""), "aria-current": i === c.index ? "true" : undefined, onClick: () => c.scrollTo(i), className: "vui-carousel-thumb focus-ring relative w-20 shrink-0 overflow-hidden rounded-ui-sm bg-skeleton sm:w-24", style: { aspectRatio: String(aspect) }, children: _jsx("img", { src: src, alt: "", loading: "lazy", decoding: "async", className: "absolute inset-0 size-full object-cover" }) }, i));
324
+ }) }) }));
325
+ });
326
+ /** Pause / resume autoplay. Rendered automatically on the stage while autoplay is on. */
327
+ export function CarouselPlayPause({ className, size, ...props }) {
328
+ const c = useCarouselContext("CarouselPlayPause");
329
+ if (!c.autoplay)
330
+ return null;
331
+ return (_jsx(IconButton, { label: c.t(c.playing ? "pause" : "play"), tooltip: false, size: size ?? "sm", variant: "ghost", "data-slot": "carousel-playpause", "aria-pressed": undefined, onClick: c.playing ? c.pause : c.play, className: cn("surface-popover rounded-full! hover:bg-popover", className), ...props, children: c.playing ? _jsx(Pause, { "aria-hidden": true }) : _jsx(Play, { "aria-hidden": true }) }));
332
+ }
333
+ /** "3 / 7" in the locale's digits. */
334
+ export const CarouselCounter = React.forwardRef(function CarouselCounter({ className, ...props }, ref) {
335
+ const c = useCarouselContext("CarouselCounter");
336
+ if (c.count === 0)
337
+ return null;
338
+ return (_jsxs("span", { ref: ref, "data-slot": "carousel-counter", className: cn("tabular text-[13px] text-fg-muted", className), ...props, children: [_jsx("span", { className: "sr-only", children: c.t("counter", { index: c.nf.format(c.index + 1), total: c.nf.format(c.count) }) }), _jsxs("span", { "aria-hidden": true, children: [_jsx("span", { className: "font-medium text-fg", children: c.nf.format(c.index + 1) }), _jsx("span", { className: "mx-1 text-fg-subtle", children: "/" }), c.nf.format(c.count)] })] }));
339
+ });
340
+ /**
341
+ * Endless logo band in pure CSS: no JS, renders with SSR. The items are listed once for assistive
342
+ * tech; a duplicate track (aria-hidden) closes the loop. Reduced motion: static, scrollable row.
343
+ */
344
+ export function Marquee({ label, duration = 40, reverse, pauseOnHover = true, fade = true, gap = "lg", className, style, children, ...props }) {
345
+ const items = React.Children.toArray(children);
346
+ const track = (hidden) => (_jsx("ul", { "aria-hidden": hidden || undefined, "aria-label": hidden ? undefined : label, className: "vui-marquee-track flex shrink-0 items-center", children: items.map((child, i) => (_jsx("li", { className: "flex shrink-0 items-center", children: child }, i))) }));
347
+ return (_jsxs("div", { "data-slot": "marquee", "data-reverse": reverse ? "" : undefined, "data-pause-on-hover": pauseOnHover ? "" : undefined, "data-fade": fade ? "" : undefined, className: cn("vui-marquee flex overflow-hidden", className), style: { "--marquee-duration": `${duration}s`, "--marquee-gap": GAP[gap], ...style }, ...props, children: [track(false), track(true)] }));
348
+ }
@@ -0,0 +1,78 @@
1
+ import * as React from "react";
2
+ import { Checkbox as CheckboxPrimitive } from "radix-ui";
3
+ export type CheckboxCheckedState = boolean | "indeterminate";
4
+ export declare const checkboxVariants: (props?: ({
5
+ size?: "sm" | "md" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export interface CheckboxProps extends Omit<React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>, "checked" | "defaultChecked" | "onCheckedChange" | "children"> {
8
+ checked?: CheckboxCheckedState;
9
+ defaultChecked?: CheckboxCheckedState;
10
+ onCheckedChange?: (checked: CheckboxCheckedState) => void;
11
+ /** Text next to the box; the whole row is clickable. */
12
+ label?: React.ReactNode;
13
+ /** Secondary line under the label (linked with `aria-describedby`). */
14
+ description?: React.ReactNode;
15
+ /** 16 / 18 px box. Default `"md"`. */
16
+ size?: "sm" | "md";
17
+ /** `"card"`: a bordered, selectable tile — module pickers, plan add-ons. Needs `label`. */
18
+ variant?: "default" | "card";
19
+ /** Leading icon / logo inside a card. */
20
+ icon?: React.ReactNode;
21
+ /** Invalid look + `aria-invalid` (a surrounding Field with `error` sets it for you). */
22
+ invalid?: boolean;
23
+ /** Visible and focusable, but the value can't change (`aria-readonly`). */
24
+ readOnly?: boolean;
25
+ /** Classes for the box itself when `label` is used (`className` goes on the row). */
26
+ controlClassName?: string;
27
+ }
28
+ /**
29
+ * Yes/no and multi-select: "Allow comments", row selection, permissions, consent.
30
+ * Built on Radix Checkbox (tri-state, hidden input with `name`). Reads Field context.
31
+ *
32
+ * ```tsx
33
+ * <Checkbox label="Allow comments" description="Readers can reply below the post." defaultChecked />
34
+ * <Checkbox checked={some ? "indeterminate" : all} onCheckedChange={toggleAll} aria-label="Select all rows" />
35
+ * <Field label="I accept the terms" orientation="horizontal" error={err}><Checkbox name="terms" /></Field>
36
+ * ```
37
+ */
38
+ export declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLButtonElement>>;
39
+ export interface CheckboxGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "defaultValue" | "onChange" | "dir"> {
40
+ value?: string[];
41
+ defaultValue?: string[];
42
+ onValueChange?: (value: string[]) => void;
43
+ /** Form name; every checked item submits one entry (`formData.getAll(name)`). */
44
+ name?: string;
45
+ /** Shorthand for the items. Or compose `CheckboxGroupItem` children. */
46
+ items?: {
47
+ value: string;
48
+ label: React.ReactNode;
49
+ description?: React.ReactNode;
50
+ icon?: React.ReactNode;
51
+ disabled?: boolean;
52
+ }[];
53
+ orientation?: "vertical" | "horizontal";
54
+ /** `"card"` lays the items out as selectable tiles in a responsive grid. */
55
+ variant?: "default" | "card";
56
+ size?: "sm" | "md";
57
+ disabled?: boolean;
58
+ readOnly?: boolean;
59
+ invalid?: boolean;
60
+ required?: boolean;
61
+ }
62
+ /**
63
+ * Several checkboxes that share one array value: notification channels, modules, permissions.
64
+ * `role="group"`, labelled by the surrounding Field / Fieldset.
65
+ *
66
+ * ```tsx
67
+ * <Field label="Notify me by">
68
+ * <CheckboxGroup name="channels" defaultValue={["email"]} items={[{ value: "email", label: "Email" }, { value: "sms", label: "SMS" }]} />
69
+ * </Field>
70
+ * ```
71
+ */
72
+ export declare const CheckboxGroup: React.ForwardRefExoticComponent<CheckboxGroupProps & React.RefAttributes<HTMLDivElement>>;
73
+ export interface CheckboxGroupItemProps extends Omit<CheckboxProps, "checked" | "defaultChecked" | "value"> {
74
+ /** The string added to the group value when checked. */
75
+ value: string;
76
+ }
77
+ /** One option inside a `CheckboxGroup`. */
78
+ export declare const CheckboxGroupItem: React.ForwardRefExoticComponent<CheckboxGroupItemProps & React.RefAttributes<HTMLButtonElement>>;