@dryui/ui 0.2.2 → 0.4.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 (1180) hide show
  1. package/dist/accordion/accordion-button-trigger.svelte +51 -0
  2. package/dist/accordion/accordion-button-trigger.svelte.d.ts +8 -0
  3. package/dist/accordion/accordion-content.svelte.d.ts +2 -2
  4. package/dist/accordion/accordion-item.svelte.d.ts +4 -4
  5. package/dist/accordion/accordion-root.svelte.d.ts +5 -5
  6. package/dist/accordion/index.d.ts +1 -1
  7. package/dist/accordion/index.js +1 -1
  8. package/dist/adjust/adjust.svelte +1 -1
  9. package/dist/adjust/adjust.svelte.d.ts +13 -12
  10. package/dist/alert/alert-button-close.svelte +29 -0
  11. package/dist/alert/alert-button-close.svelte.d.ts +8 -0
  12. package/dist/alert/alert-description.svelte +6 -1
  13. package/dist/alert/alert-description.svelte.d.ts +2 -2
  14. package/dist/alert/alert-icon.svelte.d.ts +2 -2
  15. package/dist/alert/alert-root.svelte +1 -2
  16. package/dist/alert/alert-root.svelte.d.ts +6 -6
  17. package/dist/alert/alert-title.svelte +6 -1
  18. package/dist/alert/alert-title.svelte.d.ts +2 -2
  19. package/dist/alert/context.svelte.d.ts +1 -0
  20. package/dist/alert/context.svelte.js +8 -0
  21. package/dist/alert/index.d.ts +1 -1
  22. package/dist/alert/index.js +1 -1
  23. package/dist/alert-dialog/alert-dialog-body.svelte.d.ts +2 -2
  24. package/dist/alert-dialog/alert-dialog-button-action.svelte +15 -0
  25. package/dist/alert-dialog/alert-dialog-button-action.svelte.d.ts +8 -0
  26. package/dist/alert-dialog/alert-dialog-button-cancel.svelte +18 -0
  27. package/dist/alert-dialog/alert-dialog-button-cancel.svelte.d.ts +8 -0
  28. package/dist/alert-dialog/alert-dialog-content.svelte.d.ts +2 -2
  29. package/dist/alert-dialog/alert-dialog-footer.svelte.d.ts +2 -2
  30. package/dist/alert-dialog/alert-dialog-header.svelte.d.ts +2 -2
  31. package/dist/alert-dialog/alert-dialog-overlay.svelte.d.ts +3 -2
  32. package/dist/alert-dialog/alert-dialog-root.svelte.d.ts +3 -3
  33. package/dist/alert-dialog/alert-dialog-trigger.svelte.d.ts +2 -2
  34. package/dist/alert-dialog/index.d.ts +2 -2
  35. package/dist/alert-dialog/index.js +2 -2
  36. package/dist/alpha-slider/alpha-slider-input.svelte.d.ts +12 -0
  37. package/dist/alpha-slider/index.d.ts +1 -1
  38. package/dist/alpha-slider/index.js +1 -1
  39. package/dist/aspect-ratio/aspect-ratio.svelte.d.ts +3 -3
  40. package/dist/aurora/aurora.svelte +58 -11
  41. package/dist/aurora/aurora.svelte.d.ts +10 -9
  42. package/dist/aurora/index.d.ts +2 -0
  43. package/dist/avatar/avatar.svelte.d.ts +9 -9
  44. package/dist/backdrop/backdrop.svelte.d.ts +4 -6
  45. package/dist/badge/badge.svelte +1 -0
  46. package/dist/badge/badge.svelte.d.ts +8 -19
  47. package/dist/beam/beam.svelte.d.ts +10 -9
  48. package/dist/breadcrumb/breadcrumb-item.svelte.d.ts +2 -2
  49. package/dist/breadcrumb/breadcrumb-link.svelte.d.ts +4 -4
  50. package/dist/breadcrumb/breadcrumb-list.svelte.d.ts +2 -2
  51. package/dist/breadcrumb/breadcrumb-root.svelte.d.ts +2 -2
  52. package/dist/breadcrumb/breadcrumb-separator.svelte.d.ts +3 -3
  53. package/dist/button/button.svelte +283 -132
  54. package/dist/button/button.svelte.d.ts +12 -12
  55. package/dist/button/index.d.ts +7 -4
  56. package/dist/button-group/button-group.svelte.d.ts +4 -4
  57. package/dist/calendar/calendar-button-grid.svelte +151 -0
  58. package/dist/calendar/calendar-button-grid.svelte.d.ts +6 -0
  59. package/dist/calendar/calendar-button-next.svelte +13 -0
  60. package/dist/calendar/calendar-button-next.svelte.d.ts +8 -0
  61. package/dist/calendar/calendar-button-prev.svelte +13 -0
  62. package/dist/calendar/calendar-button-prev.svelte.d.ts +8 -0
  63. package/dist/calendar/calendar-header.svelte.d.ts +6 -2
  64. package/dist/calendar/calendar-heading.svelte.d.ts +4 -2
  65. package/dist/calendar/calendar-nav-button.svelte +26 -0
  66. package/dist/calendar/calendar-nav-button.svelte.d.ts +9 -0
  67. package/dist/calendar/calendar-root.svelte.d.ts +11 -2
  68. package/dist/calendar/index.d.ts +3 -3
  69. package/dist/calendar/index.js +3 -3
  70. package/dist/card/card-content.svelte.d.ts +3 -3
  71. package/dist/card/card-footer.svelte.d.ts +2 -2
  72. package/dist/card/card-header.svelte.d.ts +2 -2
  73. package/dist/card/card-root.svelte +43 -28
  74. package/dist/card/card-root.svelte.d.ts +8 -7
  75. package/dist/carousel/carousel-button-dots.svelte +51 -0
  76. package/dist/carousel/carousel-button-dots.svelte.d.ts +6 -0
  77. package/dist/carousel/carousel-button-next.svelte +13 -0
  78. package/dist/carousel/carousel-button-next.svelte.d.ts +8 -0
  79. package/dist/carousel/carousel-button-prev.svelte +13 -0
  80. package/dist/carousel/carousel-button-prev.svelte.d.ts +8 -0
  81. package/dist/carousel/{carousel-thumbnails.svelte → carousel-button-thumbnails.svelte} +5 -31
  82. package/dist/carousel/carousel-button-thumbnails.svelte.d.ts +13 -0
  83. package/dist/carousel/carousel-nav-button.svelte +31 -0
  84. package/dist/carousel/carousel-nav-button.svelte.d.ts +9 -0
  85. package/dist/carousel/carousel-root.svelte.d.ts +5 -5
  86. package/dist/carousel/carousel-slide.svelte.d.ts +2 -2
  87. package/dist/carousel/carousel-viewport.svelte.d.ts +2 -2
  88. package/dist/carousel/index.d.ts +4 -4
  89. package/dist/carousel/index.js +4 -4
  90. package/dist/chart/chart-area.svelte.d.ts +5 -5
  91. package/dist/chart/chart-bars.svelte.d.ts +7 -3
  92. package/dist/chart/chart-donut.svelte.d.ts +11 -5
  93. package/dist/chart/chart-horizontal-bar.svelte.d.ts +2 -2
  94. package/dist/chart/chart-line.svelte.d.ts +5 -5
  95. package/dist/chart/chart-root.svelte.d.ts +12 -11
  96. package/dist/chart/chart-stacked-bar.svelte.d.ts +4 -4
  97. package/dist/chart/chart-x-axis.svelte.d.ts +3 -2
  98. package/dist/chart/chart-y-axis.svelte.d.ts +2 -2
  99. package/dist/chat-thread/chat-thread.svelte.d.ts +10 -15
  100. package/dist/checkbox/checkbox-input.svelte.d.ts +12 -0
  101. package/dist/checkbox/index.d.ts +1 -1
  102. package/dist/checkbox/index.js +1 -1
  103. package/dist/chip/chip-button.svelte +173 -0
  104. package/dist/chip/chip-button.svelte.d.ts +22 -0
  105. package/dist/chip/index.d.ts +1 -1
  106. package/dist/chip/index.js +1 -1
  107. package/dist/chip-group/chip-group-button-item.svelte +36 -0
  108. package/dist/chip-group/chip-group-button-item.svelte.d.ts +10 -0
  109. package/dist/chip-group/chip-group-root.svelte.d.ts +7 -7
  110. package/dist/chip-group/index.d.ts +1 -1
  111. package/dist/chip-group/index.js +1 -1
  112. package/dist/chromatic-aberration/chromatic-aberration.svelte.d.ts +5 -5
  113. package/dist/chromatic-shift/chromatic-shift.svelte.d.ts +6 -7
  114. package/dist/clipboard/clipboard.svelte.d.ts +7 -11
  115. package/dist/code-block/{code-block.svelte → code-block-button.svelte} +46 -59
  116. package/dist/code-block/code-block-button.svelte.d.ts +13 -0
  117. package/dist/code-block/index.d.ts +1 -1
  118. package/dist/code-block/index.js +1 -1
  119. package/dist/collapsible/collapsible-button-trigger.svelte +50 -0
  120. package/dist/collapsible/collapsible-button-trigger.svelte.d.ts +8 -0
  121. package/dist/collapsible/collapsible-content.svelte.d.ts +2 -2
  122. package/dist/collapsible/collapsible-root.svelte.d.ts +4 -4
  123. package/dist/collapsible/index.d.ts +1 -1
  124. package/dist/collapsible/index.js +1 -1
  125. package/dist/color-picker/color-picker-area.svelte.d.ts +3 -3
  126. package/dist/color-picker/{color-picker-eyedropper.svelte → color-picker-button-eyedropper.svelte} +8 -49
  127. package/dist/color-picker/color-picker-button-eyedropper.svelte.d.ts +8 -0
  128. package/dist/color-picker/color-picker-channel-input.svelte.d.ts +2 -2
  129. package/dist/color-picker/color-picker-input-alpha-slider.svelte.d.ts +5 -0
  130. package/dist/color-picker/color-picker-input-hue-slider.svelte.d.ts +5 -0
  131. package/dist/color-picker/color-picker-input.svelte.d.ts +2 -2
  132. package/dist/color-picker/color-picker-root.svelte.d.ts +7 -7
  133. package/dist/color-picker/color-picker-swatch.svelte.d.ts +2 -2
  134. package/dist/color-picker/index.d.ts +3 -3
  135. package/dist/color-picker/index.js +3 -3
  136. package/dist/combobox/combobox-content.svelte.d.ts +7 -18
  137. package/dist/combobox/combobox-empty.svelte.d.ts +2 -2
  138. package/dist/combobox/combobox-group.svelte.d.ts +3 -3
  139. package/dist/combobox/combobox-input-root.svelte.d.ts +11 -0
  140. package/dist/combobox/combobox-input.svelte.d.ts +3 -3
  141. package/dist/combobox/combobox-item.svelte +13 -12
  142. package/dist/combobox/combobox-item.svelte.d.ts +6 -6
  143. package/dist/combobox/index.d.ts +1 -1
  144. package/dist/combobox/index.js +1 -1
  145. package/dist/command-palette/command-palette-dialog-root.svelte.d.ts +9 -0
  146. package/dist/command-palette/command-palette-empty.svelte.d.ts +2 -2
  147. package/dist/command-palette/command-palette-group.svelte.d.ts +3 -3
  148. package/dist/command-palette/command-palette-input.svelte.d.ts +2 -2
  149. package/dist/command-palette/command-palette-item.svelte +8 -10
  150. package/dist/command-palette/command-palette-item.svelte.d.ts +5 -5
  151. package/dist/command-palette/command-palette-list.svelte.d.ts +2 -2
  152. package/dist/command-palette/command-palette-separator.svelte.d.ts +3 -2
  153. package/dist/command-palette/index.d.ts +1 -1
  154. package/dist/command-palette/index.js +1 -1
  155. package/dist/container/container.svelte.d.ts +4 -4
  156. package/dist/context-menu/context-menu-content.svelte.d.ts +2 -2
  157. package/dist/context-menu/context-menu-group.svelte.d.ts +2 -2
  158. package/dist/context-menu/context-menu-item.svelte +4 -1
  159. package/dist/context-menu/context-menu-item.svelte.d.ts +3 -3
  160. package/dist/context-menu/context-menu-label.svelte.d.ts +2 -2
  161. package/dist/context-menu/context-menu-root.svelte.d.ts +3 -3
  162. package/dist/context-menu/context-menu-separator.svelte.d.ts +3 -2
  163. package/dist/context-menu/context-menu-trigger.svelte.d.ts +2 -2
  164. package/dist/country-select/{country-select.svelte → country-select-button-input.svelte} +18 -74
  165. package/dist/country-select/country-select-button-input.svelte.d.ts +15 -0
  166. package/dist/country-select/index.d.ts +1 -1
  167. package/dist/country-select/index.js +1 -1
  168. package/dist/data-grid/data-grid-body.svelte.d.ts +20 -33
  169. package/dist/data-grid/data-grid-button-expand-trigger.svelte +45 -0
  170. package/dist/data-grid/data-grid-button-expand-trigger.svelte.d.ts +9 -0
  171. package/dist/data-grid/{data-grid-column.svelte → data-grid-button-input-column.svelte} +13 -33
  172. package/dist/data-grid/data-grid-button-input-column.svelte.d.ts +14 -0
  173. package/dist/data-grid/{data-grid-pagination.svelte → data-grid-button-pagination.svelte} +31 -59
  174. package/dist/data-grid/data-grid-button-pagination.svelte.d.ts +20 -0
  175. package/dist/data-grid/data-grid-cell.svelte.d.ts +2 -2
  176. package/dist/data-grid/data-grid-expandable-row.svelte.d.ts +4 -4
  177. package/dist/data-grid/data-grid-header.svelte.d.ts +2 -2
  178. package/dist/data-grid/data-grid-input-select-all.svelte.d.ts +6 -0
  179. package/dist/data-grid/data-grid-input-select-cell.svelte.d.ts +8 -0
  180. package/dist/data-grid/data-grid-root.svelte.d.ts +26 -32
  181. package/dist/data-grid/data-grid-row.svelte.d.ts +3 -3
  182. package/dist/data-grid/data-grid-table.svelte.d.ts +2 -2
  183. package/dist/data-grid/index.d.ts +5 -5
  184. package/dist/data-grid/index.js +5 -5
  185. package/dist/date-field/date-field-input-root.svelte.d.ts +15 -0
  186. package/dist/date-field/date-field-segment.svelte.d.ts +3 -3
  187. package/dist/date-field/date-field-separator.svelte.d.ts +2 -2
  188. package/dist/date-field/index.d.ts +1 -1
  189. package/dist/date-field/index.js +1 -1
  190. package/dist/date-picker/{datepicker-calendar.svelte → datepicker-button-calendar.svelte} +19 -97
  191. package/dist/date-picker/datepicker-button-calendar.svelte.d.ts +6 -0
  192. package/dist/date-picker/datepicker-button-trigger.svelte +72 -0
  193. package/dist/date-picker/datepicker-button-trigger.svelte.d.ts +10 -0
  194. package/dist/date-picker/datepicker-content.svelte.d.ts +4 -16
  195. package/dist/date-picker/datepicker-input-root.svelte.d.ts +14 -0
  196. package/dist/date-picker/index.d.ts +3 -3
  197. package/dist/date-picker/index.js +3 -3
  198. package/dist/date-range-picker/{date-range-picker-calendar.svelte → date-range-picker-button-calendar.svelte} +16 -131
  199. package/dist/date-range-picker/date-range-picker-button-calendar.svelte.d.ts +6 -0
  200. package/dist/date-range-picker/date-range-picker-button-preset.svelte +25 -0
  201. package/dist/date-range-picker/date-range-picker-button-preset.svelte.d.ts +10 -0
  202. package/dist/date-range-picker/date-range-picker-button-trigger.svelte +77 -0
  203. package/dist/date-range-picker/date-range-picker-button-trigger.svelte.d.ts +9 -0
  204. package/dist/date-range-picker/date-range-picker-content.svelte.d.ts +6 -4
  205. package/dist/date-range-picker/date-range-picker-root.svelte.d.ts +12 -6
  206. package/dist/date-range-picker/index.d.ts +3 -3
  207. package/dist/date-range-picker/index.js +3 -3
  208. package/dist/date-time-input/date-time-input.svelte.d.ts +8 -8
  209. package/dist/description-list/description-list-description.svelte.d.ts +2 -2
  210. package/dist/description-list/description-list-item.svelte.d.ts +2 -2
  211. package/dist/description-list/description-list-root.svelte.d.ts +2 -2
  212. package/dist/description-list/description-list-term.svelte.d.ts +2 -2
  213. package/dist/diagram/diagram.svelte +769 -0
  214. package/dist/diagram/diagram.svelte.d.ts +10 -0
  215. package/dist/diagram/edge-routing.d.ts +9 -0
  216. package/dist/diagram/edge-routing.js +283 -0
  217. package/dist/diagram/index.d.ts +9 -0
  218. package/dist/diagram/index.js +1 -0
  219. package/dist/diagram/layout.d.ts +2 -0
  220. package/dist/diagram/layout.js +974 -0
  221. package/dist/diagram/types.d.ts +196 -0
  222. package/dist/dialog/dialog-body.svelte.d.ts +2 -2
  223. package/dist/dialog/dialog-close.svelte.d.ts +2 -2
  224. package/dist/dialog/dialog-content.svelte.d.ts +2 -2
  225. package/dist/dialog/dialog-footer.svelte.d.ts +2 -2
  226. package/dist/dialog/dialog-header.svelte.d.ts +2 -2
  227. package/dist/dialog/dialog-overlay.svelte.d.ts +3 -2
  228. package/dist/dialog/dialog-root.svelte.d.ts +3 -3
  229. package/dist/dialog/dialog-trigger.svelte.d.ts +2 -2
  230. package/dist/displacement/displacement.svelte +39 -3
  231. package/dist/displacement/displacement.svelte.d.ts +5 -6
  232. package/dist/drag-and-drop/context.svelte.d.ts +1 -0
  233. package/dist/drag-and-drop/drag-and-drop-group.svelte +37 -0
  234. package/dist/drag-and-drop/drag-and-drop-group.svelte.d.ts +8 -0
  235. package/dist/drag-and-drop/drag-and-drop-handle.svelte +2 -0
  236. package/dist/drag-and-drop/drag-and-drop-handle.svelte.d.ts +4 -4
  237. package/dist/drag-and-drop/drag-and-drop-item.svelte +25 -6
  238. package/dist/drag-and-drop/drag-and-drop-item.svelte.d.ts +6 -10
  239. package/dist/drag-and-drop/drag-and-drop-root.svelte +624 -34
  240. package/dist/drag-and-drop/drag-and-drop-root.svelte.d.ts +21 -29
  241. package/dist/drag-and-drop/group-context.svelte.d.ts +13 -0
  242. package/dist/drag-and-drop/group-context.svelte.js +8 -0
  243. package/dist/drag-and-drop/index.d.ts +2 -0
  244. package/dist/drag-and-drop/index.js +3 -1
  245. package/dist/drawer/drawer-body.svelte.d.ts +3 -3
  246. package/dist/drawer/drawer-close.svelte.d.ts +2 -2
  247. package/dist/drawer/{drawer-content.svelte → drawer-dialog-content.svelte} +3 -2
  248. package/dist/drawer/drawer-dialog-content.svelte.d.ts +8 -0
  249. package/dist/drawer/drawer-footer.svelte +1 -1
  250. package/dist/drawer/drawer-footer.svelte.d.ts +2 -2
  251. package/dist/drawer/drawer-header.svelte.d.ts +2 -2
  252. package/dist/drawer/drawer-overlay.svelte.d.ts +3 -2
  253. package/dist/drawer/drawer-root.svelte.d.ts +4 -4
  254. package/dist/drawer/drawer-trigger.svelte.d.ts +2 -2
  255. package/dist/drawer/index.d.ts +1 -1
  256. package/dist/drawer/index.js +1 -1
  257. package/dist/drop-zone/drop-zone.svelte.d.ts +4 -4
  258. package/dist/dropdown-menu/dropdown-menu-content.svelte.d.ts +5 -16
  259. package/dist/dropdown-menu/dropdown-menu-group.svelte.d.ts +2 -2
  260. package/dist/dropdown-menu/dropdown-menu-item.svelte +4 -1
  261. package/dist/dropdown-menu/dropdown-menu-item.svelte.d.ts +3 -3
  262. package/dist/dropdown-menu/dropdown-menu-label.svelte.d.ts +2 -2
  263. package/dist/dropdown-menu/dropdown-menu-root.svelte.d.ts +3 -3
  264. package/dist/dropdown-menu/dropdown-menu-separator.svelte.d.ts +3 -2
  265. package/dist/dropdown-menu/dropdown-menu-trigger.svelte.d.ts +2 -2
  266. package/dist/field/field-description.svelte.d.ts +2 -2
  267. package/dist/field/field-error.svelte.d.ts +2 -2
  268. package/dist/field/field-root.svelte.d.ts +5 -5
  269. package/dist/fieldset/fieldset-content.svelte.d.ts +2 -2
  270. package/dist/fieldset/fieldset-description.svelte.d.ts +2 -2
  271. package/dist/fieldset/fieldset-legend.svelte.d.ts +2 -2
  272. package/dist/fieldset/fieldset-root.svelte.d.ts +2 -2
  273. package/dist/file-select/file-select-button-clear.svelte +37 -0
  274. package/dist/file-select/file-select-button-clear.svelte.d.ts +8 -0
  275. package/dist/file-select/file-select-button-trigger.svelte +26 -0
  276. package/dist/file-select/file-select-button-trigger.svelte.d.ts +9 -0
  277. package/dist/file-select/file-select-root.svelte.d.ts +7 -8
  278. package/dist/file-select/file-select-value.svelte.d.ts +2 -2
  279. package/dist/file-select/index.d.ts +2 -2
  280. package/dist/file-select/index.js +2 -2
  281. package/dist/file-upload/file-upload-button-item-delete.svelte +36 -0
  282. package/dist/file-upload/file-upload-button-item-delete.svelte.d.ts +9 -0
  283. package/dist/file-upload/file-upload-button-trigger.svelte +31 -0
  284. package/dist/file-upload/file-upload-button-trigger.svelte.d.ts +9 -0
  285. package/dist/file-upload/file-upload-dropzone.svelte.d.ts +3 -3
  286. package/dist/file-upload/file-upload-input-root.svelte.d.ts +14 -0
  287. package/dist/file-upload/file-upload-item.svelte.d.ts +5 -5
  288. package/dist/file-upload/file-upload-list.svelte.d.ts +6 -10
  289. package/dist/file-upload/index.d.ts +3 -3
  290. package/dist/file-upload/index.js +3 -3
  291. package/dist/flip-card/flip-card-back.svelte.d.ts +2 -2
  292. package/dist/flip-card/flip-card-front.svelte.d.ts +2 -2
  293. package/dist/flip-card/flip-card-root.svelte.d.ts +5 -5
  294. package/dist/float-button/float-button-action.svelte +6 -72
  295. package/dist/float-button/float-button-action.svelte.d.ts +2 -2
  296. package/dist/float-button/float-button-root.svelte.d.ts +4 -4
  297. package/dist/float-button/float-button-trigger.svelte +8 -64
  298. package/dist/float-button/float-button-trigger.svelte.d.ts +3 -3
  299. package/dist/focus-trap/focus-trap.svelte.d.ts +5 -5
  300. package/dist/format-bytes/format-bytes.svelte.d.ts +5 -5
  301. package/dist/format-date/format-date.svelte.d.ts +16 -16
  302. package/dist/format-number/format-number.svelte.d.ts +12 -12
  303. package/dist/gauge/gauge.svelte.d.ts +15 -19
  304. package/dist/glass/glass.svelte.d.ts +6 -6
  305. package/dist/glow/glow.svelte.d.ts +7 -7
  306. package/dist/god-rays/god-rays.svelte.d.ts +11 -14
  307. package/dist/gradient-mesh/gradient-mesh.svelte +42 -5
  308. package/dist/gradient-mesh/gradient-mesh.svelte.d.ts +5 -6
  309. package/dist/halftone/halftone.svelte +16 -36
  310. package/dist/halftone/halftone.svelte.d.ts +6 -6
  311. package/dist/heading/heading.svelte.d.ts +4 -4
  312. package/dist/hover-card/hover-card-content.svelte.d.ts +5 -18
  313. package/dist/hover-card/hover-card-root.svelte.d.ts +4 -6
  314. package/dist/hover-card/hover-card-trigger.svelte.d.ts +3 -5
  315. package/dist/icon/icon.svelte.d.ts +6 -6
  316. package/dist/image/image.svelte.d.ts +3 -3
  317. package/dist/image-comparison/image-comparison.svelte.d.ts +6 -6
  318. package/dist/index.d.ts +4 -5
  319. package/dist/index.js +1 -2
  320. package/dist/infinite-scroll/infinite-scroll.svelte.d.ts +9 -9
  321. package/dist/input/input.svelte.d.ts +5 -5
  322. package/dist/input-group/index.d.ts +1 -1
  323. package/dist/input-group/index.js +1 -1
  324. package/dist/input-group/input-group-action-button.svelte +29 -0
  325. package/dist/input-group/input-group-action-button.svelte.d.ts +8 -0
  326. package/dist/input-group/input-group-input.svelte.d.ts +2 -2
  327. package/dist/input-group/input-group-prefix.svelte.d.ts +2 -2
  328. package/dist/input-group/input-group-root.svelte.d.ts +6 -6
  329. package/dist/input-group/input-group-select.svelte.d.ts +3 -3
  330. package/dist/input-group/input-group-separator.svelte.d.ts +3 -2
  331. package/dist/input-group/input-group-suffix.svelte.d.ts +2 -2
  332. package/dist/internal/calendar-grid-utils.js +2 -1
  333. package/dist/internal/close-button-base.svelte +12 -33
  334. package/dist/internal/close-button-base.svelte.d.ts +3 -0
  335. package/dist/internal/motion.d.ts +2 -14
  336. package/dist/internal/nav-arrow-button.svelte +26 -0
  337. package/dist/internal/nav-arrow-button.svelte.d.ts +13 -0
  338. package/dist/kbd/kbd.svelte +8 -13
  339. package/dist/kbd/kbd.svelte.d.ts +3 -3
  340. package/dist/label/label.svelte.d.ts +3 -3
  341. package/dist/link/link.svelte.d.ts +5 -5
  342. package/dist/link-preview/link-preview-content.svelte.d.ts +5 -16
  343. package/dist/link-preview/link-preview-root.svelte.d.ts +5 -5
  344. package/dist/link-preview/link-preview-trigger.svelte +4 -2
  345. package/dist/link-preview/link-preview-trigger.svelte.d.ts +4 -3
  346. package/dist/list/list-item-icon.svelte.d.ts +2 -2
  347. package/dist/list/list-item-text.svelte.d.ts +4 -4
  348. package/dist/list/list-item.svelte.d.ts +4 -4
  349. package/dist/list/list-root.svelte +4 -1
  350. package/dist/list/list-root.svelte.d.ts +4 -4
  351. package/dist/list/list-subheader.svelte.d.ts +2 -2
  352. package/dist/listbox/listbox-item.svelte +4 -1
  353. package/dist/listbox/listbox-item.svelte.d.ts +1 -1
  354. package/dist/listbox/listbox-root.svelte.d.ts +1 -1
  355. package/dist/logo-mark/logo-mark.svelte +2 -2
  356. package/dist/logo-mark/logo-mark.svelte.d.ts +7 -7
  357. package/dist/map/map-controls.svelte.d.ts +5 -5
  358. package/dist/map/map-layer.svelte.d.ts +6 -6
  359. package/dist/map/map-marker.svelte.d.ts +6 -5
  360. package/dist/map/map-popup.svelte.d.ts +6 -6
  361. package/dist/map/map-root.svelte.d.ts +8 -8
  362. package/dist/markdown-renderer/markdown-renderer.svelte.d.ts +3 -3
  363. package/dist/marquee/marquee.svelte.d.ts +7 -7
  364. package/dist/mask-reveal/mask-reveal.svelte.d.ts +7 -8
  365. package/dist/mega-menu/index.d.ts +1 -1
  366. package/dist/mega-menu/index.js +1 -1
  367. package/dist/mega-menu/{mega-menu-trigger.svelte → mega-menu-button-trigger.svelte} +7 -28
  368. package/dist/mega-menu/mega-menu-button-trigger.svelte.d.ts +8 -0
  369. package/dist/mega-menu/mega-menu-column.svelte +6 -1
  370. package/dist/mega-menu/mega-menu-column.svelte.d.ts +3 -3
  371. package/dist/mega-menu/mega-menu-item.svelte.d.ts +2 -2
  372. package/dist/mega-menu/mega-menu-link.svelte +38 -6
  373. package/dist/mega-menu/mega-menu-link.svelte.d.ts +10 -5
  374. package/dist/mega-menu/mega-menu-panel.svelte +50 -10
  375. package/dist/mega-menu/mega-menu-panel.svelte.d.ts +3 -3
  376. package/dist/mega-menu/mega-menu-root.svelte.d.ts +2 -2
  377. package/dist/menubar/index.d.ts +1 -1
  378. package/dist/menubar/index.js +1 -1
  379. package/dist/menubar/{menubar-trigger.svelte → menubar-button-trigger.svelte} +6 -42
  380. package/dist/menubar/menubar-button-trigger.svelte.d.ts +8 -0
  381. package/dist/menubar/menubar-content.svelte.d.ts +4 -4
  382. package/dist/menubar/menubar-item.svelte +4 -1
  383. package/dist/menubar/menubar-item.svelte.d.ts +4 -4
  384. package/dist/menubar/menubar-label.svelte.d.ts +2 -2
  385. package/dist/menubar/menubar-menu.svelte.d.ts +2 -2
  386. package/dist/menubar/menubar-root.svelte.d.ts +2 -2
  387. package/dist/menubar/menubar-separator.svelte.d.ts +3 -2
  388. package/dist/multi-select-combobox/index.d.ts +2 -2
  389. package/dist/multi-select-combobox/index.js +2 -2
  390. package/dist/multi-select-combobox/multi-select-combobox-content.svelte.d.ts +11 -6
  391. package/dist/multi-select-combobox/multi-select-combobox-empty.svelte.d.ts +6 -6
  392. package/dist/multi-select-combobox/multi-select-combobox-group.svelte.d.ts +7 -6
  393. package/dist/multi-select-combobox/multi-select-combobox-input.svelte.d.ts +5 -6
  394. package/dist/multi-select-combobox/multi-select-combobox-item.svelte +6 -1
  395. package/dist/multi-select-combobox/multi-select-combobox-item.svelte.d.ts +10 -6
  396. package/dist/multi-select-combobox/multi-select-combobox-root-input.svelte.d.ts +16 -0
  397. package/dist/multi-select-combobox/multi-select-combobox-selection-item.svelte.d.ts +7 -6
  398. package/dist/multi-select-combobox/multi-select-combobox-selection-list.svelte.d.ts +6 -6
  399. package/dist/multi-select-combobox/multi-select-combobox-selection-remove-button.svelte +34 -0
  400. package/dist/multi-select-combobox/multi-select-combobox-selection-remove-button.svelte.d.ts +8 -0
  401. package/dist/navigation-menu/index.d.ts +1 -1
  402. package/dist/navigation-menu/index.js +1 -1
  403. package/dist/navigation-menu/navigation-menu-content.svelte.d.ts +2 -2
  404. package/dist/navigation-menu/navigation-menu-item.svelte.d.ts +2 -2
  405. package/dist/navigation-menu/navigation-menu-link.svelte +2 -2
  406. package/dist/navigation-menu/navigation-menu-link.svelte.d.ts +3 -3
  407. package/dist/navigation-menu/navigation-menu-list.svelte.d.ts +2 -2
  408. package/dist/navigation-menu/navigation-menu-root.svelte.d.ts +2 -2
  409. package/dist/navigation-menu/{navigation-menu-trigger.svelte → navigation-menu-trigger-button.svelte} +6 -38
  410. package/dist/navigation-menu/navigation-menu-trigger-button.svelte.d.ts +8 -0
  411. package/dist/noise/noise.svelte +2 -2
  412. package/dist/noise/noise.svelte.d.ts +6 -5
  413. package/dist/notification-center/index.d.ts +1 -1
  414. package/dist/notification-center/index.js +1 -1
  415. package/dist/notification-center/notification-center-group.svelte.d.ts +3 -3
  416. package/dist/notification-center/notification-center-item.svelte.d.ts +7 -7
  417. package/dist/notification-center/notification-center-panel.svelte.d.ts +4 -16
  418. package/dist/notification-center/notification-center-root.svelte.d.ts +5 -5
  419. package/dist/notification-center/notification-center-trigger-button.svelte +35 -0
  420. package/dist/notification-center/notification-center-trigger-button.svelte.d.ts +10 -0
  421. package/dist/number-input/index.d.ts +1 -1
  422. package/dist/number-input/index.js +1 -1
  423. package/dist/number-input/{number-input.svelte → number-input-button.svelte} +38 -106
  424. package/dist/number-input/number-input-button.svelte.d.ts +12 -0
  425. package/dist/option-swatch-group/index.d.ts +1 -1
  426. package/dist/option-swatch-group/index.js +1 -1
  427. package/dist/option-swatch-group/{option-swatch-group-item.svelte → option-swatch-group-item-button.svelte} +6 -59
  428. package/dist/option-swatch-group/option-swatch-group-item-button.svelte.d.ts +11 -0
  429. package/dist/option-swatch-group/option-swatch-group-label.svelte.d.ts +2 -2
  430. package/dist/option-swatch-group/option-swatch-group-meta.svelte.d.ts +2 -2
  431. package/dist/option-swatch-group/option-swatch-group-root.svelte.d.ts +5 -5
  432. package/dist/option-swatch-group/option-swatch-group-swatch.svelte.d.ts +4 -4
  433. package/dist/pagination/index.d.ts +3 -3
  434. package/dist/pagination/index.js +3 -3
  435. package/dist/pagination/pagination-content.svelte.d.ts +2 -2
  436. package/dist/pagination/pagination-ellipsis.svelte.d.ts +3 -2
  437. package/dist/pagination/pagination-item.svelte.d.ts +2 -2
  438. package/dist/pagination/pagination-link-button.svelte +28 -0
  439. package/dist/pagination/pagination-link-button.svelte.d.ts +9 -0
  440. package/dist/pagination/pagination-nav-button.svelte +28 -0
  441. package/dist/pagination/pagination-nav-button.svelte.d.ts +9 -0
  442. package/dist/pagination/pagination-next-button.svelte +13 -0
  443. package/dist/pagination/pagination-next-button.svelte.d.ts +8 -0
  444. package/dist/pagination/pagination-previous-button.svelte +13 -0
  445. package/dist/pagination/pagination-previous-button.svelte.d.ts +8 -0
  446. package/dist/pagination/pagination-root.svelte.d.ts +4 -4
  447. package/dist/phone-input/index.d.ts +1 -1
  448. package/dist/phone-input/index.js +1 -1
  449. package/dist/phone-input/{phone-input.svelte → phone-input-select.svelte} +7 -1
  450. package/dist/phone-input/phone-input-select.svelte.d.ts +21 -0
  451. package/dist/pin-input/context.svelte.d.ts +2 -2
  452. package/dist/pin-input/index.d.ts +4 -4
  453. package/dist/pin-input/index.js +2 -2
  454. package/dist/pin-input/pin-input-cell.svelte +2 -2
  455. package/dist/pin-input/pin-input-cell.svelte.d.ts +10 -14
  456. package/dist/pin-input/pin-input-group.svelte.d.ts +2 -2
  457. package/dist/pin-input/pin-input-root.svelte +4 -4
  458. package/dist/pin-input/pin-input-root.svelte.d.ts +18 -22
  459. package/dist/pin-input/pin-input-separator.svelte.d.ts +2 -2
  460. package/dist/popover/popover-content.svelte.d.ts +5 -16
  461. package/dist/popover/popover-root.svelte.d.ts +3 -3
  462. package/dist/popover/popover-trigger.svelte.d.ts +2 -2
  463. package/dist/portal/portal.svelte.d.ts +4 -4
  464. package/dist/progress/progress.svelte.d.ts +17 -9
  465. package/dist/progress-ring/progress-ring.svelte.d.ts +7 -7
  466. package/dist/prompt-input/index.d.ts +1 -1
  467. package/dist/prompt-input/index.js +1 -1
  468. package/dist/prompt-input/{prompt-input.svelte → prompt-input-button-textarea.svelte} +4 -40
  469. package/dist/prompt-input/prompt-input-button-textarea.svelte.d.ts +13 -0
  470. package/dist/qr-code/qr-code.svelte.d.ts +7 -6
  471. package/dist/radio-group/index.d.ts +1 -1
  472. package/dist/radio-group/index.js +1 -1
  473. package/dist/radio-group/radio-group-item-input.svelte.d.ts +10 -0
  474. package/dist/radio-group/radio-group.svelte.d.ts +7 -7
  475. package/dist/range-calendar/index.d.ts +1 -1
  476. package/dist/range-calendar/index.js +1 -1
  477. package/dist/range-calendar/{range-calendar-grid.svelte → range-calendar-grid-button.svelte} +18 -114
  478. package/dist/range-calendar/range-calendar-grid-button.svelte.d.ts +6 -0
  479. package/dist/range-calendar/range-calendar-root.svelte.d.ts +12 -6
  480. package/dist/rating/index.d.ts +1 -1
  481. package/dist/rating/index.js +1 -1
  482. package/dist/rating/{rating.svelte → rating-button-input.svelte} +19 -64
  483. package/dist/rating/rating-button-input.svelte.d.ts +13 -0
  484. package/dist/relative-time/relative-time.svelte.d.ts +4 -4
  485. package/dist/reveal/reveal.svelte.d.ts +11 -9
  486. package/dist/rich-text-editor/index.d.ts +1 -1
  487. package/dist/rich-text-editor/index.js +1 -1
  488. package/dist/rich-text-editor/rich-text-editor-content.svelte.d.ts +3 -2
  489. package/dist/rich-text-editor/rich-text-editor-root.svelte.d.ts +5 -5
  490. package/dist/rich-text-editor/{rich-text-editor-toolbar.svelte → rich-text-editor-toolbar-button-input.svelte} +81 -128
  491. package/dist/rich-text-editor/rich-text-editor-toolbar-button-input.svelte.d.ts +6 -0
  492. package/dist/scroll-area/scroll-area.svelte.d.ts +3 -3
  493. package/dist/scroll-to-top/index.d.ts +1 -1
  494. package/dist/scroll-to-top/index.js +1 -1
  495. package/dist/scroll-to-top/scroll-to-top-button.svelte +87 -0
  496. package/dist/scroll-to-top/scroll-to-top-button.svelte.d.ts +10 -0
  497. package/dist/segmented-control/index.d.ts +1 -1
  498. package/dist/segmented-control/index.js +1 -1
  499. package/dist/segmented-control/segmented-control-item-button.svelte +37 -0
  500. package/dist/segmented-control/segmented-control-item-button.svelte.d.ts +10 -0
  501. package/dist/segmented-control/segmented-control-root.svelte.d.ts +5 -5
  502. package/dist/select/index.d.ts +2 -2
  503. package/dist/select/index.js +2 -2
  504. package/dist/select/select-content.svelte.d.ts +5 -16
  505. package/dist/select/select-item.svelte +8 -6
  506. package/dist/select/select-item.svelte.d.ts +4 -4
  507. package/dist/select/{select-root.svelte → select-root-input.svelte} +1 -1
  508. package/dist/select/select-root-input.svelte.d.ts +18 -0
  509. package/dist/select/select-trigger-button.svelte +52 -0
  510. package/dist/select/select-trigger-button.svelte.d.ts +9 -0
  511. package/dist/select/select-value.svelte.d.ts +2 -2
  512. package/dist/separator/separator.svelte.d.ts +4 -4
  513. package/dist/shader-canvas/presets.d.ts +1 -1
  514. package/dist/shader-canvas/presets.js +1 -1
  515. package/dist/shader-canvas/shader-canvas.svelte +4 -1
  516. package/dist/shader-canvas/shader-canvas.svelte.d.ts +13 -18
  517. package/dist/sidebar/index.d.ts +1 -1
  518. package/dist/sidebar/index.js +1 -1
  519. package/dist/sidebar/sidebar-content.svelte.d.ts +2 -2
  520. package/dist/sidebar/sidebar-footer.svelte +5 -4
  521. package/dist/sidebar/sidebar-footer.svelte.d.ts +2 -2
  522. package/dist/sidebar/sidebar-group-label.svelte.d.ts +2 -2
  523. package/dist/sidebar/sidebar-group.svelte.d.ts +2 -2
  524. package/dist/sidebar/sidebar-header.svelte.d.ts +2 -2
  525. package/dist/sidebar/sidebar-item.svelte +2 -2
  526. package/dist/sidebar/sidebar-item.svelte.d.ts +3 -3
  527. package/dist/sidebar/sidebar-root.svelte.d.ts +4 -4
  528. package/dist/sidebar/sidebar-trigger-button.svelte +29 -0
  529. package/dist/sidebar/sidebar-trigger-button.svelte.d.ts +8 -0
  530. package/dist/skeleton/skeleton.svelte.d.ts +4 -4
  531. package/dist/slider/index.d.ts +1 -1
  532. package/dist/slider/index.js +1 -1
  533. package/dist/slider/slider-input.svelte.d.ts +13 -0
  534. package/dist/spacer/spacer.svelte.d.ts +3 -3
  535. package/dist/sparkline/sparkline.svelte.d.ts +8 -8
  536. package/dist/spinner/spinner.svelte.d.ts +4 -4
  537. package/dist/splitter/splitter-handle.svelte.d.ts +3 -3
  538. package/dist/splitter/splitter-panel.svelte.d.ts +3 -3
  539. package/dist/splitter/splitter-root.svelte.d.ts +4 -4
  540. package/dist/spotlight/spotlight.svelte +42 -4
  541. package/dist/spotlight/spotlight.svelte.d.ts +9 -8
  542. package/dist/star-rating/star-rating-root.svelte.d.ts +5 -5
  543. package/dist/stepper/index.d.ts +1 -1
  544. package/dist/stepper/index.js +1 -1
  545. package/dist/stepper/stepper-list.svelte.d.ts +2 -2
  546. package/dist/stepper/stepper-root.svelte.d.ts +4 -4
  547. package/dist/stepper/stepper-separator.svelte.d.ts +2 -2
  548. package/dist/stepper/{stepper-step.svelte → stepper-step-button.svelte} +3 -28
  549. package/dist/stepper/stepper-step-button.svelte.d.ts +12 -0
  550. package/dist/svg/svg.svelte.d.ts +4 -5
  551. package/dist/table/table-body.svelte.d.ts +2 -2
  552. package/dist/table/table-caption.svelte.d.ts +2 -2
  553. package/dist/table/table-cell.svelte.d.ts +2 -2
  554. package/dist/table/table-footer.svelte.d.ts +2 -2
  555. package/dist/table/table-head.svelte.d.ts +3 -3
  556. package/dist/table/table-header.svelte.d.ts +2 -2
  557. package/dist/table/table-root.svelte.d.ts +2 -2
  558. package/dist/table/table-row.svelte.d.ts +2 -2
  559. package/dist/table-of-contents/table-of-contents-item.svelte +6 -1
  560. package/dist/table-of-contents/table-of-contents-item.svelte.d.ts +7 -8
  561. package/dist/table-of-contents/table-of-contents-list.svelte +7 -2
  562. package/dist/table-of-contents/table-of-contents-list.svelte.d.ts +3 -2
  563. package/dist/table-of-contents/table-of-contents-root.svelte.d.ts +6 -6
  564. package/dist/tabs/index.d.ts +1 -1
  565. package/dist/tabs/index.js +1 -1
  566. package/dist/tabs/tabs-content.svelte.d.ts +3 -3
  567. package/dist/tabs/tabs-list.svelte.d.ts +2 -2
  568. package/dist/tabs/tabs-root.svelte.d.ts +5 -5
  569. package/dist/tabs/tabs-trigger-button.svelte +41 -0
  570. package/dist/tabs/tabs-trigger-button.svelte.d.ts +11 -0
  571. package/dist/tag/index.d.ts +1 -1
  572. package/dist/tag/index.js +1 -1
  573. package/dist/tag/{tag.svelte → tag-button.svelte} +9 -42
  574. package/dist/tag/tag-button.svelte.d.ts +14 -0
  575. package/dist/tags-input/index.d.ts +1 -1
  576. package/dist/tags-input/index.js +1 -1
  577. package/dist/tags-input/tags-input-input.svelte.d.ts +2 -2
  578. package/dist/tags-input/tags-input-list.svelte.d.ts +2 -2
  579. package/dist/tags-input/tags-input-root.svelte.d.ts +8 -8
  580. package/dist/tags-input/tags-input-tag-delete-button.svelte +29 -0
  581. package/dist/tags-input/tags-input-tag-delete-button.svelte.d.ts +8 -0
  582. package/dist/tags-input/tags-input-tag.svelte.d.ts +4 -4
  583. package/dist/text/text.svelte.d.ts +8 -8
  584. package/dist/textarea/textarea.svelte.d.ts +4 -4
  585. package/dist/themes/aurora.css +229 -0
  586. package/dist/themes/dark.css +134 -0
  587. package/dist/themes/default.css +76 -0
  588. package/dist/themes/midnight.css +142 -0
  589. package/dist/themes/terminal.css +175 -0
  590. package/dist/time-input/time-input.svelte.d.ts +9 -2
  591. package/dist/timeline/timeline-content.svelte.d.ts +2 -2
  592. package/dist/timeline/timeline-description.svelte.d.ts +2 -2
  593. package/dist/timeline/timeline-icon.svelte.d.ts +2 -2
  594. package/dist/timeline/timeline-item.svelte.d.ts +2 -2
  595. package/dist/timeline/timeline-root.svelte.d.ts +3 -3
  596. package/dist/timeline/timeline-time.svelte.d.ts +3 -3
  597. package/dist/timeline/timeline-title.svelte.d.ts +3 -3
  598. package/dist/toast/index.d.ts +2 -2
  599. package/dist/toast/index.js +2 -2
  600. package/dist/toast/toast-action-button.svelte +16 -0
  601. package/dist/toast/toast-action-button.svelte.d.ts +9 -0
  602. package/dist/toast/toast-close-button.svelte +23 -0
  603. package/dist/toast/toast-close-button.svelte.d.ts +8 -0
  604. package/dist/toast/toast-description.svelte.d.ts +2 -2
  605. package/dist/toast/toast-provider.svelte +1 -1
  606. package/dist/toast/toast-provider.svelte.d.ts +3 -9
  607. package/dist/toast/toast-root.svelte.d.ts +6 -6
  608. package/dist/toast/toast-title.svelte.d.ts +2 -2
  609. package/dist/toggle/index.d.ts +1 -1
  610. package/dist/toggle/index.js +1 -1
  611. package/dist/toggle/toggle-button.svelte +203 -0
  612. package/dist/toggle/toggle-button.svelte.d.ts +14 -0
  613. package/dist/toggle-group/index.d.ts +1 -1
  614. package/dist/toggle-group/index.js +1 -1
  615. package/dist/toggle-group/toggle-group-item-button.svelte +36 -0
  616. package/dist/toggle-group/toggle-group-item-button.svelte.d.ts +10 -0
  617. package/dist/toggle-group/toggle-group-root.svelte +5 -3
  618. package/dist/toggle-group/toggle-group-root.svelte.d.ts +7 -7
  619. package/dist/toolbar/toolbar-button.svelte +4 -47
  620. package/dist/toolbar/toolbar-button.svelte.d.ts +3 -3
  621. package/dist/toolbar/toolbar-link.svelte.d.ts +3 -3
  622. package/dist/toolbar/toolbar-root.svelte.d.ts +3 -3
  623. package/dist/toolbar/toolbar-separator.svelte.d.ts +3 -2
  624. package/dist/tooltip/tooltip-content.svelte.d.ts +5 -16
  625. package/dist/tooltip/tooltip-root.svelte.d.ts +4 -4
  626. package/dist/tooltip/tooltip-trigger.svelte.d.ts +2 -2
  627. package/dist/tour/index.d.ts +1 -1
  628. package/dist/tour/index.js +1 -1
  629. package/dist/tour/tour-root.css +211 -0
  630. package/dist/tour/tour-root.css.d.ts +2 -0
  631. package/dist/tour/tour-root.svelte +2 -217
  632. package/dist/tour/tour-root.svelte.d.ts +7 -6
  633. package/dist/tour/{tour-tooltip.svelte → tour-tooltip-button.svelte} +8 -4
  634. package/dist/tour/tour-tooltip-button.svelte.d.ts +17 -0
  635. package/dist/transfer/index.d.ts +2 -2
  636. package/dist/transfer/index.js +2 -2
  637. package/dist/transfer/{transfer-actions.svelte → transfer-actions-button.svelte} +17 -47
  638. package/dist/transfer/transfer-actions-button.svelte.d.ts +17 -0
  639. package/dist/transfer/transfer-item.svelte.d.ts +5 -5
  640. package/dist/transfer/transfer-list-input.svelte.d.ts +14 -0
  641. package/dist/transfer/transfer-root.svelte.d.ts +6 -6
  642. package/dist/tree/tree-item-children.svelte.d.ts +2 -2
  643. package/dist/tree/tree-item-label.svelte.d.ts +2 -2
  644. package/dist/tree/tree-item.svelte.d.ts +3 -3
  645. package/dist/tree/tree-root.svelte +16 -17
  646. package/dist/tree/tree-root.svelte.d.ts +4 -4
  647. package/dist/typing-indicator/typing-indicator.svelte.d.ts +3 -5
  648. package/dist/typography/blockquote.svelte.d.ts +2 -2
  649. package/dist/typography/code.svelte.d.ts +2 -2
  650. package/dist/typography/heading.svelte.d.ts +4 -3
  651. package/dist/typography/text.svelte.d.ts +6 -6
  652. package/dist/video-embed/index.d.ts +1 -1
  653. package/dist/video-embed/index.js +1 -1
  654. package/dist/video-embed/{video-embed.svelte → video-embed-button.svelte} +28 -34
  655. package/dist/video-embed/video-embed-button.svelte.d.ts +15 -0
  656. package/dist/virtual-list/virtual-list.svelte.d.ts +24 -37
  657. package/dist/visually-hidden/visually-hidden.svelte.d.ts +2 -2
  658. package/package.json +22 -27
  659. package/skills/dryui/SKILL.md +1 -0
  660. package/dist/accordion/accordion-trigger.svelte +0 -89
  661. package/dist/accordion/accordion-trigger.svelte.d.ts +0 -8
  662. package/dist/alert/alert-close.svelte +0 -68
  663. package/dist/alert/alert-close.svelte.d.ts +0 -8
  664. package/dist/alert-dialog/alert-dialog-action.svelte +0 -74
  665. package/dist/alert-dialog/alert-dialog-action.svelte.d.ts +0 -8
  666. package/dist/alert-dialog/alert-dialog-cancel.svelte +0 -85
  667. package/dist/alert-dialog/alert-dialog-cancel.svelte.d.ts +0 -8
  668. package/dist/alpha-slider/alpha-slider.svelte.d.ts +0 -12
  669. package/dist/calendar/calendar-grid.svelte +0 -253
  670. package/dist/calendar/calendar-grid.svelte.d.ts +0 -4
  671. package/dist/calendar/calendar-next.svelte +0 -56
  672. package/dist/calendar/calendar-next.svelte.d.ts +0 -4
  673. package/dist/calendar/calendar-prev.svelte +0 -56
  674. package/dist/calendar/calendar-prev.svelte.d.ts +0 -4
  675. package/dist/carousel/carousel-dots.svelte +0 -59
  676. package/dist/carousel/carousel-dots.svelte.d.ts +0 -5
  677. package/dist/carousel/carousel-next.svelte +0 -65
  678. package/dist/carousel/carousel-next.svelte.d.ts +0 -8
  679. package/dist/carousel/carousel-prev.svelte +0 -65
  680. package/dist/carousel/carousel-prev.svelte.d.ts +0 -8
  681. package/dist/carousel/carousel-thumbnails.svelte.d.ts +0 -9
  682. package/dist/checkbox/checkbox.svelte.d.ts +0 -10
  683. package/dist/chip/chip.svelte +0 -327
  684. package/dist/chip/chip.svelte.d.ts +0 -26
  685. package/dist/chip-group/chip-group-item.svelte +0 -241
  686. package/dist/chip-group/chip-group-item.svelte.d.ts +0 -12
  687. package/dist/code-block/code-block.svelte.d.ts +0 -13
  688. package/dist/collapsible/collapsible-trigger.svelte +0 -79
  689. package/dist/collapsible/collapsible-trigger.svelte.d.ts +0 -8
  690. package/dist/color-picker/color-picker-alpha-slider.svelte.d.ts +0 -5
  691. package/dist/color-picker/color-picker-eyedropper.svelte.d.ts +0 -8
  692. package/dist/color-picker/color-picker-hue-slider.svelte.d.ts +0 -5
  693. package/dist/combobox/combobox-root.svelte.d.ts +0 -11
  694. package/dist/command-palette/command-palette-root.svelte.d.ts +0 -9
  695. package/dist/country-select/country-select.svelte.d.ts +0 -15
  696. package/dist/data-grid/data-grid-column.svelte.d.ts +0 -14
  697. package/dist/data-grid/data-grid-expand-trigger.svelte +0 -65
  698. package/dist/data-grid/data-grid-expand-trigger.svelte.d.ts +0 -9
  699. package/dist/data-grid/data-grid-pagination.svelte.d.ts +0 -22
  700. package/dist/data-grid/data-grid-select-all.svelte.d.ts +0 -5
  701. package/dist/data-grid/data-grid-select-cell.svelte.d.ts +0 -7
  702. package/dist/date-field/date-field-root.svelte.d.ts +0 -15
  703. package/dist/date-picker/datepicker-calendar.svelte.d.ts +0 -5
  704. package/dist/date-picker/datepicker-root.svelte.d.ts +0 -14
  705. package/dist/date-picker/datepicker-trigger.svelte +0 -184
  706. package/dist/date-picker/datepicker-trigger.svelte.d.ts +0 -10
  707. package/dist/date-range-picker/date-range-picker-calendar.svelte.d.ts +0 -8
  708. package/dist/date-range-picker/date-range-picker-preset.svelte +0 -62
  709. package/dist/date-range-picker/date-range-picker-preset.svelte.d.ts +0 -4
  710. package/dist/date-range-picker/date-range-picker-trigger.svelte +0 -132
  711. package/dist/date-range-picker/date-range-picker-trigger.svelte.d.ts +0 -8
  712. package/dist/drawer/drawer-content.svelte.d.ts +0 -8
  713. package/dist/file-select/file-select-clear.svelte +0 -71
  714. package/dist/file-select/file-select-clear.svelte.d.ts +0 -8
  715. package/dist/file-select/file-select-trigger.svelte +0 -84
  716. package/dist/file-select/file-select-trigger.svelte.d.ts +0 -9
  717. package/dist/file-upload/file-upload-item-delete.svelte +0 -83
  718. package/dist/file-upload/file-upload-item-delete.svelte.d.ts +0 -9
  719. package/dist/file-upload/file-upload-root.svelte.d.ts +0 -15
  720. package/dist/file-upload/file-upload-trigger.svelte +0 -85
  721. package/dist/file-upload/file-upload-trigger.svelte.d.ts +0 -9
  722. package/dist/input-group/input-group-action.svelte +0 -67
  723. package/dist/input-group/input-group-action.svelte.d.ts +0 -8
  724. package/dist/internal/result-card-shell.svelte +0 -30
  725. package/dist/internal/result-card-shell.svelte.d.ts +0 -11
  726. package/dist/mega-menu/mega-menu-trigger.svelte.d.ts +0 -8
  727. package/dist/menubar/menubar-trigger.svelte.d.ts +0 -8
  728. package/dist/multi-select-combobox/multi-select-combobox-root.svelte.d.ts +0 -8
  729. package/dist/multi-select-combobox/multi-select-combobox-selection-remove.svelte +0 -76
  730. package/dist/multi-select-combobox/multi-select-combobox-selection-remove.svelte.d.ts +0 -8
  731. package/dist/navigation-menu/navigation-menu-trigger.svelte.d.ts +0 -8
  732. package/dist/notification-center/notification-center-trigger.svelte +0 -59
  733. package/dist/notification-center/notification-center-trigger.svelte.d.ts +0 -14
  734. package/dist/number-input/number-input.svelte.d.ts +0 -12
  735. package/dist/option-swatch-group/option-swatch-group-item.svelte.d.ts +0 -11
  736. package/dist/pagination/pagination-link.svelte +0 -80
  737. package/dist/pagination/pagination-link.svelte.d.ts +0 -9
  738. package/dist/pagination/pagination-next.svelte +0 -67
  739. package/dist/pagination/pagination-next.svelte.d.ts +0 -8
  740. package/dist/pagination/pagination-previous.svelte +0 -67
  741. package/dist/pagination/pagination-previous.svelte.d.ts +0 -8
  742. package/dist/phone-input/phone-input.svelte.d.ts +0 -15
  743. package/dist/prompt-input/prompt-input.svelte.d.ts +0 -4
  744. package/dist/radio-group/radio-group-item.svelte.d.ts +0 -10
  745. package/dist/range-calendar/range-calendar-grid.svelte.d.ts +0 -4
  746. package/dist/rating/rating.svelte.d.ts +0 -13
  747. package/dist/rich-text-editor/rich-text-editor-toolbar.svelte.d.ts +0 -5
  748. package/dist/scroll-to-top/scroll-to-top.svelte +0 -162
  749. package/dist/scroll-to-top/scroll-to-top.svelte.d.ts +0 -10
  750. package/dist/segmented-control/segmented-control-item.svelte +0 -141
  751. package/dist/segmented-control/segmented-control-item.svelte.d.ts +0 -10
  752. package/dist/select/select-root.svelte.d.ts +0 -14
  753. package/dist/select/select-trigger.svelte +0 -206
  754. package/dist/select/select-trigger.svelte.d.ts +0 -9
  755. package/dist/sidebar/sidebar-trigger.svelte +0 -76
  756. package/dist/sidebar/sidebar-trigger.svelte.d.ts +0 -8
  757. package/dist/slider/slider.svelte.d.ts +0 -13
  758. package/dist/stepper/stepper-step.svelte.d.ts +0 -12
  759. package/dist/system-map/index.d.ts +0 -17
  760. package/dist/system-map/index.js +0 -1
  761. package/dist/system-map/system-map.svelte +0 -311
  762. package/dist/system-map/system-map.svelte.d.ts +0 -25
  763. package/dist/system-map/types.d.ts +0 -99
  764. package/dist/tabs/tabs-trigger.svelte +0 -130
  765. package/dist/tabs/tabs-trigger.svelte.d.ts +0 -11
  766. package/dist/tag/tag.svelte.d.ts +0 -25
  767. package/dist/tags-input/tags-input-tag-delete.svelte +0 -73
  768. package/dist/tags-input/tags-input-tag-delete.svelte.d.ts +0 -8
  769. package/dist/thumbnail/_layout-content.svelte +0 -89
  770. package/dist/thumbnail/_layout-content.svelte.d.ts +0 -9
  771. package/dist/thumbnail/_layout-footer.svelte +0 -54
  772. package/dist/thumbnail/_layout-footer.svelte.d.ts +0 -9
  773. package/dist/thumbnail/_layout-header.svelte +0 -76
  774. package/dist/thumbnail/_layout-header.svelte.d.ts +0 -9
  775. package/dist/thumbnail/_layout-sidebar.svelte +0 -75
  776. package/dist/thumbnail/_layout-sidebar.svelte.d.ts +0 -9
  777. package/dist/thumbnail/accordion.svelte +0 -144
  778. package/dist/thumbnail/accordion.svelte.d.ts +0 -7
  779. package/dist/thumbnail/add-on-selector.svelte +0 -213
  780. package/dist/thumbnail/add-on-selector.svelte.d.ts +0 -7
  781. package/dist/thumbnail/affix-group.svelte +0 -55
  782. package/dist/thumbnail/affix-group.svelte.d.ts +0 -7
  783. package/dist/thumbnail/alert-dialog.svelte +0 -100
  784. package/dist/thumbnail/alert-dialog.svelte.d.ts +0 -7
  785. package/dist/thumbnail/alert.svelte +0 -79
  786. package/dist/thumbnail/alert.svelte.d.ts +0 -7
  787. package/dist/thumbnail/alpha-slider.svelte +0 -55
  788. package/dist/thumbnail/alpha-slider.svelte.d.ts +0 -7
  789. package/dist/thumbnail/amenity-grid.svelte +0 -236
  790. package/dist/thumbnail/amenity-grid.svelte.d.ts +0 -7
  791. package/dist/thumbnail/app-frame.svelte.d.ts +0 -7
  792. package/dist/thumbnail/apply-size.d.ts +0 -3
  793. package/dist/thumbnail/apply-size.js +0 -14
  794. package/dist/thumbnail/aspect-ratio.svelte +0 -64
  795. package/dist/thumbnail/aspect-ratio.svelte.d.ts +0 -7
  796. package/dist/thumbnail/aurora.svelte +0 -88
  797. package/dist/thumbnail/aurora.svelte.d.ts +0 -7
  798. package/dist/thumbnail/avatar-group.svelte.d.ts +0 -7
  799. package/dist/thumbnail/avatar.svelte +0 -60
  800. package/dist/thumbnail/avatar.svelte.d.ts +0 -7
  801. package/dist/thumbnail/backdrop.svelte +0 -73
  802. package/dist/thumbnail/backdrop.svelte.d.ts +0 -7
  803. package/dist/thumbnail/badge.svelte +0 -100
  804. package/dist/thumbnail/badge.svelte.d.ts +0 -7
  805. package/dist/thumbnail/booking-confirmation.svelte +0 -109
  806. package/dist/thumbnail/booking-confirmation.svelte.d.ts +0 -7
  807. package/dist/thumbnail/breadcrumb.svelte +0 -80
  808. package/dist/thumbnail/breadcrumb.svelte.d.ts +0 -7
  809. package/dist/thumbnail/button-group.svelte +0 -76
  810. package/dist/thumbnail/button-group.svelte.d.ts +0 -7
  811. package/dist/thumbnail/button.svelte +0 -62
  812. package/dist/thumbnail/button.svelte.d.ts +0 -7
  813. package/dist/thumbnail/calendar.svelte +0 -86
  814. package/dist/thumbnail/calendar.svelte.d.ts +0 -7
  815. package/dist/thumbnail/card.svelte +0 -113
  816. package/dist/thumbnail/card.svelte.d.ts +0 -7
  817. package/dist/thumbnail/carousel.svelte +0 -111
  818. package/dist/thumbnail/carousel.svelte.d.ts +0 -7
  819. package/dist/thumbnail/chart.svelte +0 -93
  820. package/dist/thumbnail/chart.svelte.d.ts +0 -7
  821. package/dist/thumbnail/chat-message.svelte.d.ts +0 -7
  822. package/dist/thumbnail/chat-thread.svelte +0 -140
  823. package/dist/thumbnail/chat-thread.svelte.d.ts +0 -7
  824. package/dist/thumbnail/checkbox.svelte +0 -71
  825. package/dist/thumbnail/checkbox.svelte.d.ts +0 -7
  826. package/dist/thumbnail/chip-group.svelte +0 -79
  827. package/dist/thumbnail/chip-group.svelte.d.ts +0 -7
  828. package/dist/thumbnail/chip.svelte +0 -76
  829. package/dist/thumbnail/chip.svelte.d.ts +0 -7
  830. package/dist/thumbnail/chromatic-shift.svelte +0 -55
  831. package/dist/thumbnail/chromatic-shift.svelte.d.ts +0 -7
  832. package/dist/thumbnail/clipboard.svelte +0 -68
  833. package/dist/thumbnail/clipboard.svelte.d.ts +0 -7
  834. package/dist/thumbnail/code-block.svelte +0 -125
  835. package/dist/thumbnail/code-block.svelte.d.ts +0 -7
  836. package/dist/thumbnail/collapsible.svelte +0 -101
  837. package/dist/thumbnail/collapsible.svelte.d.ts +0 -7
  838. package/dist/thumbnail/color-picker.svelte +0 -108
  839. package/dist/thumbnail/color-picker.svelte.d.ts +0 -7
  840. package/dist/thumbnail/combobox.svelte +0 -122
  841. package/dist/thumbnail/combobox.svelte.d.ts +0 -7
  842. package/dist/thumbnail/command-palette.svelte +0 -134
  843. package/dist/thumbnail/command-palette.svelte.d.ts +0 -7
  844. package/dist/thumbnail/commerce-header.svelte +0 -55
  845. package/dist/thumbnail/commerce-header.svelte.d.ts +0 -7
  846. package/dist/thumbnail/comparison-table.svelte +0 -193
  847. package/dist/thumbnail/comparison-table.svelte.d.ts +0 -7
  848. package/dist/thumbnail/container.svelte +0 -119
  849. package/dist/thumbnail/container.svelte.d.ts +0 -7
  850. package/dist/thumbnail/context-menu.svelte +0 -108
  851. package/dist/thumbnail/context-menu.svelte.d.ts +0 -7
  852. package/dist/thumbnail/country-select.svelte +0 -111
  853. package/dist/thumbnail/country-select.svelte.d.ts +0 -7
  854. package/dist/thumbnail/currency-selector.svelte +0 -111
  855. package/dist/thumbnail/currency-selector.svelte.d.ts +0 -7
  856. package/dist/thumbnail/data-grid.svelte +0 -230
  857. package/dist/thumbnail/data-grid.svelte.d.ts +0 -7
  858. package/dist/thumbnail/date-field.svelte +0 -132
  859. package/dist/thumbnail/date-field.svelte.d.ts +0 -7
  860. package/dist/thumbnail/date-picker.svelte +0 -126
  861. package/dist/thumbnail/date-picker.svelte.d.ts +0 -7
  862. package/dist/thumbnail/date-range-picker.svelte +0 -100
  863. package/dist/thumbnail/date-range-picker.svelte.d.ts +0 -7
  864. package/dist/thumbnail/date-time-input.svelte +0 -182
  865. package/dist/thumbnail/date-time-input.svelte.d.ts +0 -7
  866. package/dist/thumbnail/description-list.svelte +0 -142
  867. package/dist/thumbnail/description-list.svelte.d.ts +0 -7
  868. package/dist/thumbnail/dialog.svelte +0 -136
  869. package/dist/thumbnail/dialog.svelte.d.ts +0 -7
  870. package/dist/thumbnail/displacement.svelte +0 -55
  871. package/dist/thumbnail/displacement.svelte.d.ts +0 -7
  872. package/dist/thumbnail/drag-and-drop.svelte +0 -139
  873. package/dist/thumbnail/drag-and-drop.svelte.d.ts +0 -7
  874. package/dist/thumbnail/drawer.svelte +0 -112
  875. package/dist/thumbnail/drawer.svelte.d.ts +0 -7
  876. package/dist/thumbnail/drop-zone.svelte +0 -55
  877. package/dist/thumbnail/drop-zone.svelte.d.ts +0 -7
  878. package/dist/thumbnail/dropdown-menu.svelte +0 -128
  879. package/dist/thumbnail/dropdown-menu.svelte.d.ts +0 -7
  880. package/dist/thumbnail/empty-state.svelte.d.ts +0 -7
  881. package/dist/thumbnail/fare-class-picker.svelte +0 -225
  882. package/dist/thumbnail/fare-class-picker.svelte.d.ts +0 -7
  883. package/dist/thumbnail/feature-split-section.svelte.d.ts +0 -7
  884. package/dist/thumbnail/field.svelte +0 -82
  885. package/dist/thumbnail/field.svelte.d.ts +0 -7
  886. package/dist/thumbnail/fieldset.svelte +0 -123
  887. package/dist/thumbnail/fieldset.svelte.d.ts +0 -7
  888. package/dist/thumbnail/file-select.svelte +0 -90
  889. package/dist/thumbnail/file-select.svelte.d.ts +0 -7
  890. package/dist/thumbnail/file-upload.svelte +0 -84
  891. package/dist/thumbnail/file-upload.svelte.d.ts +0 -7
  892. package/dist/thumbnail/filter-sidebar.svelte +0 -201
  893. package/dist/thumbnail/filter-sidebar.svelte.d.ts +0 -7
  894. package/dist/thumbnail/flexible-dates-grid.svelte +0 -210
  895. package/dist/thumbnail/flexible-dates-grid.svelte.d.ts +0 -7
  896. package/dist/thumbnail/flight-timeline.svelte +0 -155
  897. package/dist/thumbnail/flight-timeline.svelte.d.ts +0 -7
  898. package/dist/thumbnail/flip-card.svelte +0 -128
  899. package/dist/thumbnail/flip-card.svelte.d.ts +0 -7
  900. package/dist/thumbnail/float-button.svelte +0 -63
  901. package/dist/thumbnail/float-button.svelte.d.ts +0 -7
  902. package/dist/thumbnail/focus-trap.svelte +0 -110
  903. package/dist/thumbnail/focus-trap.svelte.d.ts +0 -7
  904. package/dist/thumbnail/format-bytes.svelte +0 -51
  905. package/dist/thumbnail/format-bytes.svelte.d.ts +0 -7
  906. package/dist/thumbnail/format-date.svelte +0 -51
  907. package/dist/thumbnail/format-date.svelte.d.ts +0 -7
  908. package/dist/thumbnail/format-number.svelte +0 -51
  909. package/dist/thumbnail/format-number.svelte.d.ts +0 -7
  910. package/dist/thumbnail/gauge.svelte +0 -90
  911. package/dist/thumbnail/gauge.svelte.d.ts +0 -7
  912. package/dist/thumbnail/glass-surface.svelte.d.ts +0 -7
  913. package/dist/thumbnail/glow.svelte +0 -55
  914. package/dist/thumbnail/glow.svelte.d.ts +0 -7
  915. package/dist/thumbnail/gradient-mesh.svelte +0 -55
  916. package/dist/thumbnail/gradient-mesh.svelte.d.ts +0 -7
  917. package/dist/thumbnail/guest-room-selector.svelte +0 -214
  918. package/dist/thumbnail/guest-room-selector.svelte.d.ts +0 -7
  919. package/dist/thumbnail/halftone.svelte +0 -55
  920. package/dist/thumbnail/halftone.svelte.d.ts +0 -7
  921. package/dist/thumbnail/heading.svelte +0 -91
  922. package/dist/thumbnail/heading.svelte.d.ts +0 -7
  923. package/dist/thumbnail/hotel-gallery.svelte +0 -117
  924. package/dist/thumbnail/hotel-gallery.svelte.d.ts +0 -7
  925. package/dist/thumbnail/hotkey.svelte +0 -108
  926. package/dist/thumbnail/hotkey.svelte.d.ts +0 -7
  927. package/dist/thumbnail/hover-card.svelte +0 -117
  928. package/dist/thumbnail/hover-card.svelte.d.ts +0 -7
  929. package/dist/thumbnail/icon.svelte +0 -55
  930. package/dist/thumbnail/icon.svelte.d.ts +0 -7
  931. package/dist/thumbnail/image-comparison.svelte +0 -96
  932. package/dist/thumbnail/image-comparison.svelte.d.ts +0 -7
  933. package/dist/thumbnail/image.svelte +0 -74
  934. package/dist/thumbnail/image.svelte.d.ts +0 -7
  935. package/dist/thumbnail/index.d.ts +0 -12
  936. package/dist/thumbnail/index.js +0 -359
  937. package/dist/thumbnail/infinite-scroll.svelte +0 -129
  938. package/dist/thumbnail/infinite-scroll.svelte.d.ts +0 -7
  939. package/dist/thumbnail/input-group.svelte +0 -55
  940. package/dist/thumbnail/input-group.svelte.d.ts +0 -7
  941. package/dist/thumbnail/input.svelte +0 -74
  942. package/dist/thumbnail/input.svelte.d.ts +0 -7
  943. package/dist/thumbnail/itinerary-timeline.svelte +0 -143
  944. package/dist/thumbnail/itinerary-timeline.svelte.d.ts +0 -7
  945. package/dist/thumbnail/kbd.svelte +0 -112
  946. package/dist/thumbnail/kbd.svelte.d.ts +0 -7
  947. package/dist/thumbnail/label.svelte +0 -54
  948. package/dist/thumbnail/label.svelte.d.ts +0 -7
  949. package/dist/thumbnail/layout-header-content-footer.svelte +0 -64
  950. package/dist/thumbnail/layout-header-content-footer.svelte.d.ts +0 -7
  951. package/dist/thumbnail/layout-header-sidebar-main.svelte +0 -64
  952. package/dist/thumbnail/layout-header-sidebar-main.svelte.d.ts +0 -7
  953. package/dist/thumbnail/layout-sidebar-main.svelte +0 -57
  954. package/dist/thumbnail/layout-sidebar-main.svelte.d.ts +0 -7
  955. package/dist/thumbnail/link-preview.svelte +0 -141
  956. package/dist/thumbnail/link-preview.svelte.d.ts +0 -7
  957. package/dist/thumbnail/link.svelte +0 -70
  958. package/dist/thumbnail/link.svelte.d.ts +0 -7
  959. package/dist/thumbnail/list.svelte +0 -86
  960. package/dist/thumbnail/list.svelte.d.ts +0 -7
  961. package/dist/thumbnail/listbox.svelte +0 -102
  962. package/dist/thumbnail/listbox.svelte.d.ts +0 -7
  963. package/dist/thumbnail/location-autocomplete.svelte +0 -219
  964. package/dist/thumbnail/location-autocomplete.svelte.d.ts +0 -7
  965. package/dist/thumbnail/logo-cloud.svelte.d.ts +0 -7
  966. package/dist/thumbnail/loyalty-points-display.svelte +0 -147
  967. package/dist/thumbnail/loyalty-points-display.svelte.d.ts +0 -7
  968. package/dist/thumbnail/map-list-toggle.svelte +0 -140
  969. package/dist/thumbnail/map-list-toggle.svelte.d.ts +0 -7
  970. package/dist/thumbnail/map.svelte +0 -112
  971. package/dist/thumbnail/map.svelte.d.ts +0 -7
  972. package/dist/thumbnail/markdown-renderer.svelte +0 -113
  973. package/dist/thumbnail/markdown-renderer.svelte.d.ts +0 -7
  974. package/dist/thumbnail/marquee.svelte +0 -114
  975. package/dist/thumbnail/marquee.svelte.d.ts +0 -7
  976. package/dist/thumbnail/mask-reveal.svelte +0 -55
  977. package/dist/thumbnail/mask-reveal.svelte.d.ts +0 -7
  978. package/dist/thumbnail/mega-menu.svelte +0 -176
  979. package/dist/thumbnail/mega-menu.svelte.d.ts +0 -7
  980. package/dist/thumbnail/menubar.svelte +0 -99
  981. package/dist/thumbnail/menubar.svelte.d.ts +0 -7
  982. package/dist/thumbnail/multi-city-search-form.svelte +0 -241
  983. package/dist/thumbnail/multi-city-search-form.svelte.d.ts +0 -7
  984. package/dist/thumbnail/multi-select-combobox.svelte +0 -142
  985. package/dist/thumbnail/multi-select-combobox.svelte.d.ts +0 -7
  986. package/dist/thumbnail/navigation-menu.svelte +0 -102
  987. package/dist/thumbnail/navigation-menu.svelte.d.ts +0 -7
  988. package/dist/thumbnail/noise.svelte +0 -72
  989. package/dist/thumbnail/noise.svelte.d.ts +0 -7
  990. package/dist/thumbnail/notification-center.svelte +0 -152
  991. package/dist/thumbnail/notification-center.svelte.d.ts +0 -7
  992. package/dist/thumbnail/number-input.svelte +0 -113
  993. package/dist/thumbnail/number-input.svelte.d.ts +0 -7
  994. package/dist/thumbnail/option-swatch-group.svelte +0 -55
  995. package/dist/thumbnail/option-swatch-group.svelte.d.ts +0 -7
  996. package/dist/thumbnail/page-header.svelte.d.ts +0 -7
  997. package/dist/thumbnail/pagination.svelte +0 -121
  998. package/dist/thumbnail/pagination.svelte.d.ts +0 -7
  999. package/dist/thumbnail/passenger-class-selector.svelte +0 -142
  1000. package/dist/thumbnail/passenger-class-selector.svelte.d.ts +0 -7
  1001. package/dist/thumbnail/payment-card-input.svelte +0 -172
  1002. package/dist/thumbnail/payment-card-input.svelte.d.ts +0 -7
  1003. package/dist/thumbnail/phone-input.svelte +0 -103
  1004. package/dist/thumbnail/phone-input.svelte.d.ts +0 -7
  1005. package/dist/thumbnail/pin-input.svelte +0 -72
  1006. package/dist/thumbnail/pin-input.svelte.d.ts +0 -7
  1007. package/dist/thumbnail/popover.svelte +0 -122
  1008. package/dist/thumbnail/popover.svelte.d.ts +0 -7
  1009. package/dist/thumbnail/portal.svelte +0 -115
  1010. package/dist/thumbnail/portal.svelte.d.ts +0 -7
  1011. package/dist/thumbnail/price-calendar.svelte +0 -366
  1012. package/dist/thumbnail/price-calendar.svelte.d.ts +0 -7
  1013. package/dist/thumbnail/price-summary-panel.svelte +0 -165
  1014. package/dist/thumbnail/price-summary-panel.svelte.d.ts +0 -7
  1015. package/dist/thumbnail/progress-ring.svelte +0 -63
  1016. package/dist/thumbnail/progress-ring.svelte.d.ts +0 -7
  1017. package/dist/thumbnail/progress.svelte +0 -66
  1018. package/dist/thumbnail/progress.svelte.d.ts +0 -7
  1019. package/dist/thumbnail/promo-code-input.svelte +0 -111
  1020. package/dist/thumbnail/promo-code-input.svelte.d.ts +0 -7
  1021. package/dist/thumbnail/promo-mosaic.svelte +0 -55
  1022. package/dist/thumbnail/promo-mosaic.svelte.d.ts +0 -7
  1023. package/dist/thumbnail/prompt-input.svelte +0 -91
  1024. package/dist/thumbnail/prompt-input.svelte.d.ts +0 -7
  1025. package/dist/thumbnail/qr-code.svelte +0 -217
  1026. package/dist/thumbnail/qr-code.svelte.d.ts +0 -7
  1027. package/dist/thumbnail/radio-group.svelte +0 -97
  1028. package/dist/thumbnail/radio-group.svelte.d.ts +0 -7
  1029. package/dist/thumbnail/range-calendar.svelte +0 -92
  1030. package/dist/thumbnail/range-calendar.svelte.d.ts +0 -7
  1031. package/dist/thumbnail/rating.svelte +0 -61
  1032. package/dist/thumbnail/rating.svelte.d.ts +0 -7
  1033. package/dist/thumbnail/recent-searches.svelte +0 -197
  1034. package/dist/thumbnail/recent-searches.svelte.d.ts +0 -7
  1035. package/dist/thumbnail/relative-time.svelte +0 -51
  1036. package/dist/thumbnail/relative-time.svelte.d.ts +0 -7
  1037. package/dist/thumbnail/result-card-car.svelte +0 -149
  1038. package/dist/thumbnail/result-card-car.svelte.d.ts +0 -7
  1039. package/dist/thumbnail/result-card-flight.svelte +0 -170
  1040. package/dist/thumbnail/result-card-flight.svelte.d.ts +0 -7
  1041. package/dist/thumbnail/result-card-hotel.svelte +0 -174
  1042. package/dist/thumbnail/result-card-hotel.svelte.d.ts +0 -7
  1043. package/dist/thumbnail/reveal.svelte +0 -109
  1044. package/dist/thumbnail/reveal.svelte.d.ts +0 -7
  1045. package/dist/thumbnail/review-card.svelte +0 -153
  1046. package/dist/thumbnail/review-card.svelte.d.ts +0 -7
  1047. package/dist/thumbnail/rich-text-editor.svelte +0 -134
  1048. package/dist/thumbnail/rich-text-editor.svelte.d.ts +0 -7
  1049. package/dist/thumbnail/room-type-picker.svelte +0 -212
  1050. package/dist/thumbnail/room-type-picker.svelte.d.ts +0 -7
  1051. package/dist/thumbnail/root.svelte +0 -52
  1052. package/dist/thumbnail/root.svelte.d.ts +0 -10
  1053. package/dist/thumbnail/route-map.svelte +0 -132
  1054. package/dist/thumbnail/route-map.svelte.d.ts +0 -7
  1055. package/dist/thumbnail/scroll-area.svelte +0 -124
  1056. package/dist/thumbnail/scroll-area.svelte.d.ts +0 -7
  1057. package/dist/thumbnail/scroll-to-top.svelte +0 -60
  1058. package/dist/thumbnail/scroll-to-top.svelte.d.ts +0 -7
  1059. package/dist/thumbnail/search-form-tabs.svelte +0 -192
  1060. package/dist/thumbnail/search-form-tabs.svelte.d.ts +0 -7
  1061. package/dist/thumbnail/seat-map.svelte +0 -358
  1062. package/dist/thumbnail/seat-map.svelte.d.ts +0 -7
  1063. package/dist/thumbnail/segmented-control.svelte +0 -93
  1064. package/dist/thumbnail/segmented-control.svelte.d.ts +0 -7
  1065. package/dist/thumbnail/select.svelte +0 -82
  1066. package/dist/thumbnail/select.svelte.d.ts +0 -7
  1067. package/dist/thumbnail/selectable-tile-group.svelte +0 -55
  1068. package/dist/thumbnail/selectable-tile-group.svelte.d.ts +0 -7
  1069. package/dist/thumbnail/separator.svelte +0 -94
  1070. package/dist/thumbnail/separator.svelte.d.ts +0 -7
  1071. package/dist/thumbnail/shader-canvas.svelte +0 -55
  1072. package/dist/thumbnail/shader-canvas.svelte.d.ts +0 -7
  1073. package/dist/thumbnail/sidebar.svelte +0 -109
  1074. package/dist/thumbnail/sidebar.svelte.d.ts +0 -7
  1075. package/dist/thumbnail/skeleton.svelte +0 -94
  1076. package/dist/thumbnail/skeleton.svelte.d.ts +0 -7
  1077. package/dist/thumbnail/slider.svelte +0 -71
  1078. package/dist/thumbnail/slider.svelte.d.ts +0 -7
  1079. package/dist/thumbnail/sort-bar.svelte +0 -156
  1080. package/dist/thumbnail/sort-bar.svelte.d.ts +0 -7
  1081. package/dist/thumbnail/spacer.svelte +0 -95
  1082. package/dist/thumbnail/spacer.svelte.d.ts +0 -7
  1083. package/dist/thumbnail/sparkline.svelte +0 -59
  1084. package/dist/thumbnail/sparkline.svelte.d.ts +0 -7
  1085. package/dist/thumbnail/spinner.svelte +0 -63
  1086. package/dist/thumbnail/spinner.svelte.d.ts +0 -7
  1087. package/dist/thumbnail/splitter.svelte +0 -79
  1088. package/dist/thumbnail/splitter.svelte.d.ts +0 -7
  1089. package/dist/thumbnail/spotlight.svelte +0 -90
  1090. package/dist/thumbnail/spotlight.svelte.d.ts +0 -7
  1091. package/dist/thumbnail/star-rating.svelte +0 -106
  1092. package/dist/thumbnail/star-rating.svelte.d.ts +0 -7
  1093. package/dist/thumbnail/stat-card.svelte.d.ts +0 -7
  1094. package/dist/thumbnail/stepper.svelte +0 -94
  1095. package/dist/thumbnail/stepper.svelte.d.ts +0 -7
  1096. package/dist/thumbnail/svg.svelte +0 -55
  1097. package/dist/thumbnail/svg.svelte.d.ts +0 -8
  1098. package/dist/thumbnail/swatch-strip.svelte.d.ts +0 -7
  1099. package/dist/thumbnail/switch.svelte.d.ts +0 -7
  1100. package/dist/thumbnail/system-map.svelte +0 -154
  1101. package/dist/thumbnail/system-map.svelte.d.ts +0 -7
  1102. package/dist/thumbnail/table-of-contents.svelte +0 -101
  1103. package/dist/thumbnail/table-of-contents.svelte.d.ts +0 -7
  1104. package/dist/thumbnail/table.svelte +0 -214
  1105. package/dist/thumbnail/table.svelte.d.ts +0 -7
  1106. package/dist/thumbnail/tabs.svelte +0 -133
  1107. package/dist/thumbnail/tabs.svelte.d.ts +0 -7
  1108. package/dist/thumbnail/tag.svelte +0 -95
  1109. package/dist/thumbnail/tag.svelte.d.ts +0 -7
  1110. package/dist/thumbnail/tags-input.svelte +0 -142
  1111. package/dist/thumbnail/tags-input.svelte.d.ts +0 -7
  1112. package/dist/thumbnail/text.svelte +0 -72
  1113. package/dist/thumbnail/text.svelte.d.ts +0 -7
  1114. package/dist/thumbnail/textarea.svelte +0 -111
  1115. package/dist/thumbnail/textarea.svelte.d.ts +0 -7
  1116. package/dist/thumbnail/time-input.svelte +0 -94
  1117. package/dist/thumbnail/time-input.svelte.d.ts +0 -7
  1118. package/dist/thumbnail/timeline.svelte +0 -123
  1119. package/dist/thumbnail/timeline.svelte.d.ts +0 -7
  1120. package/dist/thumbnail/toast.svelte +0 -105
  1121. package/dist/thumbnail/toast.svelte.d.ts +0 -7
  1122. package/dist/thumbnail/toggle-group.svelte +0 -76
  1123. package/dist/thumbnail/toggle-group.svelte.d.ts +0 -7
  1124. package/dist/thumbnail/toggle.svelte +0 -46
  1125. package/dist/thumbnail/toggle.svelte.d.ts +0 -7
  1126. package/dist/thumbnail/token-preview.svelte.d.ts +0 -7
  1127. package/dist/thumbnail/toolbar.svelte +0 -109
  1128. package/dist/thumbnail/toolbar.svelte.d.ts +0 -7
  1129. package/dist/thumbnail/tooltip.svelte +0 -85
  1130. package/dist/thumbnail/tooltip.svelte.d.ts +0 -7
  1131. package/dist/thumbnail/tour.svelte +0 -149
  1132. package/dist/thumbnail/tour.svelte.d.ts +0 -7
  1133. package/dist/thumbnail/transfer.svelte +0 -168
  1134. package/dist/thumbnail/transfer.svelte.d.ts +0 -7
  1135. package/dist/thumbnail/tree.svelte +0 -215
  1136. package/dist/thumbnail/tree.svelte.d.ts +0 -7
  1137. package/dist/thumbnail/trip-card.svelte +0 -137
  1138. package/dist/thumbnail/trip-card.svelte.d.ts +0 -7
  1139. package/dist/thumbnail/trust-badges.svelte +0 -207
  1140. package/dist/thumbnail/trust-badges.svelte.d.ts +0 -7
  1141. package/dist/thumbnail/typing-indicator.svelte +0 -65
  1142. package/dist/thumbnail/typing-indicator.svelte.d.ts +0 -7
  1143. package/dist/thumbnail/typography.svelte +0 -80
  1144. package/dist/thumbnail/typography.svelte.d.ts +0 -7
  1145. package/dist/thumbnail/user.svelte.d.ts +0 -7
  1146. package/dist/thumbnail/video-embed.svelte +0 -87
  1147. package/dist/thumbnail/video-embed.svelte.d.ts +0 -7
  1148. package/dist/thumbnail/virtual-list.svelte +0 -178
  1149. package/dist/thumbnail/virtual-list.svelte.d.ts +0 -7
  1150. package/dist/thumbnail/visually-hidden.svelte +0 -106
  1151. package/dist/thumbnail/visually-hidden.svelte.d.ts +0 -7
  1152. package/dist/thumbnail/wave-divider.svelte.d.ts +0 -7
  1153. package/dist/toast/toast-action.svelte +0 -39
  1154. package/dist/toast/toast-action.svelte.d.ts +0 -9
  1155. package/dist/toast/toast-close.svelte +0 -63
  1156. package/dist/toast/toast-close.svelte.d.ts +0 -8
  1157. package/dist/toggle/toggle.svelte +0 -269
  1158. package/dist/toggle/toggle.svelte.d.ts +0 -12
  1159. package/dist/toggle-group/toggle-group-item.svelte +0 -133
  1160. package/dist/toggle-group/toggle-group-item.svelte.d.ts +0 -10
  1161. package/dist/tour/tour-tooltip.svelte.d.ts +0 -17
  1162. package/dist/transfer/transfer-actions.svelte.d.ts +0 -19
  1163. package/dist/transfer/transfer-list.svelte.d.ts +0 -18
  1164. package/dist/video-embed/video-embed.svelte.d.ts +0 -15
  1165. /package/dist/alpha-slider/{alpha-slider.svelte → alpha-slider-input.svelte} +0 -0
  1166. /package/dist/checkbox/{checkbox.svelte → checkbox-input.svelte} +0 -0
  1167. /package/dist/color-picker/{color-picker-alpha-slider.svelte → color-picker-input-alpha-slider.svelte} +0 -0
  1168. /package/dist/color-picker/{color-picker-hue-slider.svelte → color-picker-input-hue-slider.svelte} +0 -0
  1169. /package/dist/combobox/{combobox-root.svelte → combobox-input-root.svelte} +0 -0
  1170. /package/dist/command-palette/{command-palette-root.svelte → command-palette-dialog-root.svelte} +0 -0
  1171. /package/dist/data-grid/{data-grid-select-all.svelte → data-grid-input-select-all.svelte} +0 -0
  1172. /package/dist/data-grid/{data-grid-select-cell.svelte → data-grid-input-select-cell.svelte} +0 -0
  1173. /package/dist/date-field/{date-field-root.svelte → date-field-input-root.svelte} +0 -0
  1174. /package/dist/date-picker/{datepicker-root.svelte → datepicker-input-root.svelte} +0 -0
  1175. /package/dist/{system-map → diagram}/types.js +0 -0
  1176. /package/dist/file-upload/{file-upload-root.svelte → file-upload-input-root.svelte} +0 -0
  1177. /package/dist/multi-select-combobox/{multi-select-combobox-root.svelte → multi-select-combobox-root-input.svelte} +0 -0
  1178. /package/dist/radio-group/{radio-group-item.svelte → radio-group-item-input.svelte} +0 -0
  1179. /package/dist/slider/{slider.svelte → slider-input.svelte} +0 -0
  1180. /package/dist/transfer/{transfer-list.svelte → transfer-list-input.svelte} +0 -0
