@editora/ui-core 0.1.21 → 0.1.23

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 (348) hide show
  1. package/README.md +292 -221
  2. package/dist/{ElementBase-YlTLMsGk.mjs → ElementBase-BeZT54Hj.mjs} +3 -2
  3. package/dist/ElementBase-DxbvhLJs.js +1 -0
  4. package/dist/ElementBase.d.ts +2 -1
  5. package/dist/ElementBase.d.ts.map +1 -1
  6. package/dist/__tests__/setup.d.ts +0 -2
  7. package/dist/__tests__/setup.d.ts.map +1 -1
  8. package/dist/accordion.cjs.js +4 -4
  9. package/dist/accordion.esm.js +4 -4
  10. package/dist/alert-dialog.cjs.js +32 -32
  11. package/dist/alert-dialog.esm.js +95 -75
  12. package/dist/alert.cjs.js +7 -7
  13. package/dist/alert.esm.js +7 -7
  14. package/dist/anchor.cjs.js +3 -3
  15. package/dist/anchor.esm.js +6 -5
  16. package/dist/animated-beam.cjs.js +1 -1
  17. package/dist/animated-beam.esm.js +1 -1
  18. package/dist/animated-list.cjs.js +5 -5
  19. package/dist/animated-list.esm.js +5 -5
  20. package/dist/animated-text.cjs.js +5 -5
  21. package/dist/animated-text.esm.js +5 -5
  22. package/dist/app-header.cjs.js +4 -4
  23. package/dist/app-header.esm.js +4 -4
  24. package/dist/aspect-ratio.cjs.js +4 -4
  25. package/dist/aspect-ratio.esm.js +4 -4
  26. package/dist/avatar.cjs.js +14 -14
  27. package/dist/avatar.esm.js +31 -29
  28. package/dist/badge.cjs.js +5 -5
  29. package/dist/badge.esm.js +5 -5
  30. package/dist/block-controls.cjs.js +5 -5
  31. package/dist/block-controls.esm.js +5 -5
  32. package/dist/box.cjs.js +3 -3
  33. package/dist/box.esm.js +3 -3
  34. package/dist/breadcrumb.cjs.js +6 -6
  35. package/dist/breadcrumb.esm.js +6 -6
  36. package/dist/button.cjs.js +1 -1
  37. package/dist/button.esm.js +1 -1
  38. package/dist/{calendar-DLY4acgn.mjs → calendar-B3PUKHQm.mjs} +227 -183
  39. package/dist/{calendar-Dkof-FTK.js → calendar-D-mXMgqc.js} +74 -35
  40. package/dist/calendar.cjs.js +1 -1
  41. package/dist/calendar.esm.js +1 -1
  42. package/dist/card.cjs.js +8 -8
  43. package/dist/card.esm.js +63 -20
  44. package/dist/chart.cjs.js +5 -5
  45. package/dist/chart.esm.js +7 -7
  46. package/dist/checkbox.cjs.js +3 -3
  47. package/dist/checkbox.esm.js +3 -3
  48. package/dist/collapsible.cjs.js +8 -8
  49. package/dist/collapsible.esm.js +8 -8
  50. package/dist/collection.cjs.js +1 -1
  51. package/dist/collection.esm.js +9 -8
  52. package/dist/color-picker.cjs.js +30 -10
  53. package/dist/color-picker.esm.js +84 -62
  54. package/dist/combobox.cjs.js +29 -27
  55. package/dist/combobox.esm.js +51 -45
  56. package/dist/command-palette.cjs.js +1 -1
  57. package/dist/command-palette.esm.js +1 -1
  58. package/dist/command.cjs.js +2 -2
  59. package/dist/command.esm.js +3 -3
  60. package/dist/components/ui-alert-dialog.d.ts +1 -0
  61. package/dist/components/ui-alert-dialog.d.ts.map +1 -1
  62. package/dist/components/ui-anchor.d.ts +2 -1
  63. package/dist/components/ui-anchor.d.ts.map +1 -1
  64. package/dist/components/ui-avatar.d.ts +1 -0
  65. package/dist/components/ui-avatar.d.ts.map +1 -1
  66. package/dist/components/ui-button.d.ts +1 -0
  67. package/dist/components/ui-button.d.ts.map +1 -1
  68. package/dist/components/ui-calendar.d.ts.map +1 -1
  69. package/dist/components/ui-card.d.ts +3 -0
  70. package/dist/components/ui-card.d.ts.map +1 -1
  71. package/dist/components/ui-checkbox.d.ts.map +1 -1
  72. package/dist/components/ui-collection.d.ts +2 -1
  73. package/dist/components/ui-collection.d.ts.map +1 -1
  74. package/dist/components/ui-color-picker.d.ts.map +1 -1
  75. package/dist/components/ui-combobox.d.ts.map +1 -1
  76. package/dist/components/ui-data-table.d.ts.map +1 -1
  77. package/dist/components/ui-date-field.d.ts.map +1 -1
  78. package/dist/components/ui-date-picker.d.ts.map +1 -1
  79. package/dist/components/ui-date-range-picker.d.ts.map +1 -1
  80. package/dist/components/ui-date-range-time-picker.d.ts.map +1 -1
  81. package/dist/components/ui-date-time-picker.d.ts.map +1 -1
  82. package/dist/components/ui-dock.d.ts +1 -0
  83. package/dist/components/ui-dock.d.ts.map +1 -1
  84. package/dist/components/ui-drawer.d.ts.map +1 -1
  85. package/dist/components/ui-dropdown.d.ts.map +1 -1
  86. package/dist/components/ui-field.d.ts.map +1 -1
  87. package/dist/components/ui-file-upload.d.ts.map +1 -1
  88. package/dist/components/ui-form.d.ts +1 -0
  89. package/dist/components/ui-form.d.ts.map +1 -1
  90. package/dist/components/ui-gantt.d.ts.map +1 -1
  91. package/dist/components/ui-input.d.ts.map +1 -1
  92. package/dist/components/ui-menu.d.ts.map +1 -1
  93. package/dist/components/ui-multi-select.d.ts.map +1 -1
  94. package/dist/components/ui-number-field.d.ts.map +1 -1
  95. package/dist/components/ui-password-field.d.ts.map +1 -1
  96. package/dist/components/ui-pin-input.d.ts +1 -0
  97. package/dist/components/ui-pin-input.d.ts.map +1 -1
  98. package/dist/components/ui-placement-grid.d.ts.map +1 -1
  99. package/dist/components/ui-progress.d.ts.map +1 -1
  100. package/dist/components/ui-radio.d.ts.map +1 -1
  101. package/dist/components/ui-rating.d.ts +1 -0
  102. package/dist/components/ui-rating.d.ts.map +1 -1
  103. package/dist/components/ui-roving-focus-group.d.ts +2 -1
  104. package/dist/components/ui-roving-focus-group.d.ts.map +1 -1
  105. package/dist/components/ui-select.d.ts.map +1 -1
  106. package/dist/components/ui-sortable.d.ts.map +1 -1
  107. package/dist/components/ui-switch.d.ts.map +1 -1
  108. package/dist/components/ui-table.d.ts.map +1 -1
  109. package/dist/components/ui-tabs.d.ts +1 -0
  110. package/dist/components/ui-tabs.d.ts.map +1 -1
  111. package/dist/components/ui-tags-input.d.ts +1 -0
  112. package/dist/components/ui-tags-input.d.ts.map +1 -1
  113. package/dist/components/ui-textarea.d.ts.map +1 -1
  114. package/dist/components/ui-time-field.d.ts.map +1 -1
  115. package/dist/components/ui-toggle-group.d.ts.map +1 -1
  116. package/dist/components/ui-toggle.d.ts.map +1 -1
  117. package/dist/components/ui-tree.d.ts.map +1 -1
  118. package/dist/components/ui-wizard.d.ts.map +1 -1
  119. package/dist/container.cjs.js +1 -1
  120. package/dist/container.esm.js +1 -1
  121. package/dist/context-menu.cjs.js +3 -3
  122. package/dist/context-menu.esm.js +5 -5
  123. package/dist/control-group.cjs.js +1 -1
  124. package/dist/control-group.esm.js +1 -1
  125. package/dist/control-name-BmoI1m3a.js +1 -0
  126. package/dist/control-name-Bpj7F34X.mjs +48 -0
  127. package/dist/data-table.cjs.js +6 -3
  128. package/dist/data-table.esm.js +146 -143
  129. package/dist/date-field.cjs.js +5 -5
  130. package/dist/date-field.esm.js +34 -31
  131. package/dist/date-picker.cjs.js +16 -16
  132. package/dist/date-picker.esm.js +49 -45
  133. package/dist/date-range-picker.cjs.js +5 -5
  134. package/dist/date-range-picker.esm.js +120 -118
  135. package/dist/date-range-time-picker.cjs.js +22 -22
  136. package/dist/date-range-time-picker.esm.js +89 -85
  137. package/dist/date-time-picker.cjs.js +23 -23
  138. package/dist/date-time-picker.esm.js +103 -99
  139. package/dist/{date-time-utils-y1N2gvG2.mjs → date-time-utils-BTlxnz5j.mjs} +1 -1
  140. package/dist/{date-time-utils-Dmost5Ee.js → date-time-utils-y3AvNvGe.js} +1 -1
  141. package/dist/description.cjs.js +4 -4
  142. package/dist/description.esm.js +4 -4
  143. package/dist/dialog.cjs.js +3 -3
  144. package/dist/dialog.esm.js +3 -3
  145. package/dist/direction-provider.cjs.js +1 -1
  146. package/dist/direction-provider.esm.js +1 -1
  147. package/dist/dismissable-layer.cjs.js +1 -1
  148. package/dist/dismissable-layer.esm.js +1 -1
  149. package/dist/dock.cjs.js +12 -12
  150. package/dist/dock.esm.js +73 -75
  151. package/dist/domElement-DazSZBjV.js +1 -0
  152. package/dist/domElement-ZlSGVP0l.mjs +5 -0
  153. package/dist/domElement.d.ts +2 -0
  154. package/dist/domElement.d.ts.map +1 -0
  155. package/dist/drawer.cjs.js +19 -19
  156. package/dist/drawer.esm.js +58 -58
  157. package/dist/dropdown.cjs.js +13 -13
  158. package/dist/dropdown.esm.js +50 -49
  159. package/dist/empty-state.cjs.js +4 -4
  160. package/dist/empty-state.esm.js +4 -4
  161. package/dist/field-error.cjs.js +2 -2
  162. package/dist/field-error.esm.js +2 -2
  163. package/dist/field.cjs.js +12 -12
  164. package/dist/field.esm.js +84 -75
  165. package/dist/fieldset.cjs.js +5 -5
  166. package/dist/fieldset.esm.js +5 -5
  167. package/dist/file-upload.cjs.js +4 -4
  168. package/dist/file-upload.esm.js +6 -4
  169. package/dist/flex.cjs.js +1 -1
  170. package/dist/flex.esm.js +1 -1
  171. package/dist/floating-toolbar.cjs.js +8 -8
  172. package/dist/floating-toolbar.esm.js +10 -10
  173. package/dist/focus-scope.cjs.js +1 -1
  174. package/dist/focus-scope.esm.js +1 -1
  175. package/dist/form.cjs.js +13 -13
  176. package/dist/form.esm.js +23 -13
  177. package/dist/gantt.cjs.js +43 -32
  178. package/dist/gantt.esm.js +100 -89
  179. package/dist/grid.cjs.js +1 -1
  180. package/dist/grid.esm.js +1 -1
  181. package/dist/hover-card.cjs.js +1 -1
  182. package/dist/hover-card.esm.js +1 -1
  183. package/dist/icon-cloud.cjs.js +4 -4
  184. package/dist/icon-cloud.esm.js +4 -4
  185. package/dist/icon.cjs.js +1 -1
  186. package/dist/icon.esm.js +1 -1
  187. package/dist/index.cjs.js +1 -1
  188. package/dist/index.esm.js +121 -118
  189. package/dist/inline-edit.cjs.js +2 -2
  190. package/dist/inline-edit.esm.js +2 -2
  191. package/dist/input.cjs.js +14 -14
  192. package/dist/input.esm.js +40 -33
  193. package/dist/label.cjs.js +4 -4
  194. package/dist/label.esm.js +4 -4
  195. package/dist/layout.cjs.js +1 -1
  196. package/dist/layout.esm.js +1 -1
  197. package/dist/{listbox-B6QgECax.js → listbox-CTpRpuF7.js} +1 -1
  198. package/dist/{listbox-DJamVeFj.mjs → listbox-hMVOhKHC.mjs} +1 -1
  199. package/dist/listbox.cjs.js +1 -1
  200. package/dist/listbox.esm.js +1 -1
  201. package/dist/marquee.cjs.js +4 -4
  202. package/dist/marquee.esm.js +4 -4
  203. package/dist/masonry-grid.cjs.js +1 -1
  204. package/dist/masonry-grid.esm.js +1 -1
  205. package/dist/{menu-item-styles-CbNUEwP2.js → menu-item-styles-B4onAr4C.js} +3 -3
  206. package/dist/{menu-item-styles-CZiPwPwl.mjs → menu-item-styles-IGSFLAHu.mjs} +3 -3
  207. package/dist/menu.cjs.js +7 -7
  208. package/dist/menu.esm.js +30 -29
  209. package/dist/menubar.cjs.js +1 -1
  210. package/dist/menubar.esm.js +3 -3
  211. package/dist/meter.cjs.js +2 -2
  212. package/dist/meter.esm.js +2 -2
  213. package/dist/multi-select.cjs.js +17 -17
  214. package/dist/multi-select.esm.js +52 -44
  215. package/dist/navigation-menu.cjs.js +2 -2
  216. package/dist/navigation-menu.esm.js +2 -2
  217. package/dist/number-field.cjs.js +11 -13
  218. package/dist/number-field.esm.js +30 -28
  219. package/dist/number-ticker.cjs.js +5 -5
  220. package/dist/number-ticker.esm.js +5 -5
  221. package/dist/odometer.cjs.js +3 -3
  222. package/dist/odometer.esm.js +3 -3
  223. package/dist/orbiter.cjs.js +4 -4
  224. package/dist/orbiter.esm.js +4 -4
  225. package/dist/pagination.cjs.js +2 -2
  226. package/dist/pagination.esm.js +2 -2
  227. package/dist/{panel-group-CaD0_KQf.js → panel-group-BVHJEdfx.js} +1 -1
  228. package/dist/{panel-group-8sVNnGxg.mjs → panel-group-BxO_eNW6.mjs} +1 -1
  229. package/dist/panel-group.cjs.js +1 -1
  230. package/dist/panel-group.esm.js +1 -1
  231. package/dist/panel.cjs.js +1 -1
  232. package/dist/panel.esm.js +1 -1
  233. package/dist/password-field.cjs.js +23 -23
  234. package/dist/password-field.esm.js +48 -47
  235. package/dist/pin-input.cjs.js +8 -6
  236. package/dist/pin-input.esm.js +21 -15
  237. package/dist/placement-grid.cjs.js +4 -4
  238. package/dist/placement-grid.esm.js +58 -58
  239. package/dist/plugin-panel.cjs.js +2 -2
  240. package/dist/plugin-panel.esm.js +2 -2
  241. package/dist/popover.cjs.js +6 -6
  242. package/dist/popover.esm.js +5 -5
  243. package/dist/portal.cjs.js +1 -1
  244. package/dist/portal.esm.js +1 -1
  245. package/dist/positioner.cjs.js +1 -1
  246. package/dist/positioner.esm.js +1 -1
  247. package/dist/presence.cjs.js +1 -1
  248. package/dist/presence.esm.js +1 -1
  249. package/dist/primitives/control-name.d.ts +30 -0
  250. package/dist/primitives/control-name.d.ts.map +1 -0
  251. package/dist/primitives/trigger.d.ts +2 -0
  252. package/dist/primitives/trigger.d.ts.map +1 -0
  253. package/dist/progress.cjs.js +4 -4
  254. package/dist/progress.esm.js +20 -18
  255. package/dist/quick-actions.cjs.js +4 -4
  256. package/dist/quick-actions.esm.js +4 -4
  257. package/dist/radio-group.cjs.js +2 -2
  258. package/dist/radio-group.esm.js +2 -2
  259. package/dist/radio.cjs.js +3 -3
  260. package/dist/radio.esm.js +3 -3
  261. package/dist/rating.cjs.js +18 -17
  262. package/dist/rating.esm.js +91 -92
  263. package/dist/roving-focus-group.cjs.js +1 -1
  264. package/dist/roving-focus-group.esm.js +11 -10
  265. package/dist/{runtime-D1gFh1fS.mjs → runtime-CFnK53iC.mjs} +133 -94
  266. package/dist/runtime-DwE-tizc.js +1 -0
  267. package/dist/runtime.cjs.js +1 -1
  268. package/dist/runtime.d.ts +1 -1
  269. package/dist/runtime.d.ts.map +1 -1
  270. package/dist/runtime.esm.js +29 -26
  271. package/dist/scroll-area.cjs.js +1 -1
  272. package/dist/scroll-area.esm.js +1 -1
  273. package/dist/section.cjs.js +1 -1
  274. package/dist/section.esm.js +1 -1
  275. package/dist/select.cjs.js +20 -19
  276. package/dist/select.esm.js +37 -33
  277. package/dist/selection-popup.cjs.js +3 -3
  278. package/dist/selection-popup.esm.js +3 -3
  279. package/dist/separator.cjs.js +8 -8
  280. package/dist/separator.esm.js +8 -8
  281. package/dist/sidebar.cjs.js +9 -9
  282. package/dist/sidebar.esm.js +16 -16
  283. package/dist/skeleton.cjs.js +8 -8
  284. package/dist/skeleton.esm.js +8 -8
  285. package/dist/slider.cjs.js +4 -4
  286. package/dist/slider.esm.js +4 -4
  287. package/dist/slot.cjs.js +4 -4
  288. package/dist/slot.esm.js +4 -4
  289. package/dist/sortable.cjs.js +43 -44
  290. package/dist/sortable.esm.js +100 -101
  291. package/dist/spinning-text.cjs.js +4 -4
  292. package/dist/spinning-text.esm.js +4 -4
  293. package/dist/split-button.cjs.js +1 -1
  294. package/dist/split-button.esm.js +2 -2
  295. package/dist/splitter.cjs.js +1 -1
  296. package/dist/splitter.esm.js +1 -1
  297. package/dist/stepper.cjs.js +2 -2
  298. package/dist/stepper.esm.js +2 -2
  299. package/dist/switch.cjs.js +11 -13
  300. package/dist/switch.esm.js +11 -13
  301. package/dist/table.cjs.js +10 -7
  302. package/dist/table.esm.js +47 -44
  303. package/dist/tabs.cjs.js +21 -22
  304. package/dist/tabs.esm.js +71 -67
  305. package/dist/tags-input.cjs.js +9 -9
  306. package/dist/tags-input.esm.js +32 -25
  307. package/dist/textarea.cjs.js +10 -10
  308. package/dist/textarea.esm.js +30 -21
  309. package/dist/theme.d.ts +18 -0
  310. package/dist/theme.d.ts.map +1 -1
  311. package/dist/time-field.cjs.js +5 -5
  312. package/dist/time-field.esm.js +21 -18
  313. package/dist/time-picker.cjs.js +4 -4
  314. package/dist/time-picker.esm.js +6 -6
  315. package/dist/timeline.cjs.js +3 -3
  316. package/dist/timeline.esm.js +5 -5
  317. package/dist/toast.cjs.js +7 -7
  318. package/dist/toast.esm.js +14 -14
  319. package/dist/toggle-group.cjs.js +6 -7
  320. package/dist/toggle-group.esm.js +64 -61
  321. package/dist/toggle.cjs.js +18 -18
  322. package/dist/toggle.esm.js +32 -31
  323. package/dist/toolbar.cjs.js +1 -1
  324. package/dist/toolbar.esm.js +1 -1
  325. package/dist/tooltip.cjs.js +5 -5
  326. package/dist/tooltip.esm.js +5 -5
  327. package/dist/transfer-list.cjs.js +4 -4
  328. package/dist/transfer-list.esm.js +4 -4
  329. package/dist/{tree-B3kE8ESs.mjs → tree-B_oQput6.mjs} +35 -34
  330. package/dist/tree-SivHxcAy.js +39 -0
  331. package/dist/tree-item.cjs.js +1 -1
  332. package/dist/tree-item.esm.js +1 -1
  333. package/dist/tree.cjs.js +1 -1
  334. package/dist/tree.esm.js +1 -1
  335. package/dist/trigger-BjnxLCeQ.mjs +9 -0
  336. package/dist/trigger-DkPsKxsP.js +1 -0
  337. package/dist/{ui-button-rXQOS9QJ.js → ui-button-BPrzJScZ.js} +29 -28
  338. package/dist/{ui-button-Q0GNNWKC.mjs → ui-button-Co8Sid6t.mjs} +70 -49
  339. package/dist/{ui-icon-BzVNC_lr.js → ui-icon-D3avtxX_.js} +5 -5
  340. package/dist/{ui-icon-YI6lyuqU.mjs → ui-icon-DLhB08Fo.mjs} +3 -3
  341. package/dist/visually-hidden.cjs.js +1 -1
  342. package/dist/visually-hidden.esm.js +1 -1
  343. package/dist/wizard.cjs.js +12 -13
  344. package/dist/wizard.esm.js +18 -16
  345. package/package.json +2 -2
  346. package/dist/ElementBase-EV6mVBUV.js +0 -1
  347. package/dist/runtime-CTaOSmBj.js +0 -1
  348. package/dist/tree-Dx_kv_ih.js +0 -39
