@vamos-ui/react 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (665) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +27 -2
  3. package/dist/blocks/block-heading.d.ts +29 -0
  4. package/dist/blocks/block-heading.js +39 -0
  5. package/dist/blocks/block-image.d.ts +52 -0
  6. package/dist/blocks/block-image.js +48 -0
  7. package/dist/blocks/block-link.d.ts +30 -0
  8. package/dist/blocks/block-link.js +36 -0
  9. package/dist/blocks/create-blocks.d.ts +54 -0
  10. package/dist/blocks/create-blocks.js +52 -0
  11. package/dist/blocks/index.d.ts +55 -0
  12. package/dist/blocks/index.js +59 -0
  13. package/dist/blocks/json-ld.d.ts +18 -0
  14. package/dist/blocks/json-ld.js +44 -0
  15. package/dist/blocks/labels.d.ts +20 -0
  16. package/dist/blocks/labels.js +43 -0
  17. package/dist/blocks/rich-text.d.ts +36 -0
  18. package/dist/blocks/rich-text.js +106 -0
  19. package/dist/blocks/schema/define-block.d.ts +151 -0
  20. package/dist/blocks/schema/define-block.js +120 -0
  21. package/dist/blocks/schema/emphasis.d.ts +17 -0
  22. package/dist/blocks/schema/emphasis.js +69 -0
  23. package/dist/blocks/schema/fields.d.ts +497 -0
  24. package/dist/blocks/schema/fields.js +240 -0
  25. package/dist/blocks/schema/icons.d.ts +2 -0
  26. package/dist/blocks/schema/icons.js +26 -0
  27. package/dist/blocks/schema/index.d.ts +18 -0
  28. package/dist/blocks/schema/index.js +21 -0
  29. package/dist/blocks/schema/lint-types.d.ts +16 -0
  30. package/dist/blocks/schema/lint-types.js +2 -0
  31. package/dist/blocks/schema/lint.d.ts +32 -0
  32. package/dist/blocks/schema/lint.js +164 -0
  33. package/dist/blocks/schema/localize.d.ts +20 -0
  34. package/dist/blocks/schema/localize.js +29 -0
  35. package/dist/blocks/schema/localized.d.ts +25 -0
  36. package/dist/blocks/schema/localized.js +53 -0
  37. package/dist/blocks/schema/migrate.d.ts +24 -0
  38. package/dist/blocks/schema/migrate.js +75 -0
  39. package/dist/blocks/schema/nodes.d.ts +196 -0
  40. package/dist/blocks/schema/nodes.js +78 -0
  41. package/dist/blocks/schema/rich-doc-schema.d.ts +32 -0
  42. package/dist/blocks/schema/rich-doc-schema.js +66 -0
  43. package/dist/blocks/schema/rich-doc.d.ts +90 -0
  44. package/dist/blocks/schema/rich-doc.js +62 -0
  45. package/dist/blocks/schema/safety.d.ts +20 -0
  46. package/dist/blocks/schema/safety.js +49 -0
  47. package/dist/blocks/schema/types.d.ts +172 -0
  48. package/dist/blocks/schema/types.js +3 -0
  49. package/dist/blocks/schema/validate.d.ts +17 -0
  50. package/dist/blocks/schema/validate.js +32 -0
  51. package/dist/blocks/schema/walk.d.ts +22 -0
  52. package/dist/blocks/schema/walk.js +60 -0
  53. package/dist/blocks/section-header.d.ts +38 -0
  54. package/dist/blocks/section-header.js +22 -0
  55. package/dist/blocks/section.d.ts +59 -0
  56. package/dist/blocks/section.js +66 -0
  57. package/dist/blocks/site/_kit-1.d.ts +100 -0
  58. package/dist/blocks/site/_kit-1.js +135 -0
  59. package/dist/blocks/site/_site-icon-1.d.ts +6 -0
  60. package/dist/blocks/site/_site-icon-1.js +15 -0
  61. package/dist/blocks/site/announcement-bar.d.ts +42 -0
  62. package/dist/blocks/site/announcement-bar.js +38 -0
  63. package/dist/blocks/site/announcement-dismiss.d.ts +18 -0
  64. package/dist/blocks/site/announcement-dismiss.js +28 -0
  65. package/dist/blocks/site/article-layout.d.ts +65 -0
  66. package/dist/blocks/site/article-layout.js +88 -0
  67. package/dist/blocks/site/blog-list.d.ts +79 -0
  68. package/dist/blocks/site/blog-list.js +78 -0
  69. package/dist/blocks/site/comparison-table.d.ts +54 -0
  70. package/dist/blocks/site/comparison-table.js +38 -0
  71. package/dist/blocks/site/consent-banner.d.ts +52 -0
  72. package/dist/blocks/site/consent-banner.js +33 -0
  73. package/dist/blocks/site/contact-dock.d.ts +52 -0
  74. package/dist/blocks/site/contact-dock.js +55 -0
  75. package/dist/blocks/site/contact-form.d.ts +60 -0
  76. package/dist/blocks/site/contact-form.js +45 -0
  77. package/dist/blocks/site/cta-booking.d.ts +43 -0
  78. package/dist/blocks/site/cta-booking.js +69 -0
  79. package/dist/blocks/site/cta.d.ts +74 -0
  80. package/dist/blocks/site/cta.js +112 -0
  81. package/dist/blocks/site/embed-facade.d.ts +20 -0
  82. package/dist/blocks/site/embed-facade.js +21 -0
  83. package/dist/blocks/site/faq.d.ts +48 -0
  84. package/dist/blocks/site/faq.js +51 -0
  85. package/dist/blocks/site/feature-grid.d.ts +46 -0
  86. package/dist/blocks/site/feature-grid.js +49 -0
  87. package/dist/blocks/site/feature-tabs.d.ts +22 -0
  88. package/dist/blocks/site/feature-tabs.js +11 -0
  89. package/dist/blocks/site/footer.d.ts +68 -0
  90. package/dist/blocks/site/footer.js +61 -0
  91. package/dist/blocks/site/gallery-section.d.ts +42 -0
  92. package/dist/blocks/site/gallery-section.js +47 -0
  93. package/dist/blocks/site/hero-video.d.ts +15 -0
  94. package/dist/blocks/site/hero-video.js +31 -0
  95. package/dist/blocks/site/hero.d.ts +64 -0
  96. package/dist/blocks/site/hero.js +67 -0
  97. package/dist/blocks/site/logo-strip.d.ts +42 -0
  98. package/dist/blocks/site/logo-strip.js +26 -0
  99. package/dist/blocks/site/map-hours.d.ts +83 -0
  100. package/dist/blocks/site/map-hours.js +125 -0
  101. package/dist/blocks/site/media-text.d.ts +45 -0
  102. package/dist/blocks/site/media-text.js +55 -0
  103. package/dist/blocks/site/menu-list.d.ts +74 -0
  104. package/dist/blocks/site/menu-list.js +84 -0
  105. package/dist/blocks/site/navbar-submenu.d.ts +18 -0
  106. package/dist/blocks/site/navbar-submenu.js +51 -0
  107. package/dist/blocks/site/navbar.d.ts +67 -0
  108. package/dist/blocks/site/navbar.js +64 -0
  109. package/dist/blocks/site/not-found.d.ts +40 -0
  110. package/dist/blocks/site/not-found.js +38 -0
  111. package/dist/blocks/site/page-intro.d.ts +46 -0
  112. package/dist/blocks/site/page-intro.js +44 -0
  113. package/dist/blocks/site/pricing-table.d.ts +67 -0
  114. package/dist/blocks/site/pricing-table.js +82 -0
  115. package/dist/blocks/site/process.d.ts +36 -0
  116. package/dist/blocks/site/process.js +41 -0
  117. package/dist/blocks/site/registry-1.d.ts +720 -0
  118. package/dist/blocks/site/registry-1.js +783 -0
  119. package/dist/blocks/site/registry-2.d.ts +914 -0
  120. package/dist/blocks/site/registry-2.js +563 -0
  121. package/dist/blocks/site/rich-text-section.d.ts +34 -0
  122. package/dist/blocks/site/rich-text-section.js +32 -0
  123. package/dist/blocks/site/shared/brand-icons.d.ts +21 -0
  124. package/dist/blocks/site/shared/brand-icons.js +56 -0
  125. package/dist/blocks/site/shared/consent-gate.d.ts +41 -0
  126. package/dist/blocks/site/shared/consent-gate.js +43 -0
  127. package/dist/blocks/site/shared/consent-island.d.ts +38 -0
  128. package/dist/blocks/site/shared/consent-island.js +63 -0
  129. package/dist/blocks/site/shared/consent.d.ts +49 -0
  130. package/dist/blocks/site/shared/consent.js +130 -0
  131. package/dist/blocks/site/shared/contact-form-island.d.ts +41 -0
  132. package/dist/blocks/site/shared/contact-form-island.js +100 -0
  133. package/dist/blocks/site/shared/copy-link.d.ts +10 -0
  134. package/dist/blocks/site/shared/copy-link.js +25 -0
  135. package/dist/blocks/site/shared/dock-avoid.d.ts +15 -0
  136. package/dist/blocks/site/shared/dock-avoid.js +107 -0
  137. package/dist/blocks/site/shared/dock-hours.d.ts +13 -0
  138. package/dist/blocks/site/shared/dock-hours.js +25 -0
  139. package/dist/blocks/site/shared/gallery-lightbox.d.ts +12 -0
  140. package/dist/blocks/site/shared/gallery-lightbox.js +10 -0
  141. package/dist/blocks/site/shared/island-keys.d.ts +10 -0
  142. package/dist/blocks/site/shared/island-keys.js +44 -0
  143. package/dist/blocks/site/shared/kit-2.d.ts +55 -0
  144. package/dist/blocks/site/shared/kit-2.js +84 -0
  145. package/dist/blocks/site/shared/labels-2.d.ts +209 -0
  146. package/dist/blocks/site/shared/labels-2.js +427 -0
  147. package/dist/blocks/site/shared/open-now.d.ts +22 -0
  148. package/dist/blocks/site/shared/open-now.js +27 -0
  149. package/dist/blocks/site/shared/opening-hours.d.ts +117 -0
  150. package/dist/blocks/site/shared/opening-hours.js +245 -0
  151. package/dist/blocks/site/shared/site-accent.d.ts +48 -0
  152. package/dist/blocks/site/shared/site-accent.js +249 -0
  153. package/dist/blocks/site/shared/site-form.d.ts +79 -0
  154. package/dist/blocks/site/shared/site-form.js +111 -0
  155. package/dist/blocks/site/shared/site-routing.d.ts +54 -0
  156. package/dist/blocks/site/shared/site-routing.js +86 -0
  157. package/dist/blocks/site/shared/testimonials-carousel.d.ts +17 -0
  158. package/dist/blocks/site/shared/testimonials-carousel.js +64 -0
  159. package/dist/blocks/site/site-shell.d.ts +97 -0
  160. package/dist/blocks/site/site-shell.js +227 -0
  161. package/dist/blocks/site/stats-band.d.ts +40 -0
  162. package/dist/blocks/site/stats-band.js +41 -0
  163. package/dist/blocks/site/team.d.ts +44 -0
  164. package/dist/blocks/site/team.js +48 -0
  165. package/dist/blocks/site/testimonials.d.ts +68 -0
  166. package/dist/blocks/site/testimonials.js +65 -0
  167. package/dist/blocks/types.d.ts +63 -0
  168. package/dist/blocks/types.js +2 -0
  169. package/dist/business/approval-flow.d.ts +152 -0
  170. package/dist/business/approval-flow.js +221 -0
  171. package/dist/business/export-core.d.ts +55 -0
  172. package/dist/business/export-core.js +101 -0
  173. package/dist/business/export.d.ts +148 -0
  174. package/dist/business/export.js +264 -0
  175. package/dist/business/import-core.d.ts +104 -0
  176. package/dist/business/import-core.js +281 -0
  177. package/dist/business/import-wizard.d.ts +186 -0
  178. package/dist/business/import-wizard.js +401 -0
  179. package/dist/business/index.d.ts +11 -0
  180. package/dist/business/index.js +20 -0
  181. package/dist/business/line-items-core.d.ts +129 -0
  182. package/dist/business/line-items-core.js +183 -0
  183. package/dist/business/line-items.d.ts +119 -0
  184. package/dist/business/line-items.js +299 -0
  185. package/dist/business/multi-step-form.d.ts +131 -0
  186. package/dist/business/multi-step-form.js +337 -0
  187. package/dist/business/permission-core.d.ts +59 -0
  188. package/dist/business/permission-core.js +99 -0
  189. package/dist/business/permission-matrix.d.ts +158 -0
  190. package/dist/business/permission-matrix.js +341 -0
  191. package/dist/business/setup-checklist.d.ts +80 -0
  192. package/dist/business/setup-checklist.js +92 -0
  193. package/dist/charts/area-chart.d.ts +35 -0
  194. package/dist/charts/area-chart.js +33 -0
  195. package/dist/charts/bar-chart.d.ts +27 -0
  196. package/dist/charts/bar-chart.js +42 -0
  197. package/dist/charts/bar-list.d.ts +47 -0
  198. package/dist/charts/bar-list.js +60 -0
  199. package/dist/charts/chart-shell.d.ts +173 -0
  200. package/dist/charts/chart-shell.js +205 -0
  201. package/dist/charts/chart.d.ts +73 -0
  202. package/dist/charts/chart.js +106 -0
  203. package/dist/charts/combo-chart.d.ts +29 -0
  204. package/dist/charts/combo-chart.js +47 -0
  205. package/dist/charts/donut-chart.d.ts +33 -0
  206. package/dist/charts/donut-chart.js +113 -0
  207. package/dist/charts/funnel.d.ts +51 -0
  208. package/dist/charts/funnel.js +69 -0
  209. package/dist/charts/gauge.d.ts +62 -0
  210. package/dist/charts/gauge.js +104 -0
  211. package/dist/charts/heatmap.d.ts +81 -0
  212. package/dist/charts/heatmap.js +338 -0
  213. package/dist/charts/index.d.ts +12 -0
  214. package/dist/charts/index.js +14 -0
  215. package/dist/charts/line-chart.d.ts +21 -0
  216. package/dist/charts/line-chart.js +36 -0
  217. package/dist/charts/test-utils.d.ts +2 -0
  218. package/dist/charts/test-utils.js +38 -0
  219. package/dist/charts/utils.d.ts +130 -0
  220. package/dist/charts/utils.js +262 -0
  221. package/dist/components/accordion.d.ts +47 -0
  222. package/dist/components/accordion.js +70 -0
  223. package/dist/components/activity-timeline.d.ts +149 -0
  224. package/dist/components/activity-timeline.js +122 -0
  225. package/dist/components/address-field.d.ts +116 -0
  226. package/dist/components/address-field.js +219 -0
  227. package/dist/components/alert-dialog.d.ts +99 -0
  228. package/dist/components/alert-dialog.js +192 -0
  229. package/dist/components/alert.d.ts +42 -0
  230. package/dist/components/alert.js +82 -0
  231. package/dist/components/app-shell.d.ts +159 -0
  232. package/dist/components/app-shell.js +289 -0
  233. package/dist/components/attachment-list.d.ts +96 -0
  234. package/dist/components/attachment-list.js +196 -0
  235. package/dist/components/audit-log.d.ts +150 -0
  236. package/dist/components/audit-log.js +205 -0
  237. package/dist/components/avatar.d.ts +87 -0
  238. package/dist/components/avatar.js +126 -0
  239. package/dist/components/badge.d.ts +41 -0
  240. package/dist/components/badge.js +68 -0
  241. package/dist/components/breadcrumb.d.ts +78 -0
  242. package/dist/components/breadcrumb.js +106 -0
  243. package/dist/components/button-group.d.ts +52 -0
  244. package/dist/components/button-group.js +77 -0
  245. package/dist/components/button.d.ts +58 -0
  246. package/dist/components/button.js +107 -0
  247. package/dist/components/calendar.d.ts +240 -0
  248. package/dist/components/calendar.js +483 -0
  249. package/dist/components/card.d.ts +66 -0
  250. package/dist/components/card.js +76 -0
  251. package/dist/components/carousel.d.ts +170 -0
  252. package/dist/components/carousel.js +348 -0
  253. package/dist/components/checkbox.d.ts +78 -0
  254. package/dist/components/checkbox.js +138 -0
  255. package/dist/components/color-picker.d.ts +112 -0
  256. package/dist/components/color-picker.js +235 -0
  257. package/dist/components/combobox.d.ts +136 -0
  258. package/dist/components/combobox.js +294 -0
  259. package/dist/components/command.d.ts +275 -0
  260. package/dist/components/command.js +493 -0
  261. package/dist/components/comment-thread.d.ts +252 -0
  262. package/dist/components/comment-thread.js +449 -0
  263. package/dist/components/context-menu.d.ts +77 -0
  264. package/dist/components/context-menu.js +82 -0
  265. package/dist/components/currency-input.d.ts +43 -0
  266. package/dist/components/currency-input.js +85 -0
  267. package/dist/components/date-picker.d.ts +141 -0
  268. package/dist/components/date-picker.js +241 -0
  269. package/dist/components/date-range-picker.d.ts +91 -0
  270. package/dist/components/date-range-picker.js +251 -0
  271. package/dist/components/description-list.d.ts +92 -0
  272. package/dist/components/description-list.js +42 -0
  273. package/dist/components/dialog.d.ts +139 -0
  274. package/dist/components/dialog.js +185 -0
  275. package/dist/components/dropdown-menu.d.ts +100 -0
  276. package/dist/components/dropdown-menu.js +102 -0
  277. package/dist/components/editor-layout.d.ts +166 -0
  278. package/dist/components/editor-layout.js +237 -0
  279. package/dist/components/empty-state.d.ts +49 -0
  280. package/dist/components/empty-state.js +68 -0
  281. package/dist/components/entity-card.d.ts +83 -0
  282. package/dist/components/entity-card.js +92 -0
  283. package/dist/components/file-upload.d.ts +256 -0
  284. package/dist/components/file-upload.js +490 -0
  285. package/dist/components/formatted-input.d.ts +177 -0
  286. package/dist/components/formatted-input.js +399 -0
  287. package/dist/components/hierarchy-chart.d.ts +190 -0
  288. package/dist/components/hierarchy-chart.js +890 -0
  289. package/dist/components/hover-card.d.ts +21 -0
  290. package/dist/components/hover-card.js +32 -0
  291. package/dist/components/iban-input.d.ts +38 -0
  292. package/dist/components/iban-input.js +112 -0
  293. package/dist/components/id-input.d.ts +65 -0
  294. package/dist/components/id-input.js +130 -0
  295. package/dist/components/image.d.ts +130 -0
  296. package/dist/components/image.js +168 -0
  297. package/dist/components/input-otp.d.ts +62 -0
  298. package/dist/components/input-otp.js +73 -0
  299. package/dist/components/input.d.ts +141 -0
  300. package/dist/components/input.js +187 -0
  301. package/dist/components/item.d.ts +96 -0
  302. package/dist/components/item.js +113 -0
  303. package/dist/components/kbd.d.ts +64 -0
  304. package/dist/components/kbd.js +119 -0
  305. package/dist/components/list-layout.d.ts +144 -0
  306. package/dist/components/list-layout.js +210 -0
  307. package/dist/components/native-select.d.ts +33 -0
  308. package/dist/components/native-select.js +48 -0
  309. package/dist/components/navigation-menu.d.ts +127 -0
  310. package/dist/components/navigation-menu.js +129 -0
  311. package/dist/components/notification-center.d.ts +164 -0
  312. package/dist/components/notification-center.js +399 -0
  313. package/dist/components/page-header.d.ts +60 -0
  314. package/dist/components/page-header.js +60 -0
  315. package/dist/components/pagination.d.ts +121 -0
  316. package/dist/components/pagination.js +174 -0
  317. package/dist/components/phone-input.d.ts +49 -0
  318. package/dist/components/phone-input.js +266 -0
  319. package/dist/components/popover.d.ts +38 -0
  320. package/dist/components/popover.js +69 -0
  321. package/dist/components/progress.d.ts +79 -0
  322. package/dist/components/progress.js +97 -0
  323. package/dist/components/radio-group.d.ts +43 -0
  324. package/dist/components/radio-group.js +81 -0
  325. package/dist/components/record-detail-layout.d.ts +167 -0
  326. package/dist/components/record-detail-layout.js +233 -0
  327. package/dist/components/record-picker.d.ts +199 -0
  328. package/dist/components/record-picker.js +650 -0
  329. package/dist/components/resizable.d.ts +50 -0
  330. package/dist/components/resizable.js +88 -0
  331. package/dist/components/scroll-area.d.ts +40 -0
  332. package/dist/components/scroll-area.js +56 -0
  333. package/dist/components/select.d.ts +126 -0
  334. package/dist/components/select.js +137 -0
  335. package/dist/components/separator.d.ts +31 -0
  336. package/dist/components/separator.js +41 -0
  337. package/dist/components/settings-layout.d.ts +134 -0
  338. package/dist/components/settings-layout.js +180 -0
  339. package/dist/components/sheet.d.ts +103 -0
  340. package/dist/components/sheet.js +165 -0
  341. package/dist/components/sidebar.d.ts +171 -0
  342. package/dist/components/sidebar.js +421 -0
  343. package/dist/components/signature-pad.d.ts +85 -0
  344. package/dist/components/signature-pad.js +283 -0
  345. package/dist/components/skeleton.d.ts +64 -0
  346. package/dist/components/skeleton.js +53 -0
  347. package/dist/components/slider.d.ts +57 -0
  348. package/dist/components/slider.js +133 -0
  349. package/dist/components/slug-input.d.ts +69 -0
  350. package/dist/components/slug-input.js +201 -0
  351. package/dist/components/sparkline.d.ts +54 -0
  352. package/dist/components/sparkline.js +122 -0
  353. package/dist/components/spinner.d.ts +34 -0
  354. package/dist/components/spinner.js +34 -0
  355. package/dist/components/stat.d.ts +135 -0
  356. package/dist/components/stat.js +130 -0
  357. package/dist/components/status-picker.d.ts +107 -0
  358. package/dist/components/status-picker.js +175 -0
  359. package/dist/components/stepper.d.ts +86 -0
  360. package/dist/components/stepper.js +103 -0
  361. package/dist/components/switch.d.ts +34 -0
  362. package/dist/components/switch.js +70 -0
  363. package/dist/components/table.d.ts +101 -0
  364. package/dist/components/table.js +72 -0
  365. package/dist/components/tabs.d.ts +103 -0
  366. package/dist/components/tabs.js +173 -0
  367. package/dist/components/tag-input.d.ts +77 -0
  368. package/dist/components/tag-input.js +305 -0
  369. package/dist/components/task-list.d.ts +89 -0
  370. package/dist/components/task-list.js +238 -0
  371. package/dist/components/time-picker.d.ts +119 -0
  372. package/dist/components/time-picker.js +399 -0
  373. package/dist/components/toast.d.ts +87 -0
  374. package/dist/components/toast.js +142 -0
  375. package/dist/components/toggle.d.ts +77 -0
  376. package/dist/components/toggle.js +109 -0
  377. package/dist/components/tooltip.d.ts +69 -0
  378. package/dist/components/tooltip.js +105 -0
  379. package/dist/components/top-bar.d.ts +87 -0
  380. package/dist/components/top-bar.js +99 -0
  381. package/dist/components/tree-select.d.ts +89 -0
  382. package/dist/components/tree-select.js +243 -0
  383. package/dist/components/tree-view.d.ts +109 -0
  384. package/dist/components/tree-view.js +170 -0
  385. package/dist/components/typography.d.ts +107 -0
  386. package/dist/components/typography.js +128 -0
  387. package/dist/components/user-picker.d.ts +89 -0
  388. package/dist/components/user-picker.js +162 -0
  389. package/dist/components/version-history.d.ts +191 -0
  390. package/dist/components/version-history.js +431 -0
  391. package/dist/data-table/csv.d.ts +27 -0
  392. package/dist/data-table/csv.js +68 -0
  393. package/dist/data-table/data-table.d.ts +423 -0
  394. package/dist/data-table/data-table.js +1259 -0
  395. package/dist/data-table/filter-bar.d.ts +146 -0
  396. package/dist/data-table/filter-bar.js +569 -0
  397. package/dist/data-table/filter-fns.d.ts +65 -0
  398. package/dist/data-table/filter-fns.js +382 -0
  399. package/dist/data-table/index.d.ts +8 -0
  400. package/dist/data-table/index.js +9 -0
  401. package/dist/data-table/saved-views.d.ts +100 -0
  402. package/dist/data-table/saved-views.js +251 -0
  403. package/dist/data-table/types.d.ts +168 -0
  404. package/dist/data-table/types.js +87 -0
  405. package/dist/data-table/url-state.d.ts +94 -0
  406. package/dist/data-table/url-state.js +303 -0
  407. package/dist/data-table/view-state.d.ts +16 -0
  408. package/dist/data-table/view-state.js +81 -0
  409. package/dist/editor/_test-setup.d.ts +1 -0
  410. package/dist/editor/_test-setup.js +33 -0
  411. package/dist/editor/block-editor.d.ts +137 -0
  412. package/dist/editor/block-editor.js +280 -0
  413. package/dist/editor/commands.d.ts +31 -0
  414. package/dist/editor/commands.js +150 -0
  415. package/dist/editor/context.d.ts +108 -0
  416. package/dist/editor/context.js +30 -0
  417. package/dist/editor/convert.d.ts +66 -0
  418. package/dist/editor/convert.js +567 -0
  419. package/dist/editor/drag-handle.d.ts +10 -0
  420. package/dist/editor/drag-handle.js +69 -0
  421. package/dist/editor/extensions.d.ts +34 -0
  422. package/dist/editor/extensions.js +239 -0
  423. package/dist/editor/index.d.ts +14 -0
  424. package/dist/editor/index.js +17 -0
  425. package/dist/editor/inserter.d.ts +12 -0
  426. package/dist/editor/inserter.js +88 -0
  427. package/dist/editor/inspector.d.ts +17 -0
  428. package/dist/editor/inspector.js +65 -0
  429. package/dist/editor/items.d.ts +62 -0
  430. package/dist/editor/items.js +195 -0
  431. package/dist/editor/labels.d.ts +119 -0
  432. package/dist/editor/labels.js +130 -0
  433. package/dist/editor/markdown.d.ts +14 -0
  434. package/dist/editor/markdown.js +209 -0
  435. package/dist/editor/menus.d.ts +20 -0
  436. package/dist/editor/menus.js +236 -0
  437. package/dist/editor/nodes.d.ts +14 -0
  438. package/dist/editor/nodes.js +201 -0
  439. package/dist/editor/outline.d.ts +11 -0
  440. package/dist/editor/outline.js +52 -0
  441. package/dist/editor/schema-form.d.ts +64 -0
  442. package/dist/editor/schema-form.js +290 -0
  443. package/dist/editor/slash-menu.d.ts +15 -0
  444. package/dist/editor/slash-menu.js +119 -0
  445. package/dist/fonts/catalog.d.ts +53 -0
  446. package/dist/fonts/catalog.js +121 -0
  447. package/dist/fonts/font-picker.d.ts +70 -0
  448. package/dist/fonts/font-picker.js +225 -0
  449. package/dist/fonts/index.d.ts +6 -0
  450. package/dist/fonts/index.js +7 -0
  451. package/dist/fonts/loader.d.ts +66 -0
  452. package/dist/fonts/loader.js +161 -0
  453. package/dist/fonts/pairing-picker.d.ts +31 -0
  454. package/dist/fonts/pairing-picker.js +81 -0
  455. package/dist/fonts/pairings.d.ts +84 -0
  456. package/dist/fonts/pairings.js +149 -0
  457. package/dist/fonts/provider.d.ts +34 -0
  458. package/dist/fonts/provider.js +51 -0
  459. package/dist/form/index.d.ts +1 -0
  460. package/dist/form/index.js +1 -0
  461. package/dist/format/core.d.ts +149 -0
  462. package/dist/format/core.js +357 -0
  463. package/dist/format/index.d.ts +4 -0
  464. package/dist/format/index.js +5 -0
  465. package/dist/format/use-format.d.ts +1 -0
  466. package/dist/format/use-format.js +3 -0
  467. package/dist/index.d.ts +86 -0
  468. package/dist/index.js +87 -0
  469. package/dist/lib/cn.d.ts +3 -0
  470. package/dist/lib/cn.js +16 -0
  471. package/dist/lib/color.d.ts +64 -0
  472. package/dist/lib/color.js +177 -0
  473. package/dist/lib/compose-refs.d.ts +24 -0
  474. package/dist/lib/compose-refs.js +45 -0
  475. package/dist/lib/data-islands.d.ts +194 -0
  476. package/dist/lib/data-islands.js +368 -0
  477. package/dist/lib/date.d.ts +129 -0
  478. package/dist/lib/date.js +386 -0
  479. package/dist/lib/field-context.d.ts +64 -0
  480. package/dist/lib/field-context.js +62 -0
  481. package/dist/lib/floating-arrow.d.ts +18 -0
  482. package/dist/lib/floating-arrow.js +15 -0
  483. package/dist/lib/islands.d.ts +38 -0
  484. package/dist/lib/islands.js +40 -0
  485. package/dist/lib/labels.d.ts +51 -0
  486. package/dist/lib/labels.js +56 -0
  487. package/dist/lib/layer.d.ts +36 -0
  488. package/dist/lib/layer.js +42 -0
  489. package/dist/lib/locale.d.ts +85 -0
  490. package/dist/lib/locale.js +105 -0
  491. package/dist/lib/menu.d.ts +58 -0
  492. package/dist/lib/menu.js +99 -0
  493. package/dist/lib/message-format.d.ts +20 -0
  494. package/dist/lib/message-format.js +116 -0
  495. package/dist/lib/nav.d.ts +132 -0
  496. package/dist/lib/nav.js +178 -0
  497. package/dist/lib/provider.d.ts +100 -0
  498. package/dist/lib/provider.js +105 -0
  499. package/dist/lib/public.d.ts +22 -0
  500. package/dist/lib/public.js +33 -0
  501. package/dist/lib/sr-name.d.ts +18 -0
  502. package/dist/lib/sr-name.js +17 -0
  503. package/dist/lib/text.d.ts +100 -0
  504. package/dist/lib/text.js +233 -0
  505. package/dist/lib/theme-scope.d.ts +58 -0
  506. package/dist/lib/theme-scope.js +59 -0
  507. package/dist/lib/use-async-list.d.ts +60 -0
  508. package/dist/lib/use-async-list.js +119 -0
  509. package/dist/lib/use-container-width.d.ts +19 -0
  510. package/dist/lib/use-container-width.js +39 -0
  511. package/dist/lib/use-controllable-state.d.ts +33 -0
  512. package/dist/lib/use-controllable-state.js +56 -0
  513. package/dist/lib/use-edge-fade.d.ts +13 -0
  514. package/dist/lib/use-edge-fade.js +43 -0
  515. package/dist/lib/use-formatted-input.d.ts +69 -0
  516. package/dist/lib/use-formatted-input.js +152 -0
  517. package/dist/lib/use-hotkeys.d.ts +80 -0
  518. package/dist/lib/use-hotkeys.js +221 -0
  519. package/dist/lib/use-hover-intent.d.ts +44 -0
  520. package/dist/lib/use-hover-intent.js +119 -0
  521. package/dist/lib/use-media-query.d.ts +21 -0
  522. package/dist/lib/use-media-query.js +28 -0
  523. package/dist/lib/use-reduced-motion.d.ts +8 -0
  524. package/dist/lib/use-reduced-motion.js +13 -0
  525. package/dist/lib/use-tree.d.ts +153 -0
  526. package/dist/lib/use-tree.js +534 -0
  527. package/dist/lib/value-format.d.ts +25 -0
  528. package/dist/lib/value-format.js +56 -0
  529. package/dist/lib/variants.d.ts +131 -0
  530. package/dist/lib/variants.js +109 -0
  531. package/dist/locale-data/core/date.d.ts +24 -0
  532. package/dist/locale-data/core/date.js +68 -0
  533. package/dist/locale-data/core/decimal.d.ts +19 -0
  534. package/dist/locale-data/core/decimal.js +79 -0
  535. package/dist/locale-data/core/holidays.d.ts +30 -0
  536. package/dist/locale-data/core/holidays.js +79 -0
  537. package/dist/locale-data/core/iban.d.ts +29 -0
  538. package/dist/locale-data/core/iban.js +74 -0
  539. package/dist/locale-data/core/index.d.ts +7 -0
  540. package/dist/locale-data/core/index.js +6 -0
  541. package/dist/locale-data/core/types.d.ts +173 -0
  542. package/dist/locale-data/core/types.js +6 -0
  543. package/dist/locale-data/core/week-info.d.ts +23 -0
  544. package/dist/locale-data/core/week-info.js +85 -0
  545. package/dist/locale-data/core/working-days.d.ts +27 -0
  546. package/dist/locale-data/core/working-days.js +133 -0
  547. package/dist/locale-data/index.d.ts +2 -0
  548. package/dist/locale-data/index.js +4 -0
  549. package/dist/locale-data/tr/address-tr.json +1 -0
  550. package/dist/locale-data/tr/address.d.ts +23 -0
  551. package/dist/locale-data/tr/address.js +52 -0
  552. package/dist/locale-data/tr/holidays.d.ts +31 -0
  553. package/dist/locale-data/tr/holidays.js +81 -0
  554. package/dist/locale-data/tr/iban.d.ts +21 -0
  555. package/dist/locale-data/tr/iban.js +45 -0
  556. package/dist/locale-data/tr/id.d.ts +36 -0
  557. package/dist/locale-data/tr/id.js +120 -0
  558. package/dist/locale-data/tr/index.d.ts +12 -0
  559. package/dist/locale-data/tr/index.js +33 -0
  560. package/dist/locale-data/tr/kdv.d.ts +91 -0
  561. package/dist/locale-data/tr/kdv.js +222 -0
  562. package/dist/locales/en.d.ts +2102 -0
  563. package/dist/locales/en.js +2088 -0
  564. package/dist/locales/tr.d.ts +2086 -0
  565. package/dist/locales/tr.js +2087 -0
  566. package/dist/media/focal-point.d.ts +42 -0
  567. package/dist/media/focal-point.js +96 -0
  568. package/dist/media/gallery-layout.d.ts +19 -0
  569. package/dist/media/gallery-layout.js +61 -0
  570. package/dist/media/gallery.d.ts +64 -0
  571. package/dist/media/gallery.js +138 -0
  572. package/dist/media/image-cropper.d.ts +86 -0
  573. package/dist/media/image-cropper.js +170 -0
  574. package/dist/media/image-field.d.ts +115 -0
  575. package/dist/media/image-field.js +212 -0
  576. package/dist/media/index.d.ts +19 -0
  577. package/dist/media/index.js +23 -0
  578. package/dist/media/lightbox.d.ts +82 -0
  579. package/dist/media/lightbox.js +171 -0
  580. package/dist/media/link-preview.d.ts +97 -0
  581. package/dist/media/link-preview.js +177 -0
  582. package/dist/media/media-library.d.ts +244 -0
  583. package/dist/media/media-library.js +776 -0
  584. package/dist/media/media-picker.d.ts +96 -0
  585. package/dist/media/media-picker.js +209 -0
  586. package/dist/media/media-provider.d.ts +23 -0
  587. package/dist/media/media-provider.js +44 -0
  588. package/dist/media/media-utils.d.ts +39 -0
  589. package/dist/media/media-utils.js +145 -0
  590. package/dist/media/memory-adapter.d.ts +22 -0
  591. package/dist/media/memory-adapter.js +162 -0
  592. package/dist/media/rest-adapter.d.ts +90 -0
  593. package/dist/media/rest-adapter.js +208 -0
  594. package/dist/media/serp.d.ts +62 -0
  595. package/dist/media/serp.js +108 -0
  596. package/dist/media/test-fixtures.d.ts +3 -0
  597. package/dist/media/test-fixtures.js +37 -0
  598. package/dist/media/types.d.ts +183 -0
  599. package/dist/media/types.js +3 -0
  600. package/dist/media/use-pan-zoom.d.ts +51 -0
  601. package/dist/media/use-pan-zoom.js +156 -0
  602. package/dist/media/use-upload-queue.d.ts +64 -0
  603. package/dist/media/use-upload-queue.js +115 -0
  604. package/dist/media/video-player.d.ts +135 -0
  605. package/dist/media/video-player.js +319 -0
  606. package/dist/next/index.d.ts +42 -0
  607. package/dist/next/index.js +36 -0
  608. package/dist/render/block-renderer.d.ts +56 -0
  609. package/dist/render/block-renderer.js +137 -0
  610. package/dist/render/index.d.ts +6 -0
  611. package/dist/render/index.js +7 -0
  612. package/dist/render/prepare.d.ts +61 -0
  613. package/dist/render/prepare.js +119 -0
  614. package/dist/scheduler/core/duration.d.ts +83 -0
  615. package/dist/scheduler/core/duration.js +174 -0
  616. package/dist/scheduler/core/gantt.d.ts +63 -0
  617. package/dist/scheduler/core/gantt.js +226 -0
  618. package/dist/scheduler/core/index.d.ts +6 -0
  619. package/dist/scheduler/core/index.js +7 -0
  620. package/dist/scheduler/core/layout.d.ts +97 -0
  621. package/dist/scheduler/core/layout.js +249 -0
  622. package/dist/scheduler/core/time-scale.d.ts +89 -0
  623. package/dist/scheduler/core/time-scale.js +173 -0
  624. package/dist/scheduler/gantt.d.ts +125 -0
  625. package/dist/scheduler/gantt.js +532 -0
  626. package/dist/scheduler/index.d.ts +6 -0
  627. package/dist/scheduler/index.js +7 -0
  628. package/dist/scheduler/resource-calendar.d.ts +218 -0
  629. package/dist/scheduler/resource-calendar.js +661 -0
  630. package/dist/scheduler/scheduler.d.ts +168 -0
  631. package/dist/scheduler/scheduler.js +768 -0
  632. package/dist/scheduler/shared.d.ts +63 -0
  633. package/dist/scheduler/shared.js +145 -0
  634. package/dist/scheduler/time-tracker.d.ts +138 -0
  635. package/dist/scheduler/time-tracker.js +403 -0
  636. package/dist/sortable/core.d.ts +67 -0
  637. package/dist/sortable/core.js +167 -0
  638. package/dist/sortable/index.d.ts +8 -0
  639. package/dist/sortable/index.js +10 -0
  640. package/dist/sortable/kanban-core.d.ts +70 -0
  641. package/dist/sortable/kanban-core.js +67 -0
  642. package/dist/sortable/kanban.d.ts +147 -0
  643. package/dist/sortable/kanban.js +472 -0
  644. package/dist/sortable/sortable-list.d.ts +71 -0
  645. package/dist/sortable/sortable-list.js +76 -0
  646. package/dist/sortable/sortable-tree.d.ts +101 -0
  647. package/dist/sortable/sortable-tree.js +450 -0
  648. package/dist/sortable/sortable.d.ts +188 -0
  649. package/dist/sortable/sortable.js +485 -0
  650. package/dist/sortable/use-pointer-drag.d.ts +75 -0
  651. package/dist/sortable/use-pointer-drag.js +173 -0
  652. package/dist/sortable/use-time-scale.d.ts +11 -0
  653. package/dist/sortable/use-time-scale.js +19 -0
  654. package/dist/styles/base.css +51 -0
  655. package/dist/styles/blocks.css +949 -0
  656. package/dist/styles/calendar.css +642 -0
  657. package/dist/styles/charts.css +264 -0
  658. package/dist/styles/data.css +474 -0
  659. package/dist/styles/editors.css +1022 -0
  660. package/dist/styles/forms.css +406 -0
  661. package/dist/styles/media.css +515 -0
  662. package/dist/styles/navigation.css +293 -0
  663. package/dist/styles/overlays.css +244 -0
  664. package/dist/styles.css +742 -0
  665. package/package.json +156 -4
