@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.
- package/LICENSE +21 -0
- package/custom-elements.json +75202 -0
- package/dist/accordion/index.d.ts +2 -0
- package/dist/accordion/index.js +2 -0
- package/dist/accordion/item/accordion-item.d.ts +141 -0
- package/dist/accordion/item/accordion-item.js +214 -0
- package/dist/accordion/root/accordion-root.d.ts +57 -0
- package/dist/accordion/root/accordion-root.js +96 -0
- package/dist/announcement/index.d.ts +1 -0
- package/dist/announcement/index.js +1 -0
- package/dist/announcement/root/announcement-root.d.ts +106 -0
- package/dist/announcement/root/announcement-root.js +144 -0
- package/dist/app-header/index.d.ts +1 -0
- package/dist/app-header/index.js +1 -0
- package/dist/app-header/root/app-header-root.d.ts +113 -0
- package/dist/app-header/root/app-header-root.js +147 -0
- package/dist/avatar/group/avatar-group.d.ts +116 -0
- package/dist/avatar/group/avatar-group.js +136 -0
- package/dist/avatar/index.d.ts +2 -0
- package/dist/avatar/index.js +2 -0
- package/dist/avatar/root/avatar-root.d.ts +71 -0
- package/dist/avatar/root/avatar-root.js +147 -0
- package/dist/badge/index.d.ts +1 -0
- package/dist/badge/index.js +1 -0
- package/dist/badge/root/badge-root.d.ts +61 -0
- package/dist/badge/root/badge-root.js +121 -0
- package/dist/bar-chart/index.d.ts +1 -0
- package/dist/bar-chart/index.js +1 -0
- package/dist/bar-chart/root/bar-chart-root.d.ts +266 -0
- package/dist/bar-chart/root/bar-chart-root.js +515 -0
- package/dist/blockquote/index.d.ts +1 -0
- package/dist/blockquote/index.js +1 -0
- package/dist/blockquote/root/blockquote-root.d.ts +51 -0
- package/dist/blockquote/root/blockquote-root.js +84 -0
- package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +104 -0
- package/dist/breadcrumbs/breadcrumb/breadcrumb.js +137 -0
- package/dist/breadcrumbs/index.d.ts +2 -0
- package/dist/breadcrumbs/index.js +2 -0
- package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +77 -0
- package/dist/breadcrumbs/root/breadcrumbs-root.js +94 -0
- package/dist/button/index.d.ts +1 -0
- package/dist/button/index.js +1 -0
- package/dist/button/root/button-root.d.ts +251 -0
- package/dist/button/root/button-root.js +401 -0
- package/dist/button-group/index.d.ts +1 -0
- package/dist/button-group/index.js +1 -0
- package/dist/button-group/root/button-group-root.d.ts +62 -0
- package/dist/button-group/root/button-group-root.js +62 -0
- package/dist/callout/index.d.ts +1 -0
- package/dist/callout/index.js +1 -0
- package/dist/callout/root/callout-root.d.ts +72 -0
- package/dist/callout/root/callout-root.js +90 -0
- package/dist/card/index.d.ts +1 -0
- package/dist/card/index.js +1 -0
- package/dist/card/root/card-root.d.ts +54 -0
- package/dist/card/root/card-root.js +71 -0
- package/dist/carousel/index.d.ts +1 -0
- package/dist/carousel/index.js +1 -0
- package/dist/carousel/root/carousel-root.d.ts +399 -0
- package/dist/carousel/root/carousel-root.js +723 -0
- package/dist/chat/composer/chat-composer.d.ts +160 -0
- package/dist/chat/composer/chat-composer.js +273 -0
- package/dist/chat/index.d.ts +3 -0
- package/dist/chat/index.js +3 -0
- package/dist/chat/message/chat-message.d.ts +170 -0
- package/dist/chat/message/chat-message.js +271 -0
- package/dist/chat/root/chat-root.d.ts +216 -0
- package/dist/chat/root/chat-root.js +389 -0
- package/dist/checkbox/index.d.ts +1 -0
- package/dist/checkbox/index.js +1 -0
- package/dist/checkbox/root/checkbox-root.d.ts +108 -0
- package/dist/checkbox/root/checkbox-root.js +207 -0
- package/dist/checkbox-group/index.d.ts +1 -0
- package/dist/checkbox-group/index.js +1 -0
- package/dist/checkbox-group/root/checkbox-group-root.d.ts +155 -0
- package/dist/checkbox-group/root/checkbox-group-root.js +293 -0
- package/dist/code/index.d.ts +1 -0
- package/dist/code/index.js +1 -0
- package/dist/code/root/code-root.d.ts +36 -0
- package/dist/code/root/code-root.js +43 -0
- package/dist/code-block/index.d.ts +1 -0
- package/dist/code-block/index.js +1 -0
- package/dist/code-block/root/code-block-root.d.ts +112 -0
- package/dist/code-block/root/code-block-root.js +155 -0
- package/dist/color-input/index.d.ts +1 -0
- package/dist/color-input/index.js +1 -0
- package/dist/color-input/root/color-input-root.d.ts +227 -0
- package/dist/color-input/root/color-input-root.js +456 -0
- package/dist/color-picker/color.d.ts +74 -0
- package/dist/color-picker/color.js +238 -0
- package/dist/color-picker/index.d.ts +2 -0
- package/dist/color-picker/index.js +2 -0
- package/dist/color-picker/root/color-picker-root.d.ts +303 -0
- package/dist/color-picker/root/color-picker-root.js +576 -0
- package/dist/combobox/index.d.ts +1 -0
- package/dist/combobox/index.js +1 -0
- package/dist/combobox/root/combobox-root.d.ts +396 -0
- package/dist/combobox/root/combobox-root.js +808 -0
- package/dist/command/index.d.ts +1 -0
- package/dist/command/index.js +1 -0
- package/dist/command/root/command-root.d.ts +166 -0
- package/dist/command/root/command-root.js +353 -0
- package/dist/copy-button/index.d.ts +1 -0
- package/dist/copy-button/index.js +1 -0
- package/dist/copy-button/root/copy-button-root.d.ts +154 -0
- package/dist/copy-button/root/copy-button-root.js +225 -0
- package/dist/data-table/index.d.ts +2 -0
- package/dist/data-table/index.js +2 -0
- package/dist/data-table/root/data-table-root.d.ts +392 -0
- package/dist/data-table/root/data-table-root.js +729 -0
- package/dist/data-table/root/order.d.ts +116 -0
- package/dist/data-table/root/order.js +175 -0
- package/dist/date-input/index.d.ts +1 -0
- package/dist/date-input/index.js +1 -0
- package/dist/date-input/root/date-input-root.d.ts +361 -0
- package/dist/date-input/root/date-input-root.js +791 -0
- package/dist/date-picker/index.d.ts +1 -0
- package/dist/date-picker/index.js +1 -0
- package/dist/date-picker/root/date-picker-root.d.ts +361 -0
- package/dist/date-picker/root/date-picker-root.js +837 -0
- package/dist/dialog/index.d.ts +1 -0
- package/dist/dialog/index.js +1 -0
- package/dist/dialog/root/dialog-root.d.ts +185 -0
- package/dist/dialog/root/dialog-root.js +319 -0
- package/dist/divider/index.d.ts +1 -0
- package/dist/divider/index.js +1 -0
- package/dist/divider/root/divider-root.d.ts +68 -0
- package/dist/divider/root/divider-root.js +116 -0
- package/dist/donut-chart/index.d.ts +1 -0
- package/dist/donut-chart/index.js +1 -0
- package/dist/donut-chart/root/donut-chart-root.d.ts +209 -0
- package/dist/donut-chart/root/donut-chart-root.js +395 -0
- package/dist/drawer/index.d.ts +1 -0
- package/dist/drawer/index.js +1 -0
- package/dist/drawer/root/drawer-root.d.ts +144 -0
- package/dist/drawer/root/drawer-root.js +222 -0
- package/dist/drilldown/index.d.ts +2 -0
- package/dist/drilldown/index.js +2 -0
- package/dist/drilldown/item/drilldown-item.d.ts +87 -0
- package/dist/drilldown/item/drilldown-item.js +152 -0
- package/dist/drilldown/root/drilldown-root.d.ts +115 -0
- package/dist/drilldown/root/drilldown-root.js +263 -0
- package/dist/element-events.generated.d.ts +1 -0
- package/dist/element-events.generated.js +125 -0
- package/dist/empty/index.d.ts +1 -0
- package/dist/empty/index.js +1 -0
- package/dist/empty/root/empty-root.d.ts +47 -0
- package/dist/empty/root/empty-root.js +68 -0
- package/dist/file-input/index.d.ts +1 -0
- package/dist/file-input/index.js +1 -0
- package/dist/file-input/root/file-input-root.d.ts +196 -0
- package/dist/file-input/root/file-input-root.js +488 -0
- package/dist/format-date/index.d.ts +1 -0
- package/dist/format-date/index.js +1 -0
- package/dist/format-date/root/format-date-root.d.ts +151 -0
- package/dist/format-date/root/format-date-root.js +266 -0
- package/dist/heatmap/index.d.ts +2 -0
- package/dist/heatmap/index.js +2 -0
- package/dist/heatmap/root/buckets.d.ts +62 -0
- package/dist/heatmap/root/buckets.js +85 -0
- package/dist/heatmap/root/heatmap-root.d.ts +330 -0
- package/dist/heatmap/root/heatmap-root.js +526 -0
- package/dist/icon/index.d.ts +1 -0
- package/dist/icon/index.js +1 -0
- package/dist/icon/root/icon-root.d.ts +53 -0
- package/dist/icon/root/icon-root.js +93 -0
- package/dist/icon-button/index.d.ts +1 -0
- package/dist/icon-button/index.js +1 -0
- package/dist/icon-button/root/icon-button-root.d.ts +40 -0
- package/dist/icon-button/root/icon-button-root.js +46 -0
- package/dist/image/index.d.ts +1 -0
- package/dist/image/index.js +1 -0
- package/dist/image/root/image-root.d.ts +213 -0
- package/dist/image/root/image-root.js +335 -0
- package/dist/index.d.ts +99 -0
- package/dist/index.js +99 -0
- package/dist/input/index.d.ts +1 -0
- package/dist/input/index.js +1 -0
- package/dist/input/root/input-root.d.ts +281 -0
- package/dist/input/root/input-root.js +472 -0
- package/dist/kbd/index.d.ts +1 -0
- package/dist/kbd/index.js +1 -0
- package/dist/kbd/root/kbd-root.d.ts +98 -0
- package/dist/kbd/root/kbd-root.js +230 -0
- package/dist/legend/index.d.ts +1 -0
- package/dist/legend/index.js +1 -0
- package/dist/legend/root/legend-root.d.ts +83 -0
- package/dist/legend/root/legend-root.js +125 -0
- package/dist/line-chart/index.d.ts +1 -0
- package/dist/line-chart/index.js +1 -0
- package/dist/line-chart/root/line-chart-root.d.ts +238 -0
- package/dist/line-chart/root/line-chart-root.js +365 -0
- package/dist/list/index.d.ts +2 -0
- package/dist/list/index.js +2 -0
- package/dist/list/item/list-item.d.ts +95 -0
- package/dist/list/item/list-item.js +148 -0
- package/dist/list/root/list-root.d.ts +72 -0
- package/dist/list/root/list-root.js +61 -0
- package/dist/listbox/index.d.ts +1 -0
- package/dist/listbox/index.js +1 -0
- package/dist/listbox/root/listbox-root.d.ts +357 -0
- package/dist/listbox/root/listbox-root.js +890 -0
- package/dist/loader/index.d.ts +1 -0
- package/dist/loader/index.js +1 -0
- package/dist/loader/root/loader-root.d.ts +52 -0
- package/dist/loader/root/loader-root.js +74 -0
- package/dist/megamenu/index.d.ts +1 -0
- package/dist/megamenu/index.js +1 -0
- package/dist/megamenu/root/megamenu-root.d.ts +254 -0
- package/dist/megamenu/root/megamenu-root.js +526 -0
- package/dist/menu/index.d.ts +2 -0
- package/dist/menu/index.js +2 -0
- package/dist/menu/item/menu-item.d.ts +231 -0
- package/dist/menu/item/menu-item.js +405 -0
- package/dist/menu/root/menu-root.d.ts +158 -0
- package/dist/menu/root/menu-root.js +422 -0
- package/dist/meter/index.d.ts +1 -0
- package/dist/meter/index.js +1 -0
- package/dist/meter/root/meter-root.d.ts +234 -0
- package/dist/meter/root/meter-root.js +316 -0
- package/dist/navigation/index.d.ts +1 -0
- package/dist/navigation/index.js +1 -0
- package/dist/navigation/root/navigation-root.d.ts +55 -0
- package/dist/navigation/root/navigation-root.js +130 -0
- package/dist/notifications/index.d.ts +2 -0
- package/dist/notifications/index.js +2 -0
- package/dist/notifications/notification/notification.d.ts +181 -0
- package/dist/notifications/notification/notification.js +305 -0
- package/dist/notifications/root/notifications-root.d.ts +168 -0
- package/dist/notifications/root/notifications-root.js +291 -0
- package/dist/number-input/index.d.ts +1 -0
- package/dist/number-input/index.js +1 -0
- package/dist/number-input/root/number-input-root.d.ts +282 -0
- package/dist/number-input/root/number-input-root.js +592 -0
- package/dist/option/group/option-group.d.ts +38 -0
- package/dist/option/group/option-group.js +58 -0
- package/dist/option/index.d.ts +2 -0
- package/dist/option/index.js +2 -0
- package/dist/option/root/option-root.d.ts +194 -0
- package/dist/option/root/option-root.js +247 -0
- package/dist/outline/index.d.ts +1 -0
- package/dist/outline/index.js +1 -0
- package/dist/outline/root/outline-root.d.ts +237 -0
- package/dist/outline/root/outline-root.js +519 -0
- package/dist/pagination/index.d.ts +3 -0
- package/dist/pagination/index.js +3 -0
- package/dist/pagination/root/pagination-root.d.ts +390 -0
- package/dist/pagination/root/pagination-root.js +695 -0
- package/dist/pagination/size/pagination-size.d.ts +127 -0
- package/dist/pagination/size/pagination-size.js +232 -0
- package/dist/pagination/summary/pagination-summary.d.ts +90 -0
- package/dist/pagination/summary/pagination-summary.js +145 -0
- package/dist/pin-input/index.d.ts +1 -0
- package/dist/pin-input/index.js +1 -0
- package/dist/pin-input/root/pin-input-root.d.ts +292 -0
- package/dist/pin-input/root/pin-input-root.js +553 -0
- package/dist/popover/index.d.ts +1 -0
- package/dist/popover/index.js +1 -0
- package/dist/popover/root/popover-root.d.ts +108 -0
- package/dist/popover/root/popover-root.js +231 -0
- package/dist/progress/index.d.ts +1 -0
- package/dist/progress/index.js +1 -0
- package/dist/progress/root/progress-root.d.ts +125 -0
- package/dist/progress/root/progress-root.js +212 -0
- package/dist/qr-code/index.d.ts +1 -0
- package/dist/qr-code/index.js +1 -0
- package/dist/qr-code/root/qr-code-root.d.ts +93 -0
- package/dist/qr-code/root/qr-code-root.js +233 -0
- package/dist/quote/index.d.ts +1 -0
- package/dist/quote/index.js +1 -0
- package/dist/quote/root/quote-root.d.ts +36 -0
- package/dist/quote/root/quote-root.js +50 -0
- package/dist/radio/group/radio-group.d.ts +84 -0
- package/dist/radio/group/radio-group.js +170 -0
- package/dist/radio/index.d.ts +2 -0
- package/dist/radio/index.js +2 -0
- package/dist/radio/root/radio-root.d.ts +102 -0
- package/dist/radio/root/radio-root.js +151 -0
- package/dist/rating/index.d.ts +1 -0
- package/dist/rating/index.js +1 -0
- package/dist/rating/root/rating-root.d.ts +242 -0
- package/dist/rating/root/rating-root.js +484 -0
- package/dist/scroll-area/index.d.ts +1 -0
- package/dist/scroll-area/index.js +1 -0
- package/dist/scroll-area/root/scroll-area-root.d.ts +96 -0
- package/dist/scroll-area/root/scroll-area-root.js +215 -0
- package/dist/select/index.d.ts +1 -0
- package/dist/select/index.js +1 -0
- package/dist/select/root/select-root.d.ts +170 -0
- package/dist/select/root/select-root.js +419 -0
- package/dist/skeleton/index.d.ts +1 -0
- package/dist/skeleton/index.js +1 -0
- package/dist/skeleton/root/skeleton-root.d.ts +31 -0
- package/dist/skeleton/root/skeleton-root.js +42 -0
- package/dist/slider/index.d.ts +1 -0
- package/dist/slider/index.js +1 -0
- package/dist/slider/root/slider-root.d.ts +235 -0
- package/dist/slider/root/slider-root.js +488 -0
- package/dist/sparkline/index.d.ts +1 -0
- package/dist/sparkline/index.js +1 -0
- package/dist/sparkline/root/sparkline-root.d.ts +147 -0
- package/dist/sparkline/root/sparkline-root.js +278 -0
- package/dist/speed-dial/index.d.ts +2 -0
- package/dist/speed-dial/index.js +2 -0
- package/dist/speed-dial/item/speed-dial-item.d.ts +71 -0
- package/dist/speed-dial/item/speed-dial-item.js +113 -0
- package/dist/speed-dial/root/speed-dial-root.d.ts +122 -0
- package/dist/speed-dial/root/speed-dial-root.js +251 -0
- package/dist/splitter/index.d.ts +1 -0
- package/dist/splitter/index.js +1 -0
- package/dist/splitter/root/splitter-root.d.ts +491 -0
- package/dist/splitter/root/splitter-root.js +1030 -0
- package/dist/stat/group/stat-group.d.ts +30 -0
- package/dist/stat/group/stat-group.js +47 -0
- package/dist/stat/index.d.ts +2 -0
- package/dist/stat/index.js +2 -0
- package/dist/stat/root/stat-root.d.ts +62 -0
- package/dist/stat/root/stat-root.js +51 -0
- package/dist/steps/index.d.ts +2 -0
- package/dist/steps/index.js +2 -0
- package/dist/steps/root/steps-root.d.ts +110 -0
- package/dist/steps/root/steps-root.js +130 -0
- package/dist/steps/step/step.d.ts +139 -0
- package/dist/steps/step/step.js +215 -0
- package/dist/switch/index.d.ts +1 -0
- package/dist/switch/index.js +1 -0
- package/dist/switch/root/switch-root.d.ts +74 -0
- package/dist/switch/root/switch-root.js +153 -0
- package/dist/table/cell/table-cell.d.ts +34 -0
- package/dist/table/cell/table-cell.js +52 -0
- package/dist/table/column/table-column.d.ts +165 -0
- package/dist/table/column/table-column.js +222 -0
- package/dist/table/index.d.ts +4 -0
- package/dist/table/index.js +4 -0
- package/dist/table/root/table-root.d.ts +98 -0
- package/dist/table/root/table-root.js +161 -0
- package/dist/table/row/table-row.d.ts +27 -0
- package/dist/table/row/table-row.js +42 -0
- package/dist/tabs/index.d.ts +3 -0
- package/dist/tabs/index.js +3 -0
- package/dist/tabs/panel/tab-panel.d.ts +67 -0
- package/dist/tabs/panel/tab-panel.js +98 -0
- package/dist/tabs/root/tabs-root.d.ts +123 -0
- package/dist/tabs/root/tabs-root.js +217 -0
- package/dist/tabs/tab/tab.d.ts +64 -0
- package/dist/tabs/tab/tab.js +116 -0
- package/dist/tag/index.d.ts +1 -0
- package/dist/tag/index.js +1 -0
- package/dist/tag/root/tag-root.d.ts +41 -0
- package/dist/tag/root/tag-root.js +67 -0
- package/dist/textarea/index.d.ts +1 -0
- package/dist/textarea/index.js +1 -0
- package/dist/textarea/root/textarea-root.d.ts +215 -0
- package/dist/textarea/root/textarea-root.js +380 -0
- package/dist/time-input/index.d.ts +1 -0
- package/dist/time-input/index.js +1 -0
- package/dist/time-input/root/time-input-root.d.ts +322 -0
- package/dist/time-input/root/time-input-root.js +661 -0
- package/dist/time-picker/index.d.ts +1 -0
- package/dist/time-picker/index.js +1 -0
- package/dist/time-picker/root/time-picker-root.d.ts +380 -0
- package/dist/time-picker/root/time-picker-root.js +669 -0
- package/dist/timeline/index.d.ts +2 -0
- package/dist/timeline/index.js +2 -0
- package/dist/timeline/item/timeline-item.d.ts +81 -0
- package/dist/timeline/item/timeline-item.js +128 -0
- package/dist/timeline/root/timeline-root.d.ts +52 -0
- package/dist/timeline/root/timeline-root.js +72 -0
- package/dist/toast/index.d.ts +2 -0
- package/dist/toast/index.js +2 -0
- package/dist/toast/item/toast-item.d.ts +183 -0
- package/dist/toast/item/toast-item.js +345 -0
- package/dist/toast/root/toast-root.d.ts +72 -0
- package/dist/toast/root/toast-root.js +87 -0
- package/dist/toggle/group/toggle-group.d.ts +140 -0
- package/dist/toggle/group/toggle-group.js +278 -0
- package/dist/toggle/index.d.ts +2 -0
- package/dist/toggle/index.js +2 -0
- package/dist/toggle/root/toggle-root.d.ts +99 -0
- package/dist/toggle/root/toggle-root.js +146 -0
- package/dist/toolbar/index.d.ts +1 -0
- package/dist/toolbar/index.js +1 -0
- package/dist/toolbar/root/toolbar-root.d.ts +105 -0
- package/dist/toolbar/root/toolbar-root.js +260 -0
- package/dist/tooltip/index.d.ts +1 -0
- package/dist/tooltip/index.js +1 -0
- package/dist/tooltip/root/tooltip-root.d.ts +388 -0
- package/dist/tooltip/root/tooltip-root.js +707 -0
- package/dist/tour/index.d.ts +2 -0
- package/dist/tour/index.js +2 -0
- package/dist/tour/root/tour-root.d.ts +161 -0
- package/dist/tour/root/tour-root.js +351 -0
- package/dist/tour/stop/tour-stop.d.ts +131 -0
- package/dist/tour/stop/tour-stop.js +249 -0
- package/dist/tree/index.d.ts +2 -0
- package/dist/tree/index.js +2 -0
- package/dist/tree/item/tree-item.d.ts +208 -0
- package/dist/tree/item/tree-item.js +381 -0
- package/dist/tree/root/tree-root.d.ts +88 -0
- package/dist/tree/root/tree-root.js +287 -0
- package/dist/trend/index.d.ts +1 -0
- package/dist/trend/index.js +1 -0
- package/dist/trend/root/trend-root.d.ts +67 -0
- package/dist/trend/root/trend-root.js +106 -0
- package/dist/video/index.d.ts +1 -0
- package/dist/video/index.js +1 -0
- package/dist/video/root/video-root.d.ts +711 -0
- package/dist/video/root/video-root.js +1821 -0
- package/dist/video-playlist/index.d.ts +3 -0
- package/dist/video-playlist/index.js +3 -0
- package/dist/video-playlist/item/video-playlist-item.d.ts +101 -0
- package/dist/video-playlist/item/video-playlist-item.js +162 -0
- package/dist/video-playlist/menu/video-playlist-menu.d.ts +121 -0
- package/dist/video-playlist/menu/video-playlist-menu.js +237 -0
- package/dist/video-playlist/root/video-playlist-root.d.ts +108 -0
- package/dist/video-playlist/root/video-playlist-root.js +218 -0
- package/dist/virtual-list/index.d.ts +1 -0
- package/dist/virtual-list/index.js +1 -0
- package/dist/virtual-list/root/virtual-list-root.d.ts +121 -0
- package/dist/virtual-list/root/virtual-list-root.js +221 -0
- package/jsx.d.ts +49767 -0
- package/package.json +77 -0
- package/svelte.d.ts +129 -0
- package/vue.d.ts +9242 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { HelixElement } from '@fusion.dev/helix-core';
|
|
2
|
+
import { type PropertyValues, type TemplateResult } from 'lit';
|
|
3
|
+
/**
|
|
4
|
+
* @summary One step in a breadcrumb trail.
|
|
5
|
+
*
|
|
6
|
+
* @description
|
|
7
|
+
* Contributes the separator, the list-item role, and the link itself where one
|
|
8
|
+
* is wanted.
|
|
9
|
+
*
|
|
10
|
+
* **`href` makes the crumb the link.** *Added 19 Aug 2026, reversing the note
|
|
11
|
+
* that said an anchor could not be rendered here.* That note was right that a
|
|
12
|
+
* router cannot reach an anchor inside a shadow root, and wrong that this
|
|
13
|
+
* settles it: the consumer restores the soft navigation by intercepting the
|
|
14
|
+
* click on the way out, which is what `Tree.Item` and `List.Item` both do.
|
|
15
|
+
* What the anchor buys is the whole crumb as a target, Enter, middle click, the
|
|
16
|
+
* status bar, and a trail that works before any JavaScript runs.
|
|
17
|
+
*
|
|
18
|
+
* **And the parent needs it.** A trail that collapses has to rebuild its hidden
|
|
19
|
+
* crumbs somewhere else, which means reading each one's destination. From a
|
|
20
|
+
* property that is a read; from a consumer's slotted markup it is a hunt for an
|
|
21
|
+
* anchor and a guess about which element is the link.
|
|
22
|
+
*
|
|
23
|
+
* A crumb with no `href` is unchanged: the consumer slots whatever they like,
|
|
24
|
+
* including their own anchor, and this renders a plain `<span>` around it.
|
|
25
|
+
*
|
|
26
|
+
* Each item renders its own separator and hides it with `:host(:first-child)`,
|
|
27
|
+
* so the trail needs no index and no coordination from the parent. `:host()`
|
|
28
|
+
* takes a structural pseudo-class, unlike `:has()`, which it rejects.
|
|
29
|
+
*
|
|
30
|
+
* The current page is text, not a link. Linking a page to itself is a known
|
|
31
|
+
* screen-reader annoyance, and `aria-current="page"` on the host is what
|
|
32
|
+
* conveys position.
|
|
33
|
+
*
|
|
34
|
+
* @since 0.1.0
|
|
35
|
+
* @status stable
|
|
36
|
+
* @aliases Crumb
|
|
37
|
+
* @documentation https://helix.fusion.dev/components/breadcrumbs
|
|
38
|
+
*
|
|
39
|
+
* @slot - The step's label. Without an `href` this may be the consumer's own
|
|
40
|
+
* anchor, styled with `data-link="quiet"`, since a slotted anchor belongs to the
|
|
41
|
+
* outer tree and cannot be reached from this component's styles.
|
|
42
|
+
* @slot end - After it, for a count or a mark.
|
|
43
|
+
* @slot separator - Replaces the chevron shown before this item.
|
|
44
|
+
* @slot start - Before the label, for an icon.
|
|
45
|
+
*
|
|
46
|
+
* @csspart link - The crumb itself, which is an `<a>` where `href` is set.
|
|
47
|
+
* @csspart separator - The separator preceding the item.
|
|
48
|
+
* @csspart separator-mark - The glyph between this crumb and the next, where none is slotted.
|
|
49
|
+
*/
|
|
50
|
+
export declare class HelixHeadlessBreadcrumb extends HelixElement {
|
|
51
|
+
/**
|
|
52
|
+
* Whether this item is the page the reader is on.
|
|
53
|
+
*/
|
|
54
|
+
current: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Where the crumb goes, and nothing where it is the current page.
|
|
57
|
+
*
|
|
58
|
+
* **Optional and reflected, because a stylesheet does select on it.**
|
|
59
|
+
* `breadcrumb.css` writes `:host(:not([href])) [part="link"]` to take the
|
|
60
|
+
* block padding off a crumb that is not a link, so the attribute is what
|
|
61
|
+
* decides how tall a crumb is. Unreflected, an `href` set from script reached
|
|
62
|
+
* the property, rendered the anchor, and left the host looking unlinked: the
|
|
63
|
+
* crumb drew at 20px where a markup twin drew at 28.
|
|
64
|
+
*
|
|
65
|
+
* *This said the opposite until 27 Aug 2026*, and named the reason as
|
|
66
|
+
* "nothing selects on it", which was not true when it was written. The
|
|
67
|
+
* paragraph is worth keeping because the rest of it is right and is what makes
|
|
68
|
+
* this optional rather than defaulted: an `href` written onto every host would
|
|
69
|
+
* be a link to the current page on every crumb nobody asked to be one. That is
|
|
70
|
+
* the general rule as well, that a reflected property takes no default, so the
|
|
71
|
+
* two agree.
|
|
72
|
+
*
|
|
73
|
+
* Found by the picture comparison rather than by reading: React assigns a
|
|
74
|
+
* matching property instead of an attribute, so every crumb in the React twin
|
|
75
|
+
* of `breadcrumbs/links` lost its padding at once.
|
|
76
|
+
*/
|
|
77
|
+
href?: string;
|
|
78
|
+
/**
|
|
79
|
+
* Where the link opens, for the rare crumb that leaves the site.
|
|
80
|
+
*/
|
|
81
|
+
target: string;
|
|
82
|
+
/**
|
|
83
|
+
* What the link declares about where it goes.
|
|
84
|
+
*
|
|
85
|
+
* The consumer's decision.
|
|
86
|
+
*/
|
|
87
|
+
rel: string;
|
|
88
|
+
protected willUpdate(changed: PropertyValues): void;
|
|
89
|
+
/**
|
|
90
|
+
* The mark between one crumb and the next.
|
|
91
|
+
*
|
|
92
|
+
* The chevron is the slot's own fallback, so replacing it is a matter of
|
|
93
|
+
* filling the slot and costs the consumer no way to opt out of the default.
|
|
94
|
+
* The seam answers the other half: a tier drawing its own separator gets it
|
|
95
|
+
* without reimplementing the crumb, its link and its current-page branch.
|
|
96
|
+
*/
|
|
97
|
+
protected renderSeparator(): TemplateResult;
|
|
98
|
+
protected render(): TemplateResult;
|
|
99
|
+
}
|
|
100
|
+
declare global {
|
|
101
|
+
interface HTMLElementTagNameMap {
|
|
102
|
+
'helix-headless-breadcrumb': HelixHeadlessBreadcrumb;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
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, hostAria } from '@fusion.dev/helix-core';
|
|
8
|
+
import { caretRight } from '@fusion.dev/helix-icons';
|
|
9
|
+
import { html, nothing } from 'lit';
|
|
10
|
+
import { property } from 'lit/decorators.js';
|
|
11
|
+
import { unsafeSVG } from 'lit/directives/unsafe-svg.js';
|
|
12
|
+
/**
|
|
13
|
+
* @summary One step in a breadcrumb trail.
|
|
14
|
+
*
|
|
15
|
+
* @description
|
|
16
|
+
* Contributes the separator, the list-item role, and the link itself where one
|
|
17
|
+
* is wanted.
|
|
18
|
+
*
|
|
19
|
+
* **`href` makes the crumb the link.** *Added 19 Aug 2026, reversing the note
|
|
20
|
+
* that said an anchor could not be rendered here.* That note was right that a
|
|
21
|
+
* router cannot reach an anchor inside a shadow root, and wrong that this
|
|
22
|
+
* settles it: the consumer restores the soft navigation by intercepting the
|
|
23
|
+
* click on the way out, which is what `Tree.Item` and `List.Item` both do.
|
|
24
|
+
* What the anchor buys is the whole crumb as a target, Enter, middle click, the
|
|
25
|
+
* status bar, and a trail that works before any JavaScript runs.
|
|
26
|
+
*
|
|
27
|
+
* **And the parent needs it.** A trail that collapses has to rebuild its hidden
|
|
28
|
+
* crumbs somewhere else, which means reading each one's destination. From a
|
|
29
|
+
* property that is a read; from a consumer's slotted markup it is a hunt for an
|
|
30
|
+
* anchor and a guess about which element is the link.
|
|
31
|
+
*
|
|
32
|
+
* A crumb with no `href` is unchanged: the consumer slots whatever they like,
|
|
33
|
+
* including their own anchor, and this renders a plain `<span>` around it.
|
|
34
|
+
*
|
|
35
|
+
* Each item renders its own separator and hides it with `:host(:first-child)`,
|
|
36
|
+
* so the trail needs no index and no coordination from the parent. `:host()`
|
|
37
|
+
* takes a structural pseudo-class, unlike `:has()`, which it rejects.
|
|
38
|
+
*
|
|
39
|
+
* The current page is text, not a link. Linking a page to itself is a known
|
|
40
|
+
* screen-reader annoyance, and `aria-current="page"` on the host is what
|
|
41
|
+
* conveys position.
|
|
42
|
+
*
|
|
43
|
+
* @since 0.1.0
|
|
44
|
+
* @status stable
|
|
45
|
+
* @aliases Crumb
|
|
46
|
+
* @documentation https://helix.fusion.dev/components/breadcrumbs
|
|
47
|
+
*
|
|
48
|
+
* @slot - The step's label. Without an `href` this may be the consumer's own
|
|
49
|
+
* anchor, styled with `data-link="quiet"`, since a slotted anchor belongs to the
|
|
50
|
+
* outer tree and cannot be reached from this component's styles.
|
|
51
|
+
* @slot end - After it, for a count or a mark.
|
|
52
|
+
* @slot separator - Replaces the chevron shown before this item.
|
|
53
|
+
* @slot start - Before the label, for an icon.
|
|
54
|
+
*
|
|
55
|
+
* @csspart link - The crumb itself, which is an `<a>` where `href` is set.
|
|
56
|
+
* @csspart separator - The separator preceding the item.
|
|
57
|
+
* @csspart separator-mark - The glyph between this crumb and the next, where none is slotted.
|
|
58
|
+
*/
|
|
59
|
+
let HelixHeadlessBreadcrumb = class HelixHeadlessBreadcrumb extends HelixElement {
|
|
60
|
+
constructor() {
|
|
61
|
+
super(...arguments);
|
|
62
|
+
/**
|
|
63
|
+
* Whether this item is the page the reader is on.
|
|
64
|
+
*/
|
|
65
|
+
this.current = false;
|
|
66
|
+
/**
|
|
67
|
+
* Where the link opens, for the rare crumb that leaves the site.
|
|
68
|
+
*/
|
|
69
|
+
this.target = '';
|
|
70
|
+
/**
|
|
71
|
+
* What the link declares about where it goes.
|
|
72
|
+
*
|
|
73
|
+
* The consumer's decision.
|
|
74
|
+
*/
|
|
75
|
+
this.rel = '';
|
|
76
|
+
}
|
|
77
|
+
willUpdate(changed) {
|
|
78
|
+
super.willUpdate(changed);
|
|
79
|
+
// On the host, because the item is an `<ol>` child in the flat tree and the
|
|
80
|
+
// role has to be there for the list to have items. In `willUpdate` rather
|
|
81
|
+
// than `connectedCallback`, which the server never calls.
|
|
82
|
+
hostAria(this.internals, { role: 'listitem' });
|
|
83
|
+
this.internals.ariaCurrent = this.current ? 'page' : null;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The mark between one crumb and the next.
|
|
87
|
+
*
|
|
88
|
+
* The chevron is the slot's own fallback, so replacing it is a matter of
|
|
89
|
+
* filling the slot and costs the consumer no way to opt out of the default.
|
|
90
|
+
* The seam answers the other half: a tier drawing its own separator gets it
|
|
91
|
+
* without reimplementing the crumb, its link and its current-page branch.
|
|
92
|
+
*/
|
|
93
|
+
renderSeparator() {
|
|
94
|
+
return html `<slot name="separator"
|
|
95
|
+
><svg part="separator-mark" fill="currentColor" viewBox=${caretRight.viewBox}>
|
|
96
|
+
${unsafeSVG(caretRight.content)}
|
|
97
|
+
</svg></slot
|
|
98
|
+
>`;
|
|
99
|
+
}
|
|
100
|
+
render() {
|
|
101
|
+
/* The label and whatever flanks it, which is the same content whether or
|
|
102
|
+
not it is a link. Built once so the two branches below cannot drift. */
|
|
103
|
+
const label = html `<slot name="start"></slot><slot></slot><slot name="end"></slot>`;
|
|
104
|
+
/* The current page is text, not a link, whatever it was given: linking a
|
|
105
|
+
page to itself is a known screen-reader annoyance and `aria-current` is
|
|
106
|
+
what conveys position. So `current` wins over `href` rather than the two
|
|
107
|
+
contradicting each other in the markup. */
|
|
108
|
+
const linked = (this.href ?? '') !== '' && !this.current;
|
|
109
|
+
return html `<span part="separator" aria-hidden="true"
|
|
110
|
+
>${this.renderSeparator()}</span
|
|
111
|
+
>${linked
|
|
112
|
+
? html `<a
|
|
113
|
+
part="link"
|
|
114
|
+
href=${this.href ?? ''}
|
|
115
|
+
target=${this.target || nothing}
|
|
116
|
+
rel=${this.rel || nothing}
|
|
117
|
+
>${label}</a
|
|
118
|
+
>`
|
|
119
|
+
: html `<span part="link">${label}</span>`}`;
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
__decorate([
|
|
123
|
+
property({ reflect: true, type: Boolean })
|
|
124
|
+
], HelixHeadlessBreadcrumb.prototype, "current", void 0);
|
|
125
|
+
__decorate([
|
|
126
|
+
property({ reflect: true })
|
|
127
|
+
], HelixHeadlessBreadcrumb.prototype, "href", void 0);
|
|
128
|
+
__decorate([
|
|
129
|
+
property()
|
|
130
|
+
], HelixHeadlessBreadcrumb.prototype, "target", void 0);
|
|
131
|
+
__decorate([
|
|
132
|
+
property()
|
|
133
|
+
], HelixHeadlessBreadcrumb.prototype, "rel", void 0);
|
|
134
|
+
HelixHeadlessBreadcrumb = __decorate([
|
|
135
|
+
customElement('helix-headless-breadcrumb')
|
|
136
|
+
], HelixHeadlessBreadcrumb);
|
|
137
|
+
export { HelixHeadlessBreadcrumb };
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { HelixElement } from '@fusion.dev/helix-core';
|
|
2
|
+
import { type PropertyValues, type TemplateResult } from 'lit';
|
|
3
|
+
/**
|
|
4
|
+
* @summary Shows the path to the current page.
|
|
5
|
+
*
|
|
6
|
+
* @description
|
|
7
|
+
* The host is the landmark, so `aria-label` on it names the trail directly and
|
|
8
|
+
* there is no property mirroring one. A page may hold more than one navigation,
|
|
9
|
+
* and landmarks are how a screen-reader user chooses between them.
|
|
10
|
+
*
|
|
11
|
+
* `role="list"` is set explicitly on the `<ol>` even though it is already a
|
|
12
|
+
* list: removing the markers with `list-style: none` strips list semantics in
|
|
13
|
+
* Safari, and a breadcrumb trail always removes its markers.
|
|
14
|
+
*
|
|
15
|
+
* Items are slotted rather than wrapped, so they are `<ol>` children in the flat
|
|
16
|
+
* tree and each carries `role="listitem"` itself.
|
|
17
|
+
*
|
|
18
|
+
* **The trail does not measure itself, and the overflow is markup.** It held a
|
|
19
|
+
* `collapse` property, a `ResizeObserver` through `CollapseController`, an
|
|
20
|
+
* `overflowed` getter and a `helix-change` event, all to answer one question:
|
|
21
|
+
* how many crumbs fit. Removed 20 Aug 2026, because the question is the wrong
|
|
22
|
+
* one and answering it cost more than it returned.
|
|
23
|
+
*
|
|
24
|
+
* - **It can never reach the server.** There is no width without a DOM, so the
|
|
25
|
+
* server shipped every crumb and the client removed some after hydrating. A
|
|
26
|
+
* trail that collapses therefore painted wrong on every single load, and the
|
|
27
|
+
* SSR spec asserting "hides no crumb, whatever collapse says" was recording
|
|
28
|
+
* that as correct behavior rather than as the cost it is.
|
|
29
|
+
* - **The consumer already wrote the crumbs.** The measurement hid some, then
|
|
30
|
+
* announced which, so that the consumer could read them back off the element
|
|
31
|
+
* and clone them into menu items. The overflow example spent 32 lines of
|
|
32
|
+
* JavaScript making a round trip out of data that started in its own markup.
|
|
33
|
+
* - **Nobody specifies a breadcrumb in units of fit.** Designs say "keep the
|
|
34
|
+
* root and the current page, fold the middle", which is a fact about depth,
|
|
35
|
+
* or "fold below this width", which is a fact CSS knows. The arithmetic was
|
|
36
|
+
* the only thing that needed a width, and it was wrong three times in one day:
|
|
37
|
+
* the observer watched a container that did not exist yet, the gap between
|
|
38
|
+
* items went uncounted, and the result was still wrong at 34rem.
|
|
39
|
+
*
|
|
40
|
+
* So the trail lays out crumbs and separators, and the consumer writes what
|
|
41
|
+
* folds: a `helix-menu` of `helix-menu-item`s in a crumb, where the gap
|
|
42
|
+
* belongs. Server rendered, no observer, no stylesheet, and correct before the
|
|
43
|
+
* first script runs. A trail that should fold only at some widths is a
|
|
44
|
+
* container query in the consumer's own sheet, which is theirs to write and
|
|
45
|
+
* theirs to leave out.
|
|
46
|
+
*
|
|
47
|
+
* **And the crumbs carry no marker for any of it.** There was an `overflow`
|
|
48
|
+
* property on the crumb, which existed so the controller could tell a control
|
|
49
|
+
* from a step and so the trail could size it. With the controller gone the
|
|
50
|
+
* first use went with it, and the second is better answered by the crumb
|
|
51
|
+
* sizing whatever is slotted into it, which is true of every crumb rather than
|
|
52
|
+
* of one a consumer remembered to mark. What is left is a fact CSS can already
|
|
53
|
+
* see: the crumb with the menu in it is `:has(helix-menu)`, and the middle is
|
|
54
|
+
* `:not(:first-child, [current])`. A marker would be the design rule written
|
|
55
|
+
* twice, once in the HTML and once in the sheet, with nothing keeping the two
|
|
56
|
+
* honest.
|
|
57
|
+
*
|
|
58
|
+
* @since 0.1.0
|
|
59
|
+
* @status stable
|
|
60
|
+
* @category navigation
|
|
61
|
+
* @aliases Breadcrumb, Crumbs
|
|
62
|
+
* @documentation https://helix.fusion.dev/components/breadcrumbs
|
|
63
|
+
*
|
|
64
|
+
* @slot - The trail's items, in order from root to current page, with the
|
|
65
|
+
* crumb holding the fold wherever the gap should appear.
|
|
66
|
+
*
|
|
67
|
+
* @csspart list - The ordered list.
|
|
68
|
+
*/
|
|
69
|
+
export declare class HelixHeadlessBreadcrumbs extends HelixElement {
|
|
70
|
+
protected willUpdate(changed: PropertyValues): void;
|
|
71
|
+
protected render(): TemplateResult;
|
|
72
|
+
}
|
|
73
|
+
declare global {
|
|
74
|
+
interface HTMLElementTagNameMap {
|
|
75
|
+
'helix-headless-breadcrumbs': HelixHeadlessBreadcrumbs;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
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, hostAria } from '@fusion.dev/helix-core';
|
|
8
|
+
import { html } from 'lit';
|
|
9
|
+
/**
|
|
10
|
+
* @summary Shows the path to the current page.
|
|
11
|
+
*
|
|
12
|
+
* @description
|
|
13
|
+
* The host is the landmark, so `aria-label` on it names the trail directly and
|
|
14
|
+
* there is no property mirroring one. A page may hold more than one navigation,
|
|
15
|
+
* and landmarks are how a screen-reader user chooses between them.
|
|
16
|
+
*
|
|
17
|
+
* `role="list"` is set explicitly on the `<ol>` even though it is already a
|
|
18
|
+
* list: removing the markers with `list-style: none` strips list semantics in
|
|
19
|
+
* Safari, and a breadcrumb trail always removes its markers.
|
|
20
|
+
*
|
|
21
|
+
* Items are slotted rather than wrapped, so they are `<ol>` children in the flat
|
|
22
|
+
* tree and each carries `role="listitem"` itself.
|
|
23
|
+
*
|
|
24
|
+
* **The trail does not measure itself, and the overflow is markup.** It held a
|
|
25
|
+
* `collapse` property, a `ResizeObserver` through `CollapseController`, an
|
|
26
|
+
* `overflowed` getter and a `helix-change` event, all to answer one question:
|
|
27
|
+
* how many crumbs fit. Removed 20 Aug 2026, because the question is the wrong
|
|
28
|
+
* one and answering it cost more than it returned.
|
|
29
|
+
*
|
|
30
|
+
* - **It can never reach the server.** There is no width without a DOM, so the
|
|
31
|
+
* server shipped every crumb and the client removed some after hydrating. A
|
|
32
|
+
* trail that collapses therefore painted wrong on every single load, and the
|
|
33
|
+
* SSR spec asserting "hides no crumb, whatever collapse says" was recording
|
|
34
|
+
* that as correct behavior rather than as the cost it is.
|
|
35
|
+
* - **The consumer already wrote the crumbs.** The measurement hid some, then
|
|
36
|
+
* announced which, so that the consumer could read them back off the element
|
|
37
|
+
* and clone them into menu items. The overflow example spent 32 lines of
|
|
38
|
+
* JavaScript making a round trip out of data that started in its own markup.
|
|
39
|
+
* - **Nobody specifies a breadcrumb in units of fit.** Designs say "keep the
|
|
40
|
+
* root and the current page, fold the middle", which is a fact about depth,
|
|
41
|
+
* or "fold below this width", which is a fact CSS knows. The arithmetic was
|
|
42
|
+
* the only thing that needed a width, and it was wrong three times in one day:
|
|
43
|
+
* the observer watched a container that did not exist yet, the gap between
|
|
44
|
+
* items went uncounted, and the result was still wrong at 34rem.
|
|
45
|
+
*
|
|
46
|
+
* So the trail lays out crumbs and separators, and the consumer writes what
|
|
47
|
+
* folds: a `helix-menu` of `helix-menu-item`s in a crumb, where the gap
|
|
48
|
+
* belongs. Server rendered, no observer, no stylesheet, and correct before the
|
|
49
|
+
* first script runs. A trail that should fold only at some widths is a
|
|
50
|
+
* container query in the consumer's own sheet, which is theirs to write and
|
|
51
|
+
* theirs to leave out.
|
|
52
|
+
*
|
|
53
|
+
* **And the crumbs carry no marker for any of it.** There was an `overflow`
|
|
54
|
+
* property on the crumb, which existed so the controller could tell a control
|
|
55
|
+
* from a step and so the trail could size it. With the controller gone the
|
|
56
|
+
* first use went with it, and the second is better answered by the crumb
|
|
57
|
+
* sizing whatever is slotted into it, which is true of every crumb rather than
|
|
58
|
+
* of one a consumer remembered to mark. What is left is a fact CSS can already
|
|
59
|
+
* see: the crumb with the menu in it is `:has(helix-menu)`, and the middle is
|
|
60
|
+
* `:not(:first-child, [current])`. A marker would be the design rule written
|
|
61
|
+
* twice, once in the HTML and once in the sheet, with nothing keeping the two
|
|
62
|
+
* honest.
|
|
63
|
+
*
|
|
64
|
+
* @since 0.1.0
|
|
65
|
+
* @status stable
|
|
66
|
+
* @category navigation
|
|
67
|
+
* @aliases Breadcrumb, Crumbs
|
|
68
|
+
* @documentation https://helix.fusion.dev/components/breadcrumbs
|
|
69
|
+
*
|
|
70
|
+
* @slot - The trail's items, in order from root to current page, with the
|
|
71
|
+
* crumb holding the fold wherever the gap should appear.
|
|
72
|
+
*
|
|
73
|
+
* @csspart list - The ordered list.
|
|
74
|
+
*/
|
|
75
|
+
let HelixHeadlessBreadcrumbs = class HelixHeadlessBreadcrumbs extends HelixElement {
|
|
76
|
+
willUpdate(changed) {
|
|
77
|
+
super.willUpdate(changed);
|
|
78
|
+
// On the host through internals, so the landmark is the element itself and
|
|
79
|
+
// an author's `aria-label` names it without anything being copied inward.
|
|
80
|
+
hostAria(this.internals, { role: 'navigation' });
|
|
81
|
+
}
|
|
82
|
+
render() {
|
|
83
|
+
/* One slot. The crumb holding the fold is one the consumer placed in
|
|
84
|
+
source order, so there is nothing here to position it: the list renders
|
|
85
|
+
what it was given, in the order it was given. */
|
|
86
|
+
return html `<ol part="list" role="list">
|
|
87
|
+
<slot></slot>
|
|
88
|
+
</ol>`;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
HelixHeadlessBreadcrumbs = __decorate([
|
|
92
|
+
customElement('helix-headless-breadcrumbs')
|
|
93
|
+
], HelixHeadlessBreadcrumbs);
|
|
94
|
+
export { HelixHeadlessBreadcrumbs };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './root/button-root.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './root/button-root.js';
|