package/dist/gantt.esm.js CHANGED
@@ -1,5 +1,5 @@
1
- import { E as It } from "./ElementBase-YlTLMsGk.mjs";
2
- const I = 1440 * 60 * 1e3, y = 42, _ = 62, J = 376, N = 28, At = 15, vt = At * Math.SQRT2 / 2, gt = {
1
+ import { E as It } from "./ElementBase-BeZT54Hj.mjs";
2
+ const I = 1440 * 60 * 1e3, y = 42, j = 62, J = 376, N = 28, At = 15, vt = At * Math.SQRT2 / 2, gt = {
3
3
  day: 36,
4
4
  week: 13,
5
5
  month: 4.4,
@@ -12,7 +12,7 @@ const I = 1440 * 60 * 1e3, y = 42, _ = 62, J = 376, N = 28, At = 15, vt = At * M
12
12
  --ui-gantt-border: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 76%, transparent);
13
13
  --ui-gantt-grid: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 56%, transparent);
14
14
  --ui-gantt-text: var(--ui-color-text, #0f172a);
15
- --ui-gantt-muted: var(--ui-color-muted, #64748b);
15
+ --ui-gantt-muted: var(--ui-color-muted, #526175);
16
16
  --ui-gantt-accent: var(--ui-color-primary, #2563eb);
17
17
  --ui-gantt-selected: color-mix(in srgb, var(--ui-gantt-accent) 10%, transparent);
18
18
  display: block;
@@ -95,7 +95,7 @@ const I = 1440 * 60 * 1e3, y = 42, _ = 62, J = 376, N = 28, At = 15, vt = At * M
95
95
  .zoom-button[aria-pressed="true"] {
96
96
  border-color: color-mix(in srgb, var(--ui-gantt-accent) 46%, var(--ui-gantt-border));
97
97
  background: color-mix(in srgb, var(--ui-gantt-accent) 10%, var(--ui-gantt-panel));
98
- color: var(--ui-gantt-accent);
98
+ color: color-mix(in srgb, var(--ui-gantt-accent) 82%, var(--ui-gantt-text));
99
99
  }
100
100
 
101
101
  .viewport {
@@ -119,6 +119,17 @@ const I = 1440 * 60 * 1e3, y = 42, _ = 62, J = 376, N = 28, At = 15, vt = At * M
119
119
  border-bottom: 1px solid var(--ui-gantt-border);
120
120
  }
121
121
 
122
+ /* Explicit placement: the treegrid wrapper (display: contents) now holds the grid head and body
123
+ next to each other in the DOM, so the four panes no longer rely on source order. */
124
+ .grid-head { grid-column: 1; grid-row: 1; }
125
+ .timeline-head { grid-column: 2; grid-row: 1; }
126
+ .grid-body { grid-column: 1; grid-row: 2; }
127
+ .timeline-body { grid-column: 2; grid-row: 2; }
128
+
129
+ .grid-semantics {
130
+ display: contents;
131
+ }
132
+
122
133
  .grid-head {
123
134
  left: 0;
124
135
  z-index: 5;
@@ -665,65 +676,65 @@ const I = 1440 * 60 * 1e3, y = 42, _ = 62, J = 376, N = 28, At = 15, vt = At * M
665
676
  }
666
677
  `, mt = {
667
678
  default: "var(--ui-color-primary, #2563eb)",
668
- info: "var(--ui-color-info, #0891b2)",
669
- success: "var(--ui-color-success, #16a34a)",
670
- warning: "var(--ui-color-warning, #d97706)",
679
+ info: "var(--ui-color-info, #0e7490)",
680
+ success: "var(--ui-color-success, #15803d)",
681
+ warning: "var(--ui-color-warning, #b45309)",
671
682
  danger: "var(--ui-color-danger, #dc2626)"
672
683
  };
673
- function f(a) {
684
+ function b(a) {
674
685
  return String(a ?? "").replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");
675
686
  }
676
- function b(a) {
687
+ function f(a) {
677
688
  if (a instanceof Date) {
678
689
  const n = a.getTime();
679
- return Number.isFinite(n) ? D(n) : null;
690
+ return Number.isFinite(n) ? F(n) : null;
680
691
  }
681
692
  const t = String(a || "").trim(), i = /^(\d{4})-(\d{2})-(\d{2})$/.exec(t);
682
693
  if (i) {
683
694
  const n = Number(i[1]), s = Number(i[2]), l = Number(i[3]), p = new Date(n, s - 1, l).getTime();
684
- return Number.isFinite(p) ? D(p) : null;
695
+ return Number.isFinite(p) ? F(p) : null;
685
696
  }
686
697
  const e = Date.parse(t);
687
- return Number.isFinite(e) ? D(e) : null;
698
+ return Number.isFinite(e) ? F(e) : null;
688
699
  }
689
- function D(a) {
700
+ function F(a) {
690
701
  const t = new Date(a);
691
702
  return t.setHours(0, 0, 0, 0), t.getTime();
692
703
  }
693
704
  function x(a, t) {
694
- return D(a + t * I);
705
+ return F(a + t * I);
695
706
  }
696
- function S(a) {
707
+ function E(a) {
697
708
  const t = new Date(a), i = t.getFullYear(), e = String(t.getMonth() + 1).padStart(2, "0"), n = String(t.getDate()).padStart(2, "0");
698
709
  return `${i}-${e}-${n}`;
699
710
  }
700
711
  function O(a) {
701
712
  return new Intl.DateTimeFormat(void 0, { month: "short", day: "numeric" }).format(new Date(a));
702
713
  }
703
- function ft(a) {
714
+ function bt(a) {
704
715
  return a === "day" || a === "month" || a === "quarter" || a === "year" ? a : "week";
705
716
  }
706
- function j(a) {
717
+ function _(a) {
707
718
  return a === "start" || a === "end" || a === "label" || a === "progress" ? a : "none";
708
719
  }
709
720
  function Lt(a) {
710
721
  return a === "soft" || a === "striped" || a === "outline" || a === "glass" ? a : "solid";
711
722
  }
712
- function Ft(a, t) {
723
+ function Dt(a, t) {
713
724
  if (!a) return [];
714
725
  try {
715
726
  const i = JSON.parse(a);
716
727
  return Array.isArray(i) ? i.map((e, n) => {
717
728
  if (!e || typeof e != "object") return null;
718
- const s = e, l = String(s.label || s.text || "").trim(), o = b(s.start), p = Number(s.duration);
719
- let u = b(s.end);
729
+ const s = e, l = String(s.label || s.text || "").trim(), o = f(s.start), p = Number(s.duration);
730
+ let u = f(s.end);
720
731
  if (u == null && o != null && Number.isFinite(p) && (u = x(o, Math.max(0, p))), !l || o == null) return null;
721
732
  const d = s.type === "summary" || s.type === "milestone" ? s.type : "task", g = d === "milestone" ? o : Math.max(u ?? x(o, 1), x(o, 1)), c = String(s.id || `task-${n + 1}`), m = t.get(c) || {};
722
733
  return {
723
734
  id: c,
724
735
  label: l,
725
- start: m.start || S(o),
726
- end: m.end || S(g),
736
+ start: m.start || E(o),
737
+ end: m.end || E(g),
727
738
  progress: Number.isFinite(Number(s.progress)) ? Math.max(0, Math.min(100, Number(s.progress))) : void 0,
728
739
  tone: typeof s.tone == "string" ? s.tone : void 0,
729
740
  type: d,
@@ -741,7 +752,7 @@ function Ft(a, t) {
741
752
  return [];
742
753
  }
743
754
  }
744
- function Dt(a) {
755
+ function Ft(a) {
745
756
  if (!a) return [];
746
757
  try {
747
758
  const t = JSON.parse(a);
@@ -760,7 +771,7 @@ function Rt(a, t) {
760
771
  return t === "none" ? a : [...a].sort((i, e) => {
761
772
  if (t === "label") return i.label.localeCompare(e.label);
762
773
  if (t === "progress") return Number(e.progress ?? 0) - Number(i.progress ?? 0);
763
- const n = b(t === "start" ? i.start : i.end) ?? 0, s = b(t === "start" ? e.start : e.end) ?? 0;
774
+ const n = f(t === "start" ? i.start : i.end) ?? 0, s = f(t === "start" ? e.start : e.end) ?? 0;
764
775
  return n - s;
765
776
  });
766
777
  }
@@ -773,7 +784,7 @@ function qt(a, t, i, e) {
773
784
  const l = i.trim().toLowerCase(), o = (d) => !l || d.label.toLowerCase().includes(l) || (d.assignee || "").toLowerCase().includes(l) ? !0 : (n.get(d.id) || []).some(o), p = [], u = (d, g) => {
774
785
  Rt(n.get(d) || [], e).forEach((c) => {
775
786
  if (!o(c)) return;
776
- const m = b(c.start), h = b(c.end);
787
+ const m = f(c.start), h = f(c.end);
777
788
  if (m == null || h == null) return;
778
789
  const w = (n.get(c.id) || []).length > 0;
779
790
  p.push({ ...c, depth: g, hasChildren: w, startMs: m, endMs: h }), w && !t.has(c.id) && u(c.id, g + 1);
@@ -785,14 +796,14 @@ function Nt(a, t, i, e, n = 0, s = Number.POSITIVE_INFINITY) {
785
796
  const l = Math.max(1, Math.ceil((t - a) / I)), o = e === "day" ? 1 : e === "week" ? 7 : e === "month" ? 30 : e === "quarter" ? 91 : 365, p = Math.max(0, Math.floor(Math.max(0, n - 480) / i / o) * o), u = Math.min(l, Math.ceil((n + s + 960) / i / o) * o), d = [];
786
797
  for (let g = p; g <= u; g += o) {
787
798
  const c = g * i, m = x(a, g), h = e === "day" ? O(m) : new Intl.DateTimeFormat(void 0, { month: "short", year: e === "week" || e === "month" ? void 0 : "numeric" }).format(new Date(m));
788
- d.push(`<span class="tick" style="left:${c.toFixed(2)}px">${f(h)}</span>`);
799
+ d.push(`<span class="tick" style="left:${c.toFixed(2)}px">${b(h)}</span>`);
789
800
  }
790
801
  return d.join("");
791
802
  }
792
803
  function H(a) {
793
804
  return a.type === "summary" || a.hasChildren ? "summary" : a.type === "milestone" || a.startMs === a.endMs ? "milestone" : "task";
794
805
  }
795
- function bt(a) {
806
+ function ft(a) {
796
807
  const t = H(a);
797
808
  return t === "summary" ? 17 + 9 / 2 : t === "milestone" ? 7 + N / 2 : 12 + 18 / 2;
798
809
  }
@@ -808,8 +819,8 @@ function xt(a, t, i) {
808
819
  function Wt(a = "e2s") {
809
820
  return a === "s2s" ? { source: "start", target: "start" } : a === "e2e" ? { source: "end", target: "end" } : a === "s2e" ? { source: "start", target: "end" } : { source: "end", target: "start" };
810
821
  }
811
- function _t(a, t, i, e, n, s) {
812
- const l = Wt(n), o = l.source === "start" ? -1 : 1, p = l.target === "start" ? 1 : -1, u = xt(a, l.source, s), d = xt(i, l.target, s), g = t * y + bt(a), c = e * y + bt(i), m = 22, h = u + o * m, w = d - p * m, M = 26;
822
+ function jt(a, t, i, e, n, s) {
823
+ const l = Wt(n), o = l.source === "start" ? -1 : 1, p = l.target === "start" ? 1 : -1, u = xt(a, l.source, s), d = xt(i, l.target, s), g = t * y + ft(a), c = e * y + ft(i), m = 22, h = u + o * m, w = d - p * m, M = 26;
813
824
  let k = (h + w) / 2;
814
825
  if (o === p) {
815
826
  const T = o === 1 ? Math.max(h, w, u, d) + M : Math.min(h, w, u, d) - M;
@@ -819,7 +830,7 @@ function _t(a, t, i, e, n, s) {
819
830
  const A = Math.abs(c - g) < 1 ? l.target === "start" ? c - 16 : c + 16 : c > g ? c - y / 2 + 3 : c + y / 2 - 3;
820
831
  return [[u, g], [h, g], [k, g], [k, A], [w, A], [w, c], [d, c]].map(([T, R], P) => `${P === 0 ? "M" : "L"} ${T.toFixed(1)} ${R.toFixed(1)}`).join(" ");
821
832
  }
822
- class jt extends It {
833
+ class _t extends It {
823
834
  constructor() {
824
835
  super(...arguments), this.collapsed = /* @__PURE__ */ new Set(), this.overrides = /* @__PURE__ */ new Map(), this.drag = null, this.selectedId = null, this.internalFilter = "", this.viewportTop = 0, this.viewportLeft = 0, this.viewportWidth = 1800, this.viewportHeight = 620, this.renderedFirstRow = 0, this.renderedLastRow = 0, this.scrollFrame = null, this.overridesVersion = 0, this.taskCacheRaw = null, this.taskCacheVersion = -1, this.taskCache = [], this.linkCacheRaw = null, this.linkCache = [], this.visibleCacheKey = "", this.visibleCache = [];
825
836
  }
@@ -827,7 +838,7 @@ class jt extends It {
827
838
  return ["tasks", "links", "zoom", "filter", "sort", "bar-variant", "variant", "readonly", "show-toolbar", "show-today", "headless"];
828
839
  }
829
840
  render() {
830
- const t = this.getTasks(), i = this.getLinks(), e = ft(this.getAttribute("zoom")), n = j(this.getAttribute("sort")), s = Lt(this.getAttribute("bar-variant")), l = this.getAttribute("filter") ?? this.internalFilter, o = this.getVisibleTasks(t, l, n), p = this.hasAttribute("readonly"), u = this.getAttribute("show-toolbar") !== "false", d = this.getAttribute("show-today") !== "false";
841
+ const t = this.getTasks(), i = this.getLinks(), e = bt(this.getAttribute("zoom")), n = _(this.getAttribute("sort")), s = Lt(this.getAttribute("bar-variant")), l = this.getAttribute("filter") ?? this.internalFilter, o = this.getVisibleTasks(t, l, n), p = this.hasAttribute("readonly"), u = this.getAttribute("show-toolbar") !== "false", d = this.getAttribute("show-today") !== "false";
831
842
  if (!t.length) {
832
843
  this.setContent(`
833
844
  <style>${ht}</style>
@@ -837,24 +848,24 @@ class jt extends It {
837
848
  `);
838
849
  return;
839
850
  }
840
- const g = t.map((r) => b(r.start)).filter((r) => r != null), c = t.map((r) => b(r.end)).filter((r) => r != null), m = x(Math.min(...g), -2), h = x(Math.max(...c), 3), w = Math.max(7, Math.ceil((h - m) / I)), M = gt[e], k = Math.max(680, w * M), A = Math.max(o.length * y, y), z = this.getAttribute("virtualized") !== "false" && o.length > 240, T = Math.max(20, Math.ceil(Math.max(420, this.viewportHeight - _) / y)), R = 160, P = Math.max(0, this.viewportTop - _), wt = Math.max(0, Math.floor(P / y)), X = Math.max(180, T * 4), L = z ? Math.max(0, Math.floor(wt / X) * X - R) : 0, B = z ? Math.min(o.length, L + T + R * 2 + X) : o.length, K = o.slice(L, B), V = L * y, W = Math.max(0, (o.length - B) * y);
851
+ const g = t.map((r) => f(r.start)).filter((r) => r != null), c = t.map((r) => f(r.end)).filter((r) => r != null), m = x(Math.min(...g), -2), h = x(Math.max(...c), 3), w = Math.max(7, Math.ceil((h - m) / I)), M = gt[e], k = Math.max(680, w * M), A = Math.max(o.length * y, y), S = this.getAttribute("virtualized") !== "false" && o.length > 240, T = Math.max(20, Math.ceil(Math.max(420, this.viewportHeight - j) / y)), R = 160, P = Math.max(0, this.viewportTop - j), wt = Math.max(0, Math.floor(P / y)), X = Math.max(180, T * 4), L = S ? Math.max(0, Math.floor(wt / X) * X - R) : 0, B = S ? Math.min(o.length, L + T + R * 2 + X) : o.length, K = o.slice(L, B), V = L * y, W = Math.max(0, (o.length - B) * y);
841
852
  this.renderedFirstRow = L, this.renderedLastRow = B;
842
- const Q = new Map(o.map((r, $) => [r.id, { task: r, index: $ }])), tt = new Set(K.map((r) => r.id)), C = (r) => (r - m) / I * M, yt = K.map((r, $) => {
843
- const E = L + $, v = this.selectedId === r.id ? " selected" : "", F = H(r), G = r.progress == null ? "-" : `${Math.round(r.progress)}%`, U = F === "milestone" ? O(r.startMs) : `${O(r.startMs)} - ${O(r.endMs)}`;
853
+ const Q = new Map(o.map((r, $) => [r.id, { task: r, index: $ }])), tt = new Set(K.map((r) => r.id)), z = (r) => (r - m) / I * M, yt = K.map((r, $) => {
854
+ const C = L + $, v = this.selectedId === r.id ? " selected" : "", D = H(r), G = r.progress == null ? "-" : `${Math.round(r.progress)}%`, U = D === "milestone" ? O(r.startMs) : `${O(r.startMs)} - ${O(r.endMs)}`;
844
855
  return `
845
- <article class="grid-row${v}" part="grid-row" data-task-id="${f(r.id)}" role="row" aria-rowindex="${E + 2}" aria-level="${r.depth + 1}" ${r.hasChildren ? `aria-expanded="${!this.collapsed.has(r.id)}"` : ""}>
856
+ <div class="grid-row${v}" part="grid-row" data-task-id="${b(r.id)}" role="row" aria-rowindex="${C + 2}" aria-level="${r.depth + 1}" ${r.hasChildren ? `aria-expanded="${!this.collapsed.has(r.id)}"` : ""}>
846
857
  <div class="grid-cell task-name" role="gridcell" style="padding-left:${10 + r.depth * 18}px">
847
- ${r.hasChildren ? `<button class="expander" data-action="toggle" data-task-id="${f(r.id)}" aria-label="${this.collapsed.has(r.id) ? "Expand" : "Collapse"} ${f(r.label)}">${this.collapsed.has(r.id) ? "›" : "⌄"}</button>` : '<span style="inline-size:22px"></span>'}
848
- <span class="name-text" title="${f(r.label)}">${f(r.label)}</span>
858
+ ${r.hasChildren ? `<button class="expander" data-action="toggle" data-task-id="${b(r.id)}" aria-label="${this.collapsed.has(r.id) ? "Expand" : "Collapse"} ${b(r.label)}">${this.collapsed.has(r.id) ? "›" : "⌄"}</button>` : '<span style="inline-size:22px"></span>'}
859
+ <span class="name-text" title="${b(r.label)}">${b(r.label)}</span>
849
860
  </div>
850
- <div class="grid-cell badge" role="gridcell">${f(r.assignee || F)}</div>
851
- <div class="grid-cell badge" role="gridcell">${f(U)}</div>
852
- <div class="grid-cell badge" role="gridcell">${f(G)}</div>
853
- </article>
861
+ <div class="grid-cell badge" role="gridcell">${b(r.assignee || D)}</div>
862
+ <div class="grid-cell badge" role="gridcell">${b(U)}</div>
863
+ <div class="grid-cell badge" role="gridcell">${b(G)}</div>
864
+ </div>
854
865
  `;
855
866
  }).join(""), kt = K.map((r, $) => {
856
- const E = L + $, v = H(r), F = this.selectedId === r.id ? " selected" : "", G = this.selectedId === r.id || !this.selectedId && E === 0, U = mt[r.tone || (v === "summary" ? "info" : "default")] || mt.default, rt = v === "milestone" ? C(r.startMs) - N / 2 : C(r.startMs), St = C(v === "milestone" ? r.startMs : r.endMs), zt = v === "milestone" ? N : Math.max(12, St - rt), Ct = Math.max(0, Math.min(100, Number(r.progress ?? 0))), at = !p && !r.readonly && v !== "summary", nt = at && v === "task", it = v === "task" && r.segments?.length ? r.segments.map((st) => {
857
- const ot = b(st.start), lt = b(st.end);
867
+ const C = L + $, v = H(r), D = this.selectedId === r.id ? " selected" : "", G = this.selectedId === r.id || !this.selectedId && C === 0, U = mt[r.tone || (v === "summary" ? "info" : "default")] || mt.default, rt = v === "milestone" ? z(r.startMs) - N / 2 : z(r.startMs), St = z(v === "milestone" ? r.startMs : r.endMs), zt = v === "milestone" ? N : Math.max(12, St - rt), Ct = Math.max(0, Math.min(100, Number(r.progress ?? 0))), at = !p && !r.readonly && v !== "summary", nt = at && v === "task", it = v === "task" && r.segments?.length ? r.segments.map((st) => {
868
+ const ot = f(st.start), lt = f(st.end);
858
869
  if (ot == null || lt == null) return "";
859
870
  const dt = Math.max(I, r.endMs - r.startMs), Z = Math.max(r.startMs, ot), ct = Math.min(r.endMs, lt);
860
871
  if (ct <= Z) return "";
@@ -862,19 +873,17 @@ class jt extends It {
862
873
  return ut <= 0 ? "" : `<span class="split-segment" style="left:${pt.toFixed(2)}%;width:${ut.toFixed(2)}%"></span>`;
863
874
  }).join("") : "";
864
875
  return `
865
- <article class="timeline-row${F}" part="timeline-row" data-task-id="${f(r.id)}" role="row" aria-rowindex="${E + 2}">
866
- ${r.baselineStart && r.baselineEnd ? `<span class="baseline" style="left:${C(b(r.baselineStart) || r.startMs).toFixed(2)}px;width:${Math.max(4, C(b(r.baselineEnd) || r.endMs) - C(b(r.baselineStart) || r.startMs)).toFixed(2)}px"></span>` : ""}
876
+ <div class="timeline-row${D}" part="timeline-row" data-task-id="${b(r.id)}">
877
+ ${r.baselineStart && r.baselineEnd ? `<span class="baseline" style="left:${z(f(r.baselineStart) || r.startMs).toFixed(2)}px;width:${Math.max(4, z(f(r.baselineEnd) || r.endMs) - z(f(r.baselineStart) || r.startMs)).toFixed(2)}px"></span>` : ""}
867
878
  <button
868
879
  class="bar ${v}${r.critical ? " critical" : ""}${it ? " split" : ""}"
869
880
  part="bar ${v}"
870
- data-task-id="${f(r.id)}"
881
+ data-task-id="${b(r.id)}"
871
882
  data-kind="${v}"
872
- role="gridcell"
873
883
  tabindex="${G ? "0" : "-1"}"
874
- aria-selected="${this.selectedId === r.id}"
875
- aria-colindex="5"
884
+ ${this.selectedId === r.id ? 'aria-current="true"' : ""}
876
885
  style="left:${rt.toFixed(2)}px;width:${zt.toFixed(2)}px;--tone:${U};--progress:${Ct.toFixed(2)}%"
877
- aria-label="${f(r.label)}"
886
+ aria-label="${b(r.label)}"
878
887
  ${at ? 'data-draggable="true"' : ""}
879
888
  >
880
889
  ${nt ? '<span class="handle start" data-mode="resize-start"></span>' : ""}
@@ -884,14 +893,14 @@ class jt extends It {
884
893
  <span class="drag-tip"></span>
885
894
  ${nt ? '<span class="handle end" data-mode="resize-end"></span>' : ""}
886
895
  </button>
887
- </article>
896
+ </div>
888
897
  `;
889
898
  }).join(""), et = i.map((r) => {
890
- const $ = Q.get(r.source), E = Q.get(r.target);
891
- if (!$ || !E || z && !tt.has(r.source) && !tt.has(r.target)) return "";
892
- const v = _t($.task, $.index, E.task, E.index, r.type, C), F = `${$.task.label} dependency to ${E.task.label}`;
893
- return `<path class="link-hit" d="${v}" data-link-id="${f(r.id)}" data-source-id="${f(r.source)}" data-target-id="${f(r.target)}" data-link-type="${f(r.type || "e2s")}" aria-label="${f(F)}" /><path d="${v}" />`;
894
- }).join(""), $t = et ? '<defs><marker id="ui-gantt-arrow" markerWidth="9" markerHeight="9" refX="8.5" refY="4.5" orient="auto" markerUnits="userSpaceOnUse"><path d="M 0.5 0.75 L 8.5 4.5 L 0.5 8.25 z" /></marker></defs>' : "", Y = D(Date.now()), Mt = C(Y), Et = d && Y >= m && Y <= h ? `<div class="today" part="today" style="left:${Mt.toFixed(2)}px"></div>` : "";
899
+ const $ = Q.get(r.source), C = Q.get(r.target);
900
+ if (!$ || !C || S && !tt.has(r.source) && !tt.has(r.target)) return "";
901
+ const v = jt($.task, $.index, C.task, C.index, r.type, z), D = `${$.task.label} dependency to ${C.task.label}`;
902
+ return `<path class="link-hit" d="${v}" data-link-id="${b(r.id)}" data-source-id="${b(r.source)}" data-target-id="${b(r.target)}" data-link-type="${b(r.type || "e2s")}" aria-label="${b(D)}" /><path d="${v}" />`;
903
+ }).join(""), $t = et ? '<defs><marker id="ui-gantt-arrow" markerWidth="9" markerHeight="9" refX="8.5" refY="4.5" orient="auto" markerUnits="userSpaceOnUse"><path d="M 0.5 0.75 L 8.5 4.5 L 0.5 8.25 z" /></marker></defs>' : "", Y = F(Date.now()), Mt = z(Y), Et = d && Y >= m && Y <= h ? `<div class="today" part="today" style="left:${Mt.toFixed(2)}px"></div>` : "";
895
904
  this.setContent(`
896
905
  <style>${ht}</style>
897
906
  <section class="frame" part="frame" data-bar-variant="${s}">
@@ -899,7 +908,7 @@ class jt extends It {
899
908
  <header class="toolbar" part="toolbar">
900
909
  <div class="title">Project schedule <span class="meta">${o.length}/${t.length} tasks</span></div>
901
910
  <div class="controls">
902
- <input class="control" value="${f(l)}" placeholder="Filter tasks" aria-label="Filter tasks" />
911
+ <input class="control" value="${b(l)}" placeholder="Filter tasks" aria-label="Filter tasks" />
903
912
  <select class="select" aria-label="Sort tasks">
904
913
  ${[
905
914
  ["none", "Manual"],
@@ -915,26 +924,28 @@ class jt extends It {
915
924
  ` : ""}
916
925
  <div class="viewport" part="viewport">
917
926
  <div class="surface" part="surface" style="--day-width:${M}px;grid-template-columns:${J}px ${k.toFixed(2)}px;inline-size:max(100%, ${(J + k).toFixed(2)}px)">
918
- <header class="grid-head" part="grid-head" role="row">
919
- <button class="head-button" data-sort="label" role="columnheader" aria-sort="${n === "label" ? "ascending" : "none"}">Task</button>
920
- <span role="columnheader">Owner</span>
921
- <button class="head-button" data-sort="start" role="columnheader" aria-sort="${n === "start" ? "ascending" : "none"}">Dates</button>
922
- <button class="head-button" data-sort="progress" role="columnheader" aria-sort="${n === "progress" ? "descending" : "none"}">%</button>
923
- </header>
924
- <header class="timeline-head" part="timeline-head">
927
+ <div class="grid-semantics" role="treegrid" aria-label="${b(this.getAttribute("aria-label") || "Project schedule")}" aria-rowcount="${o.length + 1}" aria-colcount="4">
928
+ <div class="grid-head" part="grid-head" role="row">
929
+ <div role="columnheader" aria-sort="${n === "label" ? "ascending" : "none"}" style="display:contents"><button class="head-button" data-sort="label">Task</button></div>
930
+ <span role="columnheader">Owner</span>
931
+ <div role="columnheader" aria-sort="${n === "start" ? "ascending" : "none"}" style="display:contents"><button class="head-button" data-sort="start">Dates</button></div>
932
+ <div role="columnheader" aria-sort="${n === "progress" ? "descending" : "none"}" style="display:contents"><button class="head-button" data-sort="progress">%</button></div>
933
+ </div>
934
+ <div class="grid-body" part="grid-body" role="rowgroup">
935
+ ${S && V ? `<div style="height:${V}px"></div>` : ""}
936
+ ${yt || '<div class="empty">No matching tasks</div>'}
937
+ ${S && W ? `<div style="height:${W}px"></div>` : ""}
938
+ </div>
939
+ </div>
940
+ <div class="timeline-head" part="timeline-head" aria-hidden="true">
925
941
  <div class="scale" style="width:${k.toFixed(2)}px">${Nt(m, h, M, e, this.viewportLeft, this.viewportWidth)}</div>
926
- </header>
927
- <div class="grid-body" part="grid-body" role="treegrid" aria-rowcount="${o.length + 1}" aria-colcount="4">
928
- ${z && V ? `<div style="height:${V}px"></div>` : ""}
929
- ${yt || '<div class="empty">No matching tasks</div>'}
930
- ${z && W ? `<div style="height:${W}px"></div>` : ""}
931
942
  </div>
932
- <div class="timeline-body" part="timeline-body" style="width:${k.toFixed(2)}px;min-height:${A}px">
943
+ <div class="timeline-body" part="timeline-body" role="group" aria-label="Timeline" style="width:${k.toFixed(2)}px;min-height:${A}px">
933
944
  <svg class="links" width="${k.toFixed(0)}" height="${A}" viewBox="0 0 ${k.toFixed(0)} ${A}" aria-hidden="true">${$t}${et}</svg>
934
945
  ${Et}
935
- ${z && V ? `<div style="height:${V}px"></div>` : ""}
946
+ ${S && V ? `<div style="height:${V}px"></div>` : ""}
936
947
  ${kt}
937
- ${z && W ? `<div style="height:${W}px"></div>` : ""}
948
+ ${S && W ? `<div style="height:${W}px"></div>` : ""}
938
949
  </div>
939
950
  </div>
940
951
  </div>
@@ -968,18 +979,18 @@ class jt extends It {
968
979
  });
969
980
  }), this.root.querySelectorAll(".head-button[data-sort]").forEach((t) => {
970
981
  t.addEventListener("click", () => {
971
- const i = j(t.dataset.sort || null);
982
+ const i = _(t.dataset.sort || null);
972
983
  i === "none" ? this.removeAttribute("sort") : this.setAttribute("sort", i), this.dispatchEvent(new CustomEvent("sortchange", { detail: { sort: i }, bubbles: !0, composed: !0 }));
973
984
  });
974
985
  }), this.root.querySelector(".viewport")?.addEventListener("scroll", (t) => {
975
- const i = t.currentTarget, e = i.scrollTop, n = i.scrollLeft, s = Math.max(20, Math.ceil(Math.max(420, this.viewportHeight - _) / y)), l = Math.max(0, Math.floor(Math.max(0, e - _) / y)), o = l < this.renderedFirstRow + 64 || l + s > this.renderedLastRow - 64, p = Math.abs(n - this.viewportLeft) >= Math.max(480, this.viewportWidth * 0.6);
986
+ const i = t.currentTarget, e = i.scrollTop, n = i.scrollLeft, s = Math.max(20, Math.ceil(Math.max(420, this.viewportHeight - j) / y)), l = Math.max(0, Math.floor(Math.max(0, e - j) / y)), o = l < this.renderedFirstRow + 64 || l + s > this.renderedLastRow - 64, p = Math.abs(n - this.viewportLeft) >= Math.max(480, this.viewportWidth * 0.6);
976
987
  this.viewportTop = e, this.viewportLeft = n, !(!o && !p) && this.scrollFrame == null && (this.scrollFrame = window.setTimeout(() => {
977
988
  this.scrollFrame = null, this.requestRender();
978
989
  }, 24));
979
990
  }, { passive: !0 }), this.root.querySelector(".control")?.addEventListener("input", (t) => {
980
991
  this.internalFilter = t.currentTarget.value, this.dispatchEvent(new CustomEvent("filterchange", { detail: { filter: this.internalFilter }, bubbles: !0, composed: !0 })), this.requestRender();
981
992
  }), this.root.querySelector(".select")?.addEventListener("change", (t) => {
982
- const i = j(t.currentTarget.value);
993
+ const i = _(t.currentTarget.value);
983
994
  i === "none" ? this.removeAttribute("sort") : this.setAttribute("sort", i), this.dispatchEvent(new CustomEvent("sortchange", { detail: { sort: i }, bubbles: !0, composed: !0 }));
984
995
  }), this.root.querySelectorAll(".link-hit").forEach((t) => {
985
996
  t.addEventListener("click", (i) => {
@@ -999,10 +1010,10 @@ class jt extends It {
999
1010
  if (e.button !== 0) return;
1000
1011
  const n = t.dataset.taskId;
1001
1012
  if (!n) return;
1002
- const l = this.getTasks().find((h) => h.id === n), o = b(l?.start), p = b(l?.end);
1013
+ const l = this.getTasks().find((h) => h.id === n), o = f(l?.start), p = f(l?.end);
1003
1014
  if (!l || o == null || p == null) return;
1004
1015
  e.preventDefault();
1005
- const u = t.dataset.kind || "task", d = e.target.dataset.mode || "move", g = u === "milestone" ? "move" : d, c = ft(this.getAttribute("zoom")), m = this.selectedId !== n;
1016
+ const u = t.dataset.kind || "task", d = e.target.dataset.mode || "move", g = u === "milestone" ? "move" : d, c = bt(this.getAttribute("zoom")), m = this.selectedId !== n;
1006
1017
  this.selectedId = n, this.dispatchEvent(new CustomEvent("taskselect", { detail: { id: n }, bubbles: !0, composed: !0 })), this.drag = {
1007
1018
  taskId: n,
1008
1019
  mode: g,
@@ -1041,7 +1052,7 @@ class jt extends It {
1041
1052
  const o = (this.drag.latestStart - this.drag.rangeMin) / I * this.drag.dayWidth - (this.drag.kind === "milestone" ? N / 2 : 0), p = this.drag.kind === "milestone" ? N : Math.max(12, (this.drag.latestEnd - this.drag.latestStart) / I * this.drag.dayWidth);
1042
1053
  this.drag.bar.style.left = `${o.toFixed(2)}px`, this.drag.bar.style.width = `${p.toFixed(2)}px`;
1043
1054
  const u = this.drag.bar.querySelector(".drag-tip");
1044
- u && (u.textContent = this.drag.kind === "milestone" ? S(this.drag.latestStart) : `${S(this.drag.latestStart)} - ${S(this.drag.latestEnd)}`);
1055
+ u && (u.textContent = this.drag.kind === "milestone" ? E(this.drag.latestStart) : `${E(this.drag.latestStart)} - ${E(this.drag.latestEnd)}`);
1045
1056
  }));
1046
1057
  });
1047
1058
  const i = () => {
@@ -1054,8 +1065,8 @@ class jt extends It {
1054
1065
  }
1055
1066
  const n = {
1056
1067
  id: e.taskId,
1057
- start: S(e.latestStart),
1058
- end: S(e.latestEnd)
1068
+ start: E(e.latestStart),
1069
+ end: E(e.latestEnd)
1059
1070
  };
1060
1071
  this.overrides.set(e.taskId, { start: n.start, end: n.end }), this.bumpOverrides(), this.dispatchEvent(new CustomEvent("taskchange", {
1061
1072
  detail: n,
@@ -1079,17 +1090,17 @@ class jt extends It {
1079
1090
  return;
1080
1091
  }
1081
1092
  if (e.key !== "ArrowLeft" && e.key !== "ArrowRight") return;
1082
- const l = this.getTasks().find((h) => h.id === n), o = b(l?.start), p = b(l?.end);
1093
+ const l = this.getTasks().find((h) => h.id === n), o = f(l?.start), p = f(l?.end);
1083
1094
  if (!l || o == null || p == null) return;
1084
1095
  e.preventDefault();
1085
- const u = e.key === "ArrowLeft" ? -1 : 1, d = t.dataset.kind === "milestone", g = e.shiftKey && !d ? o : x(o, u), c = d ? g : e.shiftKey ? Math.max(x(p, u), x(o, 1)) : x(p, u), m = { id: n, start: S(g), end: S(c) };
1096
+ const u = e.key === "ArrowLeft" ? -1 : 1, d = t.dataset.kind === "milestone", g = e.shiftKey && !d ? o : x(o, u), c = d ? g : e.shiftKey ? Math.max(x(p, u), x(o, 1)) : x(p, u), m = { id: n, start: E(g), end: E(c) };
1086
1097
  this.overrides.set(n, { start: m.start, end: m.end }), this.bumpOverrides(), this.dispatchEvent(new CustomEvent("taskchange", { detail: m, bubbles: !0, composed: !0 })), this.requestRender();
1087
1098
  });
1088
1099
  });
1089
1100
  }
1090
1101
  rangeMin() {
1091
- const i = this.getTasks().map((e) => b(e.start)).filter((e) => e != null);
1092
- return i.length ? x(Math.min(...i), -2) : D(Date.now());
1102
+ const i = this.getTasks().map((e) => f(e.start)).filter((e) => e != null);
1103
+ return i.length ? x(Math.min(...i), -2) : F(Date.now());
1093
1104
  }
1094
1105
  selectTask(t) {
1095
1106
  if (this.captureViewport(), this.selectedId === t) {
@@ -1102,7 +1113,7 @@ class jt extends It {
1102
1113
  const e = this.getVisibleTasks(
1103
1114
  this.getTasks(),
1104
1115
  this.getAttribute("filter") ?? this.internalFilter,
1105
- j(this.getAttribute("sort"))
1116
+ _(this.getAttribute("sort"))
1106
1117
  ), n = e.findIndex((l) => l.id === t), s = e[Math.max(0, Math.min(e.length - 1, n + i))];
1107
1118
  !s || s.id === t || (this.selectedId = s.id, this.dispatchEvent(new CustomEvent("taskselect", { detail: { id: s.id }, bubbles: !0, composed: !0 })), this.requestRender(), window.requestAnimationFrame(() => {
1108
1119
  this.root.querySelector(`.bar[data-task-id="${CSS.escape(s.id)}"]`)?.focus();
@@ -1114,11 +1125,11 @@ class jt extends It {
1114
1125
  }
1115
1126
  getTasks() {
1116
1127
  const t = this.getAttribute("tasks");
1117
- return t === this.taskCacheRaw && this.taskCacheVersion === this.overridesVersion ? this.taskCache : (this.taskCacheRaw = t, this.taskCacheVersion = this.overridesVersion, this.taskCache = Ft(t, this.overrides), this.visibleCacheKey = "", this.taskCache);
1128
+ return t === this.taskCacheRaw && this.taskCacheVersion === this.overridesVersion ? this.taskCache : (this.taskCacheRaw = t, this.taskCacheVersion = this.overridesVersion, this.taskCache = Dt(t, this.overrides), this.visibleCacheKey = "", this.taskCache);
1118
1129
  }
1119
1130
  getLinks() {
1120
1131
  const t = this.getAttribute("links");
1121
- return t === this.linkCacheRaw ? this.linkCache : (this.linkCacheRaw = t, this.linkCache = Dt(t), this.linkCache);
1132
+ return t === this.linkCacheRaw ? this.linkCache : (this.linkCacheRaw = t, this.linkCache = Ft(t), this.linkCache);
1122
1133
  }
1123
1134
  getVisibleTasks(t, i, e) {
1124
1135
  const n = Array.from(this.collapsed).sort().join(","), s = `${this.taskCacheRaw || ""}|${this.overridesVersion}|${i}|${e}|${n}`;
@@ -1131,7 +1142,7 @@ class jt extends It {
1131
1142
  return t === "tasks" && (this.overrides.clear(), this.bumpOverrides(), this.viewportTop = 0, this.viewportLeft = 0), t === "links" && (this.linkCacheRaw = null), !0;
1132
1143
  }
1133
1144
  }
1134
- typeof customElements < "u" && !customElements.get("ui-gantt") && customElements.define("ui-gantt", jt);
1145
+ typeof customElements < "u" && !customElements.get("ui-gantt") && customElements.define("ui-gantt", _t);
1135
1146
  export {
1136
- jt as UIGantt
1147
+ _t as UIGantt
1137
1148
  };
package/dist/grid.cjs.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const y=require("./ElementBase-EV6mVBUV.js"),w={sm:"var(--ui-breakpoint-sm, 640px)",md:"var(--ui-breakpoint-md, 768px)",lg:"var(--ui-breakpoint-lg, 1024px)",xl:"var(--ui-breakpoint-xl, 1280px)"},g=["display","columns","rows","gap","rowgap","columngap","autoflow","autorows","autocolumns","align","justify","place","aligncontent","justifycontent","placecontent"],v={xs:"var(--ui-space-xs, 4px)",sm:"var(--ui-space-sm, 8px)",md:"var(--ui-space-md, 12px)",lg:"var(--ui-space-lg, 20px)",xl:"var(--ui-space-xl, 28px)"},b=`
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const y=require("./ElementBase-DxbvhLJs.js"),w={sm:"var(--ui-breakpoint-sm, 640px)",md:"var(--ui-breakpoint-md, 768px)",lg:"var(--ui-breakpoint-lg, 1024px)",xl:"var(--ui-breakpoint-xl, 1280px)"},g=["display","columns","rows","gap","rowgap","columngap","autoflow","autorows","autocolumns","align","justify","place","aligncontent","justifycontent","placecontent"],v={xs:"var(--ui-space-xs, 4px)",sm:"var(--ui-space-sm, 8px)",md:"var(--ui-space-md, 12px)",lg:"var(--ui-space-lg, 20px)",xl:"var(--ui-space-xl, 28px)"},b=`
2
2
  :host {
3
3
  --ui-grid-display: grid;
4
4
  --ui-grid-columns: 1fr;
package/dist/grid.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { E as h } from "./ElementBase-YlTLMsGk.mjs";
1
+ import { E as h } from "./ElementBase-BeZT54Hj.mjs";
2
2
  const y = {
3
3
  sm: "var(--ui-breakpoint-sm, 640px)",
4
4
  md: "var(--ui-breakpoint-md, 768px)",
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const u=require("./ElementBase-EV6mVBUV.js"),p=require("./positioner-D_fqyx_j.js"),v=`
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const u=require("./ElementBase-DxbvhLJs.js"),p=require("./positioner-D_fqyx_j.js"),v=`
2
2
  :host {
3
3
  --ui-hover-card-z: 1700;
4
4
  --ui-hover-card-radius: var(--base-card-radius, var(--ui-radius, 4px));
@@ -1,4 +1,4 @@
1
- import { E as d } from "./ElementBase-YlTLMsGk.mjs";
1
+ import { E as d } from "./ElementBase-BeZT54Hj.mjs";
2
2
  import { e as u } from "./positioner-D0VGxtYU.mjs";
3
3
  const p = `
4
4
  :host {
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const O=require("./ElementBase-EV6mVBUV.js"),z="920px",x=.86,R=1,$="20px",S="118px",E="40px",A="118px",N="30px",D=new Set(["clockwise","counterclockwise"]),I=new Set(["surface","soft","solid","glass","contrast","minimal"]),X=new Set(["brand","neutral","info","success","warning","danger"]),Y=new Set(["sm","md","lg","xl","1","2","3","4"]),q=new Set(["none","low","high"]),c={sm:{radius:"90px",radiusPx:90,itemSize:"32px",itemSizePx:32,centerSize:"84px",padding:"14px",shellRadius:"24px"},md:{radius:S,radiusPx:118,itemSize:E,itemSizePx:40,centerSize:A,padding:"18px",shellRadius:"28px"},lg:{radius:"140px",radiusPx:140,itemSize:"46px",itemSizePx:46,centerSize:"132px",padding:"22px",shellRadius:"32px"},xl:{radius:"164px",radiusPx:164,itemSize:"54px",itemSizePx:54,centerSize:"152px",padding:"26px",shellRadius:"36px"}},U=`
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const O=require("./ElementBase-DxbvhLJs.js"),z="920px",x=.86,R=1,$="20px",S="118px",E="40px",A="118px",N="30px",D=new Set(["clockwise","counterclockwise"]),I=new Set(["surface","soft","solid","glass","contrast","minimal"]),X=new Set(["brand","neutral","info","success","warning","danger"]),Y=new Set(["sm","md","lg","xl","1","2","3","4"]),q=new Set(["none","low","high"]),c={sm:{radius:"90px",radiusPx:90,itemSize:"32px",itemSizePx:32,centerSize:"84px",padding:"14px",shellRadius:"24px"},md:{radius:S,radiusPx:118,itemSize:E,itemSizePx:40,centerSize:A,padding:"18px",shellRadius:"28px"},lg:{radius:"140px",radiusPx:140,itemSize:"46px",itemSizePx:46,centerSize:"132px",padding:"22px",shellRadius:"32px"},xl:{radius:"164px",radiusPx:164,itemSize:"54px",itemSizePx:54,centerSize:"152px",padding:"26px",shellRadius:"36px"}},U=`
2
2
  :host {
3
3
  --ui-icon-cloud-radius: ${S};
4
4
  --ui-icon-cloud-item-size: ${E};
@@ -115,7 +115,7 @@
115
115
  }
116
116
 
117
117
  :host([tone="neutral"]) {
118
- --ui-icon-cloud-accent: #64748b;
118
+ --ui-icon-cloud-accent: #526175;
119
119
  }
120
120
 
121
121
  :host([tone="info"]) {
@@ -123,11 +123,11 @@
123
123
  }
124
124
 
125
125
  :host([tone="success"]) {
126
- --ui-icon-cloud-accent: var(--ui-color-success, #16a34a);
126
+ --ui-icon-cloud-accent: var(--ui-color-success, #15803d);
127
127
  }
128
128
 
129
129
  :host([tone="warning"]) {
130
- --ui-icon-cloud-accent: var(--ui-color-warning, #d97706);
130
+ --ui-icon-cloud-accent: var(--ui-color-warning, #b45309);
131
131
  }
132
132
 
133
133
  :host([tone="danger"]) {
@@ -1,4 +1,4 @@
1
- import { E as C } from "./ElementBase-YlTLMsGk.mjs";
1
+ import { E as C } from "./ElementBase-BeZT54Hj.mjs";
2
2
  const z = "920px", x = 0.86, O = 1, R = "20px", S = "118px", E = "40px", A = "118px", $ = "30px", N = /* @__PURE__ */ new Set(["clockwise", "counterclockwise"]), D = /* @__PURE__ */ new Set(["surface", "soft", "solid", "glass", "contrast", "minimal"]), I = /* @__PURE__ */ new Set(["brand", "neutral", "info", "success", "warning", "danger"]), X = /* @__PURE__ */ new Set(["sm", "md", "lg", "xl", "1", "2", "3", "4"]), Y = /* @__PURE__ */ new Set(["none", "low", "high"]), c = {
3
3
  sm: {
4
4
  radius: "90px",
@@ -153,7 +153,7 @@ const z = "920px", x = 0.86, O = 1, R = "20px", S = "118px", E = "40px", A = "11
153
153
  }
154
154
 
155
155
  :host([tone="neutral"]) {
156
- --ui-icon-cloud-accent: #64748b;
156
+ --ui-icon-cloud-accent: #526175;
157
157
  }
158
158
 
159
159
  :host([tone="info"]) {
@@ -161,11 +161,11 @@ const z = "920px", x = 0.86, O = 1, R = "20px", S = "118px", E = "40px", A = "11
161
161
  }
162
162
 
163
163
  :host([tone="success"]) {
164
- --ui-icon-cloud-accent: var(--ui-color-success, #16a34a);
164
+ --ui-icon-cloud-accent: var(--ui-color-success, #15803d);
165
165
  }
166
166
 
167
167
  :host([tone="warning"]) {
168
- --ui-icon-cloud-accent: var(--ui-color-warning, #d97706);
168
+ --ui-icon-cloud-accent: var(--ui-color-warning, #b45309);
169
169
  }
170
170
 
171
171
  :host([tone="danger"]) {
package/dist/icon.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./ui-icon-BzVNC_lr.js");exports.UIIcon=e.UIIcon;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./ui-icon-D3avtxX_.js");exports.UIIcon=e.UIIcon;
package/dist/icon.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { U as I } from "./ui-icon-YI6lyuqU.mjs";
1
+ import { U as I } from "./ui-icon-DLhB08Fo.mjs";
2
2
  export {
3
3
  I as UIIcon
4
4
  };