@oicl/openbridge-webcomponents 2.0.0-next.59 → 2.0.0-next.60

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 (42) hide show
  1. package/bundle/openbridge-webcomponents.bundle.js +5557 -4305
  2. package/bundle/openbridge-webcomponents.bundle.js.map +1 -1
  3. package/custom-elements.json +1204 -25
  4. package/dist/components/navigation-item/navigation-item.css.js +5 -0
  5. package/dist/components/navigation-item/navigation-item.css.js.map +1 -1
  6. package/dist/components/navigation-item/navigation-item.d.ts +18 -0
  7. package/dist/components/navigation-item/navigation-item.d.ts.map +1 -1
  8. package/dist/components/navigation-item/navigation-item.js +49 -1
  9. package/dist/components/navigation-item/navigation-item.js.map +1 -1
  10. package/dist/components/navigation-item-group/navigation-item-group.css.js +8 -0
  11. package/dist/components/navigation-item-group/navigation-item-group.css.js.map +1 -1
  12. package/dist/components/navigation-item-group/navigation-item-group.d.ts +22 -0
  13. package/dist/components/navigation-item-group/navigation-item-group.d.ts.map +1 -1
  14. package/dist/components/navigation-item-group/navigation-item-group.js +63 -1
  15. package/dist/components/navigation-item-group/navigation-item-group.js.map +1 -1
  16. package/dist/components/navigation-menu/navigation-menu.d.ts +29 -1
  17. package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
  18. package/dist/components/navigation-menu/navigation-menu.js +105 -0
  19. package/dist/components/navigation-menu/navigation-menu.js.map +1 -1
  20. package/dist/components/tree-navigation/tree-navigation.css.js +18 -0
  21. package/dist/components/tree-navigation/tree-navigation.css.js.map +1 -0
  22. package/dist/components/tree-navigation/tree-navigation.d.ts +74 -0
  23. package/dist/components/tree-navigation/tree-navigation.d.ts.map +1 -0
  24. package/dist/components/tree-navigation/tree-navigation.js +120 -0
  25. package/dist/components/tree-navigation/tree-navigation.js.map +1 -0
  26. package/dist/components/tree-navigation-group/tree-navigation-group.css.js +22 -0
  27. package/dist/components/tree-navigation-group/tree-navigation-group.css.js.map +1 -0
  28. package/dist/components/tree-navigation-group/tree-navigation-group.d.ts +94 -0
  29. package/dist/components/tree-navigation-group/tree-navigation-group.d.ts.map +1 -0
  30. package/dist/components/tree-navigation-group/tree-navigation-group.js +116 -0
  31. package/dist/components/tree-navigation-group/tree-navigation-group.js.map +1 -0
  32. package/dist/components/tree-navigation-item/tree-navigation-item.css.js +429 -0
  33. package/dist/components/tree-navigation-item/tree-navigation-item.css.js.map +1 -0
  34. package/dist/components/tree-navigation-item/tree-navigation-item.d.ts +160 -0
  35. package/dist/components/tree-navigation-item/tree-navigation-item.d.ts.map +1 -0
  36. package/dist/components/tree-navigation-item/tree-navigation-item.js +208 -0
  37. package/dist/components/tree-navigation-item/tree-navigation-item.js.map +1 -0
  38. package/dist/internal/tree-roving-navigator.d.ts +71 -0
  39. package/dist/internal/tree-roving-navigator.d.ts.map +1 -0
  40. package/dist/internal/tree-roving-navigator.js +172 -0
  41. package/dist/internal/tree-roving-navigator.js.map +1 -0
  42. package/package.json +1 -1
@@ -50551,6 +50551,74 @@
50551
50551
  "default": "false",
50552
50552
  "attribute": "hasIcon"
50553
50553
  },
50554
+ {
50555
+ "kind": "field",
50556
+ "name": "treeMode",
50557
+ "type": {
50558
+ "text": "boolean"
50559
+ },
50560
+ "default": "false",
50561
+ "description": "Set by `obc-navigation-menu` in its Tree variant — renders the group as a tree row.",
50562
+ "attribute": "treeMode"
50563
+ },
50564
+ {
50565
+ "kind": "field",
50566
+ "name": "treeBranches",
50567
+ "type": {
50568
+ "text": "TreeBranchType[]"
50569
+ },
50570
+ "default": "[]",
50571
+ "description": "Indentation columns for tree mode, assigned by `obc-navigation-menu`.",
50572
+ "attribute": "treeBranches"
50573
+ },
50574
+ {
50575
+ "kind": "field",
50576
+ "name": "terminalType",
50577
+ "type": {
50578
+ "text": "string"
50579
+ },
50580
+ "description": "Terminal type for the group header in the Tree variant — one of `regular`\n(default), `aggregated-header`, or `group-header`. No effect in flat variants.",
50581
+ "attribute": "terminalType"
50582
+ },
50583
+ {
50584
+ "kind": "field",
50585
+ "name": "hasAlertBadge",
50586
+ "type": {
50587
+ "text": "boolean"
50588
+ },
50589
+ "default": "false",
50590
+ "description": "Whether a trailing alert counter badge is shown on the header (Tree variant only).",
50591
+ "attribute": "hasAlertBadge"
50592
+ },
50593
+ {
50594
+ "kind": "field",
50595
+ "name": "alertCount",
50596
+ "type": {
50597
+ "text": "number"
50598
+ },
50599
+ "default": "0",
50600
+ "description": "The number shown in the header's alert badge when `hasAlertBadge` is true (Tree variant only).",
50601
+ "attribute": "alertCount"
50602
+ },
50603
+ {
50604
+ "kind": "field",
50605
+ "name": "alertType",
50606
+ "type": {
50607
+ "text": "string"
50608
+ },
50609
+ "description": "The severity/type of the header's alert badge — one of the `obc-badge` types (Tree variant only).",
50610
+ "attribute": "alertType"
50611
+ },
50612
+ {
50613
+ "kind": "field",
50614
+ "name": "defaultOpen",
50615
+ "type": {
50616
+ "text": "boolean"
50617
+ },
50618
+ "default": "false",
50619
+ "description": "Whether the group starts expanded. Useful for trees that open by default.",
50620
+ "attribute": "defaultOpen"
50621
+ },
50554
50622
  {
50555
50623
  "kind": "field",
50556
50624
  "name": "openContainer",
@@ -50568,6 +50636,16 @@
50568
50636
  },
50569
50637
  "privacy": "private"
50570
50638
  },
50639
+ {
50640
+ "kind": "field",
50641
+ "name": "expanded",
50642
+ "type": {
50643
+ "text": "boolean"
50644
+ },
50645
+ "privacy": "public",
50646
+ "description": "Whether the group is currently open (its children are disclosed).",
50647
+ "readonly": true
50648
+ },
50571
50649
  {
50572
50650
  "kind": "method",
50573
50651
  "name": "onClickGroup",
@@ -50662,6 +50740,67 @@
50662
50740
  },
50663
50741
  "default": "false",
50664
50742
  "fieldName": "hasIcon"
50743
+ },
50744
+ {
50745
+ "name": "treeMode",
50746
+ "type": {
50747
+ "text": "boolean"
50748
+ },
50749
+ "default": "false",
50750
+ "description": "Set by `obc-navigation-menu` in its Tree variant — renders the group as a tree row.",
50751
+ "fieldName": "treeMode"
50752
+ },
50753
+ {
50754
+ "name": "treeBranches",
50755
+ "type": {
50756
+ "text": "TreeBranchType[]"
50757
+ },
50758
+ "default": "[]",
50759
+ "description": "Indentation columns for tree mode, assigned by `obc-navigation-menu`.",
50760
+ "fieldName": "treeBranches"
50761
+ },
50762
+ {
50763
+ "name": "terminalType",
50764
+ "type": {
50765
+ "text": "string"
50766
+ },
50767
+ "description": "Terminal type for the group header in the Tree variant — one of `regular`\n(default), `aggregated-header`, or `group-header`. No effect in flat variants.",
50768
+ "fieldName": "terminalType"
50769
+ },
50770
+ {
50771
+ "name": "hasAlertBadge",
50772
+ "type": {
50773
+ "text": "boolean"
50774
+ },
50775
+ "default": "false",
50776
+ "description": "Whether a trailing alert counter badge is shown on the header (Tree variant only).",
50777
+ "fieldName": "hasAlertBadge"
50778
+ },
50779
+ {
50780
+ "name": "alertCount",
50781
+ "type": {
50782
+ "text": "number"
50783
+ },
50784
+ "default": "0",
50785
+ "description": "The number shown in the header's alert badge when `hasAlertBadge` is true (Tree variant only).",
50786
+ "fieldName": "alertCount"
50787
+ },
50788
+ {
50789
+ "name": "alertType",
50790
+ "type": {
50791
+ "text": "string"
50792
+ },
50793
+ "description": "The severity/type of the header's alert badge — one of the `obc-badge` types (Tree variant only).",
50794
+ "fieldName": "alertType"
50795
+ },
50796
+ {
50797
+ "name": "defaultOpen",
50798
+ "type": {
50799
+ "text": "boolean"
50800
+ },
50801
+ "default": "false",
50802
+ "description": "Whether the group starts expanded. Useful for trees that open by default.",
50803
+ "fieldName": "defaultOpen"
50665
50804
  }
