@fusion.dev/helix-headless 0.0.0-dev

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 (424) hide show
  1. package/LICENSE +21 -0
  2. package/custom-elements.json +75202 -0
  3. package/dist/accordion/index.d.ts +2 -0
  4. package/dist/accordion/index.js +2 -0
  5. package/dist/accordion/item/accordion-item.d.ts +141 -0
  6. package/dist/accordion/item/accordion-item.js +214 -0
  7. package/dist/accordion/root/accordion-root.d.ts +57 -0
  8. package/dist/accordion/root/accordion-root.js +96 -0
  9. package/dist/announcement/index.d.ts +1 -0
  10. package/dist/announcement/index.js +1 -0
  11. package/dist/announcement/root/announcement-root.d.ts +106 -0
  12. package/dist/announcement/root/announcement-root.js +144 -0
  13. package/dist/app-header/index.d.ts +1 -0
  14. package/dist/app-header/index.js +1 -0
  15. package/dist/app-header/root/app-header-root.d.ts +113 -0
  16. package/dist/app-header/root/app-header-root.js +147 -0
  17. package/dist/avatar/group/avatar-group.d.ts +116 -0
  18. package/dist/avatar/group/avatar-group.js +136 -0
  19. package/dist/avatar/index.d.ts +2 -0
  20. package/dist/avatar/index.js +2 -0
  21. package/dist/avatar/root/avatar-root.d.ts +71 -0
  22. package/dist/avatar/root/avatar-root.js +147 -0
  23. package/dist/badge/index.d.ts +1 -0
  24. package/dist/badge/index.js +1 -0
  25. package/dist/badge/root/badge-root.d.ts +61 -0
  26. package/dist/badge/root/badge-root.js +121 -0
  27. package/dist/bar-chart/index.d.ts +1 -0
  28. package/dist/bar-chart/index.js +1 -0
  29. package/dist/bar-chart/root/bar-chart-root.d.ts +266 -0
  30. package/dist/bar-chart/root/bar-chart-root.js +515 -0
  31. package/dist/blockquote/index.d.ts +1 -0
  32. package/dist/blockquote/index.js +1 -0
  33. package/dist/blockquote/root/blockquote-root.d.ts +51 -0
  34. package/dist/blockquote/root/blockquote-root.js +84 -0
  35. package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +104 -0
  36. package/dist/breadcrumbs/breadcrumb/breadcrumb.js +137 -0
  37. package/dist/breadcrumbs/index.d.ts +2 -0
  38. package/dist/breadcrumbs/index.js +2 -0
  39. package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +77 -0
  40. package/dist/breadcrumbs/root/breadcrumbs-root.js +94 -0
  41. package/dist/button/index.d.ts +1 -0
  42. package/dist/button/index.js +1 -0
  43. package/dist/button/root/button-root.d.ts +251 -0
  44. package/dist/button/root/button-root.js +401 -0
  45. package/dist/button-group/index.d.ts +1 -0
  46. package/dist/button-group/index.js +1 -0
  47. package/dist/button-group/root/button-group-root.d.ts +62 -0
  48. package/dist/button-group/root/button-group-root.js +62 -0
  49. package/dist/callout/index.d.ts +1 -0
  50. package/dist/callout/index.js +1 -0
  51. package/dist/callout/root/callout-root.d.ts +72 -0
  52. package/dist/callout/root/callout-root.js +90 -0
  53. package/dist/card/index.d.ts +1 -0
  54. package/dist/card/index.js +1 -0
  55. package/dist/card/root/card-root.d.ts +54 -0
  56. package/dist/card/root/card-root.js +71 -0
  57. package/dist/carousel/index.d.ts +1 -0
  58. package/dist/carousel/index.js +1 -0
  59. package/dist/carousel/root/carousel-root.d.ts +399 -0
  60. package/dist/carousel/root/carousel-root.js +723 -0
  61. package/dist/chat/composer/chat-composer.d.ts +160 -0
  62. package/dist/chat/composer/chat-composer.js +273 -0
  63. package/dist/chat/index.d.ts +3 -0
  64. package/dist/chat/index.js +3 -0
  65. package/dist/chat/message/chat-message.d.ts +170 -0
  66. package/dist/chat/message/chat-message.js +271 -0
  67. package/dist/chat/root/chat-root.d.ts +216 -0
  68. package/dist/chat/root/chat-root.js +389 -0
  69. package/dist/checkbox/index.d.ts +1 -0
  70. package/dist/checkbox/index.js +1 -0
  71. package/dist/checkbox/root/checkbox-root.d.ts +108 -0
  72. package/dist/checkbox/root/checkbox-root.js +207 -0
  73. package/dist/checkbox-group/index.d.ts +1 -0
  74. package/dist/checkbox-group/index.js +1 -0
  75. package/dist/checkbox-group/root/checkbox-group-root.d.ts +155 -0
  76. package/dist/checkbox-group/root/checkbox-group-root.js +293 -0
  77. package/dist/code/index.d.ts +1 -0
  78. package/dist/code/index.js +1 -0
  79. package/dist/code/root/code-root.d.ts +36 -0
  80. package/dist/code/root/code-root.js +43 -0
  81. package/dist/code-block/index.d.ts +1 -0
  82. package/dist/code-block/index.js +1 -0
  83. package/dist/code-block/root/code-block-root.d.ts +112 -0
  84. package/dist/code-block/root/code-block-root.js +155 -0
  85. package/dist/color-input/index.d.ts +1 -0
  86. package/dist/color-input/index.js +1 -0
  87. package/dist/color-input/root/color-input-root.d.ts +227 -0
  88. package/dist/color-input/root/color-input-root.js +456 -0
  89. package/dist/color-picker/color.d.ts +74 -0
  90. package/dist/color-picker/color.js +238 -0
  91. package/dist/color-picker/index.d.ts +2 -0
  92. package/dist/color-picker/index.js +2 -0
  93. package/dist/color-picker/root/color-picker-root.d.ts +303 -0
  94. package/dist/color-picker/root/color-picker-root.js +576 -0
  95. package/dist/combobox/index.d.ts +1 -0
  96. package/dist/combobox/index.js +1 -0
  97. package/dist/combobox/root/combobox-root.d.ts +396 -0
  98. package/dist/combobox/root/combobox-root.js +808 -0
  99. package/dist/command/index.d.ts +1 -0
  100. package/dist/command/index.js +1 -0
  101. package/dist/command/root/command-root.d.ts +166 -0
  102. package/dist/command/root/command-root.js +353 -0
  103. package/dist/copy-button/index.d.ts +1 -0
  104. package/dist/copy-button/index.js +1 -0
  105. package/dist/copy-button/root/copy-button-root.d.ts +154 -0
  106. package/dist/copy-button/root/copy-button-root.js +225 -0
  107. package/dist/data-table/index.d.ts +2 -0
  108. package/dist/data-table/index.js +2 -0
  109. package/dist/data-table/root/data-table-root.d.ts +392 -0
  110. package/dist/data-table/root/data-table-root.js +729 -0
  111. package/dist/data-table/root/order.d.ts +116 -0
  112. package/dist/data-table/root/order.js +175 -0
  113. package/dist/date-input/index.d.ts +1 -0
  114. package/dist/date-input/index.js +1 -0
  115. package/dist/date-input/root/date-input-root.d.ts +361 -0
  116. package/dist/date-input/root/date-input-root.js +791 -0
  117. package/dist/date-picker/index.d.ts +1 -0
  118. package/dist/date-picker/index.js +1 -0
  119. package/dist/date-picker/root/date-picker-root.d.ts +361 -0
  120. package/dist/date-picker/root/date-picker-root.js +837 -0
  121. package/dist/dialog/index.d.ts +1 -0
  122. package/dist/dialog/index.js +1 -0
  123. package/dist/dialog/root/dialog-root.d.ts +185 -0
  124. package/dist/dialog/root/dialog-root.js +319 -0
  125. package/dist/divider/index.d.ts +1 -0
  126. package/dist/divider/index.js +1 -0
  127. package/dist/divider/root/divider-root.d.ts +68 -0
  128. package/dist/divider/root/divider-root.js +116 -0
  129. package/dist/donut-chart/index.d.ts +1 -0
  130. package/dist/donut-chart/index.js +1 -0
  131. package/dist/donut-chart/root/donut-chart-root.d.ts +209 -0
  132. package/dist/donut-chart/root/donut-chart-root.js +395 -0
  133. package/dist/drawer/index.d.ts +1 -0
  134. package/dist/drawer/index.js +1 -0
  135. package/dist/drawer/root/drawer-root.d.ts +144 -0
  136. package/dist/drawer/root/drawer-root.js +222 -0
  137. package/dist/drilldown/index.d.ts +2 -0
  138. package/dist/drilldown/index.js +2 -0
  139. package/dist/drilldown/item/drilldown-item.d.ts +87 -0
  140. package/dist/drilldown/item/drilldown-item.js +152 -0
  141. package/dist/drilldown/root/drilldown-root.d.ts +115 -0
  142. package/dist/drilldown/root/drilldown-root.js +263 -0
  143. package/dist/element-events.generated.d.ts +1 -0
  144. package/dist/element-events.generated.js +125 -0
  145. package/dist/empty/index.d.ts +1 -0
  146. package/dist/empty/index.js +1 -0
  147. package/dist/empty/root/empty-root.d.ts +47 -0
  148. package/dist/empty/root/empty-root.js +68 -0
  149. package/dist/file-input/index.d.ts +1 -0
  150. package/dist/file-input/index.js +1 -0
  151. package/dist/file-input/root/file-input-root.d.ts +196 -0
  152. package/dist/file-input/root/file-input-root.js +488 -0
  153. package/dist/format-date/index.d.ts +1 -0
  154. package/dist/format-date/index.js +1 -0
  155. package/dist/format-date/root/format-date-root.d.ts +151 -0
  156. package/dist/format-date/root/format-date-root.js +266 -0
  157. package/dist/heatmap/index.d.ts +2 -0
  158. package/dist/heatmap/index.js +2 -0
  159. package/dist/heatmap/root/buckets.d.ts +62 -0
  160. package/dist/heatmap/root/buckets.js +85 -0
  161. package/dist/heatmap/root/heatmap-root.d.ts +330 -0
  162. package/dist/heatmap/root/heatmap-root.js +526 -0
  163. package/dist/icon/index.d.ts +1 -0
  164. package/dist/icon/index.js +1 -0
  165. package/dist/icon/root/icon-root.d.ts +53 -0
  166. package/dist/icon/root/icon-root.js +93 -0
  167. package/dist/icon-button/index.d.ts +1 -0
  168. package/dist/icon-button/index.js +1 -0
  169. package/dist/icon-button/root/icon-button-root.d.ts +40 -0
  170. package/dist/icon-button/root/icon-button-root.js +46 -0
  171. package/dist/image/index.d.ts +1 -0
  172. package/dist/image/index.js +1 -0
  173. package/dist/image/root/image-root.d.ts +213 -0
  174. package/dist/image/root/image-root.js +335 -0
  175. package/dist/index.d.ts +99 -0
  176. package/dist/index.js +99 -0
  177. package/dist/input/index.d.ts +1 -0
  178. package/dist/input/index.js +1 -0
  179. package/dist/input/root/input-root.d.ts +281 -0
  180. package/dist/input/root/input-root.js +472 -0
  181. package/dist/kbd/index.d.ts +1 -0
  182. package/dist/kbd/index.js +1 -0
  183. package/dist/kbd/root/kbd-root.d.ts +98 -0
  184. package/dist/kbd/root/kbd-root.js +230 -0
  185. package/dist/legend/index.d.ts +1 -0
  186. package/dist/legend/index.js +1 -0
  187. package/dist/legend/root/legend-root.d.ts +83 -0
  188. package/dist/legend/root/legend-root.js +125 -0
  189. package/dist/line-chart/index.d.ts +1 -0
  190. package/dist/line-chart/index.js +1 -0
  191. package/dist/line-chart/root/line-chart-root.d.ts +238 -0
  192. package/dist/line-chart/root/line-chart-root.js +365 -0
  193. package/dist/list/index.d.ts +2 -0
  194. package/dist/list/index.js +2 -0
  195. package/dist/list/item/list-item.d.ts +95 -0
  196. package/dist/list/item/list-item.js +148 -0
  197. package/dist/list/root/list-root.d.ts +72 -0
  198. package/dist/list/root/list-root.js +61 -0
  199. package/dist/listbox/index.d.ts +1 -0
  200. package/dist/listbox/index.js +1 -0
  201. package/dist/listbox/root/listbox-root.d.ts +357 -0
  202. package/dist/listbox/root/listbox-root.js +890 -0
  203. package/dist/loader/index.d.ts +1 -0
  204. package/dist/loader/index.js +1 -0
  205. package/dist/loader/root/loader-root.d.ts +52 -0
  206. package/dist/loader/root/loader-root.js +74 -0
  207. package/dist/megamenu/index.d.ts +1 -0
  208. package/dist/megamenu/index.js +1 -0
  209. package/dist/megamenu/root/megamenu-root.d.ts +254 -0
  210. package/dist/megamenu/root/megamenu-root.js +526 -0
  211. package/dist/menu/index.d.ts +2 -0
  212. package/dist/menu/index.js +2 -0
  213. package/dist/menu/item/menu-item.d.ts +231 -0
  214. package/dist/menu/item/menu-item.js +405 -0
  215. package/dist/menu/root/menu-root.d.ts +158 -0
  216. package/dist/menu/root/menu-root.js +422 -0
  217. package/dist/meter/index.d.ts +1 -0
  218. package/dist/meter/index.js +1 -0
  219. package/dist/meter/root/meter-root.d.ts +234 -0
  220. package/dist/meter/root/meter-root.js +316 -0
  221. package/dist/navigation/index.d.ts +1 -0
  222. package/dist/navigation/index.js +1 -0
  223. package/dist/navigation/root/navigation-root.d.ts +55 -0
  224. package/dist/navigation/root/navigation-root.js +130 -0
  225. package/dist/notifications/index.d.ts +2 -0
  226. package/dist/notifications/index.js +2 -0
  227. package/dist/notifications/notification/notification.d.ts +181 -0
  228. package/dist/notifications/notification/notification.js +305 -0
  229. package/dist/notifications/root/notifications-root.d.ts +168 -0
  230. package/dist/notifications/root/notifications-root.js +291 -0
  231. package/dist/number-input/index.d.ts +1 -0
  232. package/dist/number-input/index.js +1 -0
  233. package/dist/number-input/root/number-input-root.d.ts +282 -0
  234. package/dist/number-input/root/number-input-root.js +592 -0
  235. package/dist/option/group/option-group.d.ts +38 -0
  236. package/dist/option/group/option-group.js +58 -0
  237. package/dist/option/index.d.ts +2 -0
  238. package/dist/option/index.js +2 -0
  239. package/dist/option/root/option-root.d.ts +194 -0
  240. package/dist/option/root/option-root.js +247 -0
  241. package/dist/outline/index.d.ts +1 -0
  242. package/dist/outline/index.js +1 -0
  243. package/dist/outline/root/outline-root.d.ts +237 -0
  244. package/dist/outline/root/outline-root.js +519 -0
  245. package/dist/pagination/index.d.ts +3 -0
  246. package/dist/pagination/index.js +3 -0
  247. package/dist/pagination/root/pagination-root.d.ts +390 -0
  248. package/dist/pagination/root/pagination-root.js +695 -0
  249. package/dist/pagination/size/pagination-size.d.ts +127 -0
  250. package/dist/pagination/size/pagination-size.js +232 -0
  251. package/dist/pagination/summary/pagination-summary.d.ts +90 -0
  252. package/dist/pagination/summary/pagination-summary.js +145 -0
  253. package/dist/pin-input/index.d.ts +1 -0
  254. package/dist/pin-input/index.js +1 -0
  255. package/dist/pin-input/root/pin-input-root.d.ts +292 -0
  256. package/dist/pin-input/root/pin-input-root.js +553 -0
  257. package/dist/popover/index.d.ts +1 -0
  258. package/dist/popover/index.js +1 -0
  259. package/dist/popover/root/popover-root.d.ts +108 -0
  260. package/dist/popover/root/popover-root.js +231 -0
  261. package/dist/progress/index.d.ts +1 -0
  262. package/dist/progress/index.js +1 -0
  263. package/dist/progress/root/progress-root.d.ts +125 -0
  264. package/dist/progress/root/progress-root.js +212 -0
  265. package/dist/qr-code/index.d.ts +1 -0
  266. package/dist/qr-code/index.js +1 -0
  267. package/dist/qr-code/root/qr-code-root.d.ts +93 -0
  268. package/dist/qr-code/root/qr-code-root.js +233 -0
  269. package/dist/quote/index.d.ts +1 -0
  270. package/dist/quote/index.js +1 -0
  271. package/dist/quote/root/quote-root.d.ts +36 -0
  272. package/dist/quote/root/quote-root.js +50 -0
  273. package/dist/radio/group/radio-group.d.ts +84 -0
  274. package/dist/radio/group/radio-group.js +170 -0
  275. package/dist/radio/index.d.ts +2 -0
  276. package/dist/radio/index.js +2 -0
  277. package/dist/radio/root/radio-root.d.ts +102 -0
  278. package/dist/radio/root/radio-root.js +151 -0
  279. package/dist/rating/index.d.ts +1 -0
  280. package/dist/rating/index.js +1 -0
  281. package/dist/rating/root/rating-root.d.ts +242 -0
  282. package/dist/rating/root/rating-root.js +484 -0
  283. package/dist/scroll-area/index.d.ts +1 -0
  284. package/dist/scroll-area/index.js +1 -0
  285. package/dist/scroll-area/root/scroll-area-root.d.ts +96 -0
  286. package/dist/scroll-area/root/scroll-area-root.js +215 -0
  287. package/dist/select/index.d.ts +1 -0
  288. package/dist/select/index.js +1 -0
  289. package/dist/select/root/select-root.d.ts +170 -0
  290. package/dist/select/root/select-root.js +419 -0
  291. package/dist/skeleton/index.d.ts +1 -0
  292. package/dist/skeleton/index.js +1 -0
  293. package/dist/skeleton/root/skeleton-root.d.ts +31 -0
  294. package/dist/skeleton/root/skeleton-root.js +42 -0
  295. package/dist/slider/index.d.ts +1 -0
  296. package/dist/slider/index.js +1 -0
  297. package/dist/slider/root/slider-root.d.ts +235 -0
  298. package/dist/slider/root/slider-root.js +488 -0
  299. package/dist/sparkline/index.d.ts +1 -0
  300. package/dist/sparkline/index.js +1 -0
  301. package/dist/sparkline/root/sparkline-root.d.ts +147 -0
  302. package/dist/sparkline/root/sparkline-root.js +278 -0
  303. package/dist/speed-dial/index.d.ts +2 -0
  304. package/dist/speed-dial/index.js +2 -0
  305. package/dist/speed-dial/item/speed-dial-item.d.ts +71 -0
  306. package/dist/speed-dial/item/speed-dial-item.js +113 -0
  307. package/dist/speed-dial/root/speed-dial-root.d.ts +122 -0
  308. package/dist/speed-dial/root/speed-dial-root.js +251 -0
  309. package/dist/splitter/index.d.ts +1 -0
  310. package/dist/splitter/index.js +1 -0
  311. package/dist/splitter/root/splitter-root.d.ts +491 -0
  312. package/dist/splitter/root/splitter-root.js +1030 -0
  313. package/dist/stat/group/stat-group.d.ts +30 -0
  314. package/dist/stat/group/stat-group.js +47 -0
  315. package/dist/stat/index.d.ts +2 -0
  316. package/dist/stat/index.js +2 -0
  317. package/dist/stat/root/stat-root.d.ts +62 -0
  318. package/dist/stat/root/stat-root.js +51 -0
  319. package/dist/steps/index.d.ts +2 -0
  320. package/dist/steps/index.js +2 -0
  321. package/dist/steps/root/steps-root.d.ts +110 -0
  322. package/dist/steps/root/steps-root.js +130 -0
  323. package/dist/steps/step/step.d.ts +139 -0
  324. package/dist/steps/step/step.js +215 -0
  325. package/dist/switch/index.d.ts +1 -0
  326. package/dist/switch/index.js +1 -0
  327. package/dist/switch/root/switch-root.d.ts +74 -0
  328. package/dist/switch/root/switch-root.js +153 -0
  329. package/dist/table/cell/table-cell.d.ts +34 -0
  330. package/dist/table/cell/table-cell.js +52 -0
  331. package/dist/table/column/table-column.d.ts +165 -0
  332. package/dist/table/column/table-column.js +222 -0
  333. package/dist/table/index.d.ts +4 -0
  334. package/dist/table/index.js +4 -0
  335. package/dist/table/root/table-root.d.ts +98 -0
  336. package/dist/table/root/table-root.js +161 -0
  337. package/dist/table/row/table-row.d.ts +27 -0
  338. package/dist/table/row/table-row.js +42 -0
  339. package/dist/tabs/index.d.ts +3 -0
  340. package/dist/tabs/index.js +3 -0
  341. package/dist/tabs/panel/tab-panel.d.ts +67 -0
  342. package/dist/tabs/panel/tab-panel.js +98 -0
  343. package/dist/tabs/root/tabs-root.d.ts +123 -0
  344. package/dist/tabs/root/tabs-root.js +217 -0
  345. package/dist/tabs/tab/tab.d.ts +64 -0
  346. package/dist/tabs/tab/tab.js +116 -0
  347. package/dist/tag/index.d.ts +1 -0
  348. package/dist/tag/index.js +1 -0
  349. package/dist/tag/root/tag-root.d.ts +41 -0
  350. package/dist/tag/root/tag-root.js +67 -0
  351. package/dist/textarea/index.d.ts +1 -0
  352. package/dist/textarea/index.js +1 -0
  353. package/dist/textarea/root/textarea-root.d.ts +215 -0
  354. package/dist/textarea/root/textarea-root.js +380 -0
  355. package/dist/time-input/index.d.ts +1 -0
  356. package/dist/time-input/index.js +1 -0
  357. package/dist/time-input/root/time-input-root.d.ts +322 -0
  358. package/dist/time-input/root/time-input-root.js +661 -0
  359. package/dist/time-picker/index.d.ts +1 -0
  360. package/dist/time-picker/index.js +1 -0
  361. package/dist/time-picker/root/time-picker-root.d.ts +380 -0
  362. package/dist/time-picker/root/time-picker-root.js +669 -0
  363. package/dist/timeline/index.d.ts +2 -0
  364. package/dist/timeline/index.js +2 -0
  365. package/dist/timeline/item/timeline-item.d.ts +81 -0
  366. package/dist/timeline/item/timeline-item.js +128 -0
  367. package/dist/timeline/root/timeline-root.d.ts +52 -0
  368. package/dist/timeline/root/timeline-root.js +72 -0
  369. package/dist/toast/index.d.ts +2 -0
  370. package/dist/toast/index.js +2 -0
  371. package/dist/toast/item/toast-item.d.ts +183 -0
  372. package/dist/toast/item/toast-item.js +345 -0
  373. package/dist/toast/root/toast-root.d.ts +72 -0
  374. package/dist/toast/root/toast-root.js +87 -0
  375. package/dist/toggle/group/toggle-group.d.ts +140 -0
  376. package/dist/toggle/group/toggle-group.js +278 -0
  377. package/dist/toggle/index.d.ts +2 -0
  378. package/dist/toggle/index.js +2 -0
  379. package/dist/toggle/root/toggle-root.d.ts +99 -0
  380. package/dist/toggle/root/toggle-root.js +146 -0
  381. package/dist/toolbar/index.d.ts +1 -0
  382. package/dist/toolbar/index.js +1 -0
  383. package/dist/toolbar/root/toolbar-root.d.ts +105 -0
  384. package/dist/toolbar/root/toolbar-root.js +260 -0
  385. package/dist/tooltip/index.d.ts +1 -0
  386. package/dist/tooltip/index.js +1 -0
  387. package/dist/tooltip/root/tooltip-root.d.ts +388 -0
  388. package/dist/tooltip/root/tooltip-root.js +707 -0
  389. package/dist/tour/index.d.ts +2 -0
  390. package/dist/tour/index.js +2 -0
  391. package/dist/tour/root/tour-root.d.ts +161 -0
  392. package/dist/tour/root/tour-root.js +351 -0
  393. package/dist/tour/stop/tour-stop.d.ts +131 -0
  394. package/dist/tour/stop/tour-stop.js +249 -0
  395. package/dist/tree/index.d.ts +2 -0
  396. package/dist/tree/index.js +2 -0
  397. package/dist/tree/item/tree-item.d.ts +208 -0
  398. package/dist/tree/item/tree-item.js +381 -0
  399. package/dist/tree/root/tree-root.d.ts +88 -0
  400. package/dist/tree/root/tree-root.js +287 -0
  401. package/dist/trend/index.d.ts +1 -0
  402. package/dist/trend/index.js +1 -0
  403. package/dist/trend/root/trend-root.d.ts +67 -0
  404. package/dist/trend/root/trend-root.js +106 -0
  405. package/dist/video/index.d.ts +1 -0
  406. package/dist/video/index.js +1 -0
  407. package/dist/video/root/video-root.d.ts +711 -0
  408. package/dist/video/root/video-root.js +1821 -0
  409. package/dist/video-playlist/index.d.ts +3 -0
  410. package/dist/video-playlist/index.js +3 -0
  411. package/dist/video-playlist/item/video-playlist-item.d.ts +101 -0
  412. package/dist/video-playlist/item/video-playlist-item.js +162 -0
  413. package/dist/video-playlist/menu/video-playlist-menu.d.ts +121 -0
  414. package/dist/video-playlist/menu/video-playlist-menu.js +237 -0
  415. package/dist/video-playlist/root/video-playlist-root.d.ts +108 -0
  416. package/dist/video-playlist/root/video-playlist-root.js +218 -0
  417. package/dist/virtual-list/index.d.ts +1 -0
  418. package/dist/virtual-list/index.js +1 -0
  419. package/dist/virtual-list/root/virtual-list-root.d.ts +121 -0
  420. package/dist/virtual-list/root/virtual-list-root.js +221 -0
  421. package/jsx.d.ts +49767 -0
  422. package/package.json +77 -0
  423. package/svelte.d.ts +129 -0
  424. package/vue.d.ts +9242 -0