@@ -0,0 +1,131 @@
1
+ import type * as React from "react";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ /**
4
+ * The shared box look of every text-entry or trigger control: Input, Textarea, Select trigger,
5
+ * Combobox, date/time picker triggers, Tag input. Works both when the box itself is focusable
6
+ * (a `<button>` trigger) and when it wraps a focusable child (Input group): focus, invalid and
7
+ * disabled styles react to the element itself **or** a descendant.
8
+ *
9
+ * Heights follow the density axis through `--control-h`: `sm` = control-h − 0.5rem, `md` = control-h,
10
+ * `lg` = control-h + 0.5rem. Set `data-readonly` on the box for the read-only look.
11
+ *
12
+ * ```tsx
13
+ * <button className={controlVariants({ size: "sm" })}>Status</button>
14
+ * ```
15
+ */
16
+ export declare const controlVariants: (props?: ({
17
+ size?: "sm" | "md" | "lg" | null | undefined;
18
+ variant?: "nav" | "default" | "ghost" | null | undefined;
19
+ pill?: boolean | null | undefined;
20
+ multiline?: boolean | null | undefined;
21
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
22
+ export type ControlVariantProps = VariantProps<typeof controlVariants>;
23
+ /**
24
+ * One look for every list item: Select / Combobox options, pickers, Dropdown and Context Menu
25
+ * items, Command items, sidebar flyout links. Highlight works with Radix (`data-highlighted`),
26
+ * cmdk (`data-selected=true`) and plain `aria-selected`; checked items use `data-state=checked`.
27
+ *
28
+ * Compose with `itemSlots` for the inner parts.
29
+ *
30
+ * ```tsx
31
+ * <DropdownMenu.Item className={itemVariants({ tone: "danger" })}>
32
+ * <Trash2 className={itemSlots.icon} /> Delete <span className={itemSlots.shortcut}>⌘⌫</span>
33
+ * </DropdownMenu.Item>
34
+ * ```
35
+ */
36
+ export declare const itemVariants: (props?: ({
37
+ size?: "sm" | "md" | null | undefined;
38
+ tone?: "nav" | "danger" | "default" | null | undefined;
39
+ inset?: boolean | null | undefined;
40
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
41
+ export type ItemVariantProps = VariantProps<typeof itemVariants>;
42
+ /** Class names for the inner parts of an item. */
43
+ export declare const itemSlots: {
44
+ /** Leading icon. */
45
+ readonly icon: "size-4 shrink-0 text-fg-muted";
46
+ /** Check / radio indicator in the inset gutter. */
47
+ readonly indicator: "absolute start-2 flex size-4 items-center justify-center text-fg";
48
+ /** Main label (truncates). */
49
+ readonly label: "min-w-0 flex-1 truncate";
50
+ /** Secondary line under the label. */
51
+ readonly description: "block text-xs font-normal text-fg-subtle";
52
+ /** Shortcut / trailing meta at the end. */
53
+ readonly shortcut: "ms-auto ps-4 font-mono text-[11px] tracking-wide text-fg-subtle";
54
+ /** Group heading. */
55
+ readonly groupLabel: "px-2 pt-2 pb-1 text-[11px] font-medium tracking-[0.04em] text-fg-subtle";
56
+ /** Divider between groups. */
57
+ readonly separator: "-mx-1 my-1 h-px bg-line";
58
+ };
59
+ interface MenuEntryBase {
60
+ /** Stable key. */
61
+ id: string;
62
+ disabled?: boolean;
63
+ /** Hidden unless `can(permission)` is true (see `useCan`). Hiding is not security. */
64
+ permission?: string;
65
+ }
66
+ /** A selectable entry. Exactly one of `onSelect` / `href` is typical. */
67
+ export interface MenuItemEntry extends MenuEntryBase {
68
+ type?: "item";
69
+ label: React.ReactNode;
70
+ /** Plain text for typeahead and search when `label` isn't a string. */
71
+ textValue?: string;
72
+ icon?: React.ReactNode;
73
+ description?: React.ReactNode;
74
+ /** Shortcut string, e.g. `"mod+shift+p"` (rendered with Kbd / formatShortcut). */
75
+ shortcut?: string;
76
+ /** Extra search terms (Command). */
77
+ keywords?: string[];
78
+ tone?: "default" | "danger";
79
+ href?: string;
80
+ onSelect?: () => void;
81
+ /** Trailing count or badge. */
82
+ badge?: React.ReactNode;
83
+ }
84
+ export interface MenuCheckboxEntry extends MenuEntryBase {
85
+ type: "checkbox";
86
+ label: React.ReactNode;
87
+ textValue?: string;
88
+ checked: boolean;
89
+ onCheckedChange: (checked: boolean) => void;
90
+ shortcut?: string;
91
+ }
92
+ export interface MenuRadioEntry extends MenuEntryBase {
93
+ type: "radio";
94
+ label?: React.ReactNode;
95
+ value: string;
96
+ onValueChange: (value: string) => void;
97
+ options: Array<{
98
+ value: string;
99
+ label: React.ReactNode;
100
+ textValue?: string;
101
+ disabled?: boolean;
102
+ }>;
103
+ }
104
+ export interface MenuSubmenuEntry extends MenuEntryBase {
105
+ type: "submenu";
106
+ label: React.ReactNode;
107
+ textValue?: string;
108
+ icon?: React.ReactNode;
109
+ items: MenuEntry[];
110
+ }
111
+ export interface MenuGroupEntry {
112
+ type: "group";
113
+ id: string;
114
+ label?: React.ReactNode;
115
+ items: MenuEntry[];
116
+ }
117
+ export interface MenuSeparatorEntry {
118
+ type: "separator";
119
+ id?: string;
120
+ }
121
+ export interface MenuLabelEntry {
122
+ type: "label";
123
+ id?: string;
124
+ label: React.ReactNode;
125
+ }
126
+ /**
127
+ * Data-driven menu model shared by Dropdown Menu, Context Menu, Command, Select/Combobox option
128
+ * lists and sidebar flyouts.
129
+ */
130
+ export type MenuEntry = MenuItemEntry | MenuCheckboxEntry | MenuRadioEntry | MenuSubmenuEntry | MenuGroupEntry | MenuSeparatorEntry | MenuLabelEntry;
131
+ export {};
@@ -0,0 +1,109 @@
1
+ import { cva } from "class-variance-authority";
2
+ /**
3
+ * The shared box look of every text-entry or trigger control: Input, Textarea, Select trigger,
4
+ * Combobox, date/time picker triggers, Tag input. Works both when the box itself is focusable
5
+ * (a `<button>` trigger) and when it wraps a focusable child (Input group): focus, invalid and
6
+ * disabled styles react to the element itself **or** a descendant.
7
+ *
8
+ * Heights follow the density axis through `--control-h`: `sm` = control-h − 0.5rem, `md` = control-h,
9
+ * `lg` = control-h + 0.5rem. Set `data-readonly` on the box for the read-only look.
10
+ *
11
+ * ```tsx
12
+ * <button className={controlVariants({ size: "sm" })}>Status</button>
13
+ * ```
14
+ */
15
+ export const controlVariants = cva([
16
+ "relative flex w-full min-w-0 items-center rounded-ui border text-fg",
17
+ "transition-[border-color,box-shadow,background-color] duration-150",
18
+ // focus on self (trigger) or on a child (input group)
19
+ "focus-visible:outline-none focus-visible:border-ring focus-visible:shadow-[0_0_0_3px_var(--accent-soft)]",
20
+ "has-[:focus-visible]:border-ring has-[:focus-visible]:shadow-[0_0_0_3px_var(--accent-soft)]",
21
+ // invalid
22
+ "aria-invalid:border-danger has-[[aria-invalid=true]]:border-danger",
23
+ "aria-invalid:focus-visible:shadow-[0_0_0_3px_color-mix(in_srgb,var(--danger)_18%,transparent)]",
24
+ "has-[[aria-invalid=true]:focus-visible]:shadow-[0_0_0_3px_color-mix(in_srgb,var(--danger)_18%,transparent)]",
25
+ // disabled
26
+ // Only a disabled field or trigger dims the wrapper; a disabled helper button inside (a stepper at
27
+ // its limit, a clear button) must not make the whole control look disabled.
28
+ "disabled:cursor-not-allowed disabled:opacity-50",
29
+ "has-[input:disabled,select:disabled,textarea:disabled,[aria-haspopup]:disabled,[role=combobox]:disabled]:cursor-not-allowed",
30
+ "has-[input:disabled,select:disabled,textarea:disabled,[aria-haspopup]:disabled,[role=combobox]:disabled]:opacity-50",
31
+ "aria-disabled:cursor-not-allowed aria-disabled:opacity-50",
32
+ // read-only
33
+ "data-readonly:border-dashed data-readonly:bg-transparent data-readonly:shadow-none",
34
+ ], {
35
+ variants: {
36
+ size: {
37
+ sm: "h-[calc(var(--control-h)-0.5rem)] gap-1.5 px-2.5 text-[13px] [&_svg]:size-3.5",
38
+ md: "h-(--control-h) gap-2 px-3 text-sm [&_svg]:size-4",
39
+ lg: "h-[calc(var(--control-h)+0.5rem)] gap-2.5 px-3.5 text-[15px] [&_svg]:size-[18px]",
40
+ },
41
+ variant: {
42
+ /** Field background with a hairline border. */
43
+ default: "border-field-border bg-field hover:border-field-border-hover",
44
+ /** Borderless until hover/focus — inline cell editing, toolbar search. */
45
+ ghost: "border-transparent bg-transparent hover:bg-hover",
46
+ /** Inside the dark sidebar (`surface-nav`). */
47
+ nav: "border-nav-line bg-nav-hover text-nav-fg-strong hover:border-[color-mix(in_srgb,var(--nav-fg)_30%,transparent)]",
48
+ },
49
+ pill: { true: "rounded-full" },
50
+ /** Auto height for multi-line content (Textarea, Tag input). */
51
+ multiline: { true: "h-auto items-start py-2" },
52
+ },
53
+ defaultVariants: { size: "md", variant: "default" },
54
+ });
55
+ /**
56
+ * One look for every list item: Select / Combobox options, pickers, Dropdown and Context Menu
57
+ * items, Command items, sidebar flyout links. Highlight works with Radix (`data-highlighted`),
58
+ * cmdk (`data-selected=true`) and plain `aria-selected`; checked items use `data-state=checked`.
59
+ *
60
+ * Compose with `itemSlots` for the inner parts.
61
+ *
62
+ * ```tsx
63
+ * <DropdownMenu.Item className={itemVariants({ tone: "danger" })}>
64
+ * <Trash2 className={itemSlots.icon} /> Delete <span className={itemSlots.shortcut}>⌘⌫</span>
65
+ * </DropdownMenu.Item>
66
+ * ```
67
+ */
68
+ export const itemVariants = cva([
69
+ "relative flex w-full cursor-default select-none items-center gap-2 rounded-ui-sm text-start text-fg outline-none",
70
+ "transition-colors duration-100",
71
+ "data-highlighted:bg-hover data-[selected=true]:bg-hover aria-selected:bg-hover focus-visible:bg-hover",
72
+ "data-[state=checked]:font-medium",
73
+ "[&[data-disabled]:not([data-disabled=false])]:pointer-events-none [&[data-disabled]:not([data-disabled=false])]:opacity-45",
74
+ "aria-disabled:pointer-events-none aria-disabled:opacity-45",
75
+ "[&_svg]:size-4 [&_svg]:shrink-0",
76
+ ], {
77
+ variants: {
78
+ size: {
79
+ sm: "min-h-7 px-2 py-1 text-[13px]",
80
+ md: "min-h-8 px-2 py-1.5 text-sm",
81
+ },
82
+ tone: {
83
+ default: "[&_svg]:text-fg-muted",
84
+ danger: "text-danger [&_svg]:text-danger data-highlighted:bg-[color-mix(in_srgb,var(--danger)_10%,transparent)] data-[selected=true]:bg-[color-mix(in_srgb,var(--danger)_10%,transparent)]",
85
+ /** Inside the dark sidebar / nav popovers. */
86
+ nav: "text-nav-fg data-highlighted:bg-nav-hover data-highlighted:text-nav-fg-strong data-[selected=true]:bg-nav-hover aria-selected:bg-nav-hover focus-visible:bg-nav-hover",
87
+ },
88
+ /** Reserve the start gutter for a check/radio indicator. */
89
+ inset: { true: "ps-8" },
90
+ },
91
+ defaultVariants: { size: "md", tone: "default" },
92
+ });
93
+ /** Class names for the inner parts of an item. */
94
+ export const itemSlots = {
95
+ /** Leading icon. */
96
+ icon: "size-4 shrink-0 text-fg-muted",
97
+ /** Check / radio indicator in the inset gutter. */
98
+ indicator: "absolute start-2 flex size-4 items-center justify-center text-fg",
99
+ /** Main label (truncates). */
100
+ label: "min-w-0 flex-1 truncate",
101
+ /** Secondary line under the label. */
102
+ description: "block text-xs font-normal text-fg-subtle",
103
+ /** Shortcut / trailing meta at the end. */
104
+ shortcut: "ms-auto ps-4 font-mono text-[11px] tracking-wide text-fg-subtle",
105
+ /** Group heading. */
106
+ groupLabel: "px-2 pt-2 pb-1 text-[11px] font-medium tracking-[0.04em] text-fg-subtle",
107
+ /** Divider between groups. */
108
+ separator: "-mx-1 my-1 h-px bg-line",
109
+ };
@@ -0,0 +1,24 @@
1
+ /**
2
+ * `YYYY-MM-DD` arithmetic on the proleptic Gregorian calendar, done in UTC so the host time zone
3
+ * never shifts a day. React-free.
4
+ */
5
+ import type { IsoDate } from "./types.js";
6
+ /** True for a well-formed, existing calendar date ("2026-02-30" is false). */
7
+ export declare function isIsoDate(value: unknown): value is IsoDate;
8
+ export declare function daysInMonth(year: number, month: number): number;
9
+ /** Days since 1970-01-01 for a `YYYY-MM-DD` string. Throws on malformed input. */
10
+ export declare function toDayNumber(date: IsoDate): number;
11
+ /** Inverse of `toDayNumber`. */
12
+ export declare function fromDayNumber(n: number): IsoDate;
13
+ export declare function addDays(date: IsoDate, n: number): IsoDate;
14
+ /** Whole days from `a` to `b` (`b − a`). */
15
+ export declare function diffDays(a: IsoDate, b: IsoDate): number;
16
+ /** ISO weekday: 1 = Monday … 7 = Sunday (the numbering of `Intl.Locale#getWeekInfo`). */
17
+ export declare function isoWeekday(date: IsoDate): number;
18
+ /** The local calendar date of a `Date` (or now), without going through UTC. */
19
+ export declare function toIsoDate(d?: Date): IsoDate;
20
+ /** `YYYY-MM-DD` of an instant in an IANA time zone. */
21
+ export declare function isoDateInZone(instant: Date | number, timeZone: string): IsoDate;
22
+ export declare function compareIsoDate(a: IsoDate, b: IsoDate): number;
23
+ /** Every date in `[start, end]`, inclusive. */
24
+ export declare function eachDay(start: IsoDate, end: IsoDate): IsoDate[];
@@ -0,0 +1,68 @@
1
+ const ISO_RE = /^(\d{4})-(\d{2})-(\d{2})$/;
2
+ const DAY_MS = 86_400_000;
3
+ /** True for a well-formed, existing calendar date ("2026-02-30" is false). */
4
+ export function isIsoDate(value) {
5
+ if (typeof value !== "string")
6
+ return false;
7
+ const m = ISO_RE.exec(value);
8
+ if (!m)
9
+ return false;
10
+ const y = Number(m[1]);
11
+ const mo = Number(m[2]);
12
+ const d = Number(m[3]);
13
+ if (mo < 1 || mo > 12 || d < 1)
14
+ return false;
15
+ return d <= daysInMonth(y, mo);
16
+ }
17
+ export function daysInMonth(year, month) {
18
+ return new Date(Date.UTC(year, month, 0)).getUTCDate();
19
+ }
20
+ /** Days since 1970-01-01 for a `YYYY-MM-DD` string. Throws on malformed input. */
21
+ export function toDayNumber(date) {
22
+ const m = ISO_RE.exec(date);
23
+ if (!m)
24
+ throw new RangeError(`Expected YYYY-MM-DD, got "${date}"`);
25
+ return Math.round(Date.UTC(Number(m[1]), Number(m[2]) - 1, Number(m[3])) / DAY_MS);
26
+ }
27
+ /** Inverse of `toDayNumber`. */
28
+ export function fromDayNumber(n) {
29
+ const d = new Date(n * DAY_MS);
30
+ const y = d.getUTCFullYear();
31
+ const yy = y < 0 ? "-" + String(-y).padStart(6, "0") : String(y).padStart(4, "0");
32
+ return `${yy}-${String(d.getUTCMonth() + 1).padStart(2, "0")}-${String(d.getUTCDate()).padStart(2, "0")}`;
33
+ }
34
+ export function addDays(date, n) {
35
+ return fromDayNumber(toDayNumber(date) + n);
36
+ }
37
+ /** Whole days from `a` to `b` (`b − a`). */
38
+ export function diffDays(a, b) {
39
+ return toDayNumber(b) - toDayNumber(a);
40
+ }
41
+ /** ISO weekday: 1 = Monday … 7 = Sunday (the numbering of `Intl.Locale#getWeekInfo`). */
42
+ export function isoWeekday(date) {
43
+ // 1970-01-01 was a Thursday (4).
44
+ const n = toDayNumber(date);
45
+ return ((((n + 3) % 7) + 7) % 7) + 1;
46
+ }
47
+ /** The local calendar date of a `Date` (or now), without going through UTC. */
48
+ export function toIsoDate(d = new Date()) {
49
+ return `${String(d.getFullYear()).padStart(4, "0")}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`;
50
+ }
51
+ /** `YYYY-MM-DD` of an instant in an IANA time zone. */
52
+ export function isoDateInZone(instant, timeZone) {
53
+ const parts = new Intl.DateTimeFormat("en-CA", { timeZone, year: "numeric", month: "2-digit", day: "2-digit" }).formatToParts(instant);
54
+ const get = (t) => parts.find((p) => p.type === t)?.value ?? "";
55
+ return `${get("year")}-${get("month")}-${get("day")}`;
56
+ }
57
+ export function compareIsoDate(a, b) {
58
+ return a < b ? -1 : a > b ? 1 : 0;
59
+ }
60
+ /** Every date in `[start, end]`, inclusive. */
61
+ export function eachDay(start, end) {
62
+ const a = toDayNumber(start);
63
+ const b = toDayNumber(end);
64
+ const out = [];
65
+ for (let n = a; n <= b; n++)
66
+ out.push(fromDayNumber(n));
67
+ return out;
68
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Exact decimal-string arithmetic for money (BigInt fixed point). Values in and out are decimal
3
+ * strings ("1234.50"), never floats. Rounding is half-up, away from zero (commercial rounding).
4
+ */
5
+ /** Parses a decimal string into integer units at `scale` (half-up when it has more digits). */
6
+ export declare function toUnits(value: string | number, scale: number): bigint;
7
+ /** Formats integer units at `scale` as a decimal string with exactly `scale` places. */
8
+ export declare function fromUnits(units: bigint, scale: number): string;
9
+ /** `a × b ÷ c` with half-up rounding (all bigint units). */
10
+ export declare function mulDivRound(a: bigint, b: bigint, c: bigint): bigint;
11
+ /** Rounds a decimal string half-up to `places` ("2.345" → "2.35", "-2.345" → "-2.35"). */
12
+ export declare function roundHalfUp(value: string | number, places?: number): string;
13
+ export declare function addDecimal(...values: (string | number)[]): string;
14
+ export declare function subtractDecimal(a: string | number, b: string | number): string;
15
+ /** `a × b` rounded half-up to `places`. */
16
+ export declare function multiplyDecimal(a: string | number, b: string | number, places?: number): string;
17
+ /** `a ÷ b` rounded half-up to `places`. */
18
+ export declare function divideDecimal(a: string | number, b: string | number, places?: number): string;
19
+ export declare function compareDecimal(a: string | number, b: string | number): -1 | 0 | 1;
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Exact decimal-string arithmetic for money (BigInt fixed point). Values in and out are decimal
3
+ * strings ("1234.50"), never floats. Rounding is half-up, away from zero (commercial rounding).
4
+ */
5
+ const DEC_RE = /^([+-])?(\d*)(?:\.(\d*))?$/;
6
+ /** Parses a decimal string into integer units at `scale` (half-up when it has more digits). */
7
+ export function toUnits(value, scale) {
8
+ const s = typeof value === "number" ? numberToString(value) : value.trim().replace(/[\s_]/g, "");
9
+ const m = DEC_RE.exec(s);
10
+ if (!m || (m[2] === "" && (m[3] ?? "") === ""))
11
+ throw new RangeError(`Not a decimal: "${value}"`);
12
+ const neg = m[1] === "-";
13
+ const int = m[2] || "0";
14
+ const frac = m[3] ?? "";
15
+ let units = BigInt(int + frac.slice(0, scale).padEnd(scale, "0"));
16
+ const next = frac.charCodeAt(scale);
17
+ if (frac.length > scale && next >= 53 /* "5" */)
18
+ units += 1n;
19
+ return neg ? -units : units;
20
+ }
21
+ /** Formats integer units at `scale` as a decimal string with exactly `scale` places. */
22
+ export function fromUnits(units, scale) {
23
+ const neg = units < 0n;
24
+ const abs = (neg ? -units : units).toString().padStart(scale + 1, "0");
25
+ const out = scale ? `${abs.slice(0, -scale)}.${abs.slice(-scale)}` : abs;
26
+ return neg && units !== 0n ? `-${out}` : out;
27
+ }
28
+ function numberToString(n) {
29
+ if (!Number.isFinite(n))
30
+ throw new RangeError(`Not a finite number: ${n}`);
31
+ const s = String(n);
32
+ if (!/e/i.test(s))
33
+ return s;
34
+ return n.toFixed(20).replace(/0+$/, "").replace(/\.$/, "");
35
+ }
36
+ /** `a × b ÷ c` with half-up rounding (all bigint units). */
37
+ export function mulDivRound(a, b, c) {
38
+ if (c === 0n)
39
+ throw new RangeError("Division by zero");
40
+ const num = a * b;
41
+ const neg = num < 0n !== c < 0n;
42
+ const n = num < 0n ? -num : num;
43
+ const d = c < 0n ? -c : c;
44
+ const q = (n * 2n + d) / (d * 2n);
45
+ return neg ? -q : q;
46
+ }
47
+ /** Rounds a decimal string half-up to `places` ("2.345" → "2.35", "-2.345" → "-2.35"). */
48
+ export function roundHalfUp(value, places = 2) {
49
+ return fromUnits(toUnits(value, places), places);
50
+ }
51
+ export function addDecimal(...values) {
52
+ const scale = Math.max(2, ...values.map(scaleOf));
53
+ return fromUnits(values.reduce((s, v) => s + toUnits(v, scale), 0n), scale);
54
+ }
55
+ export function subtractDecimal(a, b) {
56
+ const scale = Math.max(2, scaleOf(a), scaleOf(b));
57
+ return fromUnits(toUnits(a, scale) - toUnits(b, scale), scale);
58
+ }
59
+ /** `a × b` rounded half-up to `places`. */
60
+ export function multiplyDecimal(a, b, places = 2) {
61
+ const sa = scaleOf(a);
62
+ const sb = scaleOf(b);
63
+ return fromUnits(mulDivRound(toUnits(a, sa) * toUnits(b, sb), 10n ** BigInt(places), 10n ** BigInt(sa + sb)), places);
64
+ }
65
+ /** `a ÷ b` rounded half-up to `places`. */
66
+ export function divideDecimal(a, b, places = 2) {
67
+ const s = Math.max(scaleOf(a), scaleOf(b));
68
+ return fromUnits(mulDivRound(toUnits(a, s), 10n ** BigInt(places), toUnits(b, s)), places);
69
+ }
70
+ export function compareDecimal(a, b) {
71
+ const s = Math.max(scaleOf(a), scaleOf(b));
72
+ const d = toUnits(a, s) - toUnits(b, s);
73
+ return d < 0n ? -1 : d > 0n ? 1 : 0;
74
+ }
75
+ function scaleOf(v) {
76
+ const s = typeof v === "number" ? numberToString(v) : v.trim();
77
+ const i = s.indexOf(".");
78
+ return i === -1 ? 0 : s.length - i - 1;
79
+ }
@@ -0,0 +1,30 @@
1
+ import type { Holiday, HolidayProvider, HolidayRange, IsoDate } from "./types.js";
2
+ export interface CreateHolidayProviderOptions {
3
+ id: string;
4
+ /** A static list, or a function returning the holidays of one year. */
5
+ holidays: Holiday[] | ((year: number) => Holiday[]);
6
+ coverage?: {
7
+ from: IsoDate;
8
+ to: IsoDate;
9
+ };
10
+ }
11
+ /**
12
+ * A `HolidayProvider` from plain data. Region-specific entries are returned only when the
13
+ * caller asks for that region.
14
+ *
15
+ * ```ts
16
+ * const company = createHolidayProvider({
17
+ * id: "acme",
18
+ * holidays: [{ date: "2026-12-24", name: "Company day off", kind: "bank" }],
19
+ * });
20
+ * ```
21
+ */
22
+ export declare function createHolidayProvider(options: CreateHolidayProviderOptions): HolidayProvider;
23
+ /** Merges providers (e.g. national pack + company days off). Coverage is the intersection. */
24
+ export declare function combineHolidayProviders(...providers: HolidayProvider[]): HolidayProvider;
25
+ /** True when `range` lies inside the provider's declared coverage (or none is declared). */
26
+ export declare function isRangeCovered(provider: HolidayProvider, range: HolidayRange): boolean;
27
+ /** The holidays on one date. */
28
+ export declare function holidaysOn(provider: HolidayProvider | HolidayProvider[] | undefined, date: IsoDate, region?: string): Holiday[];
29
+ /** The holiday's name for `locale`: `localName` when the locale's language matches the pack. */
30
+ export declare function holidayName(holiday: Holiday, locale: string, packLanguage?: string): string;
@@ -0,0 +1,79 @@
1
+ /** Holiday providers: build one from data, combine several, check coverage. React-free. */
2
+ import { compareIsoDate } from "./date.js";
3
+ const inRange = (d, r) => d >= r.start && d <= r.end;
4
+ const regionMatch = (h, region) => !h.region || (region !== undefined && h.region === region);
5
+ /**
6
+ * A `HolidayProvider` from plain data. Region-specific entries are returned only when the
7
+ * caller asks for that region.
8
+ *
9
+ * ```ts
10
+ * const company = createHolidayProvider({
11
+ * id: "acme",
12
+ * holidays: [{ date: "2026-12-24", name: "Company day off", kind: "bank" }],
13
+ * });
14
+ * ```
15
+ */
16
+ export function createHolidayProvider(options) {
17
+ const { id, holidays, coverage } = options;
18
+ const byYear = new Map();
19
+ const yearOf = (year) => {
20
+ let list = byYear.get(year);
21
+ if (!list) {
22
+ list = typeof holidays === "function" ? holidays(year) : holidays.filter((h) => h.date.startsWith(`${year}-`));
23
+ list = [...list].sort((a, b) => compareIsoDate(a.date, b.date));
24
+ byYear.set(year, list);
25
+ }
26
+ return list;
27
+ };
28
+ return {
29
+ id,
30
+ coverage,
31
+ get(range, opts) {
32
+ if (range.end < range.start)
33
+ return [];
34
+ const y0 = Number(range.start.slice(0, 4));
35
+ const y1 = Number(range.end.slice(0, 4));
36
+ const out = [];
37
+ for (let y = y0; y <= y1; y++)
38
+ for (const h of yearOf(y))
39
+ if (inRange(h.date, range) && regionMatch(h, opts?.region))
40
+ out.push(h);
41
+ return out;
42
+ },
43
+ };
44
+ }
45
+ /** Merges providers (e.g. national pack + company days off). Coverage is the intersection. */
46
+ export function combineHolidayProviders(...providers) {
47
+ const covs = providers.map((p) => p.coverage);
48
+ const coverage = covs.every(Boolean)
49
+ ? {
50
+ from: covs.reduce((m, c) => (c.from > m ? c.from : m), covs[0].from),
51
+ to: covs.reduce((m, c) => (c.to < m ? c.to : m), covs[0].to),
52
+ }
53
+ : undefined;
54
+ return {
55
+ id: providers.map((p) => p.id).join("+"),
56
+ coverage,
57
+ get(range, opts) {
58
+ return providers.flatMap((p) => p.get(range, opts)).sort((a, b) => compareIsoDate(a.date, b.date));
59
+ },
60
+ };
61
+ }
62
+ /** True when `range` lies inside the provider's declared coverage (or none is declared). */
63
+ export function isRangeCovered(provider, range) {
64
+ const c = provider.coverage;
65
+ return !c || (range.start >= c.from && range.end <= c.to);
66
+ }
67
+ /** The holidays on one date. */
68
+ export function holidaysOn(provider, date, region) {
69
+ if (!provider)
70
+ return [];
71
+ const list = Array.isArray(provider) ? provider : [provider];
72
+ return list.flatMap((p) => p.get({ start: date, end: date }, { region }));
73
+ }
74
+ /** The holiday's name for `locale`: `localName` when the locale's language matches the pack. */
75
+ export function holidayName(holiday, locale, packLanguage) {
76
+ if (holiday.localName && packLanguage && locale.toLowerCase().split(/[-_]/)[0] === packLanguage)
77
+ return holiday.localName;
78
+ return holiday.name;
79
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * ISO 13616 IBAN: normalization, mod-97 check, check-digit computation and display grouping.
3
+ * Chunked mod-97 (no BigInt). Per-country rules are pack data (`IbanCountryRule`).
4
+ */
5
+ import type { IbanCountryRule, IdResult } from "./types.js";
6
+ /**
7
+ * IBAN lengths from the SWIFT IBAN registry for common countries. Unknown countries are
8
+ * checked against the generic 15–34 range only.
9
+ */
10
+ export declare const IBAN_LENGTHS: Readonly<Record<string, number>>;
11
+ /** Uppercase, separators and whitespace removed ("tr33 0006-1…" → "TR330006…"). */
12
+ export declare function normalizeIban(value: string): string;
13
+ /** The two check digits for a country code and BBAN. */
14
+ export declare function ibanCheckDigits(country: string, bban: string): string;
15
+ /** Builds a valid IBAN from a country code and BBAN. */
16
+ export declare function buildIban(country: string, bban: string): string;
17
+ /**
18
+ * Validates an IBAN: shape, the country's length (and BBAN pattern when a rule is given), mod 97.
19
+ *
20
+ * ```ts
21
+ * validateIban("TR33 0006 1005 1978 6457 8413 26"); // { valid: true, value: "TR33…", kind: "iban-TR" }
22
+ * ```
23
+ */
24
+ export declare function validateIban(value: string, rules?: IbanCountryRule[]): IdResult;
25
+ export declare function isValidIban(value: string, rules?: IbanCountryRule[]): boolean;
26
+ /** Print format: groups of four ("TR33 0006 1005 1978 6457 8413 26"). Works on partial input. */
27
+ export declare function formatIban(value: string): string;
28
+ /** Electronic format (no spaces, uppercase). */
29
+ export declare const electronicIban: typeof normalizeIban;
@@ -0,0 +1,74 @@
1
+ /**
2
+ * IBAN lengths from the SWIFT IBAN registry for common countries. Unknown countries are
3
+ * checked against the generic 15–34 range only.
4
+ */
5
+ export const IBAN_LENGTHS = {
6
+ AD: 24, AE: 23, AL: 28, AT: 20, AZ: 28, BA: 20, BE: 16, BG: 22, BH: 22, BR: 29, CH: 21, CY: 28, CZ: 24,
7
+ DE: 22, DK: 18, DO: 28, EE: 20, EG: 29, ES: 24, FI: 18, FO: 18, FR: 27, GB: 22, GE: 22, GI: 23, GL: 18,
8
+ GR: 27, HR: 21, HU: 28, IE: 22, IL: 23, IQ: 23, IS: 26, IT: 27, JO: 30, KW: 30, KZ: 20, LB: 28, LI: 21,
9
+ LT: 20, LU: 20, LV: 21, MC: 27, MD: 24, ME: 22, MK: 19, MT: 31, MU: 30, NL: 18, NO: 15, PK: 24, PL: 28,
10
+ PS: 29, PT: 25, QA: 29, RO: 24, RS: 22, SA: 24, SE: 24, SI: 19, SK: 24, SM: 27, TN: 24, TR: 26, UA: 29,
11
+ VA: 22, XK: 20,
12
+ };
13
+ /** Uppercase, separators and whitespace removed ("tr33 0006-1…" → "TR330006…"). */
14
+ export function normalizeIban(value) {
15
+ return value.replace(/[\s\-._]/g, "").toUpperCase();
16
+ }
17
+ /** `n mod 97` of a string of decimal digits, in 9-digit chunks. */
18
+ function mod97(digits) {
19
+ let rem = 0;
20
+ for (let i = 0; i < digits.length; i += 7)
21
+ rem = Number(String(rem) + digits.slice(i, i + 7)) % 97;
22
+ return rem;
23
+ }
24
+ /** Letters → numbers (A = 10 … Z = 35). */
25
+ function toDigits(s) {
26
+ let out = "";
27
+ for (const ch of s) {
28
+ const c = ch.charCodeAt(0);
29
+ out += c >= 65 && c <= 90 ? String(c - 55) : ch;
30
+ }
31
+ return out;
32
+ }
33
+ /** The two check digits for a country code and BBAN. */
34
+ export function ibanCheckDigits(country, bban) {
35
+ const rem = mod97(toDigits(normalizeIban(bban) + country.toUpperCase() + "00"));
36
+ return String(98 - rem).padStart(2, "0");
37
+ }
38
+ /** Builds a valid IBAN from a country code and BBAN. */
39
+ export function buildIban(country, bban) {
40
+ const b = normalizeIban(bban);
41
+ return country.toUpperCase() + ibanCheckDigits(country, b) + b;
42
+ }
43
+ /**
44
+ * Validates an IBAN: shape, the country's length (and BBAN pattern when a rule is given), mod 97.
45
+ *
46
+ * ```ts
47
+ * validateIban("TR33 0006 1005 1978 6457 8413 26"); // { valid: true, value: "TR33…", kind: "iban-TR" }
48
+ * ```
49
+ */
50
+ export function validateIban(value, rules) {
51
+ const v = normalizeIban(value);
52
+ if (!v)
53
+ return { valid: false, value: v, reason: "empty" };
54
+ if (!/^[A-Z]{2}\d{2}[A-Z0-9]+$/.test(v))
55
+ return { valid: false, value: v, reason: "chars" };
56
+ const country = v.slice(0, 2);
57
+ const rule = rules?.find((r) => r.country === country);
58
+ const length = rule?.length ?? IBAN_LENGTHS[country];
59
+ if (length !== undefined ? v.length !== length : v.length < 15 || v.length > 34)
60
+ return { valid: false, value: v, kind: `iban-${country}`, reason: "length" };
61
+ if (rule && !rule.bban.test(v.slice(4)))
62
+ return { valid: false, value: v, kind: `iban-${country}`, reason: "pattern" };
63
+ const ok = mod97(toDigits(v.slice(4) + v.slice(0, 4))) === 1;
64
+ return ok ? { valid: true, value: v, kind: `iban-${country}` } : { valid: false, value: v, kind: `iban-${country}`, reason: "checksum" };
65
+ }
66
+ export function isValidIban(value, rules) {
67
+ return validateIban(value, rules).valid;
68
+ }
69
+ /** Print format: groups of four ("TR33 0006 1005 1978 6457 8413 26"). Works on partial input. */
70
+ export function formatIban(value) {
71
+ return normalizeIban(value).replace(/(.{4})(?=.)/g, "$1 ");
72
+ }
73
+ /** Electronic format (no spaces, uppercase). */
74
+ export const electronicIban = normalizeIban;
@@ -0,0 +1,7 @@
1
+ export type { IsoDate, WeekInfo, Holiday, HolidayKind, HolidayRange, HolidayProvider, BusinessHours, WorkCalendar, IdResult, IdRule, IbanCountryRule, TaxRate, TaxScheme, AddressProvince, AddressDistrict, AddressDataSource, LocaleDataPack, } from "./types.js";
2
+ export { isIsoDate, daysInMonth, toDayNumber, fromDayNumber, addDays, diffDays, isoWeekday, toIsoDate, isoDateInZone, compareIsoDate, eachDay } from "./date.js";
3
+ export { getWeekInfo, weekInfoForRegion, regionOf, defaultWorkDays, weekdayOrder } from "./week-info.js";
4
+ export { createHolidayProvider, combineHolidayProviders, isRangeCovered, holidaysOn, holidayName, type CreateHolidayProviderOptions } from "./holidays.js";
5
+ export { workingValue, isWorkingDay, countWorkingDays, addWorkingDays, nextWorkingDay } from "./working-days.js";
6
+ export { IBAN_LENGTHS, normalizeIban, ibanCheckDigits, buildIban, validateIban, isValidIban, formatIban, electronicIban } from "./iban.js";
7
+ export { toUnits, fromUnits, mulDivRound, roundHalfUp, addDecimal, subtractDecimal, multiplyDecimal, divideDecimal, compareDecimal } from "./decimal.js";