@vamos-ui/react 0.0.0-stage → 0.3.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 (704) 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 +101 -0
  58. package/dist/blocks/site/_kit-1.js +137 -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 +113 -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 +52 -0
  85. package/dist/blocks/site/feature-grid.d.ts +46 -0
  86. package/dist/blocks/site/feature-grid.js +50 -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 +48 -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 +73 -0
  97. package/dist/blocks/site/logo-strip.d.ts +44 -0
  98. package/dist/blocks/site/logo-strip.js +27 -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 +56 -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 +83 -0
  115. package/dist/blocks/site/process.d.ts +36 -0
  116. package/dist/blocks/site/process.js +42 -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 +108 -0
  160. package/dist/blocks/site/site-shell.js +254 -0
  161. package/dist/blocks/site/stats-band.d.ts +42 -0
  162. package/dist/blocks/site/stats-band.js +45 -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 +66 -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 +12 -0
  180. package/dist/business/index.js +22 -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/business/signer-status.d.ts +53 -0
  194. package/dist/business/signer-status.js +76 -0
  195. package/dist/charts/area-chart.d.ts +35 -0
  196. package/dist/charts/area-chart.js +33 -0
  197. package/dist/charts/bar-chart.d.ts +27 -0
  198. package/dist/charts/bar-chart.js +46 -0
  199. package/dist/charts/bar-list.d.ts +47 -0
  200. package/dist/charts/bar-list.js +60 -0
  201. package/dist/charts/chart-shell.d.ts +173 -0
  202. package/dist/charts/chart-shell.js +205 -0
  203. package/dist/charts/chart.d.ts +73 -0
  204. package/dist/charts/chart.js +106 -0
  205. package/dist/charts/combo-chart.d.ts +29 -0
  206. package/dist/charts/combo-chart.js +47 -0
  207. package/dist/charts/donut-chart.d.ts +33 -0
  208. package/dist/charts/donut-chart.js +113 -0
  209. package/dist/charts/funnel.d.ts +51 -0
  210. package/dist/charts/funnel.js +69 -0
  211. package/dist/charts/gauge.d.ts +62 -0
  212. package/dist/charts/gauge.js +104 -0
  213. package/dist/charts/heatmap.d.ts +81 -0
  214. package/dist/charts/heatmap.js +338 -0
  215. package/dist/charts/index.d.ts +12 -0
  216. package/dist/charts/index.js +14 -0
  217. package/dist/charts/line-chart.d.ts +21 -0
  218. package/dist/charts/line-chart.js +36 -0
  219. package/dist/charts/test-utils.d.ts +2 -0
  220. package/dist/charts/test-utils.js +38 -0
  221. package/dist/charts/utils.d.ts +130 -0
  222. package/dist/charts/utils.js +262 -0
  223. package/dist/components/_qr-core.d.ts +26 -0
  224. package/dist/components/_qr-core.js +376 -0
  225. package/dist/components/accordion.d.ts +47 -0
  226. package/dist/components/accordion.js +70 -0
  227. package/dist/components/activity-timeline.d.ts +149 -0
  228. package/dist/components/activity-timeline.js +122 -0
  229. package/dist/components/address-field.d.ts +116 -0
  230. package/dist/components/address-field.js +219 -0
  231. package/dist/components/alert-dialog.d.ts +99 -0
  232. package/dist/components/alert-dialog.js +192 -0
  233. package/dist/components/alert.d.ts +42 -0
  234. package/dist/components/alert.js +82 -0
  235. package/dist/components/app-shell.d.ts +159 -0
  236. package/dist/components/app-shell.js +289 -0
  237. package/dist/components/attachment-list.d.ts +96 -0
  238. package/dist/components/attachment-list.js +196 -0
  239. package/dist/components/audit-log.d.ts +150 -0
  240. package/dist/components/audit-log.js +205 -0
  241. package/dist/components/avatar.d.ts +87 -0
  242. package/dist/components/avatar.js +126 -0
  243. package/dist/components/backup-codes.d.ts +42 -0
  244. package/dist/components/backup-codes.js +67 -0
  245. package/dist/components/badge.d.ts +41 -0
  246. package/dist/components/badge.js +68 -0
  247. package/dist/components/breadcrumb.d.ts +78 -0
  248. package/dist/components/breadcrumb.js +106 -0
  249. package/dist/components/button-group.d.ts +52 -0
  250. package/dist/components/button-group.js +77 -0
  251. package/dist/components/button.d.ts +58 -0
  252. package/dist/components/button.js +107 -0
  253. package/dist/components/calendar.d.ts +240 -0
  254. package/dist/components/calendar.js +483 -0
  255. package/dist/components/card.d.ts +66 -0
  256. package/dist/components/card.js +76 -0
  257. package/dist/components/carousel.d.ts +170 -0
  258. package/dist/components/carousel.js +348 -0
  259. package/dist/components/checkbox.d.ts +78 -0
  260. package/dist/components/checkbox.js +138 -0
  261. package/dist/components/color-picker.d.ts +112 -0
  262. package/dist/components/color-picker.js +235 -0
  263. package/dist/components/combobox.d.ts +136 -0
  264. package/dist/components/combobox.js +294 -0
  265. package/dist/components/command.d.ts +281 -0
  266. package/dist/components/command.js +498 -0
  267. package/dist/components/comment-thread.d.ts +252 -0
  268. package/dist/components/comment-thread.js +449 -0
  269. package/dist/components/context-menu.d.ts +77 -0
  270. package/dist/components/context-menu.js +82 -0
  271. package/dist/components/currency-input.d.ts +43 -0
  272. package/dist/components/currency-input.js +85 -0
  273. package/dist/components/date-picker.d.ts +141 -0
  274. package/dist/components/date-picker.js +241 -0
  275. package/dist/components/date-range-picker.d.ts +91 -0
  276. package/dist/components/date-range-picker.js +251 -0
  277. package/dist/components/description-list.d.ts +92 -0
  278. package/dist/components/description-list.js +42 -0
  279. package/dist/components/dialog.d.ts +139 -0
  280. package/dist/components/dialog.js +185 -0
  281. package/dist/components/dropdown-menu.d.ts +100 -0
  282. package/dist/components/dropdown-menu.js +102 -0
  283. package/dist/components/editor-layout.d.ts +166 -0
  284. package/dist/components/editor-layout.js +237 -0
  285. package/dist/components/empty-state.d.ts +49 -0
  286. package/dist/components/empty-state.js +68 -0
  287. package/dist/components/entity-card.d.ts +83 -0
  288. package/dist/components/entity-card.js +92 -0
  289. package/dist/components/file-upload.d.ts +256 -0
  290. package/dist/components/file-upload.js +490 -0
  291. package/dist/components/formatted-input.d.ts +177 -0
  292. package/dist/components/formatted-input.js +399 -0
  293. package/dist/components/hierarchy-chart.d.ts +190 -0
  294. package/dist/components/hierarchy-chart.js +890 -0
  295. package/dist/components/hover-card.d.ts +21 -0
  296. package/dist/components/hover-card.js +32 -0
  297. package/dist/components/iban-input.d.ts +38 -0
  298. package/dist/components/iban-input.js +112 -0
  299. package/dist/components/id-input.d.ts +65 -0
  300. package/dist/components/id-input.js +130 -0
  301. package/dist/components/image.d.ts +130 -0
  302. package/dist/components/image.js +168 -0
  303. package/dist/components/input-otp.d.ts +62 -0
  304. package/dist/components/input-otp.js +73 -0
  305. package/dist/components/input.d.ts +141 -0
  306. package/dist/components/input.js +187 -0
  307. package/dist/components/item.d.ts +96 -0
  308. package/dist/components/item.js +113 -0
  309. package/dist/components/kbd.d.ts +64 -0
  310. package/dist/components/kbd.js +119 -0
  311. package/dist/components/list-layout.d.ts +144 -0
  312. package/dist/components/list-layout.js +210 -0
  313. package/dist/components/native-select.d.ts +33 -0
  314. package/dist/components/native-select.js +48 -0
  315. package/dist/components/navigation-menu.d.ts +127 -0
  316. package/dist/components/navigation-menu.js +129 -0
  317. package/dist/components/notification-center.d.ts +164 -0
  318. package/dist/components/notification-center.js +399 -0
  319. package/dist/components/page-header.d.ts +60 -0
  320. package/dist/components/page-header.js +60 -0
  321. package/dist/components/pagination.d.ts +121 -0
  322. package/dist/components/pagination.js +174 -0
  323. package/dist/components/phone-input.d.ts +49 -0
  324. package/dist/components/phone-input.js +266 -0
  325. package/dist/components/pin-map.d.ts +58 -0
  326. package/dist/components/pin-map.js +167 -0
  327. package/dist/components/popover.d.ts +38 -0
  328. package/dist/components/popover.js +69 -0
  329. package/dist/components/progress.d.ts +79 -0
  330. package/dist/components/progress.js +97 -0
  331. package/dist/components/qr-code.d.ts +36 -0
  332. package/dist/components/qr-code.js +27 -0
  333. package/dist/components/radio-group.d.ts +43 -0
  334. package/dist/components/radio-group.js +81 -0
  335. package/dist/components/record-detail-layout.d.ts +167 -0
  336. package/dist/components/record-detail-layout.js +233 -0
  337. package/dist/components/record-picker.d.ts +199 -0
  338. package/dist/components/record-picker.js +650 -0
  339. package/dist/components/resizable.d.ts +50 -0
  340. package/dist/components/resizable.js +88 -0
  341. package/dist/components/scroll-area.d.ts +40 -0
  342. package/dist/components/scroll-area.js +56 -0
  343. package/dist/components/select.d.ts +126 -0
  344. package/dist/components/select.js +137 -0
  345. package/dist/components/separator.d.ts +31 -0
  346. package/dist/components/separator.js +41 -0
  347. package/dist/components/settings-layout.d.ts +134 -0
  348. package/dist/components/settings-layout.js +180 -0
  349. package/dist/components/sheet.d.ts +103 -0
  350. package/dist/components/sheet.js +165 -0
  351. package/dist/components/sidebar.d.ts +171 -0
  352. package/dist/components/sidebar.js +421 -0
  353. package/dist/components/signature-pad.d.ts +85 -0
  354. package/dist/components/signature-pad.js +283 -0
  355. package/dist/components/skeleton.d.ts +64 -0
  356. package/dist/components/skeleton.js +53 -0
  357. package/dist/components/sla-timer.d.ts +75 -0
  358. package/dist/components/sla-timer.js +142 -0
  359. package/dist/components/slider.d.ts +57 -0
  360. package/dist/components/slider.js +133 -0
  361. package/dist/components/slug-input.d.ts +69 -0
  362. package/dist/components/slug-input.js +201 -0
  363. package/dist/components/sparkline.d.ts +54 -0
  364. package/dist/components/sparkline.js +122 -0
  365. package/dist/components/spinner.d.ts +34 -0
  366. package/dist/components/spinner.js +34 -0
  367. package/dist/components/stat.d.ts +135 -0
  368. package/dist/components/stat.js +130 -0
  369. package/dist/components/status-picker.d.ts +107 -0
  370. package/dist/components/status-picker.js +175 -0
  371. package/dist/components/stepper.d.ts +86 -0
  372. package/dist/components/stepper.js +103 -0
  373. package/dist/components/switch.d.ts +34 -0
  374. package/dist/components/switch.js +70 -0
  375. package/dist/components/table.d.ts +101 -0
  376. package/dist/components/table.js +72 -0
  377. package/dist/components/tabs.d.ts +103 -0
  378. package/dist/components/tabs.js +173 -0
  379. package/dist/components/tag-input.d.ts +77 -0
  380. package/dist/components/tag-input.js +305 -0
  381. package/dist/components/task-list.d.ts +89 -0
  382. package/dist/components/task-list.js +238 -0
  383. package/dist/components/time-picker.d.ts +119 -0
  384. package/dist/components/time-picker.js +399 -0
  385. package/dist/components/toast.d.ts +87 -0
  386. package/dist/components/toast.js +142 -0
  387. package/dist/components/toggle.d.ts +77 -0
  388. package/dist/components/toggle.js +109 -0
  389. package/dist/components/tooltip.d.ts +69 -0
  390. package/dist/components/tooltip.js +105 -0
  391. package/dist/components/top-bar.d.ts +87 -0
  392. package/dist/components/top-bar.js +99 -0
  393. package/dist/components/tour.d.ts +60 -0
  394. package/dist/components/tour.js +139 -0
  395. package/dist/components/tree-select.d.ts +89 -0
  396. package/dist/components/tree-select.js +243 -0
  397. package/dist/components/tree-view.d.ts +109 -0
  398. package/dist/components/tree-view.js +170 -0
  399. package/dist/components/typography.d.ts +107 -0
  400. package/dist/components/typography.js +128 -0
  401. package/dist/components/user-picker.d.ts +89 -0
  402. package/dist/components/user-picker.js +162 -0
  403. package/dist/components/version-history.d.ts +191 -0
  404. package/dist/components/version-history.js +431 -0
  405. package/dist/data-table/csv.d.ts +27 -0
  406. package/dist/data-table/csv.js +68 -0
  407. package/dist/data-table/data-table.d.ts +423 -0
  408. package/dist/data-table/data-table.js +1259 -0
  409. package/dist/data-table/filter-bar.d.ts +146 -0
  410. package/dist/data-table/filter-bar.js +569 -0
  411. package/dist/data-table/filter-fns.d.ts +65 -0
  412. package/dist/data-table/filter-fns.js +382 -0
  413. package/dist/data-table/index.d.ts +8 -0
  414. package/dist/data-table/index.js +9 -0
  415. package/dist/data-table/saved-views.d.ts +100 -0
  416. package/dist/data-table/saved-views.js +251 -0
  417. package/dist/data-table/types.d.ts +168 -0
  418. package/dist/data-table/types.js +87 -0
  419. package/dist/data-table/url-state.d.ts +94 -0
  420. package/dist/data-table/url-state.js +303 -0
  421. package/dist/data-table/view-state.d.ts +16 -0
  422. package/dist/data-table/view-state.js +81 -0
  423. package/dist/editor/_test-setup.d.ts +1 -0
  424. package/dist/editor/_test-setup.js +33 -0
  425. package/dist/editor/block-editor.d.ts +137 -0
  426. package/dist/editor/block-editor.js +280 -0
  427. package/dist/editor/commands.d.ts +31 -0
  428. package/dist/editor/commands.js +150 -0
  429. package/dist/editor/context.d.ts +108 -0
  430. package/dist/editor/context.js +30 -0
  431. package/dist/editor/convert.d.ts +66 -0
  432. package/dist/editor/convert.js +567 -0
  433. package/dist/editor/drag-handle.d.ts +10 -0
  434. package/dist/editor/drag-handle.js +69 -0
  435. package/dist/editor/extensions.d.ts +34 -0
  436. package/dist/editor/extensions.js +239 -0
  437. package/dist/editor/index.d.ts +14 -0
  438. package/dist/editor/index.js +17 -0
  439. package/dist/editor/inserter.d.ts +12 -0
  440. package/dist/editor/inserter.js +88 -0
  441. package/dist/editor/inspector.d.ts +17 -0
  442. package/dist/editor/inspector.js +65 -0
  443. package/dist/editor/items.d.ts +62 -0
  444. package/dist/editor/items.js +195 -0
  445. package/dist/editor/labels.d.ts +119 -0
  446. package/dist/editor/labels.js +130 -0
  447. package/dist/editor/markdown.d.ts +14 -0
  448. package/dist/editor/markdown.js +209 -0
  449. package/dist/editor/menus.d.ts +20 -0
  450. package/dist/editor/menus.js +236 -0
  451. package/dist/editor/nodes.d.ts +14 -0
  452. package/dist/editor/nodes.js +201 -0
  453. package/dist/editor/outline.d.ts +11 -0
  454. package/dist/editor/outline.js +52 -0
  455. package/dist/editor/schema-form.d.ts +64 -0
  456. package/dist/editor/schema-form.js +290 -0
  457. package/dist/editor/slash-menu.d.ts +15 -0
  458. package/dist/editor/slash-menu.js +119 -0
  459. package/dist/fonts/catalog.d.ts +53 -0
  460. package/dist/fonts/catalog.js +121 -0
  461. package/dist/fonts/font-picker.d.ts +70 -0
  462. package/dist/fonts/font-picker.js +225 -0
  463. package/dist/fonts/index.d.ts +6 -0
  464. package/dist/fonts/index.js +7 -0
  465. package/dist/fonts/loader.d.ts +66 -0
  466. package/dist/fonts/loader.js +161 -0
  467. package/dist/fonts/pairing-picker.d.ts +31 -0
  468. package/dist/fonts/pairing-picker.js +81 -0
  469. package/dist/fonts/pairings.d.ts +84 -0
  470. package/dist/fonts/pairings.js +149 -0
  471. package/dist/fonts/provider.d.ts +34 -0
  472. package/dist/fonts/provider.js +51 -0
  473. package/dist/form/index.d.ts +1 -0
  474. package/dist/form/index.js +1 -0
  475. package/dist/format/core.d.ts +149 -0
  476. package/dist/format/core.js +357 -0
  477. package/dist/format/index.d.ts +4 -0
  478. package/dist/format/index.js +5 -0
  479. package/dist/format/use-format.d.ts +1 -0
  480. package/dist/format/use-format.js +3 -0
  481. package/dist/index.d.ts +91 -0
  482. package/dist/index.js +92 -0
  483. package/dist/lib/cn.d.ts +3 -0
  484. package/dist/lib/cn.js +16 -0
  485. package/dist/lib/color.d.ts +64 -0
  486. package/dist/lib/color.js +177 -0
  487. package/dist/lib/compose-refs.d.ts +24 -0
  488. package/dist/lib/compose-refs.js +45 -0
  489. package/dist/lib/data-islands.d.ts +194 -0
  490. package/dist/lib/data-islands.js +368 -0
  491. package/dist/lib/date.d.ts +129 -0
  492. package/dist/lib/date.js +386 -0
  493. package/dist/lib/field-context.d.ts +64 -0
  494. package/dist/lib/field-context.js +62 -0
  495. package/dist/lib/floating-arrow.d.ts +18 -0
  496. package/dist/lib/floating-arrow.js +15 -0
  497. package/dist/lib/islands.d.ts +38 -0
  498. package/dist/lib/islands.js +40 -0
  499. package/dist/lib/labels.d.ts +51 -0
  500. package/dist/lib/labels.js +56 -0
  501. package/dist/lib/layer.d.ts +36 -0
  502. package/dist/lib/layer.js +42 -0
  503. package/dist/lib/locale.d.ts +85 -0
  504. package/dist/lib/locale.js +105 -0
  505. package/dist/lib/menu.d.ts +58 -0
  506. package/dist/lib/menu.js +99 -0
  507. package/dist/lib/message-format.d.ts +20 -0
  508. package/dist/lib/message-format.js +116 -0
  509. package/dist/lib/nav.d.ts +132 -0
  510. package/dist/lib/nav.js +178 -0
  511. package/dist/lib/provider.d.ts +100 -0
  512. package/dist/lib/provider.js +105 -0
  513. package/dist/lib/public.d.ts +23 -0
  514. package/dist/lib/public.js +34 -0
  515. package/dist/lib/sr-name.d.ts +18 -0
  516. package/dist/lib/sr-name.js +17 -0
  517. package/dist/lib/text.d.ts +100 -0
  518. package/dist/lib/text.js +233 -0
  519. package/dist/lib/theme-scope.d.ts +58 -0
  520. package/dist/lib/theme-scope.js +59 -0
  521. package/dist/lib/use-async-list.d.ts +60 -0
  522. package/dist/lib/use-async-list.js +119 -0
  523. package/dist/lib/use-container-width.d.ts +19 -0
  524. package/dist/lib/use-container-width.js +39 -0
  525. package/dist/lib/use-controllable-state.d.ts +33 -0
  526. package/dist/lib/use-controllable-state.js +56 -0
  527. package/dist/lib/use-edge-fade.d.ts +13 -0
  528. package/dist/lib/use-edge-fade.js +43 -0
  529. package/dist/lib/use-formatted-input.d.ts +69 -0
  530. package/dist/lib/use-formatted-input.js +152 -0
  531. package/dist/lib/use-hotkeys.d.ts +80 -0
  532. package/dist/lib/use-hotkeys.js +221 -0
  533. package/dist/lib/use-hover-intent.d.ts +44 -0
  534. package/dist/lib/use-hover-intent.js +119 -0
  535. package/dist/lib/use-media-query.d.ts +21 -0
  536. package/dist/lib/use-media-query.js +28 -0
  537. package/dist/lib/use-reduced-motion.d.ts +8 -0
  538. package/dist/lib/use-reduced-motion.js +13 -0
  539. package/dist/lib/use-tree.d.ts +153 -0
  540. package/dist/lib/use-tree.js +534 -0
  541. package/dist/lib/value-format.d.ts +25 -0
  542. package/dist/lib/value-format.js +56 -0
  543. package/dist/lib/variants.d.ts +131 -0
  544. package/dist/lib/variants.js +109 -0
  545. package/dist/locale-data/core/date.d.ts +24 -0
  546. package/dist/locale-data/core/date.js +68 -0
  547. package/dist/locale-data/core/decimal.d.ts +19 -0
  548. package/dist/locale-data/core/decimal.js +79 -0
  549. package/dist/locale-data/core/holidays.d.ts +30 -0
  550. package/dist/locale-data/core/holidays.js +79 -0
  551. package/dist/locale-data/core/iban.d.ts +29 -0
  552. package/dist/locale-data/core/iban.js +74 -0
  553. package/dist/locale-data/core/index.d.ts +7 -0
  554. package/dist/locale-data/core/index.js +6 -0
  555. package/dist/locale-data/core/types.d.ts +173 -0
  556. package/dist/locale-data/core/types.js +6 -0
  557. package/dist/locale-data/core/week-info.d.ts +23 -0
  558. package/dist/locale-data/core/week-info.js +85 -0
  559. package/dist/locale-data/core/working-days.d.ts +27 -0
  560. package/dist/locale-data/core/working-days.js +133 -0
  561. package/dist/locale-data/index.d.ts +2 -0
  562. package/dist/locale-data/index.js +4 -0
  563. package/dist/locale-data/tr/address-tr.json +1 -0
  564. package/dist/locale-data/tr/address.d.ts +23 -0
  565. package/dist/locale-data/tr/address.js +52 -0
  566. package/dist/locale-data/tr/holidays.d.ts +31 -0
  567. package/dist/locale-data/tr/holidays.js +81 -0
  568. package/dist/locale-data/tr/iban.d.ts +21 -0
  569. package/dist/locale-data/tr/iban.js +45 -0
  570. package/dist/locale-data/tr/id.d.ts +36 -0
  571. package/dist/locale-data/tr/id.js +120 -0
  572. package/dist/locale-data/tr/index.d.ts +12 -0
  573. package/dist/locale-data/tr/index.js +33 -0
  574. package/dist/locale-data/tr/kdv.d.ts +91 -0
  575. package/dist/locale-data/tr/kdv.js +222 -0
  576. package/dist/locales/en.d.ts +2102 -0
  577. package/dist/locales/en.js +2088 -0
  578. package/dist/locales/tr.d.ts +2086 -0
  579. package/dist/locales/tr.js +2087 -0
  580. package/dist/media/focal-point.d.ts +42 -0
  581. package/dist/media/focal-point.js +96 -0
  582. package/dist/media/gallery-layout.d.ts +19 -0
  583. package/dist/media/gallery-layout.js +61 -0
  584. package/dist/media/gallery.d.ts +64 -0
  585. package/dist/media/gallery.js +140 -0
  586. package/dist/media/image-cropper.d.ts +86 -0
  587. package/dist/media/image-cropper.js +170 -0
  588. package/dist/media/image-field.d.ts +115 -0
  589. package/dist/media/image-field.js +212 -0
  590. package/dist/media/index.d.ts +19 -0
  591. package/dist/media/index.js +23 -0
  592. package/dist/media/lightbox.d.ts +82 -0
  593. package/dist/media/lightbox.js +171 -0
  594. package/dist/media/link-preview.d.ts +97 -0
  595. package/dist/media/link-preview.js +177 -0
  596. package/dist/media/media-library.d.ts +244 -0
  597. package/dist/media/media-library.js +776 -0
  598. package/dist/media/media-picker.d.ts +96 -0
  599. package/dist/media/media-picker.js +209 -0
  600. package/dist/media/media-provider.d.ts +23 -0
  601. package/dist/media/media-provider.js +44 -0
  602. package/dist/media/media-utils.d.ts +39 -0
  603. package/dist/media/media-utils.js +145 -0
  604. package/dist/media/memory-adapter.d.ts +22 -0
  605. package/dist/media/memory-adapter.js +162 -0
  606. package/dist/media/rest-adapter.d.ts +90 -0
  607. package/dist/media/rest-adapter.js +208 -0
  608. package/dist/media/serp.d.ts +62 -0
  609. package/dist/media/serp.js +108 -0
  610. package/dist/media/test-fixtures.d.ts +3 -0
  611. package/dist/media/test-fixtures.js +37 -0
  612. package/dist/media/types.d.ts +183 -0
  613. package/dist/media/types.js +3 -0
  614. package/dist/media/use-pan-zoom.d.ts +51 -0
  615. package/dist/media/use-pan-zoom.js +156 -0
  616. package/dist/media/use-upload-queue.d.ts +64 -0
  617. package/dist/media/use-upload-queue.js +115 -0
  618. package/dist/media/video-player.d.ts +135 -0
  619. package/dist/media/video-player.js +319 -0
  620. package/dist/motion/core.d.ts +32 -0
  621. package/dist/motion/core.js +77 -0
  622. package/dist/motion/count-up.d.ts +29 -0
  623. package/dist/motion/count-up.js +92 -0
  624. package/dist/motion/index.d.ts +11 -0
  625. package/dist/motion/index.js +13 -0
  626. package/dist/motion/motion-scope.d.ts +17 -0
  627. package/dist/motion/motion-scope.js +16 -0
  628. package/dist/motion/page-transition.d.ts +33 -0
  629. package/dist/motion/page-transition.js +61 -0
  630. package/dist/motion/parallax.d.ts +37 -0
  631. package/dist/motion/parallax.js +90 -0
  632. package/dist/motion/pointer.d.ts +38 -0
  633. package/dist/motion/pointer.js +117 -0
  634. package/dist/motion/reveal.d.ts +72 -0
  635. package/dist/motion/reveal.js +133 -0
  636. package/dist/motion/scroll-shrink.d.ts +18 -0
  637. package/dist/motion/scroll-shrink.js +47 -0
  638. package/dist/motion/skeleton-swap.d.ts +17 -0
  639. package/dist/motion/skeleton-swap.js +43 -0
  640. package/dist/motion/text-reveal.d.ts +30 -0
  641. package/dist/motion/text-reveal.js +29 -0
  642. package/dist/motion/ticker.d.ts +35 -0
  643. package/dist/motion/ticker.js +16 -0
  644. package/dist/next/index.d.ts +42 -0
  645. package/dist/next/index.js +36 -0
  646. package/dist/render/block-renderer.d.ts +56 -0
  647. package/dist/render/block-renderer.js +137 -0
  648. package/dist/render/index.d.ts +6 -0
  649. package/dist/render/index.js +7 -0
  650. package/dist/render/prepare.d.ts +61 -0
  651. package/dist/render/prepare.js +119 -0
  652. package/dist/scheduler/core/duration.d.ts +83 -0
  653. package/dist/scheduler/core/duration.js +174 -0
  654. package/dist/scheduler/core/gantt.d.ts +63 -0
  655. package/dist/scheduler/core/gantt.js +226 -0
  656. package/dist/scheduler/core/index.d.ts +6 -0
  657. package/dist/scheduler/core/index.js +7 -0
  658. package/dist/scheduler/core/layout.d.ts +97 -0
  659. package/dist/scheduler/core/layout.js +249 -0
  660. package/dist/scheduler/core/time-scale.d.ts +89 -0
  661. package/dist/scheduler/core/time-scale.js +173 -0
  662. package/dist/scheduler/gantt.d.ts +125 -0
  663. package/dist/scheduler/gantt.js +532 -0
  664. package/dist/scheduler/index.d.ts +6 -0
  665. package/dist/scheduler/index.js +7 -0
  666. package/dist/scheduler/resource-calendar.d.ts +218 -0
  667. package/dist/scheduler/resource-calendar.js +661 -0
  668. package/dist/scheduler/scheduler.d.ts +168 -0
  669. package/dist/scheduler/scheduler.js +768 -0
  670. package/dist/scheduler/shared.d.ts +63 -0
  671. package/dist/scheduler/shared.js +145 -0
  672. package/dist/scheduler/time-tracker.d.ts +138 -0
  673. package/dist/scheduler/time-tracker.js +403 -0
  674. package/dist/sortable/core.d.ts +67 -0
  675. package/dist/sortable/core.js +167 -0
  676. package/dist/sortable/index.d.ts +8 -0
  677. package/dist/sortable/index.js +10 -0
  678. package/dist/sortable/kanban-core.d.ts +70 -0
  679. package/dist/sortable/kanban-core.js +67 -0
  680. package/dist/sortable/kanban.d.ts +147 -0
  681. package/dist/sortable/kanban.js +472 -0
  682. package/dist/sortable/sortable-list.d.ts +71 -0
  683. package/dist/sortable/sortable-list.js +76 -0
  684. package/dist/sortable/sortable-tree.d.ts +105 -0
  685. package/dist/sortable/sortable-tree.js +462 -0
  686. package/dist/sortable/sortable.d.ts +188 -0
  687. package/dist/sortable/sortable.js +485 -0
  688. package/dist/sortable/use-pointer-drag.d.ts +75 -0
  689. package/dist/sortable/use-pointer-drag.js +173 -0
  690. package/dist/sortable/use-time-scale.d.ts +11 -0
  691. package/dist/sortable/use-time-scale.js +19 -0
  692. package/dist/styles/base.css +51 -0
  693. package/dist/styles/blocks.css +949 -0
  694. package/dist/styles/calendar.css +642 -0
  695. package/dist/styles/charts.css +264 -0
  696. package/dist/styles/data.css +474 -0
  697. package/dist/styles/editors.css +1022 -0
  698. package/dist/styles/forms.css +406 -0
  699. package/dist/styles/media.css +515 -0
  700. package/dist/styles/motion.css +389 -0
  701. package/dist/styles/navigation.css +293 -0
  702. package/dist/styles/overlays.css +244 -0
  703. package/dist/styles.css +743 -0
  704. package/package.json +160 -4