@@ -0,0 +1,974 @@
1
+ import { computeEdgePaths, emptyEdge } from './edge-routing.js';
2
+ const DEFAULT_NODE_GAP = 28;
3
+ const DEFAULT_LAYER_GAP = 56;
4
+ const DEFAULT_CLUSTER_PADDING = 32;
5
+ const DEFAULT_NODE_HEIGHT = 44;
6
+ const DESC_NODE_HEIGHT = 80;
7
+ const MIN_NODE_WIDTH = 140;
8
+ const CHAR_WIDTH = 8.5;
9
+ const NODE_PADDING_X = 48;
10
+ const MARGIN = 40;
11
+ // ── Helpers ────────────────────────────────────────────────
12
+ function estimateNodeWidth(label, description) {
13
+ const labelWidth = label.length * CHAR_WIDTH + NODE_PADDING_X;
14
+ const descWidth = description ? description.length * 6.5 + NODE_PADDING_X + 16 : 0;
15
+ return Math.max(MIN_NODE_WIDTH, labelWidth, descWidth);
16
+ }
17
+ function isHorizontal(dir) {
18
+ return dir === 'LR' || dir === 'RL';
19
+ }
20
+ function isReversed(dir) {
21
+ return dir === 'BT' || dir === 'RL';
22
+ }
23
+ function buildGraph(nodeIds, edges) {
24
+ const adjacencyOut = new Map();
25
+ const adjacencyIn = new Map();
26
+ const inDegree = new Map();
27
+ for (const id of nodeIds) {
28
+ adjacencyOut.set(id, []);
29
+ adjacencyIn.set(id, []);
30
+ inDegree.set(id, 0);
31
+ }
32
+ for (const e of edges) {
33
+ if (!adjacencyOut.has(e.from) || !adjacencyOut.has(e.to))
34
+ continue;
35
+ adjacencyOut.get(e.from).push(e.to);
36
+ adjacencyIn.get(e.to).push(e.from);
37
+ inDegree.set(e.to, (inDegree.get(e.to) || 0) + 1);
38
+ }
39
+ // Kahn's algorithm
40
+ const queue = [];
41
+ for (const id of nodeIds) {
42
+ if (inDegree.get(id) === 0)
43
+ queue.push(id);
44
+ }
45
+ const order = [];
46
+ const visited = new Set();
47
+ while (queue.length > 0) {
48
+ const node = queue.shift();
49
+ if (visited.has(node))
50
+ continue;
51
+ visited.add(node);
52
+ order.push(node);
53
+ for (const succ of adjacencyOut.get(node)) {
54
+ const deg = inDegree.get(succ) - 1;
55
+ inDegree.set(succ, deg);
56
+ if (deg === 0)
57
+ queue.push(succ);
58
+ }
59
+ }
60
+ // Handle cycles: any unvisited nodes have cycles
61
+ const reversedEdges = new Set();
62
+ if (visited.size < nodeIds.length) {
63
+ for (const id of nodeIds) {
64
+ if (!visited.has(id)) {
65
+ // Break cycle by removing an incoming edge
66
+ const incoming = adjacencyIn.get(id);
67
+ for (const src of incoming) {
68
+ if (!visited.has(src)) {
69
+ reversedEdges.add(`${src}->${id}`);
70
+ const outList = adjacencyOut.get(src);
71
+ const idx = outList.indexOf(id);
72
+ if (idx >= 0)
73
+ outList.splice(idx, 1);
74
+ inDegree.set(id, (inDegree.get(id) || 1) - 1);
75
+ }
76
+ }
77
+ if (!visited.has(id)) {
78
+ visited.add(id);
79
+ order.push(id);
80
+ }
81
+ }
82
+ }
83
+ }
84
+ return { adjacencyOut, adjacencyIn, order, reversedEdges };
85
+ }
86
+ // ── Layer Assignment (longest-path) ────────────────────────
87
+ function assignLayers(order, adjacencyOut) {
88
+ const layer = new Map();
89
+ for (const id of order)
90
+ layer.set(id, 0);
91
+ for (const id of order) {
92
+ const currentLayer = layer.get(id);
93
+ for (const succ of adjacencyOut.get(id)) {
94
+ layer.set(succ, Math.max(layer.get(succ), currentLayer + 1));
95
+ }
96
+ }
97
+ return layer;
98
+ }
99
+ // ── Within-Layer Ordering (barycenter, 2 sweeps, cluster-aware) ───────────
100
+ function orderWithinLayers(layers, adjacencyOut, adjacencyIn, clusterMap) {
101
+ const posInLayer = new Map();
102
+ // Initialize positions
103
+ for (const layer of layers) {
104
+ layer.forEach((id, i) => posInLayer.set(id, i));
105
+ }
106
+ function resortLayer(layer, neighbors) {
107
+ const sorted = layer.map((nodeId) => {
108
+ const adj = neighbors.get(nodeId) ?? [];
109
+ const positions = adj
110
+ .map((p) => posInLayer.get(p))
111
+ .filter((p) => p !== undefined);
112
+ const barycenter = positions.length > 0
113
+ ? positions.reduce((a, b) => a + b, 0) / positions.length
114
+ : (posInLayer.get(nodeId) ?? 0);
115
+ return { id: nodeId, bary: barycenter };
116
+ });
117
+ sorted.sort((a, b) => a.bary - b.bary);
118
+ return sorted.map((s) => s.id);
119
+ }
120
+ // Down sweep
121
+ for (let i = 1; i < layers.length; i++) {
122
+ const next = resortLayer(layers[i], adjacencyIn);
123
+ layers[i] = next;
124
+ next.forEach((id, j) => posInLayer.set(id, j));
125
+ }
126
+ // Up sweep
127
+ for (let i = layers.length - 2; i >= 0; i--) {
128
+ const next = resortLayer(layers[i], adjacencyOut);
129
+ layers[i] = next;
130
+ next.forEach((id, j) => posInLayer.set(id, j));
131
+ }
132
+ // Cluster-aware grouping: after barycenter ordering, group cluster members together
133
+ // and push non-clustered nodes to the edges
134
+ if (clusterMap && clusterMap.size > 0) {
135
+ for (let i = 0; i < layers.length; i++) {
136
+ const regrouped = groupByCluster(layers[i], clusterMap, adjacencyIn, adjacencyOut, posInLayer);
137
+ layers[i] = regrouped;
138
+ regrouped.forEach((id, j) => posInLayer.set(id, j));
139
+ }
140
+ }
141
+ return layers;
142
+ }
143
+ /** Group nodes in a layer so cluster members are adjacent, non-clustered nodes at edges */
144
+ function groupByCluster(layer, clusterMap, adjacencyIn, adjacencyOut, posInLayer) {
145
+ if (layer.length <= 1)
146
+ return layer;
147
+ // Separate into cluster groups and non-clustered nodes
148
+ const clusterGroups = new Map();
149
+ const nonClustered = [];
150
+ for (const nodeId of layer) {
151
+ const clusterId = clusterMap.get(nodeId);
152
+ if (clusterId) {
153
+ if (!clusterGroups.has(clusterId))
154
+ clusterGroups.set(clusterId, []);
155
+ clusterGroups.get(clusterId).push(nodeId);
156
+ }
157
+ else {
158
+ nonClustered.push(nodeId);
159
+ }
160
+ }
161
+ // If no clusters in this layer, nothing to reorder
162
+ if (clusterGroups.size === 0)
163
+ return layer;
164
+ // If no non-clustered nodes, just keep cluster groups in barycenter order
165
+ if (nonClustered.length === 0) {
166
+ // Order cluster groups by average barycenter position of their members
167
+ const groups = [...clusterGroups.entries()].map(([cid, nodes]) => {
168
+ const avgPos = nodes.reduce((s, n) => s + (posInLayer.get(n) ?? 0), 0) / nodes.length;
169
+ return { cid, nodes, avgPos };
170
+ });
171
+ groups.sort((a, b) => a.avgPos - b.avgPos);
172
+ return groups.flatMap((g) => g.nodes);
173
+ }
174
+ // Compute average barycenter position for each cluster group
175
+ const groupEntries = [...clusterGroups.entries()].map(([cid, nodes]) => {
176
+ const avgPos = nodes.reduce((s, n) => s + (posInLayer.get(n) ?? 0), 0) / nodes.length;
177
+ return { cid, nodes, avgPos };
178
+ });
179
+ groupEntries.sort((a, b) => a.avgPos - b.avgPos);
180
+ // Compute average connected position for non-clustered nodes to decide
181
+ // whether they go before or after the cluster groups
182
+ const allClusterPositions = groupEntries.flatMap((g) => g.nodes.map((n) => posInLayer.get(n) ?? 0));
183
+ const clusterCenter = allClusterPositions.reduce((a, b) => a + b, 0) / allClusterPositions.length;
184
+ // Split non-clustered into before/after based on their barycenter relative to cluster center
185
+ const before = [];
186
+ const after = [];
187
+ for (const nodeId of nonClustered) {
188
+ const pos = posInLayer.get(nodeId) ?? 0;
189
+ if (pos <= clusterCenter) {
190
+ before.push(nodeId);
191
+ }
192
+ else {
193
+ after.push(nodeId);
194
+ }
195
+ }
196
+ // If all ended up on one side, that's fine — just keep them there
197
+ // If none on either side, push all to the end
198
+ if (before.length === 0 && after.length === 0) {
199
+ after.push(...nonClustered);
200
+ }
201
+ return [...before, ...groupEntries.flatMap((g) => g.nodes), ...after];
202
+ }
203
+ // ── Coordinate Assignment ──────────────────────────────────
204
+ const CLUSTER_GROUP_GAP = 40;
205
+ function assignCoordinates(layers, nodeDims, direction, nodeGap, layerGap, clusterMap) {
206
+ const positions = new Map();
207
+ const horizontal = isHorizontal(direction);
208
+ const reversed = isReversed(direction);
209
+ // Compute layer extents (max node size in layer direction)
210
+ const layerSizes = [];
211
+ for (const layer of layers) {
212
+ let maxSize = 0;
213
+ for (const id of layer) {
214
+ const dims = nodeDims.get(id);
215
+ maxSize = Math.max(maxSize, horizontal ? dims.w : dims.h);
216
+ }
217
+ layerSizes.push(maxSize);
218
+ }
219
+ // Find max cross-axis extent per layer for centering (including cluster group gaps)
220
+ const layerCrossExtents = [];
221
+ for (const layer of layers) {
222
+ let total = 0;
223
+ for (const id of layer) {
224
+ const dims = nodeDims.get(id);
225
+ total += horizontal ? dims.h : dims.w;
226
+ }
227
+ total += (layer.length - 1) * nodeGap;
228
+ // Add extra gap at cluster/non-cluster boundaries
229
+ if (clusterMap && clusterMap.size > 0) {
230
+ total += countClusterBoundaries(layer, clusterMap) * CLUSTER_GROUP_GAP;
231
+ }
232
+ layerCrossExtents.push(total);
233
+ }
234
+ const maxCrossExtent = Math.max(...layerCrossExtents);
235
+ // Assign positions
236
+ let layerOffset = MARGIN;
237
+ const layerOrder = reversed ? [...layers].reverse() : layers;
238
+ const sizeOrder = reversed ? [...layerSizes].reverse() : layerSizes;
239
+ for (let li = 0; li < layerOrder.length; li++) {
240
+ const layer = layerOrder[li];
241
+ const layerSize = sizeOrder[li];
242
+ // Center this layer's nodes
243
+ const crossExtent = layerCrossExtents[reversed ? layerOrder.length - 1 - li : li] ?? 0;
244
+ let crossOffset = MARGIN + (maxCrossExtent - crossExtent) / 2;
245
+ for (let ni = 0; ni < layer.length; ni++) {
246
+ const id = layer[ni];
247
+ const dims = nodeDims.get(id);
248
+ const primaryOffset = reversed ? (horizontal ? layerSize - dims.w : layerSize - dims.h) : 0;
249
+ // Add extra gap at cluster/non-cluster boundary
250
+ if (ni > 0 && clusterMap && clusterMap.size > 0) {
251
+ const prevCluster = clusterMap.get(layer[ni - 1]);
252
+ const currCluster = clusterMap.get(id);
253
+ if (prevCluster !== currCluster &&
254
+ (prevCluster !== undefined || currCluster !== undefined)) {
255
+ crossOffset += CLUSTER_GROUP_GAP;
256
+ }
257
+ }
258
+ if (horizontal) {
259
+ positions.set(id, {
260
+ x: layerOffset + primaryOffset,
261
+ y: crossOffset
262
+ });
263
+ crossOffset += dims.h + nodeGap;
264
+ }
265
+ else {
266
+ positions.set(id, {
267
+ x: crossOffset,
268
+ y: layerOffset + primaryOffset
269
+ });
270
+ crossOffset += dims.w + nodeGap;
271
+ }
272
+ }
273
+ layerOffset += layerSize + layerGap;
274
+ }
275
+ return positions;
276
+ }
277
+ /** Count how many cluster/non-cluster boundaries exist in a layer ordering */
278
+ function countClusterBoundaries(layer, clusterMap) {
279
+ let count = 0;
280
+ for (let i = 1; i < layer.length; i++) {
281
+ const prevCluster = clusterMap.get(layer[i - 1]);
282
+ const currCluster = clusterMap.get(layer[i]);
283
+ if (prevCluster !== currCluster && (prevCluster !== undefined || currCluster !== undefined)) {
284
+ count++;
285
+ }
286
+ }
287
+ return count;
288
+ }
289
+ // ── Cluster Bounds ─────────────────────────────────────────
290
+ function computeClusterBounds(config, positions, nodeDims, padding) {
291
+ if (!config.clusters)
292
+ return [];
293
+ return config.clusters.map((cluster) => {
294
+ let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
295
+ for (const nodeId of cluster.nodes) {
296
+ const pos = positions.get(nodeId);
297
+ const dims = nodeDims.get(nodeId);
298
+ if (!pos || !dims)
299
+ continue;
300
+ minX = Math.min(minX, pos.x);
301
+ minY = Math.min(minY, pos.y);
302
+ maxX = Math.max(maxX, pos.x + dims.w);
303
+ maxY = Math.max(maxY, pos.y + dims.h);
304
+ }
305
+ if (minX === Infinity) {
306
+ return {
307
+ id: cluster.id,
308
+ x: 0,
309
+ y: 0,
310
+ width: 0,
311
+ height: 0,
312
+ label: cluster.label,
313
+ color: cluster.color || 'neutral',
314
+ dashed: cluster.dashed ?? true
315
+ };
316
+ }
317
+ // Add space for label above
318
+ const labelPad = cluster.label ? 24 : 0;
319
+ return {
320
+ id: cluster.id,
321
+ x: minX - padding,
322
+ y: minY - padding - labelPad,
323
+ width: maxX - minX + padding * 2,
324
+ height: maxY - minY + padding * 2 + labelPad,
325
+ label: cluster.label,
326
+ color: cluster.color || 'neutral',
327
+ dashed: cluster.dashed ?? true
328
+ };
329
+ });
330
+ }
331
+ // ── Annotations ────────────────────────────────────────────
332
+ const ANNOTATION_CHAR_WIDTH = 6;
333
+ const ANNOTATION_HEIGHT = 14;
334
+ const ANNOTATION_COLLISION_PAD = 20;
335
+ function resolveAnnotations(config, positions, nodeDims) {
336
+ if (!config.annotations)
337
+ return [];
338
+ const resolved = config.annotations.map((ann) => {
339
+ let x, y;
340
+ if (typeof ann.anchor === 'string') {
341
+ const pos = positions.get(ann.anchor);
342
+ const dims = nodeDims.get(ann.anchor);
343
+ if (pos && dims) {
344
+ x = pos.x + dims.w / 2;
345
+ y = pos.y - 12;
346
+ }
347
+ else {
348
+ x = 0;
349
+ y = 0;
350
+ }
351
+ }
352
+ else {
353
+ x = ann.anchor.x;
354
+ y = ann.anchor.y;
355
+ }
356
+ return {
357
+ text: ann.text,
358
+ x: x + (ann.offset?.dx ?? 0),
359
+ y: y + (ann.offset?.dy ?? 0),
360
+ color: ann.color || 'neutral'
361
+ };
362
+ });
363
+ // Collision avoidance: check annotations against nodes and other annotations
364
+ for (let i = 0; i < resolved.length; i++) {
365
+ const ann = resolved[i];
366
+ const annW = ann.text.length * ANNOTATION_CHAR_WIDTH;
367
+ const annH = ANNOTATION_HEIGHT;
368
+ // Check against all nodes — shift upward if overlapping
369
+ let shifted = true;
370
+ let maxIter = 10; // prevent infinite loop
371
+ while (shifted && maxIter-- > 0) {
372
+ shifted = false;
373
+ for (const [nodeId, pos] of positions) {
374
+ const dims = nodeDims.get(nodeId);
375
+ if (!dims)
376
+ continue;
377
+ // Check overlap with padding
378
+ if (ann.x + annW > pos.x - ANNOTATION_COLLISION_PAD &&
379
+ ann.x < pos.x + dims.w + ANNOTATION_COLLISION_PAD &&
380
+ ann.y + annH > pos.y - ANNOTATION_COLLISION_PAD &&
381
+ ann.y < pos.y + dims.h + ANNOTATION_COLLISION_PAD) {
382
+ // Shift annotation above the node
383
+ ann.y = pos.y - ANNOTATION_COLLISION_PAD - annH;
384
+ shifted = true;
385
+ }
386
+ }
387
+ }
388
+ // Check against previously placed annotations
389
+ for (let j = 0; j < i; j++) {
390
+ const other = resolved[j];
391
+ const otherW = other.text.length * ANNOTATION_CHAR_WIDTH;
392
+ const otherH = ANNOTATION_HEIGHT;
393
+ if (ann.x + annW > other.x - ANNOTATION_COLLISION_PAD &&
394
+ ann.x < other.x + otherW + ANNOTATION_COLLISION_PAD &&
395
+ ann.y + annH > other.y - ANNOTATION_COLLISION_PAD &&
396
+ ann.y < other.y + otherH + ANNOTATION_COLLISION_PAD) {
397
+ // Shift this annotation above the other
398
+ ann.y = other.y - ANNOTATION_COLLISION_PAD - annH;
399
+ }
400
+ }
401
+ }
402
+ return resolved;
403
+ }
404
+ // ── Layered Layout (main entry) ────────────────────────────
405
+ function layoutLayered(config) {
406
+ const direction = config.direction || 'TB';
407
+ const nodeGap = config.spacing?.nodeGap ?? DEFAULT_NODE_GAP;
408
+ const layerGap = config.spacing?.layerGap ?? DEFAULT_LAYER_GAP;
409
+ const clusterPadding = config.spacing?.clusterPadding ?? DEFAULT_CLUSTER_PADDING;
410
+ const nodeIds = config.nodes.map((n) => n.id);
411
+ const nodeDims = buildNodeDims(config.nodes);
412
+ // Build cluster membership map: nodeId -> clusterId
413
+ const clusterMap = buildClusterMap(config);
414
+ // Build graph and sort
415
+ const graph = buildGraph(nodeIds, config.edges);
416
+ // Assign layers
417
+ const layerMap = assignLayers(graph.order, graph.adjacencyOut);
418
+ // Group by layer
419
+ const maxLayer = Math.max(0, ...layerMap.values());
420
+ const layers = Array.from({ length: maxLayer + 1 }, () => []);
421
+ for (const id of graph.order) {
422
+ layers[layerMap.get(id)].push(id);
423
+ }
424
+ // Order within layers (cluster-aware)
425
+ const orderedLayers = orderWithinLayers(layers, graph.adjacencyOut, graph.adjacencyIn, clusterMap);
426
+ // Assign coordinates (cluster-aware gaps)
427
+ const positions = assignCoordinates(orderedLayers, nodeDims, direction, nodeGap, layerGap, clusterMap);
428
+ // Build positioned nodes
429
+ const positionedNodes = buildPositionedNodes(config.nodes, positions, nodeDims);
430
+ // Compute clusters
431
+ const clusters = computeClusterBounds(config, positions, nodeDims, clusterPadding);
432
+ // Compute edges
433
+ const positionedEdges = computeEdgePaths(config.edges, positions, nodeDims, direction);
434
+ // Compute annotations
435
+ const annotations = resolveAnnotations(config, positions, nodeDims);
436
+ // Compute viewBox with full bounds coverage
437
+ let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
438
+ // Include all node bounds
439
+ for (const n of positionedNodes) {
440
+ minX = Math.min(minX, n.x);
441
+ minY = Math.min(minY, n.y);
442
+ maxX = Math.max(maxX, n.x + n.width);
443
+ maxY = Math.max(maxY, n.y + n.height);
444
+ }
445
+ // Include all cluster bounds
446
+ for (const c of clusters) {
447
+ minX = Math.min(minX, c.x);
448
+ minY = Math.min(minY, c.y);
449
+ maxX = Math.max(maxX, c.x + c.width);
450
+ maxY = Math.max(maxY, c.y + c.height);
451
+ }
452
+ // Include annotation positions (estimated text width)
453
+ for (const ann of annotations) {
454
+ const annW = ann.text.length * ANNOTATION_CHAR_WIDTH;
455
+ minX = Math.min(minX, ann.x);
456
+ minY = Math.min(minY, ann.y - ANNOTATION_HEIGHT);
457
+ maxX = Math.max(maxX, ann.x + annW);
458
+ maxY = Math.max(maxY, ann.y);
459
+ }
460
+ // Include edge label positions (estimated text width)
461
+ for (const e of positionedEdges) {
462
+ if (e.label) {
463
+ const labelW = e.label.length * 5;
464
+ minX = Math.min(minX, e.labelX - labelW / 2);
465
+ minY = Math.min(minY, e.labelY - 7);
466
+ maxX = Math.max(maxX, e.labelX + labelW / 2);
467
+ maxY = Math.max(maxY, e.labelY + 7);
468
+ }
469
+ }
470
+ // Handle empty diagram
471
+ if (minX === Infinity) {
472
+ minX = 0;
473
+ minY = 0;
474
+ maxX = MARGIN * 2;
475
+ maxY = MARGIN * 2;
476
+ }
477
+ // Shift everything so all coordinates are non-negative
478
+ const shiftX = minX < 0 ? -minX + MARGIN : 0;
479
+ const shiftY = minY < 0 ? -minY + MARGIN : 0;
480
+ if (shiftX > 0 || shiftY > 0) {
481
+ shiftAllPositions(positionedNodes, clusters, annotations, positionedEdges, shiftX, shiftY);
482
+ maxX += shiftX;
483
+ maxY += shiftY;
484
+ }
485
+ return {
486
+ nodes: positionedNodes,
487
+ edges: positionedEdges,
488
+ clusters,
489
+ swimlanes: [],
490
+ regions: [],
491
+ annotations,
492
+ messages: [],
493
+ lifelines: [],
494
+ positionedFragments: [],
495
+ viewBox: { width: maxX + MARGIN, height: maxY + MARGIN }
496
+ };
497
+ }
498
+ // ── Swimlane Layout ────────────────────────────────────────
499
+ function layoutSwimlane(config) {
500
+ const nodeGap = config.spacing?.nodeGap ?? 32;
501
+ const lanes = config.swimlanes || [];
502
+ const nodeDims = buildNodeDims(config.nodes);
503
+ const headerHeight = 50;
504
+ // Assign lanes
505
+ const laneMap = new Map();
506
+ for (let i = 0; i < lanes.length; i++) {
507
+ for (const nid of lanes[i].nodes) {
508
+ laneMap.set(nid, i);
509
+ }
510
+ }
511
+ // Compute dynamic lane widths: max(180, widest node in lane + 40)
512
+ const laneWidths = lanes.map((lane) => {
513
+ let maxW = 0;
514
+ for (const nid of lane.nodes) {
515
+ const dims = nodeDims.get(nid);
516
+ if (dims)
517
+ maxW = Math.max(maxW, dims.w);
518
+ }
519
+ return Math.max(180, maxW + 40);
520
+ });
521
+ // Compute lane start X offsets
522
+ const laneStartX = [];
523
+ let laneX = MARGIN;
524
+ for (let i = 0; i < laneWidths.length; i++) {
525
+ laneStartX.push(laneX);
526
+ laneX += laneWidths[i];
527
+ }
528
+ // Topological order for Y positions
529
+ const nodeIds = config.nodes.map((n) => n.id);
530
+ const graph = buildGraph(nodeIds, config.edges);
531
+ // Assign Y positions sequentially
532
+ const positions = new Map();
533
+ let currentY = MARGIN + headerHeight + 20;
534
+ for (const id of graph.order) {
535
+ const laneIdx = laneMap.get(id) ?? 0;
536
+ const dims = nodeDims.get(id);
537
+ const lw = laneWidths[laneIdx] ?? 180;
538
+ const startX = laneStartX[laneIdx] ?? MARGIN;
539
+ const x = startX + (lw - dims.w) / 2;
540
+ positions.set(id, { x, y: currentY });
541
+ currentY += dims.h + nodeGap;
542
+ }
543
+ const totalHeight = currentY + MARGIN;
544
+ const totalWidth = MARGIN + laneX;
545
+ const positionedNodes = buildPositionedNodes(config.nodes, positions, nodeDims);
546
+ // Build swimlane positioned data
547
+ const positionedSwimlanes = lanes.map((lane, i) => ({
548
+ id: lane.id,
549
+ label: lane.label,
550
+ x: laneStartX[i],
551
+ lineX: laneStartX[i] + laneWidths[i] / 2,
552
+ headerY: MARGIN,
553
+ footerY: totalHeight - MARGIN,
554
+ lineY1: MARGIN + headerHeight,
555
+ lineY2: totalHeight - MARGIN,
556
+ color: lane.color || 'neutral'
557
+ }));
558
+ // Edges: horizontal arrows between lanes
559
+ const positionedEdges = computeSwimEdgePaths(config.edges, positions, nodeDims, laneMap, laneWidths[0] ?? 180);
560
+ // Regions
561
+ const positionedRegions = (config.regions || []).map((region) => {
562
+ let minY = Infinity, maxY = -Infinity;
563
+ let minLane = Infinity, maxLane = -Infinity;
564
+ for (const nid of region.contains) {
565
+ const pos = positions.get(nid);
566
+ const dims = nodeDims.get(nid);
567
+ const laneIdx = laneMap.get(nid);
568
+ if (pos && dims) {
569
+ minY = Math.min(minY, pos.y);
570
+ maxY = Math.max(maxY, pos.y + dims.h);
571
+ }
572
+ if (laneIdx !== undefined) {
573
+ minLane = Math.min(minLane, laneIdx);
574
+ maxLane = Math.max(maxLane, laneIdx);
575
+ }
576
+ }
577
+ if (minY === Infinity) {
578
+ return {
579
+ id: region.id,
580
+ x: 0,
581
+ y: 0,
582
+ width: 0,
583
+ height: 0,
584
+ label: region.label,
585
+ color: region.color || 'neutral',
586
+ dashed: region.dashed ?? true
587
+ };
588
+ }
589
+ const pad = 16;
590
+ const regionX = laneStartX[minLane] - pad;
591
+ let regionEndX = laneStartX[maxLane] + laneWidths[maxLane] + pad;
592
+ return {
593
+ id: region.id,
594
+ x: regionX,
595
+ y: minY - pad - 20,
596
+ width: regionEndX - regionX,
597
+ height: maxY - minY + pad * 2 + 20,
598
+ label: region.label,
599
+ color: region.color || 'neutral',
600
+ dashed: region.dashed ?? true
601
+ };
602
+ });
603
+ // Annotations
604
+ const annotations = resolveAnnotations(config, positions, nodeDims);
605
+ // Compute viewBox with full bounds coverage
606
+ let minX = Infinity, minY = Infinity, maxViewX = -Infinity, maxViewY = -Infinity;
607
+ for (const n of positionedNodes) {
608
+ minX = Math.min(minX, n.x);
609
+ minY = Math.min(minY, n.y);
610
+ maxViewX = Math.max(maxViewX, n.x + n.width);
611
+ maxViewY = Math.max(maxViewY, n.y + n.height);
612
+ }
613
+ // Include swimlane headers
614
+ for (let si = 0; si < positionedSwimlanes.length; si++) {
615
+ const sl = positionedSwimlanes[si];
616
+ minX = Math.min(minX, sl.x);
617
+ minY = Math.min(minY, sl.headerY);
618
+ maxViewX = Math.max(maxViewX, sl.x + (laneWidths[si] ?? 180));
619
+ maxViewY = Math.max(maxViewY, sl.lineY2);
620
+ }
621
+ // Include annotation positions
622
+ for (const ann of annotations) {
623
+ const annW = ann.text.length * ANNOTATION_CHAR_WIDTH;
624
+ minX = Math.min(minX, ann.x);
625
+ minY = Math.min(minY, ann.y - ANNOTATION_HEIGHT);
626
+ maxViewX = Math.max(maxViewX, ann.x + annW);
627
+ maxViewY = Math.max(maxViewY, ann.y);
628
+ }
629
+ // Include edge labels
630
+ for (const e of positionedEdges) {
631
+ if (e.label) {
632
+ const labelW = e.label.length * 5;
633
+ minX = Math.min(minX, e.labelX - labelW / 2);
634
+ minY = Math.min(minY, e.labelY - 7);
635
+ maxViewX = Math.max(maxViewX, e.labelX + labelW / 2);
636
+ maxViewY = Math.max(maxViewY, e.labelY + 7);
637
+ }
638
+ }
639
+ // Include regions
640
+ for (const r of positionedRegions) {
641
+ minX = Math.min(minX, r.x);
642
+ minY = Math.min(minY, r.y);
643
+ maxViewX = Math.max(maxViewX, r.x + r.width);
644
+ maxViewY = Math.max(maxViewY, r.y + r.height);
645
+ }
646
+ // Handle empty diagram
647
+ if (minX === Infinity) {
648
+ minX = 0;
649
+ minY = 0;
650
+ maxViewX = totalWidth;
651
+ maxViewY = totalHeight;
652
+ }
653
+ // Shift everything so all coordinates are non-negative
654
+ const shiftX = minX < 0 ? -minX + MARGIN : 0;
655
+ const shiftY = minY < 0 ? -minY + MARGIN : 0;
656
+ if (shiftX > 0 || shiftY > 0) {
657
+ shiftAllPositions(positionedNodes, [], annotations, positionedEdges, shiftX, shiftY);
658
+ // Also shift swimlanes and regions
659
+ for (const sl of positionedSwimlanes) {
660
+ sl.x += shiftX;
661
+ sl.lineX += shiftX;
662
+ sl.headerY += shiftY;
663
+ sl.lineY1 += shiftY;
664
+ sl.lineY2 += shiftY;
665
+ }
666
+ for (const r of positionedRegions) {
667
+ r.x += shiftX;
668
+ r.y += shiftY;
669
+ }
670
+ maxViewX += shiftX;
671
+ maxViewY += shiftY;
672
+ }
673
+ return {
674
+ nodes: positionedNodes,
675
+ edges: positionedEdges,
676
+ clusters: [],
677
+ swimlanes: positionedSwimlanes,
678
+ regions: positionedRegions,
679
+ annotations,
680
+ messages: [],
681
+ lifelines: [],
682
+ positionedFragments: [],
683
+ viewBox: {
684
+ width: Math.max(totalWidth, maxViewX + MARGIN),
685
+ height: Math.max(totalHeight, maxViewY + MARGIN)
686
+ }
687
+ };
688
+ }
689
+ // ── Shared Helpers ─────────────────────────────────────────
690
+ /** Build a map from nodeId -> clusterId for cluster-aware ordering */
691
+ function buildClusterMap(config) {
692
+ const map = new Map();
693
+ if (!config.clusters)
694
+ return map;
695
+ for (const cluster of config.clusters) {
696
+ for (const nodeId of cluster.nodes) {
697
+ map.set(nodeId, cluster.id);
698
+ }
699
+ }
700
+ return map;
701
+ }
702
+ /** Shift all positioned elements by (dx, dy) to ensure non-negative coordinates */
703
+ function shiftAllPositions(nodes, clusters, annotations, edges, dx, dy) {
704
+ for (const n of nodes) {
705
+ n.x += dx;
706
+ n.y += dy;
707
+ }
708
+ for (const c of clusters) {
709
+ c.x += dx;
710
+ c.y += dy;
711
+ }
712
+ for (const a of annotations) {
713
+ a.x += dx;
714
+ a.y += dy;
715
+ }
716
+ for (const e of edges) {
717
+ e.labelX += dx;
718
+ e.labelY += dy;
719
+ // Shift SVG path coordinates
720
+ e.path = shiftSvgPath(e.path, dx, dy);
721
+ }
722
+ }
723
+ /** Shift all absolute coordinates in an SVG path string by (dx, dy) */
724
+ function shiftSvgPath(path, dx, dy) {
725
+ // Match SVG path commands and their coordinate pairs
726
+ // This handles M, L, C, Q, S, T commands with absolute coords
727
+ return path.replace(/([MLCSQT])\s*([-\d.]+)\s+([-\d.]+)/gi, (_match, cmd, x, y) => {
728
+ const upper = cmd.toUpperCase();
729
+ // Only shift absolute commands (uppercase)
730
+ if (cmd === upper) {
731
+ return `${cmd} ${parseFloat(x) + dx} ${parseFloat(y) + dy}`;
732
+ }
733
+ return `${cmd} ${x} ${y}`;
734
+ });
735
+ }
736
+ function buildNodeDims(nodes) {
737
+ const dims = new Map();
738
+ for (const node of nodes) {
739
+ const w = node.width ?? estimateNodeWidth(node.label, node.description);
740
+ const h = node.height ?? (node.description ? DESC_NODE_HEIGHT : DEFAULT_NODE_HEIGHT);
741
+ dims.set(node.id, { w, h });
742
+ }
743
+ return dims;
744
+ }
745
+ function buildPositionedNodes(nodes, positions, nodeDims) {
746
+ return nodes.map((node) => {
747
+ const pos = positions.get(node.id) || { x: 0, y: 0 };
748
+ const dims = nodeDims.get(node.id);
749
+ return {
750
+ id: node.id,
751
+ x: pos.x,
752
+ y: pos.y,
753
+ width: dims.w,
754
+ height: dims.h,
755
+ label: node.label,
756
+ description: node.description,
757
+ icon: node.icon,
758
+ variant: node.variant || 'default',
759
+ color: node.color || 'neutral',
760
+ state: node.state || 'default'
761
+ };
762
+ });
763
+ }
764
+ // ── Swimlane Edge Paths ────────────────────────────────────
765
+ function computeSwimEdgePaths(edges, positions, nodeDims, laneMap, laneWidth) {
766
+ return edges.map((edge) => {
767
+ const fromPos = positions.get(edge.from);
768
+ const toPos = positions.get(edge.to);
769
+ const fromDims = nodeDims.get(edge.from);
770
+ const toDims = nodeDims.get(edge.to);
771
+ if (!fromPos || !toPos || !fromDims || !toDims) {
772
+ return emptyEdge(edge);
773
+ }
774
+ const fromLane = laneMap.get(edge.from) ?? 0;
775
+ const toLane = laneMap.get(edge.to) ?? 0;
776
+ let path;
777
+ let labelX;
778
+ let labelY;
779
+ if (fromLane === toLane) {
780
+ // Same lane: vertical arrow
781
+ const cx = fromPos.x + fromDims.w / 2;
782
+ const y1 = fromPos.y + fromDims.h;
783
+ const y2 = toPos.y;
784
+ path = `M ${cx} ${y1} L ${cx} ${y2}`;
785
+ labelX = cx + 10;
786
+ labelY = (y1 + y2) / 2;
787
+ }
788
+ else {
789
+ // Cross-lane: horizontal arrow at midpoint Y
790
+ const midY = fromPos.y + fromDims.h / 2;
791
+ const x1 = fromLane < toLane ? fromPos.x + fromDims.w : fromPos.x;
792
+ const x2 = fromLane < toLane ? toPos.x : toPos.x + toDims.w;
793
+ path = `M ${x1} ${midY} L ${x2} ${midY}`;
794
+ labelX = (x1 + x2) / 2;
795
+ labelY = midY - 8;
796
+ }
797
+ return {
798
+ from: edge.from,
799
+ to: edge.to,
800
+ path,
801
+ label: edge.label,
802
+ labelX,
803
+ labelY,
804
+ arrow: edge.arrow || 'end',
805
+ dashed: edge.dashed || false,
806
+ color: edge.color || 'neutral'
807
+ };
808
+ });
809
+ }
810
+ // ── Public API ─────────────────────────────────────────────
811
+ // ── Sequence Layout ───────────────────────────────────────
812
+ const SEQ_ACTOR_GAP = 180;
813
+ const SEQ_MESSAGE_GAP = 40;
814
+ const SEQ_ACTOR_BOX_HEIGHT = 36;
815
+ const SEQ_TOP_MARGIN = 40;
816
+ const SEQ_SELF_LOOP_WIDTH = 30;
817
+ const SEQ_SELF_LOOP_HEIGHT = 24;
818
+ const SEQ_FRAGMENT_PAD_X = 20;
819
+ const SEQ_FRAGMENT_PAD_Y = 16;
820
+ const SEQ_FRAGMENT_TAG_HEIGHT = 20;
821
+ function layoutSequence(config) {
822
+ const actors = config.nodes;
823
+ const messages = config.messages || [];
824
+ const fragments = config.fragments || [];
825
+ // Position actors evenly across the x-axis
826
+ const actorXMap = new Map();
827
+ const actorColorMap = new Map();
828
+ for (let i = 0; i < actors.length; i++) {
829
+ const actor = actors[i];
830
+ const x = MARGIN + i * SEQ_ACTOR_GAP + SEQ_ACTOR_GAP / 2;
831
+ actorXMap.set(actor.id, x);
832
+ actorColorMap.set(actor.id, actor.color || 'neutral');
833
+ }
834
+ // Compute message Y positions (increment per message)
835
+ const messageStartY = SEQ_TOP_MARGIN + SEQ_ACTOR_BOX_HEIGHT + 30;
836
+ const messageYPositions = [];
837
+ let currentY = messageStartY;
838
+ for (let i = 0; i < messages.length; i++) {
839
+ const msg = messages[i];
840
+ messageYPositions.push(currentY);
841
+ const isSelf = msg.from === msg.to;
842
+ currentY += isSelf ? SEQ_MESSAGE_GAP + SEQ_SELF_LOOP_HEIGHT : SEQ_MESSAGE_GAP;
843
+ }
844
+ // Bottom of the diagram
845
+ const bottomY = currentY + 30 + SEQ_ACTOR_BOX_HEIGHT;
846
+ const totalHeight = bottomY + MARGIN;
847
+ const totalWidth = MARGIN * 2 + actors.length * SEQ_ACTOR_GAP;
848
+ // Build lifelines
849
+ const lifelines = actors.map((actor) => ({
850
+ id: actor.id,
851
+ label: actor.label,
852
+ x: actorXMap.get(actor.id),
853
+ topY: SEQ_TOP_MARGIN,
854
+ bottomY: bottomY,
855
+ color: (actor.color || 'neutral')
856
+ }));
857
+ // Build positioned messages
858
+ const positionedMessages = messages.map((msg, i) => {
859
+ const fromX = actorXMap.get(msg.from) ?? 0;
860
+ const toX = actorXMap.get(msg.to) ?? 0;
861
+ const y = messageYPositions[i] ?? messageStartY;
862
+ const isSelf = msg.from === msg.to;
863
+ let labelX;
864
+ let labelY;
865
+ if (isSelf) {
866
+ labelX = fromX + SEQ_SELF_LOOP_WIDTH + 8;
867
+ labelY = y + SEQ_SELF_LOOP_HEIGHT / 2;
868
+ }
869
+ else {
870
+ labelX = (fromX + toX) / 2;
871
+ labelY = y - 8;
872
+ }
873
+ return {
874
+ from: msg.from,
875
+ to: msg.to,
876
+ label: msg.label,
877
+ x1: fromX,
878
+ y,
879
+ x2: toX,
880
+ labelX,
881
+ labelY,
882
+ arrow: msg.arrow || 'end',
883
+ dashed: msg.dashed || false,
884
+ color: (msg.color || 'neutral'),
885
+ isSelf
886
+ };
887
+ });
888
+ // Build positioned fragments
889
+ const positionedFragments = fragments.map((frag) => {
890
+ if (frag.messages.length === 0) {
891
+ return {
892
+ id: frag.id,
893
+ label: frag.label,
894
+ condition: frag.condition,
895
+ x: 0,
896
+ y: 0,
897
+ width: 0,
898
+ height: 0,
899
+ color: (frag.color || 'neutral'),
900
+ dashed: frag.dashed ?? false
901
+ };
902
+ }
903
+ // Find bounds from contained messages
904
+ let minX = Infinity;
905
+ let maxX = -Infinity;
906
+ let minY = Infinity;
907
+ let maxY = -Infinity;
908
+ for (const msgIdx of frag.messages) {
909
+ if (msgIdx < 0 || msgIdx >= positionedMessages.length)
910
+ continue;
911
+ const msg = positionedMessages[msgIdx];
912
+ const leftX = Math.min(msg.x1, msg.x2);
913
+ const rightX = msg.isSelf ? msg.x1 + SEQ_SELF_LOOP_WIDTH : Math.max(msg.x1, msg.x2);
914
+ minX = Math.min(minX, leftX);
915
+ maxX = Math.max(maxX, rightX);
916
+ minY = Math.min(minY, msg.y);
917
+ maxY = Math.max(maxY, msg.isSelf ? msg.y + SEQ_SELF_LOOP_HEIGHT : msg.y);
918
+ }
919
+ if (minX === Infinity) {
920
+ return {
921
+ id: frag.id,
922
+ label: frag.label,
923
+ condition: frag.condition,
924
+ x: 0,
925
+ y: 0,
926
+ width: 0,
927
+ height: 0,
928
+ color: (frag.color || 'neutral'),
929
+ dashed: frag.dashed ?? false
930
+ };
931
+ }
932
+ return {
933
+ id: frag.id,
934
+ label: frag.label,
935
+ condition: frag.condition,
936
+ x: minX - SEQ_FRAGMENT_PAD_X,
937
+ y: minY - SEQ_FRAGMENT_PAD_Y - SEQ_FRAGMENT_TAG_HEIGHT,
938
+ width: maxX - minX + SEQ_FRAGMENT_PAD_X * 2,
939
+ height: maxY - minY + SEQ_FRAGMENT_PAD_Y * 2 + SEQ_FRAGMENT_TAG_HEIGHT,
940
+ color: (frag.color || 'neutral'),
941
+ dashed: frag.dashed ?? false
942
+ };
943
+ });
944
+ // Annotations
945
+ const positions = new Map();
946
+ const nodeDims = new Map();
947
+ for (const actor of actors) {
948
+ const x = actorXMap.get(actor.id);
949
+ positions.set(actor.id, { x: x - 60, y: SEQ_TOP_MARGIN });
950
+ nodeDims.set(actor.id, { w: 120, h: SEQ_ACTOR_BOX_HEIGHT });
951
+ }
952
+ const annotations = resolveAnnotations(config, positions, nodeDims);
953
+ return {
954
+ nodes: [],
955
+ edges: [],
956
+ clusters: [],
957
+ swimlanes: [],
958
+ regions: [],
959
+ annotations,
960
+ messages: positionedMessages,
961
+ lifelines,
962
+ positionedFragments,
963
+ viewBox: { width: totalWidth, height: totalHeight }
964
+ };
965
+ }
966
+ // ── Public API ─────────────────────────────────────────────
967
+ export function computeLayout(config) {
968
+ if (config.layout === 'sequence')
969
+ return layoutSequence(config);
970
+ if (config.layout === 'swimlane') {
971
+ return layoutSwimlane(config);
972
+ }
973
+ return layoutLayered(config);
974
+ }