@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,226 @@
1
+ /**
2
+ * Gantt scheduling core: task tree flattening, summary roll-ups, cycle detection and forward
3
+ * scheduling of finish-to-start links (working-day aware). React-free.
4
+ *
5
+ * Dates are `YYYY-MM-DD`; `end` is the last day of the task, inclusive. A milestone has
6
+ * `start === end`.
7
+ */
8
+ import { addDays, compareIsoDate, diffDays } from "../../locale-data/core/date.js";
9
+ import { addWorkingDays, countWorkingDays, nextWorkingDay } from "../../locale-data/core/working-days.js";
10
+ /** Depth-first order of a task forest (input order is kept among siblings). */
11
+ export function flattenTasks(tasks) {
12
+ const ids = new Set(tasks.map((t) => t.id));
13
+ const children = new Map();
14
+ for (const t of tasks) {
15
+ const parent = t.parentId && ids.has(t.parentId) && t.parentId !== t.id ? t.parentId : undefined;
16
+ const list = children.get(parent) ?? [];
17
+ list.push(t);
18
+ children.set(parent, list);
19
+ }
20
+ const out = [];
21
+ const seen = new Set();
22
+ const walk = (parent, depth, prefix) => {
23
+ (children.get(parent) ?? []).forEach((task, i) => {
24
+ if (seen.has(task.id))
25
+ return;
26
+ seen.add(task.id);
27
+ const wbs = prefix ? `${prefix}.${i + 1}` : String(i + 1);
28
+ out.push({ task, depth, wbs, index: out.length + 1, hasChildren: (children.get(task.id)?.length ?? 0) > 0, parentId: parent });
29
+ walk(task.id, depth + 1, wbs);
30
+ });
31
+ };
32
+ walk(undefined, 0, "");
33
+ return out;
34
+ }
35
+ /** Visible rows given a set of collapsed task ids. */
36
+ export function visibleTasks(flat, collapsed) {
37
+ const out = [];
38
+ let hideBelow = Infinity;
39
+ for (const row of flat) {
40
+ if (row.depth > hideBelow)
41
+ continue;
42
+ hideBelow = Infinity;
43
+ out.push(row);
44
+ if (row.hasChildren && collapsed.has(row.task.id))
45
+ hideBelow = row.depth;
46
+ }
47
+ return out;
48
+ }
49
+ /**
50
+ * Summary tasks (and any task with children) span their children: earliest start, latest end,
51
+ * duration-weighted progress. Returns new task objects for changed summaries only.
52
+ */
53
+ export function rollupSummaries(tasks) {
54
+ const byId = new Map(tasks.map((t) => [t.id, { ...t }]));
55
+ const kids = new Map();
56
+ for (const t of tasks)
57
+ if (t.parentId && byId.has(t.parentId))
58
+ kids.set(t.parentId, [...(kids.get(t.parentId) ?? []), t.id]);
59
+ const done = new Set();
60
+ const visit = (id, stack) => {
61
+ const t = byId.get(id);
62
+ const c = kids.get(id);
63
+ if (!c || done.has(id) || stack.has(id))
64
+ return t;
65
+ stack.add(id);
66
+ let start;
67
+ let end;
68
+ let weight = 0;
69
+ let progress = 0;
70
+ for (const k of c) {
71
+ const child = visit(k, stack);
72
+ if (!start || compareIsoDate(child.start, start) < 0)
73
+ start = child.start;
74
+ if (!end || compareIsoDate(child.end, end) > 0)
75
+ end = child.end;
76
+ const w = Math.max(1, diffDays(child.start, child.end) + 1);
77
+ weight += w;
78
+ progress += w * (child.progress ?? 0);
79
+ }
80
+ stack.delete(id);
81
+ done.add(id);
82
+ if (start && end) {
83
+ t.start = start;
84
+ t.end = end;
85
+ t.progress = weight ? progress / weight : 0;
86
+ if (!t.type || t.type === "task")
87
+ t.type = "summary";
88
+ }
89
+ return t;
90
+ };
91
+ for (const id of byId.keys())
92
+ visit(id, new Set());
93
+ return tasks.map((t) => byId.get(t.id));
94
+ }
95
+ /**
96
+ * Cycles in the dependency graph, each as a list of task ids (`["a", "b", "c"]` for a → b → c → a).
97
+ * Empty when the graph is acyclic.
98
+ */
99
+ export function detectCycles(links) {
100
+ const adj = new Map();
101
+ for (const l of links)
102
+ adj.set(l.from, [...(adj.get(l.from) ?? []), l.to]);
103
+ const state = new Map(); // 1 visiting, 2 done
104
+ const stack = [];
105
+ const cycles = [];
106
+ const dfs = (n) => {
107
+ state.set(n, 1);
108
+ stack.push(n);
109
+ for (const m of adj.get(n) ?? []) {
110
+ const s = state.get(m);
111
+ if (s === 1)
112
+ cycles.push(stack.slice(stack.indexOf(m)));
113
+ else if (!s)
114
+ dfs(m);
115
+ }
116
+ stack.pop();
117
+ state.set(n, 2);
118
+ };
119
+ for (const n of adj.keys())
120
+ if (!state.has(n))
121
+ dfs(n);
122
+ return cycles;
123
+ }
124
+ /** Would adding `from → to` create a cycle? */
125
+ export function createsCycle(links, from, to) {
126
+ if (from === to)
127
+ return true;
128
+ return detectCycles([...links, { from, to }]).length > 0;
129
+ }
130
+ /** Task length in days or working days (inclusive of both ends). Milestones are 0. */
131
+ export function taskDuration(task, cal, unit = "workdays") {
132
+ if (task.type === "milestone")
133
+ return 0;
134
+ if (unit === "days" || !cal)
135
+ return diffDays(task.start, task.end) + 1;
136
+ return countWorkingDays(task.start, task.end, cal);
137
+ }
138
+ /** Moves a task so it starts on `start`, keeping its length (working days when a calendar is given). */
139
+ export function moveTaskTo(task, start, cal, unit = "workdays") {
140
+ if (task.type === "milestone")
141
+ return { ...task, start, end: start };
142
+ if (unit === "days" || !cal)
143
+ return { ...task, start, end: addDays(start, diffDays(task.start, task.end)) };
144
+ const s = nextWorkingDay(start, cal, 1);
145
+ const len = Math.max(1, countWorkingDays(task.start, task.end, cal));
146
+ return { ...task, start: s, end: addWorkingDays(s, len - 1, cal) };
147
+ }
148
+ /**
149
+ * Forward scheduling of finish-to-start links: every successor starts no earlier than the day
150
+ * after its predecessor ends (+ `lagDays`), skipping non-working days when a calendar is given.
151
+ * Successors are only pushed later, never pulled earlier. Returns a new array with moved tasks
152
+ * replaced; unchanged tasks keep their identity. Links in a cycle are ignored.
153
+ *
154
+ * ```ts
155
+ * const next = scheduleForward(tasks, links, trWorkCalendar);
156
+ * const moved = next.filter((t, i) => t !== tasks[i]);
157
+ * ```
158
+ */
159
+ export function scheduleForward(tasks, links, cal, unit = "workdays") {
160
+ const byId = new Map(tasks.map((t) => [t.id, t]));
161
+ const fs = links.filter((l) => (l.type ?? "FS") === "FS" && byId.has(l.from) && byId.has(l.to));
162
+ const cyclic = new Set(detectCycles(fs).flat());
163
+ const usable = fs.filter((l) => !(cyclic.has(l.from) && cyclic.has(l.to)));
164
+ const incoming = new Map();
165
+ const indeg = new Map();
166
+ for (const l of usable) {
167
+ incoming.set(l.to, [...(incoming.get(l.to) ?? []), l]);
168
+ indeg.set(l.to, (indeg.get(l.to) ?? 0) + 1);
169
+ }
170
+ const out = new Map(byId);
171
+ // Kahn order so predecessors settle first.
172
+ const queue = tasks.filter((t) => !indeg.get(t.id)).map((t) => t.id);
173
+ const order = [];
174
+ const remaining = new Map(indeg);
175
+ while (queue.length) {
176
+ const id = queue.shift();
177
+ order.push(id);
178
+ for (const l of usable) {
179
+ if (l.from !== id)
180
+ continue;
181
+ const n = (remaining.get(l.to) ?? 1) - 1;
182
+ remaining.set(l.to, n);
183
+ if (n === 0)
184
+ queue.push(l.to);
185
+ }
186
+ }
187
+ for (const id of order) {
188
+ const ins = incoming.get(id);
189
+ if (!ins)
190
+ continue;
191
+ const task = out.get(id);
192
+ let earliest;
193
+ for (const l of ins) {
194
+ const pred = out.get(l.from);
195
+ const lag = l.lagDays ?? 0;
196
+ let candidate = pred.type === "milestone" ? pred.end : addDays(pred.end, 1);
197
+ if (cal && unit === "workdays") {
198
+ candidate = nextWorkingDay(candidate, cal, 1);
199
+ if (lag)
200
+ candidate = addWorkingDays(candidate, lag, cal);
201
+ }
202
+ else if (lag)
203
+ candidate = addDays(candidate, lag);
204
+ if (!earliest || compareIsoDate(candidate, earliest) > 0)
205
+ earliest = candidate;
206
+ }
207
+ if (earliest && compareIsoDate(task.start, earliest) < 0)
208
+ out.set(id, moveTaskTo(task, earliest, cal, unit));
209
+ }
210
+ return tasks.map((t) => out.get(t.id));
211
+ }
212
+ /** Links whose successor starts before its predecessor allows (FS violated). */
213
+ export function linkViolations(tasks, links) {
214
+ const byId = new Map(tasks.map((t) => [t.id, t]));
215
+ const bad = new Set();
216
+ for (const l of links) {
217
+ const a = byId.get(l.from);
218
+ const b = byId.get(l.to);
219
+ if (!a || !b || (l.type ?? "FS") !== "FS")
220
+ continue;
221
+ const limit = a.type === "milestone" ? a.end : addDays(a.end, 1);
222
+ if (compareIsoDate(b.start, limit) < 0)
223
+ bad.add(l.id);
224
+ }
225
+ return bad;
226
+ }
@@ -0,0 +1,6 @@
1
+ export { createTimeScale, toEpoch, minutesToClock, clockToMinutes, TIME_SCALE_PRESETS, type TimeScale, type TimeScaleOptions, type TimeScalePreset, type TimeScaleUnit, type TickUnit, type TimeTick, type TimeInput, } from "./time-scale.js";
2
+ export { countWorkingDays, addWorkingDays, isWorkingDay, workingValue, nextWorkingDay } from "../../locale-data/core/working-days.js";
3
+ export type { WorkCalendar, HolidayProvider, Holiday, BusinessHours } from "../../locale-data/core/types.js";
4
+ export { layoutDayEvents, packLanes, laneCount, isLaneEvent, eventDays, eventsInRange, compareEvents, shiftEvent, localDate, localMinutes, instantAt, weekDays, monthWeeks, type LayoutEvent, type PositionedEvent, type LaneAssignment, } from "./layout.js";
5
+ export { flattenTasks, visibleTasks, rollupSummaries, detectCycles, createsCycle, taskDuration, moveTaskTo, scheduleForward, linkViolations, type GanttTaskCore, type GanttLinkCore, type GanttTaskType, type FlatTask, } from "./gantt.js";
6
+ export { parseDuration, formatDuration, entryMinutes, timesheetTotals, toLineItems, lineItemsTotal, type TimeEntry, type LineItemDraft, } from "./duration.js";
@@ -0,0 +1,7 @@
1
+ // React-free core of @vamos-ui/react/scheduler: time scale, working-day math, event layout,
2
+ // Gantt scheduling and time-tracking helpers. Importable from server components and workers.
3
+ export { createTimeScale, toEpoch, minutesToClock, clockToMinutes, TIME_SCALE_PRESETS, } from "./time-scale.js";
4
+ export { countWorkingDays, addWorkingDays, isWorkingDay, workingValue, nextWorkingDay } from "../../locale-data/core/working-days.js";
5
+ export { layoutDayEvents, packLanes, laneCount, isLaneEvent, eventDays, eventsInRange, compareEvents, shiftEvent, localDate, localMinutes, instantAt, weekDays, monthWeeks, } from "./layout.js";
6
+ export { flattenTasks, visibleTasks, rollupSummaries, detectCycles, createsCycle, taskDuration, moveTaskTo, scheduleForward, linkViolations, } from "./gantt.js";
7
+ export { parseDuration, formatDuration, entryMinutes, timesheetTotals, toLineItems, lineItemsTotal, } from "./duration.js";
@@ -0,0 +1,97 @@
1
+ import type { IsoDate } from "../../locale-data/core/types.js";
2
+ /** Minimal shape the layout functions need (SchedulerEvent satisfies it). */
3
+ export interface LayoutEvent {
4
+ id: string;
5
+ start: string;
6
+ end: string;
7
+ allDay?: boolean;
8
+ }
9
+ export interface PositionedEvent<E extends LayoutEvent = LayoutEvent> {
10
+ event: E;
11
+ /** Minutes after local midnight of the day, clipped to the day (0–1440). */
12
+ startMin: number;
13
+ endMin: number;
14
+ /** 0-based column inside its overlap cluster. */
15
+ column: number;
16
+ /** Number of columns in the cluster. */
17
+ columns: number;
18
+ /** Columns this event may stretch over to its inline-end (free neighbours), ≥ 1. */
19
+ span: number;
20
+ /** The event started before / ends after this day. */
21
+ continuesBefore: boolean;
22
+ continuesAfter: boolean;
23
+ }
24
+ export interface LaneAssignment<E extends LayoutEvent = LayoutEvent> {
25
+ event: E;
26
+ lane: number;
27
+ /** First and last visible day (clipped to the range), inclusive. */
28
+ startDay: IsoDate;
29
+ endDay: IsoDate;
30
+ /** Index of `startDay` in the range and number of days covered. */
31
+ startIndex: number;
32
+ span: number;
33
+ continuesBefore: boolean;
34
+ continuesAfter: boolean;
35
+ }
36
+ /** True when the event is laid out in the all-day lane (all-day, or a timed event of 24 h or more). */
37
+ export declare function isLaneEvent(e: LayoutEvent, timeZone?: string): boolean;
38
+ /** Local first and last day (inclusive) an event touches in `timeZone`. */
39
+ export declare function eventDays(e: LayoutEvent, timeZone?: string): {
40
+ start: IsoDate;
41
+ end: IsoDate;
42
+ };
43
+ /** Local calendar date of an instant in a zone. */
44
+ export declare function localDate(t: number | string | Date, timeZone?: string): IsoDate;
45
+ /** Wall-clock minutes after midnight of an instant in a zone (0–1439). */
46
+ export declare function localMinutes(t: number | string | Date, timeZone?: string): number;
47
+ /** UTC ISO instant of a local wall-clock time (`minutes` after local midnight of `date`, may overflow into later days). */
48
+ export declare function instantAt(date: IsoDate, minutes: number, timeZone?: string): string;
49
+ /** Shifts an event by whole days and minutes, keeping its kind. Returns new `{ start, end }`. */
50
+ export declare function shiftEvent(e: LayoutEvent, days: number, minutes?: number, timeZone?: string): {
51
+ start: string;
52
+ end: string;
53
+ };
54
+ /** Events touching `[start, end]` (inclusive local days). */
55
+ export declare function eventsInRange<E extends LayoutEvent>(events: readonly E[], range: {
56
+ start: IsoDate;
57
+ end: IsoDate;
58
+ }, timeZone?: string): E[];
59
+ /** Sort: earlier start first, then longer first, then id (stable across renders). */
60
+ export declare function compareEvents(a: LayoutEvent, b: LayoutEvent, timeZone?: string): number;
61
+ /**
62
+ * Overlap column packing for one day of a time grid.
63
+ *
64
+ * ```ts
65
+ * layoutDayEvents(events, "2026-11-10", "Europe/Istanbul");
66
+ * // → [{ event, startMin: 540, endMin: 600, column: 0, columns: 2, span: 1, … }, …]
67
+ * ```
68
+ *
69
+ * Events in the all-day lane (`isLaneEvent`) are skipped. Very short events get at least
70
+ * `minDuration` minutes of height so they stay clickable (default 15).
71
+ */
72
+ export declare function layoutDayEvents<E extends LayoutEvent>(events: readonly E[], day: IsoDate, timeZone?: string, opts?: {
73
+ minDuration?: number;
74
+ }): PositionedEvent<E>[];
75
+ /**
76
+ * Lane packing for all-day / multi-day bars over a range of days (a week row, the week view's
77
+ * all-day lane). Each event gets the lowest lane free on all of its days.
78
+ *
79
+ * ```ts
80
+ * packLanes(events, { start: "2026-11-09", end: "2026-11-15" }, "UTC", { include: "all" });
81
+ * ```
82
+ *
83
+ * `include: "lane"` (default) keeps only lane events (all-day or ≥ 24 h); `"all"` also packs
84
+ * timed events as one-day bars (month view).
85
+ */
86
+ export declare function packLanes<E extends LayoutEvent>(events: readonly E[], range: {
87
+ start: IsoDate;
88
+ end: IsoDate;
89
+ }, timeZone?: string, opts?: {
90
+ include?: "lane" | "all";
91
+ }): LaneAssignment<E>[];
92
+ /** Lane count needed by a packing result. */
93
+ export declare const laneCount: (lanes: readonly LaneAssignment[]) => number;
94
+ /** Days of the week containing `date`, given the first weekday (1 = Monday … 7 = Sunday). */
95
+ export declare function weekDays(date: IsoDate, firstDay: number): IsoDate[];
96
+ /** The week rows (4–6, each 7 days) of the month containing `date`, starting on `firstDay`. */
97
+ export declare function monthWeeks(date: IsoDate, firstDay: number): IsoDate[][];
@@ -0,0 +1,249 @@
1
+ /**
2
+ * Event layout for the Agenda / scheduler: overlap column packing for time grids and lane
3
+ * packing for all-day / multi-day events and month weeks. React-free.
4
+ *
5
+ * Conventions:
6
+ * - Timed events: `start` / `end` are instants (UTC ISO strings), `end` exclusive.
7
+ * - All-day events: `start` / `end` are `YYYY-MM-DD`, `end` **inclusive** (a one-day event has
8
+ * `start === end`).
9
+ * - Every function takes an explicit IANA `timeZone`; day boundaries are local midnight there.
10
+ */
11
+ import { addDays, diffDays, compareIsoDate } from "../../locale-data/core/date.js";
12
+ import { TZDate } from "@date-fns/tz";
13
+ import { toEpoch } from "./time-scale.js";
14
+ const MIN = 60_000;
15
+ const DATE_ONLY = /^\d{4}-\d{2}-\d{2}$/;
16
+ /** True when the event is laid out in the all-day lane (all-day, or a timed event of 24 h or more). */
17
+ export function isLaneEvent(e, timeZone = "UTC") {
18
+ if (e.allDay || DATE_ONLY.test(e.start))
19
+ return true;
20
+ return toEpoch(e.end, timeZone) - toEpoch(e.start, timeZone) >= 24 * 60 * MIN;
21
+ }
22
+ /** Local first and last day (inclusive) an event touches in `timeZone`. */
23
+ export function eventDays(e, timeZone = "UTC") {
24
+ if (e.allDay || DATE_ONLY.test(e.start)) {
25
+ const s = e.start.slice(0, 10);
26
+ const en = e.end ? e.end.slice(0, 10) : s;
27
+ return { start: s, end: compareIsoDate(en, s) < 0 ? s : en };
28
+ }
29
+ const s = toEpoch(e.start, timeZone);
30
+ const en = Math.max(s, toEpoch(e.end, timeZone) - 1); // end is exclusive
31
+ return { start: localDate(s, timeZone), end: localDate(en, timeZone) };
32
+ }
33
+ const dtfCache = new Map();
34
+ function partsFmt(timeZone) {
35
+ let f = dtfCache.get(timeZone);
36
+ if (!f) {
37
+ f = new Intl.DateTimeFormat("en-US", { timeZone, year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", hourCycle: "h23" });
38
+ dtfCache.set(timeZone, f);
39
+ }
40
+ return f;
41
+ }
42
+ /** Local calendar date of an instant in a zone. */
43
+ export function localDate(t, timeZone = "UTC") {
44
+ const ms = typeof t === "number" ? t : t instanceof Date ? t.getTime() : toEpoch(t, timeZone);
45
+ const p = partsFmt(timeZone).formatToParts(ms);
46
+ const get = (type) => p.find((x) => x.type === type)?.value ?? "00";
47
+ return `${get("year")}-${get("month")}-${get("day")}`;
48
+ }
49
+ /** Wall-clock minutes after midnight of an instant in a zone (0–1439). */
50
+ export function localMinutes(t, timeZone = "UTC") {
51
+ const ms = typeof t === "number" ? t : t instanceof Date ? t.getTime() : toEpoch(t, timeZone);
52
+ const p = partsFmt(timeZone).formatToParts(ms);
53
+ const h = Number(p.find((x) => x.type === "hour")?.value ?? 0) % 24;
54
+ const m = Number(p.find((x) => x.type === "minute")?.value ?? 0);
55
+ return h * 60 + m;
56
+ }
57
+ /** UTC ISO instant of a local wall-clock time (`minutes` after local midnight of `date`, may overflow into later days). */
58
+ export function instantAt(date, minutes, timeZone = "UTC") {
59
+ const [y, m, d] = date.split("-").map(Number);
60
+ const whole = Math.round(minutes);
61
+ return new Date(new TZDate(y, m - 1, d, 0, whole, timeZone).getTime()).toISOString();
62
+ }
63
+ /** Shifts an event by whole days and minutes, keeping its kind. Returns new `{ start, end }`. */
64
+ export function shiftEvent(e, days, minutes = 0, timeZone = "UTC") {
65
+ if (e.allDay || DATE_ONLY.test(e.start)) {
66
+ return { start: addDays(e.start.slice(0, 10), days), end: addDays((e.end || e.start).slice(0, 10), days) };
67
+ }
68
+ const s = toEpoch(e.start, timeZone);
69
+ const en = toEpoch(e.end, timeZone);
70
+ const sd = localDate(s, timeZone);
71
+ const start = instantAt(addDays(sd, days), localMinutes(s, timeZone) + minutes, timeZone);
72
+ const startMs = Date.parse(start);
73
+ return { start, end: new Date(startMs + (en - s)).toISOString() };
74
+ }
75
+ /** Events touching `[start, end]` (inclusive local days). */
76
+ export function eventsInRange(events, range, timeZone = "UTC") {
77
+ return events.filter((e) => {
78
+ const d = eventDays(e, timeZone);
79
+ return compareIsoDate(d.end, range.start) >= 0 && compareIsoDate(d.start, range.end) <= 0;
80
+ });
81
+ }
82
+ /** Sort: earlier start first, then longer first, then id (stable across renders). */
83
+ export function compareEvents(a, b, timeZone = "UTC") {
84
+ const as = toEpoch(a.start, timeZone);
85
+ const bs = toEpoch(b.start, timeZone);
86
+ if (as !== bs)
87
+ return as - bs;
88
+ const al = toEpoch(a.end || a.start, timeZone) - as;
89
+ const bl = toEpoch(b.end || b.start, timeZone) - bs;
90
+ if (al !== bl)
91
+ return bl - al;
92
+ return a.id < b.id ? -1 : a.id > b.id ? 1 : 0;
93
+ }
94
+ /**
95
+ * Overlap column packing for one day of a time grid.
96
+ *
97
+ * ```ts
98
+ * layoutDayEvents(events, "2026-11-10", "Europe/Istanbul");
99
+ * // → [{ event, startMin: 540, endMin: 600, column: 0, columns: 2, span: 1, … }, …]
100
+ * ```
101
+ *
102
+ * Events in the all-day lane (`isLaneEvent`) are skipped. Very short events get at least
103
+ * `minDuration` minutes of height so they stay clickable (default 15).
104
+ */
105
+ export function layoutDayEvents(events, day, timeZone = "UTC", opts = {}) {
106
+ const minDur = opts.minDuration ?? 15;
107
+ const dayStart = toEpoch(day, timeZone);
108
+ const dayEnd = toEpoch(addDays(day, 1), timeZone);
109
+ const dayLen = (dayEnd - dayStart) / MIN;
110
+ const items = [];
111
+ const timed = events.filter((e) => !isLaneEvent(e, timeZone)).slice().sort((a, b) => compareEvents(a, b, timeZone));
112
+ for (const event of timed) {
113
+ const s = toEpoch(event.start, timeZone);
114
+ const en = Math.max(s, toEpoch(event.end, timeZone));
115
+ if (en <= dayStart || s >= dayEnd) {
116
+ if (!(s === en && s >= dayStart && s < dayEnd))
117
+ continue;
118
+ }
119
+ const startMin = Math.max(0, (s - dayStart) / MIN);
120
+ let endMin = Math.min(dayLen, (en - dayStart) / MIN);
121
+ if (endMin - startMin < minDur)
122
+ endMin = Math.min(dayLen, startMin + minDur);
123
+ items.push({ event, startMin, endMin, column: 0, columns: 1, span: 1, continuesBefore: s < dayStart, continuesAfter: en > dayEnd });
124
+ }
125
+ // Clusters of transitively overlapping events share a column count.
126
+ let cluster = [];
127
+ let clusterEnd = -Infinity;
128
+ const flush = () => {
129
+ if (!cluster.length)
130
+ return;
131
+ const colEnds = [];
132
+ for (const it of cluster) {
133
+ let col = colEnds.findIndex((end) => end <= it.startMin);
134
+ if (col === -1) {
135
+ col = colEnds.length;
136
+ colEnds.push(it.endMin);
137
+ }
138
+ else
139
+ colEnds[col] = it.endMin;
140
+ it.column = col;
141
+ }
142
+ const columns = colEnds.length;
143
+ for (const it of cluster) {
144
+ it.columns = columns;
145
+ // Stretch into free columns to the inline-end.
146
+ let span = 1;
147
+ for (let c = it.column + 1; c < columns; c++) {
148
+ const blocked = cluster.some((o) => o !== it && o.column === c && o.startMin < it.endMin && o.endMin > it.startMin);
149
+ if (blocked)
150
+ break;
151
+ span++;
152
+ }
153
+ it.span = span;
154
+ }
155
+ cluster = [];
156
+ };
157
+ for (const it of items) {
158
+ if (it.startMin >= clusterEnd) {
159
+ flush();
160
+ clusterEnd = it.endMin;
161
+ }
162
+ else
163
+ clusterEnd = Math.max(clusterEnd, it.endMin);
164
+ cluster.push(it);
165
+ }
166
+ flush();
167
+ return items;
168
+ }
169
+ /**
170
+ * Lane packing for all-day / multi-day bars over a range of days (a week row, the week view's
171
+ * all-day lane). Each event gets the lowest lane free on all of its days.
172
+ *
173
+ * ```ts
174
+ * packLanes(events, { start: "2026-11-09", end: "2026-11-15" }, "UTC", { include: "all" });
175
+ * ```
176
+ *
177
+ * `include: "lane"` (default) keeps only lane events (all-day or ≥ 24 h); `"all"` also packs
178
+ * timed events as one-day bars (month view).
179
+ */
180
+ export function packLanes(events, range, timeZone = "UTC", opts = {}) {
181
+ const include = opts.include ?? "lane";
182
+ const length = diffDays(range.start, range.end) + 1;
183
+ if (length <= 0)
184
+ return [];
185
+ const chosen = eventsInRange(events, range, timeZone).filter((e) => include === "all" || isLaneEvent(e, timeZone));
186
+ const withDays = chosen.map((event) => ({ event, days: eventDays(event, timeZone), lane: isLaneEvent(event, timeZone) }));
187
+ // Multi-day bars first (they are hardest to place), then by start.
188
+ withDays.sort((a, b) => {
189
+ const la = diffDays(a.days.start, a.days.end);
190
+ const lb = diffDays(b.days.start, b.days.end);
191
+ const c = compareIsoDate(a.days.start, b.days.start);
192
+ if (c !== 0)
193
+ return c;
194
+ if (a.lane !== b.lane)
195
+ return a.lane ? -1 : 1;
196
+ if (la !== lb)
197
+ return lb - la;
198
+ return compareEvents(a.event, b.event, timeZone);
199
+ });
200
+ const occupied = []; // lane → day index
201
+ const out = [];
202
+ for (const { event, days } of withDays) {
203
+ const startDay = compareIsoDate(days.start, range.start) < 0 ? range.start : days.start;
204
+ const endDay = compareIsoDate(days.end, range.end) > 0 ? range.end : days.end;
205
+ const startIndex = diffDays(range.start, startDay);
206
+ const span = diffDays(startDay, endDay) + 1;
207
+ let lane = 0;
208
+ for (;; lane++) {
209
+ const row = (occupied[lane] ??= new Array(length).fill(false));
210
+ let free = true;
211
+ for (let i = startIndex; i < startIndex + span; i++)
212
+ if (row[i]) {
213
+ free = false;
214
+ break;
215
+ }
216
+ if (free) {
217
+ for (let i = startIndex; i < startIndex + span; i++)
218
+ row[i] = true;
219
+ break;
220
+ }
221
+ }
222
+ out.push({ event, lane, startDay, endDay, startIndex, span, continuesBefore: compareIsoDate(days.start, range.start) < 0, continuesAfter: compareIsoDate(days.end, range.end) > 0 });
223
+ }
224
+ return out;
225
+ }
226
+ /** Lane count needed by a packing result. */
227
+ export const laneCount = (lanes) => lanes.reduce((m, l) => Math.max(m, l.lane + 1), 0);
228
+ /** Days of the week containing `date`, given the first weekday (1 = Monday … 7 = Sunday). */
229
+ export function weekDays(date, firstDay) {
230
+ const wd = isoWeekdayOf(date);
231
+ const back = (wd - firstDay + 7) % 7;
232
+ const start = addDays(date, -back);
233
+ return Array.from({ length: 7 }, (_, i) => addDays(start, i));
234
+ }
235
+ /** The week rows (4–6, each 7 days) of the month containing `date`, starting on `firstDay`. */
236
+ export function monthWeeks(date, firstDay) {
237
+ const first = `${date.slice(0, 7)}-01`;
238
+ const last = addDays(`${addDays(first, 32).slice(0, 7)}-01`, -1);
239
+ const weeks = [];
240
+ for (let cur = weekDays(first, firstDay)[0]; compareIsoDate(cur, last) <= 0; cur = addDays(cur, 7)) {
241
+ weeks.push(Array.from({ length: 7 }, (_, i) => addDays(cur, i)));
242
+ }
243
+ return weeks;
244
+ }
245
+ function isoWeekdayOf(date) {
246
+ const [y, m, d] = date.split("-").map(Number);
247
+ const wd = new Date(Date.UTC(y, m - 1, d)).getUTCDay();
248
+ return wd === 0 ? 7 : wd;
249
+ }
@@ -0,0 +1,89 @@
1
+ import type { IsoDate, WorkCalendar } from "../../locale-data/core/types.js";
2
+ export type TimeScaleUnit = "hour" | "day" | "week" | "month" | "quarter";
3
+ export type TickUnit = "minute15" | "minute30" | "hour" | "day" | "week" | "month" | "quarter" | "year";
4
+ export interface TimeScalePreset {
5
+ /** Pixels per 24 hours. */
6
+ pxPerDay: number;
7
+ /** Fine header row / grid lines. */
8
+ minor: TickUnit;
9
+ /** Coarse header row. */
10
+ major: TickUnit;
11
+ }
12
+ /** Zoom presets: hour (rooms × hours), day (people × days), week / month / quarter (Gantt). */
13
+ export declare const TIME_SCALE_PRESETS: Readonly<Record<TimeScaleUnit, TimeScalePreset>>;
14
+ /** An instant: `Date`, epoch ms, ISO instant ("2026-11-10T09:00:00Z") or date-only (local midnight in the zone). */
15
+ export type TimeInput = Date | number | string;
16
+ export interface TimeScaleOptions {
17
+ start: TimeInput;
18
+ end: TimeInput;
19
+ /** Zoom preset. Default `"day"`. */
20
+ scale?: TimeScaleUnit;
21
+ /** Overrides the preset's density. */
22
+ pxPerDay?: number;
23
+ /** IANA zone for ticks and date-only inputs. Default `"UTC"`. */
24
+ timeZone?: string;
25
+ /** Locale for the week start. Default `"en-US"`. */
26
+ locale?: string;
27
+ /** Marks day ticks with their working value. */
28
+ workCalendar?: WorkCalendar;
29
+ }
30
+ export interface TimeTick {
31
+ unit: TickUnit;
32
+ /** Epoch ms of the tick start (inclusive) and end (exclusive). */
33
+ start: number;
34
+ end: number;
35
+ /** Pixel offset and width. */
36
+ x: number;
37
+ width: number;
38
+ /** Local calendar date of the tick start in the scale's zone. */
39
+ date: IsoDate;
40
+ /** Day ticks with a `workCalendar`: 1 working, 0.5 half day, 0 off. */
41
+ working?: number;
42
+ }
43
+ export interface TimeScale {
44
+ readonly start: number;
45
+ readonly end: number;
46
+ readonly unit: TimeScaleUnit;
47
+ readonly timeZone: string;
48
+ readonly pxPerDay: number;
49
+ readonly pxPerMs: number;
50
+ /** Total width in px. */
51
+ readonly width: number;
52
+ /** 0 = Sunday … 6 = Saturday (date-fns numbering). */
53
+ readonly weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;
54
+ toPx(t: TimeInput): number;
55
+ /** Epoch ms at a pixel offset. */
56
+ toTime(px: number): number;
57
+ toDate(px: number): Date;
58
+ durationToPx(ms: number): number;
59
+ pxToDuration(px: number): number;
60
+ /** Rounds an instant to the nearest tick boundary (`"day"`) or step in minutes (15). */
61
+ snap(t: TimeInput, step: TickUnit | number, mode?: "round" | "floor" | "ceil"): number;
62
+ /** Ticks of `unit` covering the range (clipped to it). */
63
+ ticks(unit?: TickUnit): TimeTick[];
64
+ /** Time window visible in a viewport, with optional overscan in px. */
65
+ visibleRange(scrollLeft: number, viewportWidth: number, overscanPx?: number): {
66
+ start: number;
67
+ end: number;
68
+ };
69
+ /** The local date of an instant in the scale's zone. */
70
+ dateOf(t: TimeInput): IsoDate;
71
+ /** Epoch ms of local midnight of a date in the scale's zone. */
72
+ startOfDate(date: IsoDate): number;
73
+ }
74
+ /** Resolves a `TimeInput` to epoch ms; date-only strings are local midnight in `timeZone`. */
75
+ export declare function toEpoch(t: TimeInput, timeZone?: string): number;
76
+ /**
77
+ * Creates a time scale.
78
+ *
79
+ * ```ts
80
+ * const scale = createTimeScale({ start: "2026-11-01", end: "2026-12-01", scale: "day", timeZone: "Europe/Istanbul", locale: "tr-TR" });
81
+ * scale.toPx("2026-11-02"); // 44
82
+ * scale.ticks("week"); // week columns starting Monday
83
+ * ```
84
+ */
85
+ export declare function createTimeScale(options: TimeScaleOptions): TimeScale;
86
+ /** Converts a minute offset into "HH:mm" (wall clock), e.g. for drag labels. */
87
+ export declare function minutesToClock(minutes: number): string;
88
+ /** Parses "HH:mm" into minutes since midnight. */
89
+ export declare function clockToMinutes(clock: string): number;