@@ -0,0 +1,111 @@
1
+ // Contact-form contract: field config, the action state, and a validator the app's server action
2
+ // calls with the same config the form was rendered from. React-free, zod-free, server-safe.
3
+ import { formatMessage } from "../../../lib/message-format.js";
4
+ import { site2Labels } from "./labels-2.js";
5
+ /** Name of the honeypot input. Real visitors never see or fill it. */
6
+ export const HONEYPOT_FIELD = "website";
7
+ /** Hidden render timestamp for the time trap. */
8
+ export const TIMESTAMP_FIELD = "_ts";
9
+ export const PRIVACY_FIELD = "privacy";
10
+ export const MARKETING_FIELD = "marketing";
11
+ const LABEL_KEY = {
12
+ name: "fieldName",
13
+ email: "fieldEmail",
14
+ phone: "fieldPhone",
15
+ company: "fieldCompany",
16
+ subject: "fieldSubject",
17
+ budget: "fieldBudget",
18
+ message: "fieldMessage",
19
+ date: "fieldDate",
20
+ };
21
+ /** The label shown for a field: config label → `labels` → English. */
22
+ export function contactFieldLabel(field, labels) {
23
+ if (field.label)
24
+ return field.label;
25
+ const k = LABEL_KEY[field.name];
26
+ const v = labels ? labels[k] : undefined;
27
+ return typeof v === "string" ? v : site2Labels[k];
28
+ }
29
+ /** True for honeypot hits and submits faster than `minMs` after render (bots). */
30
+ export function isSpam(data, opts = {}) {
31
+ const trap = data.get(HONEYPOT_FIELD);
32
+ if (typeof trap === "string" && trap.trim() !== "")
33
+ return true;
34
+ const ts = Number(data.get(TIMESTAMP_FIELD));
35
+ if (ts > 0 && (opts.now ?? Date.now()) - ts < (opts.minMs ?? 2500))
36
+ return true;
37
+ return false;
38
+ }
39
+ const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/;
40
+ const PHONE_RE = /^\+?[\d\s().-]{7,20}$/;
41
+ /**
42
+ * Validates a submission against the field config the form was rendered with. Call it first in
43
+ * the app's server action — the browser runs it too, but only the server's verdict counts.
44
+ *
45
+ * ```ts
46
+ * "use server";
47
+ * export async function contact(prev: SiteFormState, data: FormData) {
48
+ * const v = validateContactForm(fields, data, { privacyCheckbox: true });
49
+ * if (v.spam) return { status: "success" };
50
+ * if (!v.ok) return v.state;
51
+ * await crm.createLead(v.values);
52
+ * return { status: "success" };
53
+ * }
54
+ * ```
55
+ */
56
+ export function validateContactForm(fields, data, opts = {}) {
57
+ const merged = { ...site2Labels };
58
+ if (opts.labels)
59
+ for (const [k, v] of Object.entries(opts.labels))
60
+ if (typeof v === "string")
61
+ merged[k] = v;
62
+ const t = (k, vars) => formatMessage(merged[k] ?? k, vars, opts.locale ?? "en-US");
63
+ const values = {};
64
+ const errors = {};
65
+ for (const f of fields) {
66
+ const raw = data.get(f.name);
67
+ const v = typeof raw === "string" ? raw.trim() : "";
68
+ values[f.name] = v;
69
+ const label = contactFieldLabel(f, merged);
70
+ const max = f.max ?? (f.name === "message" ? 2000 : 160);
71
+ if (!v) {
72
+ if (f.required)
73
+ errors[f.name] = t("errorRequired", { field: label.toLowerCase() });
74
+ continue;
75
+ }
76
+ if (v.length > max)
77
+ errors[f.name] = t("errorTooLong", { field: label.toLowerCase(), max });
78
+ else if (f.name === "email" && !EMAIL_RE.test(v))
79
+ errors[f.name] = t("errorEmail");
80
+ else if (f.name === "phone" && !PHONE_RE.test(v))
81
+ errors[f.name] = t("errorPhone");
82
+ else if (f.options?.length && !f.options.includes(v))
83
+ errors[f.name] = t("errorRequired", { field: label.toLowerCase() });
84
+ }
85
+ const privacy = data.get(PRIVACY_FIELD) === "on" || data.get(PRIVACY_FIELD) === "true";
86
+ const marketing = data.get(MARKETING_FIELD) === "on" || data.get(MARKETING_FIELD) === "true";
87
+ if (opts.privacyCheckbox && !privacy)
88
+ errors[PRIVACY_FIELD] = t("privacyRequired");
89
+ const spam = isSpam(data, { minMs: opts.spamMinMs });
90
+ const ok = Object.keys(errors).length === 0;
91
+ const state = spam ? { status: "success", ts: Date.now() } : ok ? { status: "success", ts: Date.now() } : { status: "invalid", errors, values, ts: Date.now() };
92
+ return { ok, spam, values, errors, privacy, marketing, state };
93
+ }
94
+ /** HTML constraints for a field (the no-JS path relies on these). */
95
+ export function fieldConstraints(f) {
96
+ const maxLength = f.max ?? (f.name === "message" ? 2000 : 160);
97
+ switch (f.name) {
98
+ case "name":
99
+ return { type: "text", autoComplete: "name", maxLength };
100
+ case "email":
101
+ return { type: "email", autoComplete: "email", inputMode: "email", maxLength };
102
+ case "phone":
103
+ return { type: "tel", autoComplete: "tel", inputMode: "tel", maxLength };
104
+ case "company":
105
+ return { type: "text", autoComplete: "organization", maxLength };
106
+ case "date":
107
+ return { type: "date", maxLength };
108
+ default:
109
+ return { type: "text", maxLength };
110
+ }
111
+ }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * URL helpers of the Site shell: which page and locale a URL (or a link's href) points to,
3
+ * and the href for a page. Pure and server-safe, so server components can build links.
4
+ *
5
+ * ?page=pricing → page "pricing" (search routing, the default)
6
+ * ?page=home#faq → page "home", then scroll to #faq
7
+ * #page=pricing → page "pricing" (hash routing)
8
+ * ?lang=tr → locale "tr", page unchanged
9
+ */
10
+ export type SiteRouting = "search" | "hash" | "memory";
11
+ export interface SiteLocation {
12
+ page?: string;
13
+ locale?: string;
14
+ /** In-page anchor after the page switch (`faq` for `#faq`). */
15
+ anchor?: string;
16
+ }
17
+ export interface SiteRouteParams {
18
+ /** Query/hash key for the page. Default `"page"`. */
19
+ pageParam?: string;
20
+ /** Query key for the locale. Default `"lang"`. */
21
+ localeParam?: string;
22
+ }
23
+ /**
24
+ * The href for an inner page, merged into nothing (relative to the current URL):
25
+ * `sitePageHref("pricing")` → `"?page=pricing"`, `sitePageHref("home", "faq")` → `"?page=home#faq"`.
26
+ */
27
+ export declare function sitePageHref(page: string, anchor?: string, options?: SiteRouteParams & {
28
+ routing?: SiteRouting;
29
+ }): string;
30
+ /** The href that switches the locale: `siteLocaleHref("tr")` → `"?lang=tr"`. */
31
+ export declare const siteLocaleHref: (locale: string, options?: SiteRouteParams) => string;
32
+ /**
33
+ * Reads a link's href as a site location, or `null` when it is not a shell link (a path, an
34
+ * external URL, a plain `#anchor`). Only relative hrefs that start with `?` or `#<pageParam>=`.
35
+ */
36
+ export declare function parseSiteHref(href: string | null | undefined, options?: SiteRouteParams): SiteLocation | null;
37
+ /** Reads the current location (`search` + `hash`) as page and locale. */
38
+ export declare function readSiteLocation(search: string, hash: string, routing: SiteRouting, options?: SiteRouteParams): SiteLocation;
39
+ /**
40
+ * The URL after a change: other query params are kept, the default page and locale are left out
41
+ * so the home page stays at a clean URL.
42
+ */
43
+ export declare function writeSiteLocation(current: {
44
+ pathname: string;
45
+ search: string;
46
+ hash: string;
47
+ }, next: {
48
+ page: string;
49
+ locale: string;
50
+ anchor?: string;
51
+ }, defaults: {
52
+ page: string;
53
+ locale: string;
54
+ }, routing: SiteRouting, options?: SiteRouteParams): string;
@@ -0,0 +1,86 @@
1
+ /**
2
+ * URL helpers of the Site shell: which page and locale a URL (or a link's href) points to,
3
+ * and the href for a page. Pure and server-safe, so server components can build links.
4
+ *
5
+ * ?page=pricing → page "pricing" (search routing, the default)
6
+ * ?page=home#faq → page "home", then scroll to #faq
7
+ * #page=pricing → page "pricing" (hash routing)
8
+ * ?lang=tr → locale "tr", page unchanged
9
+ */
10
+ /**
11
+ * The href for an inner page, merged into nothing (relative to the current URL):
12
+ * `sitePageHref("pricing")` → `"?page=pricing"`, `sitePageHref("home", "faq")` → `"?page=home#faq"`.
13
+ */
14
+ export function sitePageHref(page, anchor, options = {}) {
15
+ const key = options.pageParam ?? "page";
16
+ const enc = encodeURIComponent(page);
17
+ if (options.routing === "hash")
18
+ return `#${key}=${enc}`;
19
+ return `?${key}=${enc}${anchor ? `#${anchor}` : ""}`;
20
+ }
21
+ /** The href that switches the locale: `siteLocaleHref("tr")` → `"?lang=tr"`. */
22
+ export const siteLocaleHref = (locale, options = {}) => `?${options.localeParam ?? "lang"}=${encodeURIComponent(locale)}`;
23
+ /**
24
+ * Reads a link's href as a site location, or `null` when it is not a shell link (a path, an
25
+ * external URL, a plain `#anchor`). Only relative hrefs that start with `?` or `#<pageParam>=`.
26
+ */
27
+ export function parseSiteHref(href, options = {}) {
28
+ if (!href)
29
+ return null;
30
+ const pageKey = options.pageParam ?? "page";
31
+ const langKey = options.localeParam ?? "lang";
32
+ if (href.startsWith(`#${pageKey}=`)) {
33
+ const page = decodeURIComponent(href.slice(pageKey.length + 2));
34
+ return page ? { page } : null;
35
+ }
36
+ if (!href.startsWith("?"))
37
+ return null;
38
+ const hashAt = href.indexOf("#");
39
+ const query = new URLSearchParams(hashAt === -1 ? href.slice(1) : href.slice(1, hashAt));
40
+ const anchor = hashAt === -1 ? undefined : href.slice(hashAt + 1) || undefined;
41
+ const page = query.get(pageKey) ?? undefined;
42
+ const locale = query.get(langKey) ?? undefined;
43
+ if (!page && !locale)
44
+ return null;
45
+ return { page, locale, anchor };
46
+ }
47
+ /** Reads the current location (`search` + `hash`) as page and locale. */
48
+ export function readSiteLocation(search, hash, routing, options = {}) {
49
+ const pageKey = options.pageParam ?? "page";
50
+ const q = new URLSearchParams(search);
51
+ const locale = q.get(options.localeParam ?? "lang") ?? undefined;
52
+ let page;
53
+ if (routing === "hash") {
54
+ const m = new RegExp(`^#${pageKey}=([^&]*)`).exec(hash);
55
+ page = m?.[1] ? decodeURIComponent(m[1]) : undefined;
56
+ }
57
+ else if (routing === "search") {
58
+ page = q.get(pageKey) ?? undefined;
59
+ }
60
+ return { page, locale };
61
+ }
62
+ /**
63
+ * The URL after a change: other query params are kept, the default page and locale are left out
64
+ * so the home page stays at a clean URL.
65
+ */
66
+ export function writeSiteLocation(current, next, defaults, routing, options = {}) {
67
+ const pageKey = options.pageParam ?? "page";
68
+ const langKey = options.localeParam ?? "lang";
69
+ const q = new URLSearchParams(current.search);
70
+ if (next.locale === defaults.locale)
71
+ q.delete(langKey);
72
+ else
73
+ q.set(langKey, next.locale);
74
+ let hash = next.anchor ? `#${next.anchor}` : "";
75
+ if (routing === "search") {
76
+ if (next.page === defaults.page)
77
+ q.delete(pageKey);
78
+ else
79
+ q.set(pageKey, next.page);
80
+ }
81
+ else if (routing === "hash") {
82
+ hash = next.page === defaults.page ? "" : `#${pageKey}=${encodeURIComponent(next.page)}`;
83
+ }
84
+ const qs = q.toString();
85
+ return `${current.pathname}${qs ? `?${qs}` : ""}${hash}`;
86
+ }
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+ import type { CarouselLabels } from "./island-keys.js";
3
+ export interface TestimonialsCarouselProps {
4
+ /** Section header, rendered beside the arrows. */
5
+ header?: React.ReactNode;
6
+ count: number;
7
+ labels: CarouselLabels;
8
+ locale?: string;
9
+ /** One child per slide (server-rendered quotes). */
10
+ children: React.ReactNode;
11
+ className?: string;
12
+ }
13
+ /**
14
+ * Scroll-snap carousel island (~1 KB): native swipe/scroll, arrow buttons, a "3 / 8" counter,
15
+ * ←/→ keys on the track. No autoplay. Slides are labelled groups (WAI-ARIA carousel pattern).
16
+ */
17
+ export declare function TestimonialsCarousel({ header, count, labels, locale, children, className }: TestimonialsCarouselProps): React.JSX.Element;
@@ -0,0 +1,64 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { ArrowLeft, ArrowRight } from "lucide-react";
5
+ import { cn2 as cn } from "./kit-2.js";
6
+ import { formatMessage } from "../../../lib/message-format.js";
7
+ /**
8
+ * Scroll-snap carousel island (~1 KB): native swipe/scroll, arrow buttons, a "3 / 8" counter,
9
+ * ←/→ keys on the track. No autoplay. Slides are labelled groups (WAI-ARIA carousel pattern).
10
+ */
11
+ export function TestimonialsCarousel({ header, count, labels, locale = "en-US", children, className }) {
12
+ const track = React.useRef(null);
13
+ const [current, setCurrent] = React.useState(0);
14
+ const f = (k, v) => formatMessage(labels[k], v, locale);
15
+ const slides = React.Children.toArray(children);
16
+ const slideEls = () => Array.from(track.current?.children ?? []);
17
+ const go = React.useCallback((i) => {
18
+ const el = track.current;
19
+ const target = Array.from(el?.children ?? [])[Math.max(0, Math.min(count - 1, i))];
20
+ if (!el || !target)
21
+ return;
22
+ const rtl = getComputedStyle(el).direction === "rtl";
23
+ const left = rtl ? target.offsetLeft + target.offsetWidth - el.clientWidth : target.offsetLeft - el.offsetLeft;
24
+ const reduce = typeof window.matchMedia === "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
25
+ if (typeof el.scrollTo === "function")
26
+ el.scrollTo({ left, behavior: reduce ? "auto" : "smooth" });
27
+ setCurrent(Math.max(0, Math.min(count - 1, i)));
28
+ }, [count]);
29
+ React.useEffect(() => {
30
+ const el = track.current;
31
+ if (!el || typeof IntersectionObserver === "undefined")
32
+ return;
33
+ const io = new IntersectionObserver((entries) => {
34
+ const visible = entries.filter((e) => e.isIntersecting && e.intersectionRatio > 0.6);
35
+ if (visible.length) {
36
+ const first = visible.map((e) => slideEls().indexOf(e.target)).sort((a, b) => a - b)[0];
37
+ if (first !== undefined && first >= 0)
38
+ setCurrent(first);
39
+ }
40
+ }, { root: el, threshold: [0.6] });
41
+ for (const s of slideEls())
42
+ io.observe(s);
43
+ return () => io.disconnect();
44
+ }, [count]);
45
+ return (_jsxs("div", { role: "region", "aria-roledescription": labels.carousel, "aria-label": labels.carousel, className: cn("vb-carousel flex flex-col gap-10", className), children: [_jsxs("div", { className: "flex flex-col gap-6 @2xl:flex-row @2xl:items-end @2xl:justify-between", children: [header ?? _jsx("span", {}), _jsxs("div", { className: "flex shrink-0 items-center gap-4", children: [_jsx("span", { className: "font-mono text-eyebrow tabular uppercase tracking-[0.08em] text-fg-muted", "aria-live": "polite", children: f("slideCounter", { index: current + 1, total: count }) }), _jsxs("div", { className: "flex gap-2", children: [_jsx("button", { type: "button", "aria-label": labels.previous, disabled: current === 0, onClick: () => go(current - 1), className: "vb-carousel-btn", children: _jsx(ArrowLeft, { "aria-hidden": true, strokeWidth: 1.5, className: "size-[18px] rtl:-scale-x-100" }) }), _jsx("button", { type: "button", "aria-label": labels.next, disabled: current >= count - 1, onClick: () => go(current + 1), className: "vb-carousel-btn", children: _jsx(ArrowRight, { "aria-hidden": true, strokeWidth: 1.5, className: "size-[18px] rtl:-scale-x-100" }) })] })] })] }), _jsx("div", { ref: track, tabIndex: 0, "aria-label": labels.carousel, onKeyDown: (e) => {
46
+ const rtl = getComputedStyle(e.currentTarget).direction === "rtl";
47
+ if (e.key === (rtl ? "ArrowLeft" : "ArrowRight")) {
48
+ e.preventDefault();
49
+ go(current + 1);
50
+ }
51
+ else if (e.key === (rtl ? "ArrowRight" : "ArrowLeft")) {
52
+ e.preventDefault();
53
+ go(current - 1);
54
+ }
55
+ else if (e.key === "Home") {
56
+ e.preventDefault();
57
+ go(0);
58
+ }
59
+ else if (e.key === "End") {
60
+ e.preventDefault();
61
+ go(count - 1);
62
+ }
63
+ }, className: "vb-carousel-track scrollbar-none -mx-1 flex snap-x snap-mandatory gap-(--gutter) overflow-x-auto px-1 pb-1 focus-ring rounded-ui-sm", children: slides.map((child, i) => (_jsx("div", { role: "group", "aria-roledescription": labels.slide, "aria-label": f("slideLabel", { index: i + 1, total: count }), className: "w-full shrink-0 snap-start border-t border-line pt-6 @2xl:w-[calc((100%-var(--gutter))/2)]", children: child }, i))) })] }));
64
+ }
@@ -0,0 +1,108 @@
1
+ import * as React from "react";
2
+ import { type SiteLocation, type SiteRouting } from "./shared/site-routing.js";
3
+ export interface SiteShellProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "dir"> {
4
+ /**
5
+ * The site's accent: a built-in preset (`"lime"`, `"ocean"`, `"ember"`, `"rose"`, `"graphite"`)
6
+ * or one brand colour (`"#B4532A"`, `rgb()`, `oklch()`). A colour becomes the four accent
7
+ * variables on the site root, contrast-checked (text on the fill and accent ink ≥ 4.5:1).
8
+ */
9
+ accent?: string;
10
+ /** Explicit dark-mode fill for a custom accent. Derived when the colour is too dark. */
11
+ accentDark?: string;
12
+ /** Type pairing → `data-font` (editorial, grotesk, corporate, system or your own). */
13
+ font?: string;
14
+ /** Surface material → `data-material`. */
15
+ material?: "glass" | "solid";
16
+ /** → `data-density`. */
17
+ density?: "comfortable" | "compact" | "spacious";
18
+ /** Force a mode for the whole site. Default: inherit the page's. */
19
+ theme?: "light" | "dark";
20
+ dir?: "ltr" | "rtl";
21
+ /** Locale codes, default first. Default `["en", "tr"]`. */
22
+ locales?: string[];
23
+ /** Controlled locale. */
24
+ locale?: string;
25
+ defaultLocale?: string;
26
+ onLocaleChange?: (locale: string) => void;
27
+ /** Page ids, home first. Default `["home"]`. */
28
+ pages?: string[];
29
+ /** Controlled page. */
30
+ page?: string;
31
+ defaultPage?: string;
32
+ onPageChange?: (page: string) => void;
33
+ /** Where the page lives in the URL: `?page=` (default), `#page=`, or nowhere. The locale always uses `?lang=`. */
34
+ routing?: SiteRouting;
35
+ /** Query/hash key for the page. Default `"page"`. */
36
+ pageParam?: string;
37
+ /** Query key for the locale. Default `"lang"`. */
38
+ localeParam?: string;
39
+ /**
40
+ * Motion level for the whole site → `data-motion`. subtle (default): short fades and small
41
+ * rises, count-ups, the logo ticker. full: longer, wider, a wiping hero title, magnetic
42
+ * calls-to-action. off: final state everywhere. Reduced motion always wins. Page and
43
+ * language switches cross-fade (View Transitions where available, a fade otherwise).
44
+ */
45
+ motion?: "full" | "subtle" | "off";
46
+ }
47
+ export interface SiteShellContextValue {
48
+ page: string;
49
+ locale: string;
50
+ pages: readonly string[];
51
+ locales: readonly string[];
52
+ /** Go to a page and/or locale (and optionally an anchor on it). */
53
+ navigate: (to: SiteLocation) => void;
54
+ /** The href for a page (respects `routing` and `pageParam`). */
55
+ hrefFor: (page: string, anchor?: string) => string;
56
+ /** The shell's motion level. */
57
+ motion: "full" | "subtle" | "off";
58
+ /** True after a switch that should fade the new page in (no View Transitions available). */
59
+ pageEnter: boolean;
60
+ }
61
+ /** Page, locale and navigation of the closest Site shell. Throws outside one. */
62
+ export declare function useSiteShell(): SiteShellContextValue;
63
+ /**
64
+ * The frame of a demo or single-route website: EN/TR switch, inner-page switching and the
65
+ * site's own look (accent from one colour, font, material, density), scoped to its root.
66
+ *
67
+ * Every language and page is rendered on the server as plain blocks; the shell shows one of
68
+ * each and swaps on links like `?page=pricing`, `?page=home#faq` or `?lang=tr` inside it —
69
+ * so server-rendered Navbar and Footer links work as they are. On a page change it scrolls to
70
+ * the top of the site, moves focus to the page's `h1` and marks matching links
71
+ * `aria-current="page"`. Back/forward follow the URL. Overlays opened inside keep its theme.
72
+ *
73
+ * ```tsx
74
+ * <SiteShell accent="#B4532A" font="editorial" material="solid" pages={["home", "shop"]}>
75
+ * <Navbar items={[{ label: "Shop", href: "?page=shop" }]} … />
76
+ * <SiteShellPage id="home"><Hero … /></SiteShellPage>
77
+ * <SiteShellPage id="shop"><PageIntro title="Shop" … /></SiteShellPage>
78
+ * </SiteShell>
79
+ * ```
80
+ */
81
+ export declare const SiteShell: React.ForwardRefExoticComponent<SiteShellProps & React.RefAttributes<HTMLDivElement>>;
82
+ export interface SiteShellPageProps {
83
+ /** Page id from the shell's `pages`. */
84
+ id: string;
85
+ /** Document title while this page is shown (set after navigating, not on first load). */
86
+ title?: string;
87
+ children?: React.ReactNode;
88
+ }
89
+ /** One inner page: rendered only while it is the shell's current page. */
90
+ export declare function SiteShellPage({ id, title, children }: SiteShellPageProps): React.JSX.Element | null;
91
+ export interface SiteShellLocaleProps {
92
+ /** Locale code from the shell's `locales`. */
93
+ code: string;
94
+ children?: React.ReactNode;
95
+ }
96
+ /** One language version: rendered only while it is the shell's current locale (with `lang`). */
97
+ export declare function SiteShellLocale({ code, children }: SiteShellLocaleProps): React.JSX.Element | null;
98
+ export interface SiteShellLinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, "href"> {
99
+ /** Target page id. */
100
+ page: string;
101
+ /** In-page anchor on that page (`"faq"`). */
102
+ anchor?: string;
103
+ }
104
+ /**
105
+ * A link to an inner page for client code. Server components can use a plain
106
+ * `href={sitePageHref("pricing")}` instead; the shell handles both.
107
+ */
108
+ export declare const SiteShellLink: React.ForwardRefExoticComponent<SiteShellLinkProps & React.RefAttributes<HTMLAnchorElement>>;