@@ -0,0 +1,278 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement, extent, HelixElement, linear, linePath, SourceController, } from '@fusion.dev/helix-core';
8
+ import { html, nothing, svg } from 'lit';
9
+ import { property } from 'lit/decorators.js';
10
+ /**
11
+ * The drawing's own coordinates, which the `viewBox` maps onto whatever box CSS
12
+ * gives it. Round numbers so a `d` attribute is readable in the inspector.
13
+ */
14
+ const BOX = { height: 32, width: 100 };
15
+ /** Splits on whitespace or commas, and keeps only what is a number. */
16
+ const readValues = (input) => input
17
+ .split(/[\s,]+/)
18
+ .filter((one) => one !== '')
19
+ .map(Number)
20
+ .filter((one) => Number.isFinite(one));
21
+ /**
22
+ * @summary A line with no axes, for the shape of a series beside the number it belongs to.
23
+ *
24
+ * @description
25
+ * The one chart here that takes its numbers from an attribute, and the reversal
26
+ * is deliberate. Every other chart reads a table because a reader might want to
27
+ * interrogate it; nobody interrogates the squiggle next to a figure. A
28
+ * fourteen-row table behind a bare trend line is fourteen dates read aloud in
29
+ * place of the one sentence that carries the meaning, so `values` is the list
30
+ * and `label` is the sentence.
31
+ *
32
+ * That is the library's own rule rather than a second data channel: a content
33
+ * property is its slot's fallback, which is why `Tooltip` takes `content` and
34
+ * `Avatar` takes `name`. `for` stays for the sparkline that genuinely has a
35
+ * table behind it, and it wins where both are given.
36
+ *
37
+ * **No label means decorative, and that is a choice rather than an oversight.**
38
+ * A sparkline beside a stat that already says "Sessions, 1,102" has nothing of
39
+ * its own to announce, and an unnamed `role="img"` announces "graphic" and
40
+ * stops. So an unlabelled sparkline is `aria-hidden`, and a labeled one is an
41
+ * image named by its sentence.
42
+ *
43
+ * It goes *beside* a `Stat` rather than inside one. The plan this was built
44
+ * from called for a `trend` slot on `Stat`; the spec already on `Stat` says the
45
+ * opposite, that a change beside a figure is a second fact, and the spec is
46
+ * right. `Trend` composes the same way.
47
+ *
48
+ * The properties below are written by this component and read by whoever draws
49
+ * it. A consumer sets none of them: they carry a number this element computed
50
+ * and CSS cannot, which is what lets a stylesheet on this tier draw the thing
51
+ * without measuring anything itself.
52
+ *
53
+ * @since 0.1.0
54
+ * @status experimental
55
+ * @category charts
56
+ * @aliases Micro Chart, Trend Line, Inline Chart
57
+ * @documentation https://helix.fusion.dev/components/sparkline
58
+ *
59
+ * @csspart area - The region between the line and the bottom of its range.
60
+ * @csspart bar - One column, under `plot="bar"`.
61
+ * @csspart line - The path itself.
62
+ * @csspart svg - The drawing.
63
+ * @csspart terminus - The mark on the last value.
64
+ * @csspart wash-end - The far stop of the area's gradient.
65
+ * @csspart wash-start - The stop of the area's gradient that meets the line.
66
+ *
67
+ * @cssproperty --chart-terminus-x - Where the last point sits horizontally, as a percentage.
68
+ * @cssproperty --chart-terminus-y - Where the last point sits vertically, as a percentage.
69
+ */
70
+ let HelixHeadlessSparkline = class HelixHeadlessSparkline extends HelixElement {
71
+ constructor() {
72
+ super(...arguments);
73
+ /**
74
+ * The id of a table to read instead, when there is one behind the line.
75
+ *
76
+ * The first column of numbers is the series drawn. This wins over `values`,
77
+ * because a table is the readable representation and a list of numbers in an
78
+ * attribute is not.
79
+ *
80
+ * **In React this arrives as a property and not as an attribute**, the way
81
+ * `Tooltip.for` does, so it does not reflect and nothing styles on it.
82
+ */
83
+ this.for = '';
84
+ /**
85
+ * What the line says, in a sentence.
86
+ *
87
+ * "Sessions rose from 1,240 to 1,318 and fell to 1,102 over fourteen days" is
88
+ * the accessible representation of a sparkline, and a list of the fourteen
89
+ * numbers is not. Absent, the drawing is hidden from a screen reader rather
90
+ * than announced without a name.
91
+ */
92
+ this.label = '';
93
+ /**
94
+ * The numbers, separated by whitespace or by commas.
95
+ *
96
+ * Both separators, so `values="1240 1318"` and an array assigned to the
97
+ * property both work: assigning `[1240, 1318]` stringifies to `1240,1318`,
98
+ * and a string is what survives React's hydration where an array property
99
+ * does not.
100
+ */
101
+ this.values = '';
102
+ /* One controller rather than the resolve-and-watch each chart had written
103
+ out for itself. Three copies had already drifted into two names for the
104
+ same lookup. */
105
+ this.source = new SourceController(this);
106
+ }
107
+ willUpdate(changed) {
108
+ if (changed.has('for')) {
109
+ this.source.watch();
110
+ }
111
+ }
112
+ /** The series to draw: the table if there is one, the attribute otherwise. */
113
+ #points() {
114
+ const series = this.source.series;
115
+ return series.length > 0
116
+ ? (series[0]?.points.map((point) => point.value) ?? [])
117
+ : readValues(this.values);
118
+ }
119
+ render() {
120
+ const points = this.#points();
121
+ /* Two points minimum, because one is not a trend and zero is not a line.
122
+ An `<svg>` given a `d` of `M NaN,NaN` draws nothing and reports nothing,
123
+ so the empty case is stated here rather than left to look like a bug. */
124
+ const x = linear([0, Math.max(points.length - 1, 1)], [0, BOX.width]);
125
+ /* **A bar measures from zero and a line measures from its own range**, and
126
+ that is a correctness difference rather than a preference.
127
+ *
128
+ * A line is a shape: what it says is where the readings sit relative to
129
+ * each other, so running the scale over the data's own extent uses the
130
+ * whole box and claims nothing about absolute size. A bar says something
131
+ * else. Its *length* is the value, so a baseline anywhere but zero makes
132
+ * the lengths proportional to nothing, which is the oldest misleading chart
133
+ * there is.
134
+ *
135
+ * Drawn over the data's extent, the smallest reading landed exactly on the
136
+ * floor and its column had no height at all: seven readings between 1,102
137
+ * and 1,408 came out as six columns and a gap, which looks like missing
138
+ * data and is really a scale saying the minimum is nothing.
139
+ *
140
+ * The zero is included at both ends, so a series that goes negative gets a
141
+ * baseline inside the box and its columns hang below it. */
142
+ const [low, high] = extent(points.length > 0 ? points : [0]);
143
+ const y = this.plot === 'bar'
144
+ ? linear([Math.min(0, low), Math.max(0, high)], [BOX.height, 0])
145
+ : linear([low, high], [BOX.height, 0]);
146
+ const coordinates = points.map((value, index) => [x(index), y(value)]);
147
+ const path = this.plot === 'bar' ? '' : linePath(coordinates, this.curve ?? 'smooth');
148
+ /* The same line closed down to the floor of its own range, which is where
149
+ the wash goes. Its own path rather than a fill on the line, because a
150
+ closed path strokes its closing edges too: filling the line itself would
151
+ draw a rule along the bottom of the box and up both sides.
152
+ *
153
+ * The floor is the smallest reading and not a true zero, because the scale
154
+ * runs over the data's own extent. That is the part a consumer would get
155
+ * wrong writing this themselves, and it is why the shape is built here. */
156
+ /* Asked negatively, because absent *is* an area here and the class doc
157
+ above says why. This is the one property in the family where the resting
158
+ arrangement is not the plainest thing, so the test has to answer true for
159
+ the value nobody set, and `=== 'area'` would answer false. */
160
+ const area = this.plot !== 'bar' && this.plot !== 'line' && path !== ''
161
+ ? `${path}L${BOX.width},${BOX.height}L0,${BOX.height}Z`
162
+ : '';
163
+ /* One column per reading, inset so neighbours do not touch.
164
+ *
165
+ * A rect rather than a thick stroked line, because a bar has two ends and a
166
+ * stroke has a cap: `stroke-linecap` would round or square both ends of
167
+ * every column together, and the floor end should always be flat.
168
+ *
169
+ * The width is a share of the slot rather than a fixed number, so a series
170
+ * of seven and a series of forty both fill the box. Fourteen percent of the
171
+ * gap is the smallest separation that still reads as separate columns at
172
+ * the sizes a sparkline is drawn at, and it comes off the slot rather than
173
+ * off the bar so a two-reading series does not get two enormous slabs. */
174
+ const slot = BOX.width / Math.max(points.length, 1);
175
+ const floor = y(0);
176
+ const bars = this.plot === 'bar'
177
+ ? points.map((value, index) => ({
178
+ /* From the baseline to the reading, whichever of the two is
179
+ higher up the box. A reading of exactly zero is a column of no
180
+ height, which paints nothing, and that is the honest drawing of
181
+ nothing rather than a hairline implying something. */
182
+ height: Math.abs(floor - y(value)),
183
+ width: slot * 0.72,
184
+ x: index * slot + slot * 0.14,
185
+ y: Math.min(floor, y(value)),
186
+ }))
187
+ : [];
188
+ /* Where the series ended, as percentages of the box.
189
+ *
190
+ * Read twice, by the mark and by the drawing, which is why it is a local
191
+ * rather than two literals. The mark sits on it; the drawing has the same
192
+ * disc taken out of it, so a `ring` is a hole rather than a lid. A custom
193
+ * property would be the tidier channel and there is nowhere to put one:
194
+ * they inherit down and never sideways, the two elements are siblings, and
195
+ * the host cannot be styled from a template without a wrapper element that
196
+ * carries nothing else. */
197
+ const end = points.length < 2
198
+ ? undefined
199
+ : `--chart-terminus-x: 100%; --chart-terminus-y: ${(y(points[points.length - 1]) / BOX.height) * 100}%`;
200
+ return html `<svg
201
+ aria-hidden=${this.label === '' ? 'true' : nothing}
202
+ aria-label=${this.label === '' ? nothing : this.label}
203
+ part="svg"
204
+ preserveAspectRatio="none"
205
+ role=${this.label === '' ? nothing : 'img'}
206
+ style=${end ?? nothing}
207
+ viewBox="0 0 ${BOX.width} ${BOX.height}"
208
+ >
209
+ ${
210
+ /* The ramp the area is poured with, drawn here because a gradient is
211
+ an element and elements are this tier's business, and coloured
212
+ above because a color is not. Measured rather than assumed: a
213
+ fragment id inside a shadow root resolves within that root, so two
214
+ sparklines on a page carrying the same id stay independent, and CSS
215
+ `fill: url(#...)` reaches it as readily as the attribute does. */
216
+ svg `<defs>
217
+ <linearGradient id="sparkline-wash" x1="0" x2="0" y1="0" y2="1">
218
+ <stop offset="0" part="wash-start" />
219
+ <stop offset="1" part="wash-end" />
220
+ </linearGradient>
221
+ </defs>`}
222
+ ${
223
+ /* `svg` and not `html`, because a nested template is parsed on its
224
+ own and this one has no `<svg>` around it to be parsed inside.
225
+ `<path>` read as standalone HTML becomes an unknown element in the
226
+ XHTML namespace: it takes the part, takes the `d`, inherits the
227
+ stroke, and draws nothing at all, because only an element in the
228
+ SVG namespace has geometry. Measured by `getBBox` throwing, which
229
+ is the shortest way to ask an element whether it is really SVG.
230
+
231
+ Every spec written against this passed while it drew nothing. They
232
+ asserted the `d` attribute, the part, the ARIA and the computed
233
+ `vector-effect`, and all of those are true of an HTML element
234
+ wearing the same name. */
235
+ path === '' ? nothing : svg `<path d=${path} part="line" />`}
236
+ ${area === '' ? nothing : svg `<path d=${area} part="area" />`}
237
+ ${bars.map((bar) => svg `<rect
238
+ height=${bar.height}
239
+ part="bar"
240
+ width=${bar.width}
241
+ x=${bar.x}
242
+ y=${bar.y}
243
+ />`)}
244
+ </svg>
245
+ ${
246
+ /* The mark on the last value, as an element beside the drawing rather
247
+ than a `<circle>` inside it. `preserveAspectRatio="none"` is what lets
248
+ the line fill any box, and it distorts everything in that coordinate
249
+ space with it: a circle in there is an ellipse whose squash depends on
250
+ how wide the consumer made it. Percentages of the host are the same
251
+ two numbers in a space nothing stretches. */
252
+ /* A line ends somewhere and a row of columns does not, so a bar plot
253
+ draws no terminus: the last column already is the last reading, and a
254
+ dot on top of it would be a second mark saying the same thing. */
255
+ points.length < 2 || this.plot === 'bar'
256
+ ? nothing
257
+ : html `<span aria-hidden="true" part="terminus" style=${end ?? nothing}></span>`}`;
258
+ }
259
+ };
260
+ __decorate([
261
+ property({ reflect: true })
262
+ ], HelixHeadlessSparkline.prototype, "plot", void 0);
263
+ __decorate([
264
+ property({ reflect: true })
265
+ ], HelixHeadlessSparkline.prototype, "curve", void 0);
266
+ __decorate([
267
+ property()
268
+ ], HelixHeadlessSparkline.prototype, "for", void 0);
269
+ __decorate([
270
+ property()
271
+ ], HelixHeadlessSparkline.prototype, "label", void 0);
272
+ __decorate([
273
+ property()
274
+ ], HelixHeadlessSparkline.prototype, "values", void 0);
275
+ HelixHeadlessSparkline = __decorate([
276
+ customElement('helix-headless-sparkline')
277
+ ], HelixHeadlessSparkline);
278
+ export { HelixHeadlessSparkline };
@@ -0,0 +1,2 @@
1
+ export * from './item/speed-dial-item.js';
2
+ export * from './root/speed-dial-root.js';
@@ -0,0 +1,2 @@
1
+ export * from './item/speed-dial-item.js';
2
+ export * from './root/speed-dial-root.js';
@@ -0,0 +1,71 @@
1
+ import { HelixElement } from '@fusion.dev/helix-core';
2
+ import { type TemplateResult } from 'lit';
3
+ /**
4
+ * @summary One action in a speed dial: a mark, and a name beside it.
5
+ *
6
+ * @description
7
+ * **A command, which is why this is a `menuitem` and a megamenu's rows are not.**
8
+ * The distinction is what the thing does, not what it looks like: a megamenu
9
+ * holds destinations, so it is a disclosure of links, and this holds actions a
10
+ * screen can take, which is exactly what `role="menu"` was written for. The
11
+ * roles follow the contents.
12
+ *
13
+ * **The name is text, not a title.** A dial's actions are icons, and an icon
14
+ * with a `title` is an action whose name only exists for whoever hovers it long
15
+ * enough. The label is rendered beside the mark and is the accessible name by
16
+ * being there, so it is read, searched and translated like anything else.
17
+ *
18
+ * @since 0.1.0
19
+ * @status experimental
20
+ * @category actions
21
+ * @aliases Speed dial action, FAB action, Quick action
22
+ * @documentation https://helix.fusion.dev/components/speed-dial
23
+ *
24
+ * @slot - The action's name.
25
+ * @slot icon - The mark, which is what a dial is read by.
26
+ *
27
+ * @event {HelixSelectEvent} helix-select - Fired when the action is chosen. Cancelable: refusing it takes the decision and nothing moves.
28
+ *
29
+ * @csspart icon - The mark's box.
30
+ * @csspart item - The control.
31
+ * @csspart label - The name beside it.
32
+ */
33
+ export declare class HelixHeadlessSpeedDialItem extends HelixElement {
34
+ /**
35
+ * What this action stands for, carried in the event when it is chosen.
36
+ */
37
+ value: string;
38
+ /**
39
+ * Whether the action can be chosen.
40
+ */
41
+ disabled: boolean;
42
+ /**
43
+ * @internal Read by a parent to identify its children across the light DOM,
44
+ * which is cheaper than `instanceof` and is why this is public rather than
45
+ * protected. Not a consumer's to read or set.
46
+ */
47
+ readonly isSpeedDialItem = true;
48
+ /** Puts focus on the control inside, which is what a reader can reach. */
49
+ focus(): void;
50
+ /** `NavigableItem`, so the arrow keys are the shared controller's business. */
51
+ focusItem(): void;
52
+ /** Chooses the action, which is the same act as pressing it. */
53
+ select(): void;
54
+ /**
55
+ * Whether this is the row the set is on, which here is where focus is.
56
+ *
57
+ * Asked of the document rather than of the shadow root: focus lands on the
58
+ * control inside this element and the platform retargets it, so from outside
59
+ * `activeElement` already is this element. `Menu.Item` records the same, and
60
+ * the reading it replaced is one that does not survive happy-dom.
61
+ */
62
+ get selected(): boolean;
63
+ private choose;
64
+ private readonly handleClick;
65
+ protected render(): TemplateResult;
66
+ }
67
+ declare global {
68
+ interface HTMLElementTagNameMap {
69
+ 'helix-headless-speed-dial-item': HelixHeadlessSpeedDialItem;
70
+ }
71
+ }
@@ -0,0 +1,113 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement, HelixElement, HelixSelectEvent } from '@fusion.dev/helix-core';
8
+ import { html, nothing } from 'lit';
9
+ import { property } from 'lit/decorators.js';
10
+ /**
11
+ * @summary One action in a speed dial: a mark, and a name beside it.
12
+ *
13
+ * @description
14
+ * **A command, which is why this is a `menuitem` and a megamenu's rows are not.**
15
+ * The distinction is what the thing does, not what it looks like: a megamenu
16
+ * holds destinations, so it is a disclosure of links, and this holds actions a
17
+ * screen can take, which is exactly what `role="menu"` was written for. The
18
+ * roles follow the contents.
19
+ *
20
+ * **The name is text, not a title.** A dial's actions are icons, and an icon
21
+ * with a `title` is an action whose name only exists for whoever hovers it long
22
+ * enough. The label is rendered beside the mark and is the accessible name by
23
+ * being there, so it is read, searched and translated like anything else.
24
+ *
25
+ * @since 0.1.0
26
+ * @status experimental
27
+ * @category actions
28
+ * @aliases Speed dial action, FAB action, Quick action
29
+ * @documentation https://helix.fusion.dev/components/speed-dial
30
+ *
31
+ * @slot - The action's name.
32
+ * @slot icon - The mark, which is what a dial is read by.
33
+ *
34
+ * @event {HelixSelectEvent} helix-select - Fired when the action is chosen. Cancelable: refusing it takes the decision and nothing moves.
35
+ *
36
+ * @csspart icon - The mark's box.
37
+ * @csspart item - The control.
38
+ * @csspart label - The name beside it.
39
+ */
40
+ let HelixHeadlessSpeedDialItem = class HelixHeadlessSpeedDialItem extends HelixElement {
41
+ constructor() {
42
+ super(...arguments);
43
+ /**
44
+ * What this action stands for, carried in the event when it is chosen.
45
+ */
46
+ this.value = '';
47
+ /**
48
+ * Whether the action can be chosen.
49
+ */
50
+ this.disabled = false;
51
+ /**
52
+ * @internal Read by a parent to identify its children across the light DOM,
53
+ * which is cheaper than `instanceof` and is why this is public rather than
54
+ * protected. Not a consumer's to read or set.
55
+ */
56
+ this.isSpeedDialItem = true;
57
+ this.handleClick = () => {
58
+ this.choose();
59
+ };
60
+ }
61
+ /** Puts focus on the control inside, which is what a reader can reach. */
62
+ focus() {
63
+ this.renderRoot?.querySelector('[part="item"]')?.focus();
64
+ }
65
+ /** `NavigableItem`, so the arrow keys are the shared controller's business. */
66
+ focusItem() {
67
+ this.focus();
68
+ }
69
+ /** Chooses the action, which is the same act as pressing it. */
70
+ select() {
71
+ this.choose();
72
+ }
73
+ /**
74
+ * Whether this is the row the set is on, which here is where focus is.
75
+ *
76
+ * Asked of the document rather than of the shadow root: focus lands on the
77
+ * control inside this element and the platform retargets it, so from outside
78
+ * `activeElement` already is this element. `Menu.Item` records the same, and
79
+ * the reading it replaced is one that does not survive happy-dom.
80
+ */
81
+ get selected() {
82
+ return this.ownerDocument.activeElement === this;
83
+ }
84
+ choose() {
85
+ if (this.disabled) {
86
+ return;
87
+ }
88
+ this.dispatchEvent(new HelixSelectEvent({ value: this.value }));
89
+ }
90
+ render() {
91
+ return html `<button
92
+ part="item"
93
+ role="menuitem"
94
+ type="button"
95
+ aria-disabled=${this.disabled ? 'true' : nothing}
96
+ ?disabled=${this.disabled}
97
+ @click=${this.handleClick}
98
+ >
99
+ <span part="icon"><slot name="icon"></slot></span>
100
+ <span part="label"><slot></slot></span>
101
+ </button>`;
102
+ }
103
+ };
104
+ __decorate([
105
+ property()
106
+ ], HelixHeadlessSpeedDialItem.prototype, "value", void 0);
107
+ __decorate([
108
+ property({ reflect: true, type: Boolean })
109
+ ], HelixHeadlessSpeedDialItem.prototype, "disabled", void 0);
110
+ HelixHeadlessSpeedDialItem = __decorate([
111
+ customElement('helix-headless-speed-dial-item')
112
+ ], HelixHeadlessSpeedDialItem);
113
+ export { HelixHeadlessSpeedDialItem };
@@ -0,0 +1,122 @@
1
+ import { HelixElement, KeyboardNavigationController, type Placement } from '@fusion.dev/helix-core';
2
+ import { type PropertyValues, type TemplateResult } from 'lit';
3
+ declare const HelixHeadlessSpeedDial_base: (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerOpenInterface) & typeof HelixElement;
4
+ /**
5
+ * @summary A button that fans out the few actions a screen is for.
6
+ *
7
+ * @description
8
+ * **A menu, and deliberately not a new one.** Its rows are commands, which is
9
+ * what `role="menu"` and `menuitem` exist for, so this takes them and takes the
10
+ * behavior with them: the arrow keys are `KeyboardNavigationController`, the
11
+ * panel is `PopoverController`, and open and closed is `MixinControllerOpen`.
12
+ * `Menu` is built from the same pieces. What is not shared is what actually
13
+ * differs: a dial has no submenus, no headers, no checkable rows and no long
14
+ * list to type ahead through, and shipping it as an appearance of `Menu` would
15
+ * have meant defining what a dial with a submenu in it does.
16
+ *
17
+ * **The trigger is a control the consumer slots**, and the floating action
18
+ * button is the usual one: `helix-icon-button` with `shape="circle"` and
19
+ * `raised`. There is no `helix-fab` here, and the reason is worth stating,
20
+ * because a component would have re-declared `emphasis`, `tone`, `label` and
21
+ * a size around a control that already has all four. A round raised button is a
22
+ * shape, and where it sits is `data-dock` in the base layer.
23
+ *
24
+ * **Nothing is reserved from the keyboard.** A menu that drills has to keep the
25
+ * horizontal pair for going in and coming back; a dial goes nowhere, so all four
26
+ * arrows move through the actions and a reader who guesses either axis is
27
+ * answered. That is the controller's own house position, and this is a component
28
+ * with no reason to argue with it.
29
+ *
30
+ * @since 0.1.0
31
+ * @status experimental
32
+ * @category actions
33
+ * @aliases FAB, Floating action button, Action button, Quick actions
34
+ * @documentation https://helix.fusion.dev/components/speed-dial
35
+ *
36
+ * @slot - The actions.
37
+ * @slot trigger - The control that opens it. Falls back to a button named by `label`.
38
+ *
39
+ * @event {HelixBeforeCloseEvent} helix-before-close - Fired before it closes, and cancelable.
40
+ * @event {HelixBeforeOpenEvent} helix-before-open - Fired before it opens, and cancelable.
41
+ * @event {Event} toggle - Says the state moved, carrying `newState` and `oldState`.
42
+ *
43
+ * @csspart actions - The region the actions are drawn in.
44
+ * @csspart icon - A glyph this component draws.
45
+ * @csspart trigger - The default trigger, where none was slotted.
46
+ */
47
+ export declare class HelixHeadlessSpeedDial extends HelixHeadlessSpeedDial_base {
48
+ /**
49
+ * Names the trigger and the set of actions it opens.
50
+ */
51
+ label: string;
52
+ /**
53
+ * Which way the actions fan out. They move if that side does not fit.
54
+ *
55
+ * Up by default, because the control this hangs off is usually docked to the
56
+ * bottom of the window and there is nothing below it to fan into.
57
+ */
58
+ placement: Placement;
59
+ /**
60
+ * Space between the trigger and the actions, in pixels.
61
+ */
62
+ offset: number;
63
+ protected readonly keys: KeyboardNavigationController;
64
+ private readonly panel;
65
+ /** Whatever the consumer slotted, or the button rendered in its place. */
66
+ private get trigger();
67
+ /** The actions, which are this element's own rows and nothing else slotted. */
68
+ private get items();
69
+ /** Shuts it and puts the reader back on the trigger. */
70
+ private close;
71
+ private readonly handleTriggerClick;
72
+ private readonly handleSelect;
73
+ private readonly handleKeydown;
74
+ connectedCallback(): void;
75
+ disconnectedCallback(): void;
76
+ /**
77
+ * Tells a slotted trigger what it is doing, since it cannot know.
78
+ *
79
+ * The fallback button is rendered by this element and says so in its own
80
+ * template. A trigger the consumer slotted is their markup, and the state it
81
+ * needs to announce is state only this element holds: without this, the
82
+ * arrangement this component recommends, an icon button slotted as the
83
+ * trigger, is a control that opens a menu and never says it has one. A
84
+ * consumer who has to mirror `open` back onto their own trigger is a consumer
85
+ * who will forget, and the failure is silent to everyone who can see the
86
+ * screen.
87
+ *
88
+ * **Every word of that survives; the mechanism does not.** This wrote
89
+ * `aria-expanded` and `aria-haspopup` onto the consumer's element with
90
+ * `setAttribute`, and measured against React 19.2.8 that is a hydration
91
+ * mismatch React reports and does not patch up. `tellDisclosure` carries the
92
+ * argument and the measurement: the state travels as a property now, into the
93
+ * trigger's own shadow root, where React neither looks nor compares.
94
+ *
95
+ * `aria-haspopup` goes with it rather than being written separately. It is a
96
+ * constant, so it could stay an attribute without changing on every open, and
97
+ * an attribute the consumer's server never sent is a mismatch whether or not
98
+ * it moves afterwards: that was measured too, both load orders. A trigger that
99
+ * says it is expanded is already saying it has something to expand.
100
+ */
101
+ private announce;
102
+ protected updated(changed: PropertyValues): void;
103
+ /**
104
+ * The control that opens it, behind a seam the styled tier can move.
105
+ *
106
+ * **This is the case the tier rule blocks and a render method unblocks.** A
107
+ * bare `<button>` is what the headless tier can write: it must not reach for
108
+ * `helix-button`, which lives a tier above and would make `headless` depend
109
+ * on `web`. So the base draws the plain control and a tier that has buttons
110
+ * of its own overrides this to use one, which is the whole shape #76 exists
111
+ * for. Written inline the only way to change it was to reimplement the
112
+ * template, panel and all.
113
+ */
114
+ protected renderTrigger(): TemplateResult;
115
+ protected render(): TemplateResult;
116
+ }
117
+ declare global {
118
+ interface HTMLElementTagNameMap {
119
+ 'helix-headless-speed-dial': HelixHeadlessSpeedDial;
120
+ }
121
+ }
122
+ export {};