50666
50805
  ],
50667
50806
  "superclass": {
@@ -50785,6 +50924,64 @@
50785
50924
  "default": "false",
50786
50925
  "attribute": "hasTrailingIcon"
50787
50926
  },
50927
+ {
50928
+ "kind": "field",
50929
+ "name": "treeMode",
50930
+ "type": {
50931
+ "text": "boolean"
50932
+ },
50933
+ "default": "false",
50934
+ "description": "Set by `obc-navigation-menu` in its Tree variant — renders the row as a tree item.",
50935
+ "attribute": "treeMode"
50936
+ },
50937
+ {
50938
+ "kind": "field",
50939
+ "name": "treeBranches",
50940
+ "type": {
50941
+ "text": "TreeBranchType[]"
50942
+ },
50943
+ "default": "[]",
50944
+ "description": "Indentation columns for tree mode, assigned by `obc-navigation-menu`.",
50945
+ "attribute": "treeBranches"
50946
+ },
50947
+ {
50948
+ "kind": "field",
50949
+ "name": "terminalType",
50950
+ "type": {
50951
+ "text": "string"
50952
+ },
50953
+ "description": "Terminal type for the row in the Tree variant — one of `regular` (default),\n`aggregated-header`, or `group-header`. Has no effect in the flat variants.",
50954
+ "attribute": "terminalType"
50955
+ },
50956
+ {
50957
+ "kind": "field",
50958
+ "name": "hasAlertBadge",
50959
+ "type": {
50960
+ "text": "boolean"
50961
+ },
50962
+ "default": "false",
50963
+ "description": "Whether a trailing alert counter badge is shown (Tree variant only).",
50964
+ "attribute": "hasAlertBadge"
50965
+ },
50966
+ {
50967
+ "kind": "field",
50968
+ "name": "alertCount",
50969
+ "type": {
50970
+ "text": "number"
50971
+ },
50972
+ "default": "0",
50973
+ "description": "The number shown in the alert badge when `hasAlertBadge` is true (Tree variant only).",
50974
+ "attribute": "alertCount"
50975
+ },
50976
+ {
50977
+ "kind": "field",
50978
+ "name": "alertType",
50979
+ "type": {
50980
+ "text": "string"
50981
+ },
50982
+ "description": "The severity/type of the alert badge — one of the `obc-badge` types (Tree variant only).",
50983
+ "attribute": "alertType"
50984
+ },
50788
50985
  {
50789
50986
  "kind": "field",
50790
50987
  "name": "anchorElement",
@@ -50793,6 +50990,14 @@
50793
50990
  },
50794
50991
  "privacy": "private"
50795
50992
  },
50993
+ {
50994
+ "kind": "field",
50995
+ "name": "treeItemElement",
50996
+ "type": {
50997
+ "text": "HTMLElement | undefined"
50998
+ },
50999
+ "privacy": "private"
51000
+ },
50796
51001
  {
50797
51002
  "kind": "method",
50798
51003
  "name": "onClick",
@@ -50923,6 +51128,58 @@
50923
51128
  },
50924
51129
  "default": "false",
50925
51130
  "fieldName": "hasTrailingIcon"
51131
+ },
51132
+ {
51133
+ "name": "treeMode",
51134
+ "type": {
51135
+ "text": "boolean"
51136
+ },
51137
+ "default": "false",
51138
+ "description": "Set by `obc-navigation-menu` in its Tree variant — renders the row as a tree item.",
51139
+ "fieldName": "treeMode"
51140
+ },
51141
+ {
51142
+ "name": "treeBranches",
51143
+ "type": {
51144
+ "text": "TreeBranchType[]"
51145
+ },
51146
+ "default": "[]",
51147
+ "description": "Indentation columns for tree mode, assigned by `obc-navigation-menu`.",
51148
+ "fieldName": "treeBranches"
51149
+ },
51150
+ {
51151
+ "name": "terminalType",
51152
+ "type": {
51153
+ "text": "string"
51154
+ },
51155
+ "description": "Terminal type for the row in the Tree variant — one of `regular` (default),\n`aggregated-header`, or `group-header`. Has no effect in the flat variants.",
51156
+ "fieldName": "terminalType"
51157
+ },
51158
+ {
51159
+ "name": "hasAlertBadge",
51160
+ "type": {
51161
+ "text": "boolean"
51162
+ },
51163
+ "default": "false",
51164
+ "description": "Whether a trailing alert counter badge is shown (Tree variant only).",
51165
+ "fieldName": "hasAlertBadge"
51166
+ },
51167
+ {
51168
+ "name": "alertCount",
51169
+ "type": {
51170
+ "text": "number"
51171
+ },
51172
+ "default": "0",
51173
+ "description": "The number shown in the alert badge when `hasAlertBadge` is true (Tree variant only).",
51174
+ "fieldName": "alertCount"
51175
+ },
51176
+ {
51177
+ "name": "alertType",
51178
+ "type": {
51179
+ "text": "string"
51180
+ },
51181
+ "description": "The severity/type of the alert badge — one of the `obc-badge` types (Tree variant only).",
51182
+ "fieldName": "alertType"
50926
51183
  }
50927
51184
  ],
