@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,177 @@
1
+ import * as React from "react";
2
+ import { type FormattedInputState } from "../lib/use-formatted-input.js";
3
+ import { type InputProps } from "./input.js";
4
+ /** What a formatted input reports with every change. */
5
+ export interface FormattedValueMeta {
6
+ /** The value passes the component's rules (length, checksum, min/max). Empty counts as valid. */
7
+ valid: boolean;
8
+ /** What the field shows ("1.250,50", "TR33 0006 …"). */
9
+ formatted: string;
10
+ /** Machine-readable reason when invalid ("length", "checksum", "min", …). */
11
+ reason?: string;
12
+ /** Detected sub-kind, e.g. `"tr-ykn"` for a foreign resident ID, `"iban-TR"`. */
13
+ kind?: string;
14
+ }
15
+ /** Result of a validation pass, with a localized message for the surrounding Field's `error`. */
16
+ export interface FormattedValidity {
17
+ valid: boolean;
18
+ reason?: string;
19
+ /** Localized, ready for `<Field error>`. */
20
+ message?: string;
21
+ }
22
+ export interface BaseFormattedProps<V> extends Omit<InputProps, "value" | "defaultValue" | "onChange" | "labels" | "type" | "maxLength" | "showCount" | "min" | "max" | "step" | "pattern"> {
23
+ value?: V;
24
+ defaultValue?: V;
25
+ onValueChange?: (value: V, meta: FormattedValueMeta) => void;
26
+ /** When the invalid state (and `onValidate`) kicks in. Default `"blur"`; after a shown error it re-checks on every change. */
27
+ validateOn?: "blur" | "change";
28
+ /** Called at validation moments with a localized message — pass it to `<Field error>`. */
29
+ onValidate?: (result: FormattedValidity) => void;
30
+ /** Tabular monospace digits. */
31
+ mono?: boolean;
32
+ }
33
+ /**
34
+ * Tracks the "shown" validity: errors appear on blur (or change) and, once shown, clear live
35
+ * while the user fixes the value.
36
+ */
37
+ export declare function useFormattedValidity(validateOn: "blur" | "change", onValidate?: (r: FormattedValidity) => void): {
38
+ invalid: boolean;
39
+ report: (r: FormattedValidity, trigger: "change" | "blur") => void;
40
+ };
41
+ /**
42
+ * Hides the Field's `name` from the visible input: formatted inputs submit their locale-free
43
+ * raw value through a hidden input instead.
44
+ */
45
+ export declare function WithoutFieldName({ children }: {
46
+ children: React.ReactNode;
47
+ }): React.JSX.Element;
48
+ /** The name a formatted input submits its raw value under (own `name`, else the Field's). */
49
+ export declare function useSubmitName(name?: string): string | undefined;
50
+ export interface DecimalFormatOptions {
51
+ locale: string;
52
+ /** Max fraction digits. `undefined` = free. */
53
+ precision?: number;
54
+ /** Pad to `precision` on blur and in the raw value (money). */
55
+ fixed?: boolean;
56
+ allowNegative?: boolean;
57
+ /** Locale grouping ("1.250.000"). Default true. */
58
+ grouping?: boolean;
59
+ }
60
+ /** Strips trailing fraction zeros so "1250.5" and "1250.50" compare equal. */
61
+ export declare function canonicalDecimal(v: string | null): string | null;
62
+ /**
63
+ * Formatter set for decimal inputs: live grouping with the locale's separators, the caret kept
64
+ * in place, and a locale-free decimal string as the raw value.
65
+ */
66
+ export declare function createDecimalFormat({ locale, precision, fixed, allowNegative, grouping }: DecimalFormatOptions): {
67
+ accept: (ch: string) => boolean;
68
+ format: (typed: string) => string;
69
+ parse: (display: string) => string | null;
70
+ formatOnBlur: (display: string) => string;
71
+ toDisplay: (raw: string | null) => string;
72
+ decimal: string;
73
+ isSameValue: (a: string | null, b: string | null) => boolean;
74
+ };
75
+ /**
76
+ * Key and paste handling shared by decimal inputs: either `.` or `,` starts the decimals (group
77
+ * separators are inserted automatically, so nobody needs to type them), `-` toggles the sign,
78
+ * and pasted text is parsed leniently ("₺1.250,50", "(42.00)", "1,250.50").
79
+ */
80
+ export declare function useDecimalKeys(engine: FormattedInputState, opts: {
81
+ locale: string;
82
+ decimal: string;
83
+ precision?: number;
84
+ allowNegative?: boolean;
85
+ }): {
86
+ onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
87
+ onPaste: (e: React.ClipboardEvent<HTMLInputElement>) => void;
88
+ };
89
+ /** A pluggable formatter for `FormattedInput` (what `mask` compiles to). */
90
+ export interface InputFormatter {
91
+ accept: (ch: string) => boolean;
92
+ format: (typed: string) => string;
93
+ parse: (display: string) => string | null;
94
+ toDisplay?: (raw: string | null) => string;
95
+ formatOnBlur?: (display: string) => string;
96
+ /** Validity of a complete raw value. */
97
+ validate?: (raw: string) => {
98
+ valid: boolean;
99
+ reason?: string;
100
+ };
101
+ }
102
+ /**
103
+ * Compiles a pattern mask: `#` digit, `A` letter, `*` letter or digit; anything else is a literal
104
+ * that is inserted for you ("(###) ###-####", "AA-####", "####-##-##").
105
+ *
106
+ * ```ts
107
+ * maskFormatter("(###) ###-####").format("4155550132"); // "(415) 555-0132"
108
+ * ```
109
+ */
110
+ export declare function maskFormatter(mask: string, opts?: {
111
+ uppercase?: boolean;
112
+ }): InputFormatter;
113
+ declare const formattedInputLabels: {
114
+ incomplete: string;
115
+ invalid: string;
116
+ };
117
+ export type FormattedInputLabels = typeof formattedInputLabels;
118
+ export interface FormattedInputProps extends BaseFormattedProps<string | null> {
119
+ /** Pattern: `#` digit, `A` letter, `*` letter or digit, anything else literal. */
120
+ mask?: string;
121
+ /** Custom formatter (wins over `mask`). */
122
+ formatter?: InputFormatter;
123
+ /** Uppercase letters as they are typed (with `mask`). */
124
+ uppercase?: boolean;
125
+ /** Raw value: `"unmasked"` (significant characters only, default) or `"masked"` (as displayed). */
126
+ valueFormat?: "unmasked" | "masked";
127
+ inputMode?: React.HTMLAttributes<HTMLInputElement>["inputMode"];
128
+ labels?: Partial<FormattedInputLabels>;
129
+ }
130
+ /**
131
+ * Generic masked input: the caret-preserving engine with a pattern (`mask="(###) ###-####"`)
132
+ * or your own `formatter`. Use it for order numbers, plate numbers, card expiry, SKU codes.
133
+ *
134
+ * ```tsx
135
+ * <FormattedInput mask="AA-####-##" uppercase placeholder="TR-2026-01" />
136
+ * ```
137
+ */
138
+ export declare const FormattedInput: React.ForwardRefExoticComponent<FormattedInputProps & React.RefAttributes<HTMLInputElement>>;
139
+ declare const numberInputLabels: {
140
+ increment: string;
141
+ decrement: string;
142
+ min: string;
143
+ max: string;
144
+ };
145
+ export type NumberInputLabels = typeof numberInputLabels;
146
+ export interface NumberInputProps extends BaseFormattedProps<number | null> {
147
+ min?: number;
148
+ max?: number;
149
+ /** Arrow keys and stepper buttons. Default 1. Shift + arrow steps ×10. */
150
+ step?: number;
151
+ /** Max fraction digits. Default: free. `0` = whole numbers only. */
152
+ precision?: number;
153
+ /** − / + buttons at the end. */
154
+ stepper?: boolean;
155
+ /** Locale grouping. Default true. */
156
+ grouping?: boolean;
157
+ labels?: Partial<NumberInputLabels>;
158
+ }
159
+ /**
160
+ * Locale-aware number entry: "1.250,5" in Turkish, "1,250.5" in English, value always a JS
161
+ * number. ARIA spinbutton with arrow keys (Shift ×10), optional stepper buttons.
162
+ *
163
+ * ```tsx
164
+ * <NumberInput defaultValue={12} min={1} max={500} stepper aria-label="Quantity" />
165
+ * ```
166
+ */
167
+ export declare const NumberInput: React.ForwardRefExoticComponent<NumberInputProps & React.RefAttributes<HTMLInputElement>>;
168
+ export interface PercentInputProps extends Omit<NumberInputProps, "leading"> {
169
+ }
170
+ /** Where the locale puts the percent sign: tr "%12", en "12%", fr "12 %". */
171
+ export declare function percentSignPosition(locale: string): "start" | "end";
172
+ /**
173
+ * Percent entry (discounts, tax rates, commission). The value is in percent units (`12.5` =
174
+ * 12.5%), the sign sits where the locale puts it. Default range 0–100, two decimals.
175
+ */
176
+ export declare const PercentInput: React.ForwardRefExoticComponent<PercentInputProps & React.RefAttributes<HTMLInputElement>>;
177
+ export {};
@@ -0,0 +1,399 @@
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 { Minus, Plus } from "lucide-react";
5
+ import { cn } from "../lib/cn.js";
6
+ import { useComposedRefs } from "../lib/compose-refs.js";
7
+ import { FieldContext, useFieldContext } from "../lib/field-context.js";
8
+ import { useLabels } from "../lib/labels.js";
9
+ import { useLocale } from "../lib/locale.js";
10
+ import { useLatest } from "../lib/use-controllable-state.js";
11
+ import { useFormattedInput } from "../lib/use-formatted-input.js";
12
+ import { numberSeparators, parseDecimal } from "../format/core.js";
13
+ import { Input } from "./input.js";
14
+ /**
15
+ * Tracks the "shown" validity: errors appear on blur (or change) and, once shown, clear live
16
+ * while the user fixes the value.
17
+ */
18
+ export function useFormattedValidity(validateOn, onValidate) {
19
+ const [shown, setShown] = React.useState(null);
20
+ const shownRef = React.useRef(shown);
21
+ shownRef.current = shown;
22
+ const cb = useLatest(onValidate);
23
+ const report = React.useCallback((r, trigger) => {
24
+ const prev = shownRef.current;
25
+ if (trigger === "change" && validateOn !== "change" && !(prev && !prev.valid))
26
+ return;
27
+ if (prev && prev.valid === r.valid && prev.reason === r.reason && prev.message === r.message)
28
+ return;
29
+ shownRef.current = r;
30
+ setShown(r);
31
+ cb.current?.(r);
32
+ }, [validateOn, cb]);
33
+ return { invalid: shown ? !shown.valid : false, report };
34
+ }
35
+ /**
36
+ * Hides the Field's `name` from the visible input: formatted inputs submit their locale-free
37
+ * raw value through a hidden input instead.
38
+ */
39
+ export function WithoutFieldName({ children }) {
40
+ const field = useFieldContext();
41
+ const value = React.useMemo(() => (field ? { ...field, name: undefined } : null), [field]);
42
+ return _jsx(FieldContext.Provider, { value: value, children: children });
43
+ }
44
+ /** The name a formatted input submits its raw value under (own `name`, else the Field's). */
45
+ export function useSubmitName(name) {
46
+ const field = useFieldContext();
47
+ return name ?? field?.name;
48
+ }
49
+ const LATN = { numberingSystem: "latn" };
50
+ const groupCache = new Map();
51
+ function groupFormat(locale) {
52
+ let f = groupCache.get(locale);
53
+ if (!f) {
54
+ f = new Intl.NumberFormat(locale, { ...LATN, maximumFractionDigits: 0, useGrouping: true });
55
+ groupCache.set(locale, f);
56
+ }
57
+ return f;
58
+ }
59
+ /** Strips trailing fraction zeros so "1250.5" and "1250.50" compare equal. */
60
+ export function canonicalDecimal(v) {
61
+ if (v == null)
62
+ return null;
63
+ let s = v.replace(/^(-?)0+(?=\d)/, "$1");
64
+ if (s.includes("."))
65
+ s = s.replace(/0+$/, "").replace(/\.$/, "");
66
+ return s === "-0" ? "0" : s;
67
+ }
68
+ /**
69
+ * Formatter set for decimal inputs: live grouping with the locale's separators, the caret kept
70
+ * in place, and a locale-free decimal string as the raw value.
71
+ */
72
+ export function createDecimalFormat({ locale, precision, fixed = false, allowNegative = false, grouping = true }) {
73
+ const { decimal } = numberSeparators(locale);
74
+ const allowsFraction = precision === undefined || precision > 0;
75
+ const accept = (ch) => (ch >= "0" && ch <= "9") || (allowsFraction && ch === decimal) || (allowNegative && ch === "-");
76
+ const format = (typed) => {
77
+ let neg = false;
78
+ let int = "";
79
+ let frac = "";
80
+ let seenDec = false;
81
+ let seenDigit = false;
82
+ for (const ch of typed) {
83
+ if (ch >= "0" && ch <= "9") {
84
+ seenDigit = true;
85
+ if (seenDec)
86
+ frac += ch;
87
+ else
88
+ int += ch;
89
+ }
90
+ else if (allowsFraction && ch === decimal && !seenDec)
91
+ seenDec = true;
92
+ else if (allowNegative && (ch === "-" || ch === "−") && !seenDigit && !seenDec)
93
+ neg = true;
94
+ }
95
+ int = int.replace(/^0+(?=\d)/, "");
96
+ if (precision !== undefined)
97
+ frac = frac.slice(0, precision);
98
+ const groupedInt = int ? (grouping ? groupFormat(locale).format(BigInt(int)) : int) : "";
99
+ return (neg ? "-" : "") + groupedInt + (seenDec ? decimal + frac : "");
100
+ };
101
+ const parse = (display) => {
102
+ let s = "";
103
+ for (const ch of display) {
104
+ if (ch >= "0" && ch <= "9")
105
+ s += ch;
106
+ else if (ch === decimal)
107
+ s += ".";
108
+ else if (ch === "-")
109
+ s += "-";
110
+ }
111
+ const neg = s.startsWith("-");
112
+ s = s.replace(/-/g, "");
113
+ if (!/\d/.test(s))
114
+ return null;
115
+ let [int = "", frac = ""] = s.split(".");
116
+ int = int.replace(/^0+(?=\d)/, "") || "0";
117
+ if (fixed && precision)
118
+ frac = frac.padEnd(precision, "0");
119
+ const out = frac ? `${int}.${frac}` : int;
120
+ return neg && /[1-9]/.test(out) ? `-${out}` : out;
121
+ };
122
+ const formatOnBlur = (display) => {
123
+ if (!/\d/.test(display))
124
+ return "";
125
+ let d = display;
126
+ if (d.startsWith(decimal) || d.startsWith(`-${decimal}`))
127
+ d = d.replace(decimal, `0${decimal}`);
128
+ if (d.endsWith(decimal) && !(fixed && precision))
129
+ d = d.slice(0, -1);
130
+ if (fixed && precision) {
131
+ const at = d.indexOf(decimal);
132
+ const fracLen = at === -1 ? 0 : d.length - at - 1;
133
+ d = (at === -1 ? d + decimal : d) + "0".repeat(Math.max(0, precision - fracLen));
134
+ }
135
+ if (/^-0(?:\D0*)?$/.test(d.replace(new RegExp(`\\${decimal}`, "g"), ".")))
136
+ d = d.slice(1);
137
+ return d;
138
+ };
139
+ const toDisplay = (raw) => {
140
+ if (raw == null || raw === "")
141
+ return "";
142
+ const v = canonicalDecimal(String(raw).trim());
143
+ return formatOnBlur(format(v.replace(".", decimal)));
144
+ };
145
+ return { accept, format, parse, formatOnBlur, toDisplay, decimal, isSameValue: (a, b) => canonicalDecimal(a) === canonicalDecimal(b) };
146
+ }
147
+ /**
148
+ * Key and paste handling shared by decimal inputs: either `.` or `,` starts the decimals (group
149
+ * separators are inserted automatically, so nobody needs to type them), `-` toggles the sign,
150
+ * and pasted text is parsed leniently ("₺1.250,50", "(42.00)", "1,250.50").
151
+ */
152
+ export function useDecimalKeys(engine, opts) {
153
+ const o = useLatest(opts);
154
+ const onKeyDown = (e) => {
155
+ if (e.defaultPrevented || e.metaKey || e.ctrlKey || e.altKey)
156
+ return;
157
+ const { decimal, precision, allowNegative } = o.current;
158
+ if ((e.key === "." || e.key === ",") && e.key !== decimal) {
159
+ e.preventDefault();
160
+ if (precision !== 0)
161
+ engine.insert(decimal);
162
+ return;
163
+ }
164
+ if (e.key === "-" && allowNegative) {
165
+ e.preventDefault();
166
+ const el = e.currentTarget;
167
+ const s = el.value;
168
+ const caret = el.selectionStart ?? s.length;
169
+ if (s.startsWith("-"))
170
+ engine.update(s.slice(1), Math.max(0, caret - 1));
171
+ else
172
+ engine.update(`-${s}`, caret + 1);
173
+ }
174
+ };
175
+ const onPaste = (e) => {
176
+ const text = e.clipboardData.getData("text");
177
+ const parsed = parseDecimal(text, o.current.locale);
178
+ if (parsed == null)
179
+ return;
180
+ e.preventDefault();
181
+ engine.insert(parsed.replace(".", o.current.decimal));
182
+ };
183
+ return { onKeyDown, onPaste };
184
+ }
185
+ const SLOT = {
186
+ "#": (ch) => /^\d$/.test(ch),
187
+ A: (ch) => /^\p{L}$/u.test(ch),
188
+ "*": (ch) => /^[\p{L}\p{N}]$/u.test(ch),
189
+ };
190
+ /**
191
+ * Compiles a pattern mask: `#` digit, `A` letter, `*` letter or digit; anything else is a literal
192
+ * that is inserted for you ("(###) ###-####", "AA-####", "####-##-##").
193
+ *
194
+ * ```ts
195
+ * maskFormatter("(###) ###-####").format("4155550132"); // "(415) 555-0132"
196
+ * ```
197
+ */
198
+ export function maskFormatter(mask, opts = {}) {
199
+ const slots = [...mask];
200
+ const accept = (ch) => /^[\p{L}\p{N}]$/u.test(ch);
201
+ const slotCount = slots.filter((c) => SLOT[c]).length;
202
+ const format = (typed) => {
203
+ const chars = [...typed].filter(accept).map((c) => (opts.uppercase ? c.toLocaleUpperCase() : c));
204
+ let out = "";
205
+ let pending = "";
206
+ let i = 0;
207
+ for (const slot of slots) {
208
+ if (i >= chars.length)
209
+ break;
210
+ const test = SLOT[slot];
211
+ if (!test) {
212
+ pending += slot;
213
+ continue;
214
+ }
215
+ // skip characters that don't fit this slot
216
+ while (i < chars.length && !test(chars[i]))
217
+ i++;
218
+ if (i >= chars.length)
219
+ break;
220
+ out += pending + chars[i];
221
+ pending = "";
222
+ i++;
223
+ }
224
+ return out;
225
+ };
226
+ const parse = (display) => {
227
+ const raw = [...display].filter(accept).join("");
228
+ return raw || null;
229
+ };
230
+ return {
231
+ accept,
232
+ format,
233
+ parse,
234
+ toDisplay: (raw) => (raw ? format(raw) : ""),
235
+ validate: (raw) => (raw.length === slotCount ? { valid: true } : { valid: false, reason: "incomplete" }),
236
+ };
237
+ }
238
+ const formattedInputLabels = {
239
+ incomplete: "Fill in all {count, plural, one {# character} other {# characters}}",
240
+ invalid: "This value isn't valid",
241
+ };
242
+ /**
243
+ * Generic masked input: the caret-preserving engine with a pattern (`mask="(###) ###-####"`)
244
+ * or your own `formatter`. Use it for order numbers, plate numbers, card expiry, SKU codes.
245
+ *
246
+ * ```tsx
247
+ * <FormattedInput mask="AA-####-##" uppercase placeholder="TR-2026-01" />
248
+ * ```
249
+ */
250
+ export const FormattedInput = React.forwardRef(function FormattedInput({ mask, formatter, uppercase, valueFormat = "unmasked", value, defaultValue, onValueChange, validateOn = "blur", onValidate, mono, labels, name, invalid, className, inputClassName, onBlur, onKeyDown, placeholder, ...rest }, forwardedRef) {
251
+ const t = useLabels("formattedInput", formattedInputLabels, labels);
252
+ const fmt = React.useMemo(() => formatter ?? maskFormatter(mask ?? "", { uppercase }), [formatter, mask, uppercase]);
253
+ const slotCount = mask ? [...mask].filter((c) => SLOT[c]).length : 0;
254
+ const v = useFormattedValidity(validateOn, onValidate);
255
+ const check = (raw) => {
256
+ if (!raw || !fmt.validate)
257
+ return { valid: true };
258
+ const r = fmt.validate(valueFormat === "masked" ? [...raw].filter(fmt.accept).join("") : raw);
259
+ if (r.valid)
260
+ return { valid: true };
261
+ return { valid: false, reason: r.reason, message: r.reason === "incomplete" ? t("incomplete", { count: slotCount }) : t("invalid") };
262
+ };
263
+ const engine = useFormattedInput({
264
+ value,
265
+ defaultValue,
266
+ accept: fmt.accept,
267
+ format: fmt.format,
268
+ parse: valueFormat === "masked" ? (d) => (d ? d : null) : fmt.parse,
269
+ toDisplay: fmt.toDisplay ?? ((raw) => (raw ? fmt.format(raw) : "")),
270
+ formatOnBlur: fmt.formatOnBlur,
271
+ onValueChange: (raw, display) => {
272
+ const c = check(raw);
273
+ v.report(c, "change");
274
+ onValueChange?.(raw, { valid: c.valid, reason: c.reason, formatted: display });
275
+ },
276
+ });
277
+ const ref = useComposedRefs(forwardedRef, engine.ref);
278
+ const submitName = useSubmitName(name);
279
+ return (_jsxs(_Fragment, { children: [_jsx(WithoutFieldName, { children: _jsx(Input, { ref: ref, ...rest, ...engine.inputProps, placeholder: placeholder ?? (mask ? mask.replace(/[#A*]/g, "_") : undefined), invalid: invalid || v.invalid, className: className, inputClassName: cn(mono && "font-mono tabular", inputClassName), "data-slot": "formatted-input", onKeyDown: (e) => {
280
+ onKeyDown?.(e);
281
+ engine.inputProps.onKeyDown(e);
282
+ }, onBlur: (e) => {
283
+ engine.inputProps.onBlur(e);
284
+ v.report(check(fmt.parse(e.currentTarget.value)), "blur");
285
+ onBlur?.(e);
286
+ } }) }), submitName ? _jsx("input", { type: "hidden", name: submitName, value: engine.raw ?? "", disabled: rest.disabled }) : null] }));
287
+ });
288
+ /* ------------------------------------------------------------------ */
289
+ /* NumberInput */
290
+ /* ------------------------------------------------------------------ */
291
+ const numberInputLabels = {
292
+ increment: "Increase",
293
+ decrement: "Decrease",
294
+ min: "Must be at least {min}",
295
+ max: "Must be at most {max}",
296
+ };
297
+ const decimalsOf = (n) => {
298
+ const s = String(n);
299
+ const at = s.indexOf(".");
300
+ return at === -1 ? 0 : s.length - at - 1;
301
+ };
302
+ /**
303
+ * Locale-aware number entry: "1.250,5" in Turkish, "1,250.5" in English, value always a JS
304
+ * number. ARIA spinbutton with arrow keys (Shift ×10), optional stepper buttons.
305
+ *
306
+ * ```tsx
307
+ * <NumberInput defaultValue={12} min={1} max={500} stepper aria-label="Quantity" />
308
+ * ```
309
+ */
310
+ export const NumberInput = React.forwardRef(function NumberInput(props, forwardedRef) {
311
+ const { min, max, step = 1, precision, stepper, grouping = true, value, defaultValue, onValueChange, validateOn = "blur", onValidate, mono, labels, name, invalid, className, inputClassName, onBlur, onKeyDown, trailing, size, disabled, readOnly, ...rest } = props;
312
+ const { locale, format: f } = useLocale();
313
+ const t = useLabels("numberInput", numberInputLabels, labels);
314
+ const allowNegative = min === undefined || min < 0;
315
+ const fmt = React.useMemo(() => createDecimalFormat({ locale, precision, allowNegative, grouping }), [locale, precision, allowNegative, grouping]);
316
+ const v = useFormattedValidity(validateOn, onValidate);
317
+ const check = (n) => {
318
+ if (n == null)
319
+ return { valid: true };
320
+ if (min !== undefined && n < min)
321
+ return { valid: false, reason: "min", message: t("min", { min: f.number(min) }) };
322
+ if (max !== undefined && n > max)
323
+ return { valid: false, reason: "max", message: t("max", { max: f.number(max) }) };
324
+ return { valid: true };
325
+ };
326
+ const toNum = (raw) => (raw == null ? null : Number(raw));
327
+ const engine = useFormattedInput({
328
+ value: value === undefined ? undefined : value == null ? null : String(value),
329
+ defaultValue: defaultValue == null ? null : String(defaultValue),
330
+ accept: fmt.accept,
331
+ format: fmt.format,
332
+ parse: fmt.parse,
333
+ toDisplay: fmt.toDisplay,
334
+ formatOnBlur: fmt.formatOnBlur,
335
+ isSameValue: fmt.isSameValue,
336
+ onValueChange: (raw, display) => {
337
+ const n = toNum(raw);
338
+ const c = check(n);
339
+ v.report(c, "change");
340
+ onValueChange?.(n, { valid: c.valid, reason: c.reason, formatted: display });
341
+ },
342
+ });
343
+ const keys = useDecimalKeys(engine, { locale, decimal: fmt.decimal, precision, allowNegative });
344
+ const ref = useComposedRefs(forwardedRef, engine.ref);
345
+ const submitName = useSubmitName(name);
346
+ const current = toNum(engine.raw);
347
+ const inert = disabled || readOnly;
348
+ const stepBy = (dir, mult = 1) => {
349
+ if (inert)
350
+ return;
351
+ const places = Math.max(decimalsOf(step), precision ?? 0, current == null ? 0 : decimalsOf(current));
352
+ let next = (current ?? (dir > 0 ? (min ?? 0) - step * mult : (max ?? 0) + step * mult)) + dir * step * mult;
353
+ next = Number(next.toFixed(Math.min(places, 20)));
354
+ if (min !== undefined)
355
+ next = Math.max(min, next);
356
+ if (max !== undefined)
357
+ next = Math.min(max, next);
358
+ engine.setDisplay(fmt.toDisplay(String(next)));
359
+ };
360
+ const stepButton = "inline-flex size-7 items-center justify-center rounded-ui-sm text-fg-muted transition-colors hover:bg-hover hover:text-fg disabled:pointer-events-none disabled:opacity-40 [&_svg]:size-3.5";
361
+ return (_jsxs(_Fragment, { children: [_jsx(WithoutFieldName, { children: _jsx(Input, { ref: ref, ...rest, ...engine.inputProps, size: size, disabled: disabled, readOnly: readOnly, role: "spinbutton", inputMode: precision === 0 ? "numeric" : "decimal", autoComplete: "off", dir: "ltr", "aria-valuenow": current ?? undefined, "aria-valuemin": min, "aria-valuemax": max, "aria-valuetext": engine.display || undefined, invalid: invalid || v.invalid, className: className, inputClassName: cn("tabular", mono && "font-mono", inputClassName), "data-slot": "number-input", trailing: stepper || trailing ? (_jsxs("span", { className: "flex items-center gap-0.5", children: [trailing, stepper ? (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", tabIndex: -1, "aria-label": t("decrement"), className: stepButton, disabled: inert || (min !== undefined && current != null && current <= min), onClick: () => stepBy(-1), children: _jsx(Minus, { "aria-hidden": true }) }), _jsx("button", { type: "button", tabIndex: -1, "aria-label": t("increment"), className: stepButton, disabled: inert || (max !== undefined && current != null && current >= max), onClick: () => stepBy(1), children: _jsx(Plus, { "aria-hidden": true }) })] })) : null] })) : undefined, onPaste: keys.onPaste, onKeyDown: (e) => {
362
+ onKeyDown?.(e);
363
+ if (e.defaultPrevented)
364
+ return;
365
+ if (e.key === "ArrowUp" || e.key === "ArrowDown") {
366
+ e.preventDefault();
367
+ stepBy(e.key === "ArrowUp" ? 1 : -1, e.shiftKey ? 10 : 1);
368
+ return;
369
+ }
370
+ if (e.key === "Home" && min !== undefined && e.ctrlKey) {
371
+ e.preventDefault();
372
+ engine.setDisplay(fmt.toDisplay(String(min)));
373
+ return;
374
+ }
375
+ keys.onKeyDown(e);
376
+ engine.inputProps.onKeyDown(e);
377
+ }, onBlur: (e) => {
378
+ engine.inputProps.onBlur(e);
379
+ v.report(check(toNum(fmt.parse(e.currentTarget.value))), "blur");
380
+ onBlur?.(e);
381
+ } }) }), submitName ? _jsx("input", { type: "hidden", name: submitName, value: engine.raw ?? "", disabled: disabled }) : null] }));
382
+ });
383
+ /** Where the locale puts the percent sign: tr "%12", en "12%", fr "12 %". */
384
+ export function percentSignPosition(locale) {
385
+ const parts = new Intl.NumberFormat(locale, { style: "percent" }).formatToParts(0.12);
386
+ const pi = parts.findIndex((p) => p.type === "percentSign");
387
+ const ii = parts.findIndex((p) => p.type === "integer");
388
+ return pi !== -1 && pi < ii ? "start" : "end";
389
+ }
390
+ /**
391
+ * Percent entry (discounts, tax rates, commission). The value is in percent units (`12.5` =
392
+ * 12.5%), the sign sits where the locale puts it. Default range 0–100, two decimals.
393
+ */
394
+ export const PercentInput = React.forwardRef(function PercentInput({ min = 0, max = 100, precision = 2, trailing, ...props }, ref) {
395
+ const { locale } = useLocale();
396
+ const sign = _jsx("span", { "aria-hidden": true, className: "font-medium text-fg-subtle", children: "%" });
397
+ const start = percentSignPosition(locale) === "start";
398
+ return (_jsx(NumberInput, { ref: ref, min: min, max: max, precision: precision, ...props, "data-slot": "percent-input", ...(start ? { leading: sign, trailing } : { trailing: _jsxs(_Fragment, { children: [sign, trailing] }) }) }));
399
+ });