50928
51185
  "superclass": {
@@ -50958,7 +51215,7 @@
50958
51215
  "declarations": [
50959
51216
  {
50960
51217
  "kind": "class",
50961
- "description": "`<obc-navigation-menu>` – A flexible, slot-based navigation menu component for organizing primary and secondary navigation items.\n\nThis component provides a vertical navigation structure supporting groups, flyouts, and footer sections. It adapts to various layouts and device sizes via its `variant` and `smallScreen` properties. Items and groups are provided via slots, allowing for icons, labels, and nested navigation hierarchies.\n\nAppears as a sidebar or persistent navigation panel, supporting both icon-only and full-label modes. Designed for use as the main navigation in applications, dashboards, or any interface requiring structured navigation.\n\n## Features\n\n- **Variants:**\n - **Full:** Displays both icons and labels for all navigation items (default).\n - **IconOnly:** Shows only icons for a compact appearance. *Should only be used when no navigation items have sub-items or flyouts.*\n - **IconOnlyLarge:** Icon-only mode that supports flyouts/submenus. Use when navigation contains groups or nested items.\n - **Compact:** Reduces padding and overall width for a space-saving layout.\n- **Responsive Layout:**\n - `smallScreen` property adapts the footer and logo layout for smaller viewports.\n- **Slot-based Content:**\n - `main` slot for primary navigation items and groups.\n - `footer` slot for secondary actions or links.\n - `logo` slot for branding or logo placement (position adapts based on variant and screen size).\n- **Nested Navigation:**\n - Supports nested groups and flyouts via `<obc-navigation-item-group>`.\n- **Automatic Variant Propagation:**\n - Child items and groups automatically receive the correct variant for consistent appearance.\n- **Dynamic Content Handling:**\n - Reacts to dynamic addition/removal of items and groups, updating layout and variants as needed.\n- **Interaction:**\n - Clicking a navigation item closes all open groups/flyouts for streamlined navigation.\n\n## Usage Guidelines\n\nUse `<obc-navigation-menu>` as the main navigation container in your application layout. Place navigation items and groups in the `main` slot for primary navigation, and use the `footer` slot for secondary actions (such as settings or help). The `logo` slot is intended for branding and is positioned according to the selected variant and screen size.\n\n- Use the `Full` variant for standard navigation with both icons and labels.\n- Use `IconOnly` only when there are no nested groups or flyouts; otherwise, use `IconOnlyLarge` for icon-only navigation with flyout support.\n- The `Compact` variant is suitable for layouts with limited space or when a minimal navigation appearance is desired.\n- Set `smallScreen` to `true` to optimize the layout for smaller devices or responsive breakpoints.\n\n**TODO(designer):** Provide additional guidance on when to use each variant and recommended slot content for best usability.\n\n## Slots\n\n| Slot Name | Renders When... | Purpose |\n|-----------|----------------|---------|\n| main | Always | Primary navigation items and groups. |\n| footer | Always | Secondary navigation items (e.g., settings, help). |\n| logo | Always | Branding/logo area (position varies by variant and screen size). |\n\nPlace `<obc-navigation-item>`, `<obc-navigation-item-group>`, or other suitable elements in these slots. For icons, use `<obi-placeholder>`, `<obi-applications>`, or other OpenBridge icon components in the `icon` slot of each navigation item.\n\n## Properties\n\n- `variant` (`ObcNavigationMenuVariant`): Controls the visual style and layout of the menu. Default is `Full`.\n- `smallScreen` (`boolean`): When `true`, adapts the layout for small screens (e.g., moves logo into the footer area).\n\n## Best Practices and Constraints\n\n- Only use the `IconOnly` variant when there are no navigation items with sub-items or flyouts. Use `IconOnlyLarge` if your navigation includes groups or nested items.\n- Place only navigation-related components in the `main` and `footer` slots for clarity and accessibility.\n- For best accessibility, ensure each navigation item has a clear label and, if using icons, a suitable `aria-label` or accessible name.\n- Avoid placing interactive elements other than navigation items/groups in the `main` or `footer` slots.\n\n## Example\n\n```html\n<obc-navigation-menu variant=\"full\">\n <obc-navigation-item-group slot=\"main\" label=\"Apps\">\n <obi-applications slot=\"icon\"></obi-applications>\n <obc-navigation-item label=\"Sub item 1\" hasIcon href=\"#\">\n <obi-placeholder slot=\"icon\"></obi-placeholder>\n </obc-navigation-item>\n </obc-navigation-item-group>\n <obc-navigation-item slot=\"footer\" label=\"Settings\" hasIcon href=\"#\">\n <obi-settings-iec slot=\"icon\"></obi-settings-iec>\n </obc-navigation-item>\n <obc-vendor-button imageSrc=\"/companylogo-day.png\" alt=\"logo\" slot=\"logo\"></obc-vendor-button>\n</obc-navigation-menu>\n```\n\nIn this example, the menu displays a group with sub-items in the main navigation, several footer actions, and a logo.",
51218
+ "description": "`<obc-navigation-menu>` – A flexible, slot-based navigation menu component for organizing primary and secondary navigation items.\n\nThis component provides a vertical navigation structure supporting groups, flyouts, and footer sections. It adapts to various layouts and device sizes via its `variant` and `smallScreen` properties. Items and groups are provided via slots, allowing for icons, labels, and nested navigation hierarchies.\n\nAppears as a sidebar or persistent navigation panel, supporting both icon-only and full-label modes. Designed for use as the main navigation in applications, dashboards, or any interface requiring structured navigation.\n\n## Features\n\n- **Variants:**\n - **Full:** Displays both icons and labels for all navigation items (default).\n - **IconOnly:** Shows only icons for a compact appearance. *Should only be used when no navigation items have sub-items or flyouts.*\n - **IconOnlyLarge:** Icon-only mode that supports flyouts/submenus. Use when navigation contains groups or nested items.\n - **Compact:** Reduces padding and overall width for a space-saving layout.\n - **Tree:** Renders the same `obc-navigation-item` / `obc-navigation-item-group`\n markup as a hierarchical tree. Groups expand inline (instead of as flyouts),\n rows are indented by depth, multiple branches can stay open at once, and the\n tree-row presentation (alert badge, terminal marker) is available via the\n items' `hasAlertBadge`/`alertCount`/`alertType`/`terminalType` properties.\n- **Responsive Layout:**\n - `smallScreen` property adapts the footer and logo layout for smaller viewports.\n- **Slot-based Content:**\n - `main` slot for primary navigation items and groups.\n - `footer` slot for secondary actions or links.\n - `logo` slot for branding or logo placement (position adapts based on variant and screen size).\n- **Nested Navigation:**\n - Supports nested groups and flyouts via `<obc-navigation-item-group>`.\n- **Automatic Variant Propagation:**\n - Child items and groups automatically receive the correct variant for consistent appearance.\n- **Dynamic Content Handling:**\n - Reacts to dynamic addition/removal of items and groups, updating layout and variants as needed.\n- **Interaction:**\n - Clicking a navigation item closes all open groups/flyouts for streamlined navigation.\n\n## Usage Guidelines\n\nUse `<obc-navigation-menu>` as the main navigation container in your application layout. Place navigation items and groups in the `main` slot for primary navigation, and use the `footer` slot for secondary actions (such as settings or help). The `logo` slot is intended for branding and is positioned according to the selected variant and screen size.\n\n- Use the `Full` variant for standard navigation with both icons and labels.\n- Use `IconOnly` only when there are no nested groups or flyouts; otherwise, use `IconOnlyLarge` for icon-only navigation with flyout support.\n- The `Compact` variant is suitable for layouts with limited space or when a minimal navigation appearance is desired.\n- Use the `Tree` variant for hierarchical navigation (file trees, nested\n sections). The existing item/group markup is reused unchanged — only the\n `variant` changes. Footer and logo slots remain flat. Mark a group with\n `defaultOpen` to have it start expanded.\n- Set `smallScreen` to `true` to optimize the layout for smaller devices or responsive breakpoints.\n\n**TODO(designer):** Provide additional guidance on when to use each variant and recommended slot content for best usability.\n\n## Slots\n\n| Slot Name | Renders When... | Purpose |\n|-----------|----------------|---------|\n| main | Always | Primary navigation items and groups. |\n| footer | Always | Secondary navigation items (e.g., settings, help). |\n| logo | Always | Branding/logo area (position varies by variant and screen size). |\n\nPlace `<obc-navigation-item>`, `<obc-navigation-item-group>`, or other suitable elements in these slots. For icons, use `<obi-placeholder>`, `<obi-applications>`, or other OpenBridge icon components in the `icon` slot of each navigation item.\n\n## Properties\n\n- `variant` (`ObcNavigationMenuVariant`): Controls the visual style and layout of the menu. Default is `Full`.\n- `smallScreen` (`boolean`): When `true`, adapts the layout for small screens (e.g., moves logo into the footer area).\n\n## Best Practices and Constraints\n\n- Only use the `IconOnly` variant when there are no navigation items with sub-items or flyouts. Use `IconOnlyLarge` if your navigation includes groups or nested items.\n- Place only navigation-related components in the `main` and `footer` slots for clarity and accessibility.\n- For best accessibility, ensure each navigation item has a clear label and, if using icons, a suitable `aria-label` or accessible name.\n- Avoid placing interactive elements other than navigation items/groups in the `main` or `footer` slots.\n\n## Example\n\n```html\n<obc-navigation-menu variant=\"full\">\n <obc-navigation-item-group slot=\"main\" label=\"Apps\">\n <obi-applications slot=\"icon\"></obi-applications>\n <obc-navigation-item label=\"Sub item 1\" hasIcon href=\"#\">\n <obi-placeholder slot=\"icon\"></obi-placeholder>\n </obc-navigation-item>\n </obc-navigation-item-group>\n <obc-navigation-item slot=\"footer\" label=\"Settings\" hasIcon href=\"#\">\n <obi-settings-iec slot=\"icon\"></obi-settings-iec>\n </obc-navigation-item>\n <obc-vendor-button imageSrc=\"/companylogo-day.png\" alt=\"logo\" slot=\"logo\"></obc-vendor-button>\n</obc-navigation-menu>\n```\n\nIn this example, the menu displays a group with sub-items in the main navigation, several footer actions, and a logo.",
50962
51219
  "name": "ObcNavigationMenu",
50963
51220
  "slots": [
50964
51221
  {
@@ -50981,7 +51238,7 @@
50981
51238
  "type": {
50982
51239
  "text": "ObcNavigationMenuVariant"
50983
51240
  },
50984
- "description": "Controls the visual style and layout of the navigation menu.\n\n- `full`: Standard menu with icons and labels (default).\n- `icon-only`: Compact, icon-only menu (use only when no flyouts/groups are present).\n- `icon-only-large`: Icon-only menu supporting flyouts/groups.\n- `compact`: Minimal, space-saving menu.",
51241
+ "description": "Controls the visual style and layout of the navigation menu.\n\n- `full`: Standard menu with icons and labels (default).\n- `icon-only`: Compact, icon-only menu (use only when no flyouts/groups are present).\n- `icon-only-large`: Icon-only menu supporting flyouts/groups.\n- `compact`: Minimal, space-saving menu.\n- `tree`: Hierarchical tree — groups expand inline and rows are indented by depth.",
50985
51242
  "attribute": "variant"
50986
51243
  },
50987
51244
  {
@@ -51021,6 +51278,68 @@
51021
51278
  "privacy": "private",
51022
51279
  "default": "false"
51023
51280
  },
51281
+ {
51282
+ "kind": "field",
51283
+ "name": "treeNavigator",
51284
+ "privacy": "private",
51285
+ "readonly": true,
51286
+ "default": "new TreeRovingNavigator<NavTreeRow>(this, { getRows: () => this.treeRootRows(), childRows: (row) => this.treeChildRows(row), isGroup: (row) => isNavGroup(row), // Read the group's own synchronous open state, not the shadow header's // attribute (which lags a render tick behind a keyboard expand/collapse). isExpanded: (row) => isNavGroup(row) && row.expanded, setExpanded: (row, expanded) => { if (!isNavGroup(row)) return; if (expanded) row.open(); else row.close(); }, innerItem: (row) => this.treeInnerItem(row), } satisfies TreeRovingAdapter<NavTreeRow>)",
51287
+ "description": "Roving-tabindex + arrow-key navigation for the Tree variant, sharing the\nnavigator that drives `obc-tree-navigation`. Engaged only while\n`variant === Tree` (see `onTreeKeydown`)."
51288
+ },
51289
+ {
51290
+ "kind": "method",
51291
+ "name": "treeRootRows",
51292
+ "privacy": "private",
51293
+ "return": {
51294
+ "type": {
51295
+ "text": "NavTreeRow[]"
51296
+ }
51297
+ },
51298
+ "description": "Top-level tree rows of the main slot (mirrors `assignTreeBranches`'s filter)."
51299
+ },
51300
+ {
51301
+ "kind": "method",
51302
+ "name": "treeChildRows",
51303
+ "privacy": "private",
51304
+ "return": {
51305
+ "type": {
51306
+ "text": "NavTreeRow[]"
51307
+ }
51308
+ },
51309
+ "parameters": [
51310
+ {
51311
+ "name": "row",
51312
+ "type": {
51313
+ "text": "NavTreeRow"
51314
+ }
51315
+ }
51316
+ ],
51317
+ "description": "Direct tree-row children of a row, in document order."
51318
+ },
51319
+ {
51320
+ "kind": "method",
51321
+ "name": "treeInnerItem",
51322
+ "privacy": "private",
51323
+ "return": {
51324
+ "type": {
51325
+ "text": "ObcTreeNavigationItem | null"
51326
+ }
51327
+ },
51328
+ "parameters": [
51329
+ {
51330
+ "name": "row",
51331
+ "type": {
51332
+ "text": "NavTreeRow"
51333
+ }
51334
+ }
51335
+ ],
51336
+ "description": "The inline `obc-tree-navigation-item` a tree-mode row renders in its shadow root."
51337
+ },
51338
+ {
51339
+ "kind": "field",
51340
+ "name": "onTreeKeydown",
51341
+ "privacy": "private"
51342
+ },
51024
51343
  {
51025
51344
  "kind": "method",
51026
51345
  "name": "findAllElements",
@@ -51155,13 +51474,13 @@
51155
51474
  },
51156
51475
  {
51157
51476
  "kind": "method",
51158
- "name": "setupItems",
51159
- "privacy": "private"
51160
- },
51161
- {
51162
- "kind": "method",
51163
- "name": "setHugToGroups",
51477
+ "name": "assignTreeBranches",
51164
51478
  "privacy": "private",
51479
+ "return": {
51480
+ "type": {
51481
+ "text": "void"
51482
+ }
51483
+ },
51165
51484
  "parameters": [
51166
51485
  {
51167
51486
  "name": "el",
@@ -51170,29 +51489,71 @@
51170
51489
  }
51171
51490
  },
51172
51491
  {
51173
- "name": "hug",
51492
+ "name": "depth",
51174
51493
  "type": {
51175
- "text": "boolean"
51494
+ "text": "number"
51176
51495
  }
51177
51496
  }
51178
51497
  ]
51179
- }
51180
- ],
51181
- "attributes": [
51182
- {
51183
- "name": "variant",
51184
- "type": {
51185
- "text": "ObcNavigationMenuVariant"
51186
- },
51187
- "description": "Controls the visual style and layout of the navigation menu.\n\n- `full`: Standard menu with icons and labels (default).\n- `icon-only`: Compact, icon-only menu (use only when no flyouts/groups are present).\n- `icon-only-large`: Icon-only menu supporting flyouts/groups.\n- `compact`: Minimal, space-saving menu.",
51188
- "fieldName": "variant"
51189
51498
  },
51190
51499
  {
51191
- "name": "flyoutVariant",
51192
- "type": {
51193
- "text": "ObcNavigationMenuFlyoutVariant"
51194
- },
51195
- "description": "Visual variant of the flyout.\nOne of `Full` (default) or `Compact`.",
51500
+ "kind": "method",
51501
+ "name": "clearTreeMode",
51502
+ "privacy": "private",
51503
+ "return": {
51504
+ "type": {
51505
+ "text": "void"
51506
+ }
51507
+ },
51508
+ "parameters": [
51509
+ {
51510
+ "name": "el",
51511
+ "type": {
51512
+ "text": "Element"
51513
+ }
51514
+ }
51515
+ ]
51516
+ },
51517
+ {
51518
+ "kind": "method",
51519
+ "name": "setupItems",
51520
+ "privacy": "private"
51521
+ },
51522
+ {
51523
+ "kind": "method",
51524
+ "name": "setHugToGroups",
51525
+ "privacy": "private",
51526
+ "parameters": [
51527
+ {
51528
+ "name": "el",
51529
+ "type": {
51530
+ "text": "Element"
51531
+ }
51532
+ },
51533
+ {
51534
+ "name": "hug",
51535
+ "type": {
51536
+ "text": "boolean"
51537
+ }
51538
+ }
51539
+ ]
51540
+ }
51541
+ ],
51542
+ "attributes": [
51543
+ {
51544
+ "name": "variant",
51545
+ "type": {
51546
+ "text": "ObcNavigationMenuVariant"
51547
+ },
51548
+ "description": "Controls the visual style and layout of the navigation menu.\n\n- `full`: Standard menu with icons and labels (default).\n- `icon-only`: Compact, icon-only menu (use only when no flyouts/groups are present).\n- `icon-only-large`: Icon-only menu supporting flyouts/groups.\n- `compact`: Minimal, space-saving menu.\n- `tree`: Hierarchical tree — groups expand inline and rows are indented by depth.",
51549
+ "fieldName": "variant"
51550
+ },
51551
+ {
51552
+ "name": "flyoutVariant",
51553
+ "type": {
51554
+ "text": "ObcNavigationMenuFlyoutVariant"
51555
+ },
51556
+ "description": "Visual variant of the flyout.\nOne of `Full` (default) or `Compact`.",
51196
51557
  "fieldName": "flyoutVariant"
51197
51558
  },
51198
51559
  {
@@ -66375,6 +66736,824 @@
66375
66736
  }
66376
66737
  ]
66377
66738
  },
66739
+ {
66740
+ "kind": "javascript-module",
66741
+ "path": "src/components/tree-navigation-group/tree-navigation-group.ts",
66742
+ "declarations": [
66743
+ {
66744
+ "kind": "class",
66745
+ "description": "`<obc-tree-navigation-group>` – An expandable parent row in a tree-navigation\nstructure: a header row with an expand/collapse chevron, plus a slot for the\nchild rows it discloses.\n\nA group renders an `<obc-tree-navigation-item>` header (carrying its own label,\nicon, terminal type, and alert badge) followed by its slotted children. When\nplaced inside `<obc-tree-navigation>`, the container computes and assigns the\n`branches` guide lines for every row automatically from each row's position —\na group does not need its depth configured by hand.\n\nThe group manages only its own open/closed state and forwards header presentation\nto its internal header item. It does not draw guide lines itself; that is the\ncontainer's responsibility (see `<obc-tree-navigation>`).\n\n## Features\n- **Disclosure:** A chevron in the header toggles the slotted children. The open\n state is held in `expanded` and reflected so the container and CSS can react.\n- **Header presentation:** `label`, the `icon` slot, `terminalType`, and the\n alert badge (`hasAlertBadge`, `alertCount`, `alertType`) are forwarded to the\n header row.\n- **Selection:** `checked` marks the group's header as the current item.\n- **Automatic guides:** Inside `<obc-tree-navigation>`, the header's `branches`\n are assigned by the container; nested groups continue the guide columns down.\n\n## Usage Guidelines\n- Nest `<obc-tree-navigation-item>` (leaves) and further `<obc-tree-navigation-group>`\n elements as children to build the hierarchy.\n- Always place groups and items inside an `<obc-tree-navigation>` container so the\n guide lines are computed; using a group standalone draws a header with no guides.\n- Provide a header icon via the `icon` slot (forwarded to the header row).\n\n## Slots\n\n| Slot Name | Renders When... | Purpose |\n|-----------|--------------------------|--------------------------------------------------------------|\n| icon | `hasIcon` is true | Leading icon for the group header row. |\n| (default) | Always | Child rows (`obc-tree-navigation-item` / `-group`). |",
66746
+ "name": "ObcTreeNavigationGroup",
66747
+ "slots": [
66748
+ {
66749
+ "description": "Leading icon for the group header (shown when `hasIcon` is true).",
66750
+ "name": "icon"
66751
+ },
66752
+ {
66753
+ "description": "Child rows disclosed when the group is expanded.",
66754
+ "name": ""
66755
+ }
66756
+ ],
66757
+ "members": [
66758
+ {
66759
+ "kind": "field",
66760
+ "name": "label",
66761
+ "type": {
66762
+ "text": "string"
66763
+ },
66764
+ "default": "'Group'",
66765
+ "description": "The text label displayed for the group header row.",
66766
+ "attribute": "label"
66767
+ },
66768
+ {
66769
+ "kind": "field",
66770
+ "name": "branches",
66771
+ "type": {
66772
+ "text": "TreeBranchType[]"
66773
+ },
66774
+ "default": "[]",
66775
+ "description": "Guide line to draw for each ancestor level of the header row. Normally set by\nthe parent `<obc-tree-navigation>` container from the group's position; only\nset it manually when using a group outside the container.",
66776
+ "attribute": "branches"
66777
+ },
66778
+ {
66779
+ "kind": "field",
66780
+ "name": "expanded",
66781
+ "type": {
66782
+ "text": "boolean"
66783
+ },
66784
+ "default": "false",
66785
+ "description": "Whether the group is expanded, disclosing its children. Rotates the chevron.",
66786
+ "attribute": "expanded",
66787
+ "reflects": true
66788
+ },
66789
+ {
66790
+ "kind": "field",
66791
+ "name": "checked",
66792
+ "type": {
66793
+ "text": "boolean"
66794
+ },
66795
+ "default": "false",
66796
+ "description": "Whether the group header is the current selection.",
66797
+ "attribute": "checked",
66798
+ "reflects": true
66799
+ },
66800
+ {
66801
+ "kind": "field",
66802
+ "name": "disabled",
66803
+ "type": {
66804
+ "text": "boolean"
66805
+ },
66806
+ "default": "false",
66807
+ "description": "Disables the group header, removing it from the tab order and dimming it.",
66808
+ "attribute": "disabled",
66809
+ "reflects": true
66810
+ },
66811
+ {
66812
+ "kind": "field",
66813
+ "name": "hasIcon",
66814
+ "type": {
66815
+ "text": "boolean"
66816
+ },
66817
+ "default": "true",
66818
+ "description": "Whether the group header shows a leading icon (provided via the `icon` slot)."
66819
+ },
66820
+ {
66821
+ "kind": "field",
66822
+ "name": "terminalType",
66823
+ "type": {
66824
+ "text": "string"
66825
+ },
66826
+ "description": "Terminal type for the header row, controlling the alert-header marker shown in\nthe terminal. One of `regular` (default), `aggregated-header`, or `group-header`.",
66827
+ "attribute": "terminalType"
66828
+ },
66829
+ {
66830
+ "kind": "field",
66831
+ "name": "hasAlertBadge",
66832
+ "type": {
66833
+ "text": "boolean"
66834
+ },
66835
+ "default": "false",
66836
+ "description": "Whether a trailing alert counter badge is shown on the header row.",
66837
+ "attribute": "hasAlertBadge"
66838
+ },
66839
+ {
66840
+ "kind": "field",
66841
+ "name": "alertCount",
66842
+ "type": {
66843
+ "text": "number"
66844
+ },
66845
+ "default": "0",
66846
+ "description": "The number shown in the header's alert badge when `hasAlertBadge` is true.",
66847
+ "attribute": "alertCount"
66848
+ },
66849
+ {
66850
+ "kind": "field",
66851
+ "name": "alertType",
66852
+ "type": {
66853
+ "text": "string"
66854
+ },
66855
+ "description": "The severity/type of the header's alert badge. One of the `obc-badge` types (default `alarm`).",
66856
+ "attribute": "alertType"
66857
+ },
66858
+ {
66859
+ "kind": "field",
66860
+ "name": "href",
66861
+ "type": {
66862
+ "text": "string | undefined"
66863
+ },
66864
+ "description": "The URL to navigate to when the header is activated. If set, the header row\nrenders as a link; otherwise it acts as a button.",
66865
+ "attribute": "href"
66866
+ },
66867
+ {
66868
+ "kind": "field",
66869
+ "name": "headerItem",
66870
+ "type": {
66871
+ "text": "ObcTreeNavigationItem | undefined"
66872
+ },
66873
+ "privacy": "private"
66874
+ },
66875
+ {
66876
+ "kind": "method",
66877
+ "name": "onHeaderToggle",
66878
+ "privacy": "private",
66879
+ "parameters": [
66880
+ {
66881
+ "name": "event",
66882
+ "type": {
66883
+ "text": "CustomEvent<boolean>"
66884
+ }
66885
+ }
66886
+ ]
66887
+ },
66888
+ {
66889
+ "kind": "method",
66890
+ "name": "close",
66891
+ "description": "Closes the group (and, recursively, any nested groups inside it)."
66892
+ },
66893
+ {
66894
+ "kind": "method",
66895
+ "name": "focus",
66896
+ "privacy": "public",
66897
+ "return": {
66898
+ "type": {
66899
+ "text": "void"
66900
+ }
66901
+ },
66902
+ "parameters": [
66903
+ {
66904
+ "name": "options",
66905
+ "optional": true,
66906
+ "type": {
66907
+ "text": "FocusOptions"
66908
+ }
66909
+ }
66910
+ ]
66911
+ }
66912
+ ],
66913
+ "events": [
66914
+ {
66915
+ "name": "expand-toggle",
66916
+ "type": {
66917
+ "text": "CustomEvent"
66918
+ },
66919
+ "description": "{CustomEvent<boolean>} Fired when the header is activated; detail is the next `expanded` value."
66920
+ }
66921
+ ],
66922
+ "attributes": [
66923
+ {
66924
+ "name": "label",
66925
+ "type": {
66926
+ "text": "string"
66927
+ },
66928
+ "default": "'Group'",
66929
+ "description": "The text label displayed for the group header row.",
66930
+ "fieldName": "label"
66931
+ },
66932
+ {
66933
+ "name": "branches",
66934
+ "type": {
66935
+ "text": "TreeBranchType[]"
66936
+ },
66937
+ "default": "[]",
66938
+ "description": "Guide line to draw for each ancestor level of the header row. Normally set by\nthe parent `<obc-tree-navigation>` container from the group's position; only\nset it manually when using a group outside the container.",
66939
+ "fieldName": "branches"
66940
+ },
66941
+ {
66942
+ "name": "expanded",
66943
+ "type": {
66944
+ "text": "boolean"
66945
+ },
66946
+ "default": "false",
66947
+ "description": "Whether the group is expanded, disclosing its children. Rotates the chevron.",
66948
+ "fieldName": "expanded"
66949
+ },
66950
+ {
66951
+ "name": "checked",
66952
+ "type": {
66953
+ "text": "boolean"
66954
+ },
66955
+ "default": "false",
66956
+ "description": "Whether the group header is the current selection.",
66957
+ "fieldName": "checked"
66958
+ },
66959
+ {
66960
+ "name": "disabled",
66961
+ "type": {
66962
+ "text": "boolean"
66963
+ },
66964
+ "default": "false",
66965
+ "description": "Disables the group header, removing it from the tab order and dimming it.",
66966
+ "fieldName": "disabled"
66967
+ },
66968
+ {
66969
+ "name": "terminalType",
66970
+ "type": {
66971
+ "text": "string"
66972
+ },
66973
+ "description": "Terminal type for the header row, controlling the alert-header marker shown in\nthe terminal. One of `regular` (default), `aggregated-header`, or `group-header`.",
66974
+ "fieldName": "terminalType"
66975
+ },
66976
+ {
66977
+ "name": "hasAlertBadge",
66978
+ "type": {
66979
+ "text": "boolean"
66980
+ },
66981
+ "default": "false",
66982
+ "description": "Whether a trailing alert counter badge is shown on the header row.",
66983
+ "fieldName": "hasAlertBadge"
66984
+ },
66985
+ {
66986
+ "name": "alertCount",
66987
+ "type": {
66988
+ "text": "number"
66989
+ },
66990
+ "default": "0",
66991
+ "description": "The number shown in the header's alert badge when `hasAlertBadge` is true.",
66992
+ "fieldName": "alertCount"
66993
+ },
66994
+ {
66995
+ "name": "alertType",
66996
+ "type": {
66997
+ "text": "string"
66998
+ },
66999
+ "description": "The severity/type of the header's alert badge. One of the `obc-badge` types (default `alarm`).",
67000
+ "fieldName": "alertType"
67001
+ },
67002
+ {
67003
+ "name": "href",
67004
+ "type": {
67005
+ "text": "string | undefined"
67006
+ },
67007
+ "description": "The URL to navigate to when the header is activated. If set, the header row\nrenders as a link; otherwise it acts as a button.",
67008
+ "fieldName": "href"
67009
+ }
67010
+ ],
67011
+ "superclass": {
67012
+ "name": "LitElement",
67013
+ "package": "lit"
67014
+ },
67015
+ "tagName": "obc-tree-navigation-group",
67016
+ "customElement": true
67017
+ }
67018
+ ],
67019
+ "exports": [
67020
+ {
67021
+ "kind": "js",
67022
+ "name": "ObcTreeNavigationGroup",
67023
+ "declaration": {
67024
+ "name": "ObcTreeNavigationGroup",
67025
+ "module": "src/components/tree-navigation-group/tree-navigation-group.ts"
67026
+ }
67027
+ },
67028
+ {
67029
+ "kind": "custom-element-definition",
67030
+ "name": "obc-tree-navigation-group",
67031
+ "declaration": {
67032
+ "name": "ObcTreeNavigationGroup",
67033
+ "module": "src/components/tree-navigation-group/tree-navigation-group.ts"
67034
+ }
67035
+ }
67036
+ ]
67037
+ },
67038
+ {
67039
+ "kind": "javascript-module",
67040
+ "path": "src/components/tree-navigation-item/tree-navigation-item.ts",
67041
+ "declarations": [
67042
+ {
67043
+ "kind": "class",
67044
+ "description": "`<obc-tree-navigation-item>` – A single row in a tree- or file-explorer-style\nnavigation list, with indentation guide lines, an optional expand/collapse\nchevron, a leading icon, a label, and an optional alert badge.\n\nEach row represents one node in a hierarchy. Depth is expressed through the\n`branches` array: one entry per ancestor level, each describing the guide line\nto draw for that level. The expand chevron lets a node disclose its children,\nemitting `expand-toggle` so a parent can manage the open/closed state.\n\n## Features\n- **Indentation guides:** Render one 32px guide column per `branches` entry —\n pass-through vertical lines for ancestors that continue, and an elbow\n (`intersection`) connecting the row to its parent.\n- **Expand/collapse:** Set `expandable` to show a chevron that rotates when\n `expanded`. The chevron is a visual indicator only — activating the row\n fires `expand-toggle` with the next state; manage `expanded` in response.\n When `expanded`, a vertical guide descends from the chevron to connect to\n the revealed child rows below.\n- **Terminal type:** `terminalType` adds an alert-header marker in the terminal\n (`aggregatedHeader` or `groupHeader`), indicating the node heads a set of\n aggregated or grouped alerts.\n- **Leading icon:** Provide an icon via the `icon` slot (shown when\n `hasLeadingIcon`).\n- **Alert badge:** A trailing counter badge (e.g. an alarm count), toggled with\n `hasAlertBadge` and configured via `alertCount` and `alertType`.\n- **Checked state:** `checked` highlights the current selection using the\n amplified elevation style. A checked row is the current item and is not\n re-selectable — it shows no hover/pressed feedback and fires no `click` or\n navigation. An expandable checked row still toggles (fires `expand-toggle`),\n so a group that is the current selection can be opened and closed. It stays\n keyboard-focusable.\n- **Link or button:** Set `href` to render the row as a link; otherwise it acts\n as a button.\n\n## Usage Guidelines\n- Use for hierarchical navigation such as file trees, layer panels, or nested\n menus. For flat navigation lists, use `obc-navigation-item` instead.\n- Build `branches` from the row's ancestry: `intersection` for the level that\n owns this row, `straight` for ancestors with siblings still to come, and\n `blank` for ancestors whose subtrees have ended. When placed inside\n `obc-tree-navigation`, the container computes `branches` automatically.\n- Keep one row `checked` at a time within a tree to mark the current location.\n- Leaf nodes should leave `expandable` as `false` so no chevron is shown.\n\n## Slots\n\n| Slot Name | Renders When... | Purpose |\n|----------------|---------------------------------|-------------------------------------------------------------------------|\n| icon | `hasLeadingIcon` is true | Leading icon for the row, e.g. `<obi-placeholder slot=\"icon\">`. |",
67045
+ "name": "ObcTreeNavigationItem",
67046
+ "slots": [
67047
+ {
67048
+ "description": "Leading icon slot (shown when `hasLeadingIcon` is true).",
67049
+ "name": "icon"
67050
+ }
67051
+ ],
67052
+ "members": [
67053
+ {
67054
+ "kind": "field",
67055
+ "name": "label",
67056
+ "type": {
67057
+ "text": "string"
67058
+ },
67059
+ "default": "'List item'",
67060
+ "description": "The text label displayed for the row.",
67061
+ "attribute": "label"
67062
+ },
67063
+ {
67064
+ "kind": "field",
67065
+ "name": "branches",
67066
+ "type": {
67067
+ "text": "TreeBranchType[]"
67068
+ },
67069
+ "default": "[]",
67070
+ "description": "Guide line for each ancestor level, outermost first; one 32px column per\nentry. Computed by `obc-tree-navigation` — rarely set by hand.",
67071
+ "attribute": "branches"
67072
+ },
67073
+ {
67074
+ "kind": "field",
67075
+ "name": "expandable",
67076
+ "type": {
67077
+ "text": "boolean"
67078
+ },
67079
+ "default": "false",
67080
+ "description": "Whether the row shows an expand/collapse chevron. Leave false for leaf nodes.",
67081
+ "attribute": "expandable"
67082
+ },
67083
+ {
67084
+ "kind": "field",
67085
+ "name": "expanded",
67086
+ "type": {
67087
+ "text": "boolean"
67088
+ },
67089
+ "default": "false",
67090
+ "description": "Whether the node is expanded. Rotates the chevron and sets `aria-expanded`.",
67091
+ "attribute": "expanded",
67092
+ "reflects": true
67093
+ },
67094
+ {
67095
+ "kind": "field",
67096
+ "name": "checked",
67097
+ "type": {
67098
+ "text": "boolean"
67099
+ },
67100
+ "default": "false",
67101
+ "description": "Whether the row is the current selection. Applies the amplified style and\nmakes the row inert to re-selection (no hover/pressed feedback, no `click`\nor navigation); it remains keyboard-focusable. An expandable checked row\nstill fires `expand-toggle` so a selected group can open and close.",
67102
+ "attribute": "checked",
67103
+ "reflects": true
67104
+ },
67105
+ {
67106
+ "kind": "field",
67107
+ "name": "disabled",
67108
+ "type": {
67109
+ "text": "boolean"
67110
+ },
67111
+ "default": "false",
67112
+ "description": "Disables the row, removing it from the tab order and dimming its appearance.",
67113
+ "attribute": "disabled",
67114
+ "reflects": true
67115
+ },
67116
+ {
67117
+ "kind": "field",
67118
+ "name": "focusable",
67119
+ "type": {
67120
+ "text": "boolean"
67121
+ },
67122
+ "default": "true",
67123
+ "description": "Whether the row is in the tab order. A tree container manages this as a\nroving tabindex (one row focusable at a time); standalone rows stay tabbable."
67124
+ },
67125
+ {
67126
+ "kind": "field",
67127
+ "name": "hasLeadingIcon",
67128
+ "type": {
67129
+ "text": "boolean"
67130
+ },
67131
+ "default": "true",
67132
+ "description": "Whether the row shows a leading icon (provided via the `icon` slot)."
67133
+ },
67134
+ {
67135
+ "kind": "field",
67136
+ "name": "terminalType",
67137
+ "type": {
67138
+ "text": "string"
67139
+ },
67140
+ "description": "Terminal type, controlling the alert-header marker shown in the terminal.\nOne of `regular` (default), `aggregated-header`, or `group-header`.",
67141
+ "attribute": "terminalType"
67142
+ },
67143
+ {
67144
+ "kind": "field",
67145
+ "name": "hasAlertBadge",
67146
+ "type": {
67147
+ "text": "boolean"
67148
+ },
67149
+ "default": "false",
67150
+ "description": "Whether a trailing alert counter badge is shown.",
67151
+ "attribute": "hasAlertBadge"
67152
+ },
67153
+ {
67154
+ "kind": "field",
67155
+ "name": "alertCount",
67156
+ "type": {
67157
+ "text": "number"
67158
+ },
67159
+ "default": "0",
67160
+ "description": "The number shown in the alert badge when `hasAlertBadge` is true.",
67161
+ "attribute": "alertCount"
67162
+ },
67163
+ {
67164
+ "kind": "field",
67165
+ "name": "alertType",
67166
+ "type": {
67167
+ "text": "string"
67168
+ },
67169
+ "description": "The severity/type of the alert badge. One of the `obc-badge` types (default `alarm`).",
67170
+ "attribute": "alertType"
67171
+ },
67172
+ {
67173
+ "kind": "field",
67174
+ "name": "href",
67175
+ "type": {
67176
+ "text": "string | undefined"
67177
+ },
67178
+ "description": "The URL to navigate to when the row is activated. If set, the row renders as\na link; otherwise it acts as a button.",
67179
+ "attribute": "href"
67180
+ },
67181
+ {
67182
+ "kind": "field",
67183
+ "name": "wrapperElement",
67184
+ "type": {
67185
+ "text": "HTMLElement | undefined"
67186
+ },
67187
+ "privacy": "private"
67188
+ },
67189
+ {
67190
+ "kind": "method",
67191
+ "name": "focus",
67192
+ "privacy": "public",
67193
+ "return": {
67194
+ "type": {
67195
+ "text": "void"
67196
+ }
67197
+ },
67198
+ "parameters": [
67199
+ {
67200
+ "name": "options",
67201
+ "optional": true,
67202
+ "type": {
67203
+ "text": "FocusOptions"
67204
+ }
67205
+ }
67206
+ ],
67207
+ "description": "Focuses the row's interactive wrapper (the host itself is not focusable)."
67208
+ },
67209
+ {
67210
+ "kind": "field",
67211
+ "name": "isRoot",
67212
+ "type": {
67213
+ "text": "boolean"
67214
+ },
67215
+ "privacy": "private",
67216
+ "description": "A root-level row has no ancestor columns, so it draws no connector lines.",
67217
+ "readonly": true
67218
+ },
67219
+ {
67220
+ "kind": "field",
67221
+ "name": "isBlankAncestry",
67222
+ "type": {
67223
+ "text": "boolean"
67224
+ },
67225
+ "privacy": "private",
67226
+ "description": "All ancestor columns are blank spacers — the row is indented but draws no\nguide lines, so the terminal connector and dropdown are suppressed too.",
67227
+ "readonly": true
67228
+ },
67229
+ {
67230
+ "kind": "method",
67231
+ "name": "activate",
67232
+ "privacy": "private"
67233
+ },
67234
+ {
67235
+ "kind": "method",
67236
+ "name": "handleKeydown",
67237
+ "privacy": "private",
67238
+ "parameters": [
67239
+ {
67240
+ "name": "event",
67241
+ "type": {
67242
+ "text": "KeyboardEvent"
67243
+ }
67244
+ }
67245
+ ]
67246
+ },
67247
+ {
67248
+ "kind": "method",
67249
+ "name": "renderBranch",
67250
+ "privacy": "private",
67251
+ "parameters": [
67252
+ {
67253
+ "name": "type",
67254
+ "type": {
67255
+ "text": "TreeBranchType"
67256
+ }
67257
+ }
67258
+ ]
67259
+ },
67260
+ {
67261
+ "kind": "method",
67262
+ "name": "renderTerminalHeader",
67263
+ "privacy": "private"
67264
+ }
67265
+ ],
67266
+ "events": [
67267
+ {
67268
+ "name": "expand-toggle",
67269
+ "type": {
67270
+ "text": "CustomEvent"
67271
+ },
67272
+ "description": "{CustomEvent<boolean>} Fired when an expandable row is activated; detail is the next `expanded` value."
67273
+ },
67274
+ {
67275
+ "name": "click",
67276
+ "type": {
67277
+ "text": "CustomEvent"
67278
+ },
67279
+ "description": "{CustomEvent<void>} Fired when the row is activated."
67280
+ }
67281
+ ],
67282
+ "attributes": [
67283
+ {
67284
+ "name": "label",
67285
+ "type": {
67286
+ "text": "string"
67287
+ },
67288
+ "default": "'List item'",
67289
+ "description": "The text label displayed for the row.",
67290
+ "fieldName": "label"
67291
+ },
67292
+ {
67293
+ "name": "branches",
67294
+ "type": {
67295
+ "text": "TreeBranchType[]"
67296
+ },
67297
+ "default": "[]",
67298
+ "description": "Guide line for each ancestor level, outermost first; one 32px column per\nentry. Computed by `obc-tree-navigation` — rarely set by hand.",
67299
+ "fieldName": "branches"
67300
+ },
67301
+ {
67302
+ "name": "expandable",
67303
+ "type": {
67304
+ "text": "boolean"
67305
+ },
67306
+ "default": "false",
67307
+ "description": "Whether the row shows an expand/collapse chevron. Leave false for leaf nodes.",
67308
+ "fieldName": "expandable"
67309
+ },
67310
+ {
67311
+ "name": "expanded",
67312
+ "type": {
67313
+ "text": "boolean"
67314
+ },
67315
+ "default": "false",
67316
+ "description": "Whether the node is expanded. Rotates the chevron and sets `aria-expanded`.",
67317
+ "fieldName": "expanded"
67318
+ },
67319
+ {
67320
+ "name": "checked",
67321
+ "type": {
67322
+ "text": "boolean"
67323
+ },
67324
+ "default": "false",
67325
+ "description": "Whether the row is the current selection. Applies the amplified style and\nmakes the row inert to re-selection (no hover/pressed feedback, no `click`\nor navigation); it remains keyboard-focusable. An expandable checked row\nstill fires `expand-toggle` so a selected group can open and close.",
67326
+ "fieldName": "checked"
67327
+ },
67328
+ {
67329
+ "name": "disabled",
67330
+ "type": {
67331
+ "text": "boolean"
67332
+ },
67333
+ "default": "false",
67334
+ "description": "Disables the row, removing it from the tab order and dimming its appearance.",
67335
+ "fieldName": "disabled"
67336
+ },
67337
+ {
67338
+ "name": "terminalType",
67339
+ "type": {
67340
+ "text": "string"
67341
+ },
67342
+ "description": "Terminal type, controlling the alert-header marker shown in the terminal.\nOne of `regular` (default), `aggregated-header`, or `group-header`.",
67343
+ "fieldName": "terminalType"
67344
+ },
67345
+ {
67346
+ "name": "hasAlertBadge",
67347
+ "type": {
67348
+ "text": "boolean"
67349
+ },
67350
+ "default": "false",
67351
+ "description": "Whether a trailing alert counter badge is shown.",
67352
+ "fieldName": "hasAlertBadge"
67353
+ },
67354
+ {
67355
+ "name": "alertCount",
67356
+ "type": {
67357
+ "text": "number"
67358
+ },
67359
+ "default": "0",
67360
+ "description": "The number shown in the alert badge when `hasAlertBadge` is true.",
67361
+ "fieldName": "alertCount"
67362
+ },
67363
+ {
67364
+ "name": "alertType",
67365
+ "type": {
67366
+ "text": "string"
67367
+ },
67368
+ "description": "The severity/type of the alert badge. One of the `obc-badge` types (default `alarm`).",
67369
+ "fieldName": "alertType"
67370
+ },
67371
+ {
67372
+ "name": "href",
67373
+ "type": {
67374
+ "text": "string | undefined"
67375
+ },
67376
+ "description": "The URL to navigate to when the row is activated. If set, the row renders as\na link; otherwise it acts as a button.",
67377
+ "fieldName": "href"
67378
+ }
67379
+ ],
67380
+ "superclass": {
67381
+ "name": "LitElement",
67382
+ "package": "lit"
67383
+ },
67384
+ "tagName": "obc-tree-navigation-item",
67385
+ "customElement": true
67386
+ }
67387
+ ],
67388
+ "exports": [
67389
+ {
67390
+ "kind": "js",
67391
+ "name": "ObcTreeNavigationItem",
67392
+ "declaration": {
67393
+ "name": "ObcTreeNavigationItem",
67394
+ "module": "src/components/tree-navigation-item/tree-navigation-item.ts"
67395
+ }
67396
+ },
67397
+ {
67398
+ "kind": "custom-element-definition",
67399
+ "name": "obc-tree-navigation-item",
67400
+ "declaration": {
67401
+ "name": "ObcTreeNavigationItem",
67402
+ "module": "src/components/tree-navigation-item/tree-navigation-item.ts"
67403
+ }
67404
+ }
67405
+ ]
67406
+ },
67407
+ {
67408
+ "kind": "javascript-module",
67409
+ "path": "src/components/tree-navigation/tree-navigation.ts",
67410
+ "declarations": [
67411
+ {
67412
+ "kind": "class",
67413
+ "description": "`<obc-tree-navigation>` – The container for a tree- or file-explorer-style\nnavigation list. Holds nested `<obc-tree-navigation-group>` and\n`<obc-tree-navigation-item>` rows and computes each row's indentation guide\nlines automatically from its position in the hierarchy.\n\nConsumers write the tree as plain nested markup; the container assigns every\nrow's `branches` array so the guide lines (pass-through verticals, elbows, and\nthe last-child corner) connect correctly — there is no need to compute depth or\nbranch types by hand. It re-derives the guides whenever rows are added, removed,\nor groups expand and collapse.\n\n## Features\n- **Automatic guide lines:** Each row receives a `branches` array derived from\n its depth and whether each ancestor still has siblings below it. Last children\n get a corner (`└`); rows with siblings below get an intersection (`├`); and\n ancestor columns become a pass-through (`│`) or blank as appropriate.\n- **Live updates:** Reacts to slotted content changes and to group expand state,\n recomputing the guides so they always match the visible structure.\n- **Composable:** Works with any nesting depth of groups and items.\n\n## Usage Guidelines\n- Use as the root of a hierarchical navigation list. For flat navigation, use\n `obc-navigation-menu` instead.\n- Place `<obc-tree-navigation-group>` for expandable parents and\n `<obc-tree-navigation-item>` for leaves; nest groups to any depth.\n- Do not set each row's `branches` manually — the container manages them.\n\n## Slots\n\n| Slot Name | Renders When... | Purpose |\n|-----------|-----------------|----------------------------------------------------|\n| (default) | Always | Top-level rows (`obc-tree-navigation-group`/`-item`). |",
67414
+ "name": "ObcTreeNavigation",
67415
+ "slots": [
67416
+ {
67417
+ "description": "Top-level tree rows (groups and items).",
67418
+ "name": ""
67419
+ }
67420
+ ],
67421
+ "members": [
67422
+ {
67423
+ "kind": "field",
67424
+ "name": "mutationObserver",
67425
+ "type": {
67426
+ "text": "MutationObserver | undefined"
67427
+ },
67428
+ "privacy": "private"
67429
+ },
67430
+ {
67431
+ "kind": "method",
67432
+ "name": "innerItem",
67433
+ "privacy": "private",
67434
+ "return": {
67435
+ "type": {
67436
+ "text": "ObcTreeNavigationItem | null"
67437
+ }
67438
+ },
67439
+ "parameters": [
67440
+ {
67441
+ "name": "row",
67442
+ "type": {
67443
+ "text": "TreeRow"
67444
+ }
67445
+ }
67446
+ ],
67447
+ "description": "The focusable header item for a row: a leaf is itself; a group's is its shadow header."
67448
+ },
67449
+ {
67450
+ "kind": "field",
67451
+ "name": "navigator",
67452
+ "privacy": "private",
67453
+ "readonly": true,
67454
+ "default": "new TreeRovingNavigator<TreeRow>(this, { getRows: () => this.childRows(this), childRows: (row) => this.childRows(row), isGroup: (row) => isGroup(row), isExpanded: (row) => isGroup(row) && row.hasAttribute('expanded'), setExpanded: (row, expanded) => { if (isGroup(row)) row.expanded = expanded; }, innerItem: (row) => this.innerItem(row), isDisabled: (row) => this.innerItem(row)?.hasAttribute('disabled') ?? false, } satisfies TreeRovingAdapter<TreeRow>)"
67455
+ },
67456
+ {
67457
+ "kind": "field",
67458
+ "name": "onKeydown",
67459
+ "privacy": "private"
67460
+ },
67461
+ {
67462
+ "kind": "field",
67463
+ "name": "onExpandToggle",
67464
+ "privacy": "private"
67465
+ },
67466
+ {
67467
+ "kind": "method",
67468
+ "name": "childRows",
67469
+ "privacy": "private",
67470
+ "return": {
67471
+ "type": {
67472
+ "text": "TreeRow[]"
67473
+ }
67474
+ },
67475
+ "parameters": [
67476
+ {
67477
+ "name": "el",
67478
+ "type": {
67479
+ "text": "Element"
67480
+ }
67481
+ }
67482
+ ],
67483
+ "description": "Direct tree-row children of an element, in document order."
67484
+ },
67485
+ {
67486
+ "kind": "method",
67487
+ "name": "assignBranches",
67488
+ "privacy": "private",
67489
+ "return": {
67490
+ "type": {
67491
+ "text": "void"
67492
+ }
67493
+ },
67494
+ "parameters": [
67495
+ {
67496
+ "name": "rows",
67497
+ "type": {
67498
+ "text": "TreeRow[]"
67499
+ },
67500
+ "description": "sibling rows at this level, in order"
67501
+ },
67502
+ {
67503
+ "name": "ancestorHasNextSibling",
67504
+ "type": {
67505
+ "text": "boolean[]"
67506
+ },
67507
+ "description": "one flag per ancestor *below the root*: true\nif that ancestor has a sibling still below it (so its column is a\npass-through), false if its subtree has ended (a blank column)"
67508
+ },
67509
+ {
67510
+ "name": "depth",
67511
+ "type": {
67512
+ "text": "number"
67513
+ },
67514
+ "description": "nesting depth; 0 for top-level rows (which draw no columns)"
67515
+ }
67516
+ ],
67517
+ "description": "Walk the row tree and assign each row's `branches`. Mirrors the guide-line\nmodel: a row gets one column per ancestor (pass-through `straight` if that\nancestor still has siblings below, else `blank`) followed by its own elbow\n(`corner` if it is the last child, else `intersection`). Top-level rows draw\nno columns at all."
67518
+ },
67519
+ {
67520
+ "kind": "method",
67521
+ "name": "updateBranches",
67522
+ "privacy": "private",
67523
+ "return": {
67524
+ "type": {
67525
+ "text": "void"
67526
+ }
67527
+ }
67528
+ }
67529
+ ],
67530
+ "superclass": {
67531
+ "name": "LitElement",
67532
+ "package": "lit"
67533
+ },
67534
+ "tagName": "obc-tree-navigation",
67535
+ "customElement": true
67536
+ }
67537
+ ],
67538
+ "exports": [
67539
+ {
67540
+ "kind": "js",
67541
+ "name": "ObcTreeNavigation",
67542
+ "declaration": {
67543
+ "name": "ObcTreeNavigation",
67544
+ "module": "src/components/tree-navigation/tree-navigation.ts"
67545
+ }
67546
+ },
67547
+ {
67548
+ "kind": "custom-element-definition",
67549
+ "name": "obc-tree-navigation",
67550
+ "declaration": {
67551
+ "name": "ObcTreeNavigation",
67552
+ "module": "src/components/tree-navigation/tree-navigation.ts"
67553
+ }
67554
+ }
67555
+ ]
67556
+ },
66378
67557
  {
66379
67558
  "kind": "javascript-module",
66380
67559
  "path": "src/components/user-button/user-button.ts",