@cloudscape-design/components-themeable 3.0.1343 → 3.0.1345
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/lib/internal/manifest.json +1 -1
- package/lib/internal/scss/alert/styles.scss +9 -8
- package/lib/internal/scss/app-layout/constants.scss +0 -3
- package/lib/internal/scss/app-layout/visual-refresh-toolbar/drawer/styles.scss +2 -0
- package/lib/internal/scss/app-layout/visual-refresh-toolbar/navigation/styles.scss +1 -1
- package/lib/internal/scss/app-layout/visual-refresh-toolbar/skeleton/styles.scss +1 -1
- package/lib/internal/scss/expandable-section/styles.scss +102 -14
- package/lib/internal/scss/flashbar/collapsible.scss +1 -1
- package/lib/internal/scss/flashbar/styles.scss +4 -4
- package/lib/internal/scss/internal/generated/custom-css-properties/index.scss +1 -1
- package/lib/internal/scss/internal/styles/motion/mixins.scss +9 -0
- package/lib/internal/scss/link/styles.scss +2 -2
- package/lib/internal/scss/progress-bar/styles.scss +20 -0
- package/lib/internal/scss/side-navigation/styles.scss +420 -40
- package/lib/internal/template/action-card/styles.css.js +17 -17
- package/lib/internal/template/action-card/styles.scoped.css +113 -113
- package/lib/internal/template/action-card/styles.selectors.js +17 -17
- package/lib/internal/template/alert/styles.css.js +27 -27
- package/lib/internal/template/alert/styles.scoped.css +57 -56
- package/lib/internal/template/alert/styles.selectors.js +27 -27
- package/lib/internal/template/anchor-navigation/styles.css.js +8 -8
- package/lib/internal/template/anchor-navigation/styles.scoped.css +28 -28
- package/lib/internal/template/anchor-navigation/styles.selectors.js +8 -8
- package/lib/internal/template/annotation-context/annotation/styles.css.js +13 -13
- package/lib/internal/template/annotation-context/annotation/styles.scoped.css +26 -26
- package/lib/internal/template/annotation-context/annotation/styles.selectors.js +13 -13
- package/lib/internal/template/app-layout/drawer/styles.css.js +14 -14
- package/lib/internal/template/app-layout/drawer/styles.scoped.css +31 -31
- package/lib/internal/template/app-layout/drawer/styles.selectors.js +14 -14
- package/lib/internal/template/app-layout/mobile-toolbar/styles.css.js +8 -8
- package/lib/internal/template/app-layout/mobile-toolbar/styles.scoped.css +12 -12
- package/lib/internal/template/app-layout/mobile-toolbar/styles.selectors.js +8 -8
- package/lib/internal/template/app-layout/styles.css.js +12 -12
- package/lib/internal/template/app-layout/styles.scoped.css +15 -15
- package/lib/internal/template/app-layout/styles.selectors.js +12 -12
- package/lib/internal/template/app-layout/toggles/styles.css.js +2 -2
- package/lib/internal/template/app-layout/toggles/styles.scoped.css +7 -7
- package/lib/internal/template/app-layout/toggles/styles.selectors.js +2 -2
- package/lib/internal/template/app-layout/visual-refresh/styles.css.js +86 -86
- package/lib/internal/template/app-layout/visual-refresh/styles.scoped.css +207 -207
- package/lib/internal/template/app-layout/visual-refresh/styles.selectors.js +86 -86
- package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.css.js +32 -32
- package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.scoped.css +116 -113
- package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.selectors.js +32 -32
- package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.css.js +6 -6
- package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.scoped.css +12 -12
- package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.selectors.js +6 -6
- package/lib/internal/template/app-layout/visual-refresh-toolbar/notifications/styles.css.js +3 -3
- package/lib/internal/template/app-layout/visual-refresh-toolbar/notifications/styles.scoped.css +4 -4
- package/lib/internal/template/app-layout/visual-refresh-toolbar/notifications/styles.selectors.js +3 -3
- package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.css.js +30 -30
- package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.scoped.css +74 -74
- package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.selectors.js +30 -30
- package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/styles.css.js +14 -14
- package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/styles.scoped.css +45 -45
- package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/styles.selectors.js +14 -14
- package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/styles.css.js +6 -6
- package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/styles.scoped.css +26 -26
- package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/styles.selectors.js +6 -6
- package/lib/internal/template/app-layout-toolbar/index.d.ts.map +1 -1
- package/lib/internal/template/app-layout-toolbar/index.js +1 -0
- package/lib/internal/template/app-layout-toolbar/index.js.map +1 -1
- package/lib/internal/template/area-chart/styles.css.js +6 -6
- package/lib/internal/template/area-chart/styles.scoped.css +10 -10
- package/lib/internal/template/area-chart/styles.selectors.js +6 -6
- package/lib/internal/template/attribute-editor/styles.css.js +15 -15
- package/lib/internal/template/attribute-editor/styles.scoped.css +33 -33
- package/lib/internal/template/attribute-editor/styles.selectors.js +15 -15
- package/lib/internal/template/badge/styles.css.js +10 -10
- package/lib/internal/template/badge/styles.scoped.css +17 -17
- package/lib/internal/template/badge/styles.selectors.js +10 -10
- package/lib/internal/template/box/styles.css.js +220 -220
- package/lib/internal/template/box/styles.scoped.css +309 -309
- package/lib/internal/template/box/styles.selectors.js +220 -220
- package/lib/internal/template/breadcrumb-group/item/styles.css.js +7 -7
- package/lib/internal/template/breadcrumb-group/item/styles.scoped.css +34 -34
- package/lib/internal/template/breadcrumb-group/item/styles.selectors.js +7 -7
- package/lib/internal/template/breadcrumb-group/styles.css.js +14 -14
- package/lib/internal/template/breadcrumb-group/styles.scoped.css +33 -33
- package/lib/internal/template/breadcrumb-group/styles.selectors.js +14 -14
- package/lib/internal/template/button/styles.css.js +23 -23
- package/lib/internal/template/button/styles.scoped.css +134 -134
- package/lib/internal/template/button/styles.selectors.js +23 -23
- package/lib/internal/template/button-dropdown/category-elements/styles.css.js +18 -18
- package/lib/internal/template/button-dropdown/category-elements/styles.scoped.css +40 -40
- package/lib/internal/template/button-dropdown/category-elements/styles.selectors.js +18 -18
- package/lib/internal/template/button-dropdown/item-element/styles.css.js +21 -21
- package/lib/internal/template/button-dropdown/item-element/styles.scoped.css +57 -57
- package/lib/internal/template/button-dropdown/item-element/styles.selectors.js +21 -21
- package/lib/internal/template/button-dropdown/mobile-expandable-group/styles.css.js +5 -5
- package/lib/internal/template/button-dropdown/mobile-expandable-group/styles.scoped.css +7 -7
- package/lib/internal/template/button-dropdown/mobile-expandable-group/styles.selectors.js +5 -5
- package/lib/internal/template/button-dropdown/styles.css.js +23 -23
- package/lib/internal/template/button-dropdown/styles.scoped.css +35 -35
- package/lib/internal/template/button-dropdown/styles.selectors.js +23 -23
- package/lib/internal/template/button-group/styles.css.js +4 -4
- package/lib/internal/template/button-group/styles.scoped.css +6 -6
- package/lib/internal/template/button-group/styles.selectors.js +4 -4
- package/lib/internal/template/calendar/styles.css.js +21 -21
- package/lib/internal/template/calendar/styles.scoped.css +64 -64
- package/lib/internal/template/calendar/styles.selectors.js +21 -21
- package/lib/internal/template/cards/styles.css.js +38 -38
- package/lib/internal/template/cards/styles.scoped.css +42 -42
- package/lib/internal/template/cards/styles.selectors.js +38 -38
- package/lib/internal/template/checkbox/styles.css.js +3 -3
- package/lib/internal/template/checkbox/styles.scoped.css +7 -7
- package/lib/internal/template/checkbox/styles.selectors.js +3 -3
- package/lib/internal/template/code-editor/styles.css.js +33 -33
- package/lib/internal/template/code-editor/styles.scoped.css +226 -226
- package/lib/internal/template/code-editor/styles.selectors.js +33 -33
- package/lib/internal/template/collection-preferences/styles.css.js +38 -38
- package/lib/internal/template/collection-preferences/styles.scoped.css +47 -47
- package/lib/internal/template/collection-preferences/styles.selectors.js +38 -38
- package/lib/internal/template/column-layout/flexible-column-layout/styles.css.js +5 -5
- package/lib/internal/template/column-layout/flexible-column-layout/styles.scoped.css +9 -9
- package/lib/internal/template/column-layout/flexible-column-layout/styles.selectors.js +5 -5
- package/lib/internal/template/column-layout/styles.css.js +13 -13
- package/lib/internal/template/column-layout/styles.scoped.css +47 -47
- package/lib/internal/template/column-layout/styles.selectors.js +13 -13
- package/lib/internal/template/container/styles.css.js +33 -33
- package/lib/internal/template/container/styles.scoped.css +69 -69
- package/lib/internal/template/container/styles.selectors.js +33 -33
- package/lib/internal/template/content-layout/styles.css.js +14 -14
- package/lib/internal/template/content-layout/styles.scoped.css +19 -19
- package/lib/internal/template/content-layout/styles.selectors.js +14 -14
- package/lib/internal/template/date-picker/styles.css.js +7 -7
- package/lib/internal/template/date-picker/styles.scoped.css +11 -11
- package/lib/internal/template/date-picker/styles.selectors.js +7 -7
- package/lib/internal/template/date-range-picker/calendar/grids/styles.css.js +30 -30
- package/lib/internal/template/date-range-picker/calendar/grids/styles.scoped.css +79 -79
- package/lib/internal/template/date-range-picker/calendar/grids/styles.selectors.js +30 -30
- package/lib/internal/template/date-range-picker/styles.css.js +23 -23
- package/lib/internal/template/date-range-picker/styles.scoped.css +40 -40
- package/lib/internal/template/date-range-picker/styles.selectors.js +23 -23
- package/lib/internal/template/divider/styles.css.js +6 -6
- package/lib/internal/template/divider/styles.scoped.css +10 -10
- package/lib/internal/template/divider/styles.selectors.js +6 -6
- package/lib/internal/template/drawer/styles.css.js +29 -29
- package/lib/internal/template/drawer/styles.scoped.css +47 -47
- package/lib/internal/template/drawer/styles.selectors.js +29 -29
- package/lib/internal/template/dropdown/styles.css.js +20 -20
- package/lib/internal/template/dropdown/styles.scoped.css +43 -43
- package/lib/internal/template/dropdown/styles.selectors.js +20 -20
- package/lib/internal/template/expandable-section/expandable-section-container.d.ts +1 -2
- package/lib/internal/template/expandable-section/expandable-section-container.d.ts.map +1 -1
- package/lib/internal/template/expandable-section/expandable-section-container.js +2 -2
- package/lib/internal/template/expandable-section/expandable-section-container.js.map +1 -1
- package/lib/internal/template/expandable-section/expandable-section-header.d.ts +2 -1
- package/lib/internal/template/expandable-section/expandable-section-header.d.ts.map +1 -1
- package/lib/internal/template/expandable-section/expandable-section-header.js +4 -4
- package/lib/internal/template/expandable-section/expandable-section-header.js.map +1 -1
- package/lib/internal/template/expandable-section/internal.d.ts +8 -3
- package/lib/internal/template/expandable-section/internal.d.ts.map +1 -1
- package/lib/internal/template/expandable-section/internal.js +24 -10
- package/lib/internal/template/expandable-section/internal.js.map +1 -1
- package/lib/internal/template/expandable-section/styles.css.js +43 -42
- package/lib/internal/template/expandable-section/styles.scoped.css +210 -155
- package/lib/internal/template/expandable-section/styles.selectors.js +43 -42
- package/lib/internal/template/file-dropzone/styles.css.js +3 -3
- package/lib/internal/template/file-dropzone/styles.scoped.css +12 -12
- package/lib/internal/template/file-dropzone/styles.selectors.js +3 -3
- package/lib/internal/template/file-input/styles.css.js +5 -5
- package/lib/internal/template/file-input/styles.scoped.css +10 -10
- package/lib/internal/template/file-input/styles.selectors.js +5 -5
- package/lib/internal/template/file-token-group/styles.css.js +23 -23
- package/lib/internal/template/file-token-group/styles.scoped.css +51 -51
- package/lib/internal/template/file-token-group/styles.selectors.js +23 -23
- package/lib/internal/template/flashbar/flash.d.ts.map +1 -1
- package/lib/internal/template/flashbar/flash.js +6 -1
- package/lib/internal/template/flashbar/flash.js.map +1 -1
- package/lib/internal/template/flashbar/styles.css.js +50 -50
- package/lib/internal/template/flashbar/styles.scoped.css +165 -165
- package/lib/internal/template/flashbar/styles.selectors.js +50 -50
- package/lib/internal/template/form/styles.css.js +8 -8
- package/lib/internal/template/form/styles.scoped.css +9 -9
- package/lib/internal/template/form/styles.selectors.js +8 -8
- package/lib/internal/template/form-field/styles.css.js +24 -24
- package/lib/internal/template/form-field/styles.scoped.css +44 -44
- package/lib/internal/template/form-field/styles.selectors.js +24 -24
- package/lib/internal/template/grid/styles.css.js +53 -53
- package/lib/internal/template/grid/styles.scoped.css +55 -55
- package/lib/internal/template/grid/styles.selectors.js +53 -53
- package/lib/internal/template/header/styles.css.js +35 -35
- package/lib/internal/template/header/styles.scoped.css +59 -59
- package/lib/internal/template/header/styles.selectors.js +35 -35
- package/lib/internal/template/help-panel/styles.css.js +6 -6
- package/lib/internal/template/help-panel/styles.scoped.css +83 -83
- package/lib/internal/template/help-panel/styles.selectors.js +6 -6
- package/lib/internal/template/icon/styles.css.js +41 -41
- package/lib/internal/template/icon/styles.scoped.css +106 -106
- package/lib/internal/template/icon/styles.selectors.js +41 -41
- package/lib/internal/template/input/styles.css.js +28 -28
- package/lib/internal/template/input/styles.scoped.css +120 -120
- package/lib/internal/template/input/styles.selectors.js +28 -28
- package/lib/internal/template/internal/base-component/styles.scoped.css +2889 -2756
- package/lib/internal/template/internal/components/abstract-switch/styles.css.js +13 -13
- package/lib/internal/template/internal/components/abstract-switch/styles.scoped.css +23 -23
- package/lib/internal/template/internal/components/abstract-switch/styles.selectors.js +13 -13
- package/lib/internal/template/internal/components/button-trigger/styles.css.js +14 -14
- package/lib/internal/template/internal/components/button-trigger/styles.scoped.css +63 -63
- package/lib/internal/template/internal/components/button-trigger/styles.selectors.js +14 -14
- package/lib/internal/template/internal/components/cartesian-chart/styles.css.js +28 -28
- package/lib/internal/template/internal/components/cartesian-chart/styles.scoped.css +36 -36
- package/lib/internal/template/internal/components/cartesian-chart/styles.selectors.js +28 -28
- package/lib/internal/template/internal/components/chart-filter/styles.css.js +3 -3
- package/lib/internal/template/internal/components/chart-filter/styles.scoped.css +4 -4
- package/lib/internal/template/internal/components/chart-filter/styles.selectors.js +3 -3
- package/lib/internal/template/internal/components/chart-legend/styles.css.js +6 -6
- package/lib/internal/template/internal/components/chart-legend/styles.scoped.css +16 -16
- package/lib/internal/template/internal/components/chart-legend/styles.selectors.js +6 -6
- package/lib/internal/template/internal/components/chart-plot/styles.css.js +5 -5
- package/lib/internal/template/internal/components/chart-plot/styles.scoped.css +6 -6
- package/lib/internal/template/internal/components/chart-plot/styles.selectors.js +5 -5
- package/lib/internal/template/internal/components/chart-popover/styles.css.js +3 -3
- package/lib/internal/template/internal/components/chart-popover/styles.scoped.css +6 -6
- package/lib/internal/template/internal/components/chart-popover/styles.selectors.js +3 -3
- package/lib/internal/template/internal/components/chart-series-details/styles.css.js +19 -19
- package/lib/internal/template/internal/components/chart-series-details/styles.scoped.css +37 -37
- package/lib/internal/template/internal/components/chart-series-details/styles.selectors.js +19 -19
- package/lib/internal/template/internal/components/chart-series-marker/styles.css.js +5 -5
- package/lib/internal/template/internal/components/chart-series-marker/styles.scoped.css +9 -9
- package/lib/internal/template/internal/components/chart-series-marker/styles.selectors.js +5 -5
- package/lib/internal/template/internal/components/chart-status-container/styles.css.js +2 -2
- package/lib/internal/template/internal/components/chart-status-container/styles.scoped.css +3 -3
- package/lib/internal/template/internal/components/chart-status-container/styles.selectors.js +2 -2
- package/lib/internal/template/internal/components/chart-wrapper/styles.css.js +9 -9
- package/lib/internal/template/internal/components/chart-wrapper/styles.scoped.css +10 -10
- package/lib/internal/template/internal/components/chart-wrapper/styles.selectors.js +9 -9
- package/lib/internal/template/internal/components/checkbox-icon/styles.css.js +9 -9
- package/lib/internal/template/internal/components/checkbox-icon/styles.scoped.css +17 -17
- package/lib/internal/template/internal/components/checkbox-icon/styles.selectors.js +9 -9
- package/lib/internal/template/internal/components/drag-handle/styles.css.js +14 -14
- package/lib/internal/template/internal/components/drag-handle/styles.scoped.css +24 -24
- package/lib/internal/template/internal/components/drag-handle/styles.selectors.js +14 -14
- package/lib/internal/template/internal/components/drag-handle-wrapper/styles.css.js +30 -30
- package/lib/internal/template/internal/components/drag-handle-wrapper/styles.scoped.css +50 -50
- package/lib/internal/template/internal/components/drag-handle-wrapper/styles.selectors.js +30 -30
- package/lib/internal/template/internal/components/dropdown-footer/styles.css.js +3 -3
- package/lib/internal/template/internal/components/dropdown-footer/styles.scoped.css +6 -6
- package/lib/internal/template/internal/components/dropdown-footer/styles.selectors.js +3 -3
- package/lib/internal/template/internal/components/dropdown-status/styles.css.js +2 -2
- package/lib/internal/template/internal/components/dropdown-status/styles.scoped.css +4 -4
- package/lib/internal/template/internal/components/dropdown-status/styles.selectors.js +2 -2
- package/lib/internal/template/internal/components/expand-toggle-button/styles.css.js +4 -4
- package/lib/internal/template/internal/components/expand-toggle-button/styles.scoped.css +18 -18
- package/lib/internal/template/internal/components/expand-toggle-button/styles.selectors.js +4 -4
- package/lib/internal/template/internal/components/menu-dropdown/styles.css.js +7 -7
- package/lib/internal/template/internal/components/menu-dropdown/styles.scoped.css +19 -19
- package/lib/internal/template/internal/components/menu-dropdown/styles.selectors.js +7 -7
- package/lib/internal/template/internal/components/option/styles.css.js +17 -17
- package/lib/internal/template/internal/components/option/styles.scoped.css +37 -37
- package/lib/internal/template/internal/components/option/styles.selectors.js +17 -17
- package/lib/internal/template/internal/components/options-list/styles.css.js +3 -3
- package/lib/internal/template/internal/components/options-list/styles.scoped.css +4 -4
- package/lib/internal/template/internal/components/options-list/styles.selectors.js +3 -3
- package/lib/internal/template/internal/components/panel-resize-handle/styles.css.js +3 -3
- package/lib/internal/template/internal/components/panel-resize-handle/styles.scoped.css +8 -8
- package/lib/internal/template/internal/components/panel-resize-handle/styles.selectors.js +3 -3
- package/lib/internal/template/internal/components/radio-button/styles.css.js +7 -7
- package/lib/internal/template/internal/components/radio-button/styles.scoped.css +22 -22
- package/lib/internal/template/internal/components/radio-button/styles.selectors.js +7 -7
- package/lib/internal/template/internal/components/selectable-item/styles.css.js +22 -22
- package/lib/internal/template/internal/components/selectable-item/styles.scoped.css +79 -79
- package/lib/internal/template/internal/components/selectable-item/styles.selectors.js +22 -22
- package/lib/internal/template/internal/components/sortable-area/styles.css.js +8 -8
- package/lib/internal/template/internal/components/sortable-area/styles.scoped.css +20 -20
- package/lib/internal/template/internal/components/sortable-area/styles.selectors.js +8 -8
- package/lib/internal/template/internal/components/structured-item/styles.css.js +7 -7
- package/lib/internal/template/internal/components/structured-item/styles.scoped.css +10 -10
- package/lib/internal/template/internal/components/structured-item/styles.selectors.js +7 -7
- package/lib/internal/template/internal/components/token-list/styles.css.js +10 -10
- package/lib/internal/template/internal/components/token-list/styles.scoped.css +30 -30
- package/lib/internal/template/internal/components/token-list/styles.selectors.js +10 -10
- package/lib/internal/template/internal/components/transition/index.d.ts +6 -6
- package/lib/internal/template/internal/components/transition/index.d.ts.map +1 -1
- package/lib/internal/template/internal/components/transition/index.js +4 -4
- package/lib/internal/template/internal/components/transition/index.js.map +1 -1
- package/lib/internal/template/internal/environment.js +2 -2
- package/lib/internal/template/internal/environment.json +2 -2
- package/lib/internal/template/internal/generated/styles/tokens.d.ts +28 -0
- package/lib/internal/template/internal/generated/styles/tokens.js +351 -323
- package/lib/internal/template/internal/generated/theming/index.cjs +1031 -351
- package/lib/internal/template/internal/generated/theming/index.cjs.d.ts +23 -5
- package/lib/internal/template/internal/generated/theming/index.d.ts +23 -5
- package/lib/internal/template/internal/generated/theming/index.js +1031 -351
- package/lib/internal/template/item-card/styles.css.js +14 -14
- package/lib/internal/template/item-card/styles.scoped.css +58 -58
- package/lib/internal/template/item-card/styles.selectors.js +14 -14
- package/lib/internal/template/key-value-pairs/styles.css.js +8 -8
- package/lib/internal/template/key-value-pairs/styles.scoped.css +14 -14
- package/lib/internal/template/key-value-pairs/styles.selectors.js +8 -8
- package/lib/internal/template/link/styles.css.js +21 -21
- package/lib/internal/template/link/styles.scoped.css +116 -116
- package/lib/internal/template/link/styles.selectors.js +21 -21
- package/lib/internal/template/list/styles.css.js +5 -5
- package/lib/internal/template/list/styles.scoped.css +9 -9
- package/lib/internal/template/list/styles.selectors.js +5 -5
- package/lib/internal/template/modal/styles.css.js +31 -31
- package/lib/internal/template/modal/styles.scoped.css +54 -54
- package/lib/internal/template/modal/styles.selectors.js +31 -31
- package/lib/internal/template/multiselect/styles.css.js +5 -5
- package/lib/internal/template/multiselect/styles.scoped.css +7 -7
- package/lib/internal/template/multiselect/styles.selectors.js +5 -5
- package/lib/internal/template/pagination/styles.css.js +12 -12
- package/lib/internal/template/pagination/styles.scoped.css +47 -47
- package/lib/internal/template/pagination/styles.selectors.js +12 -12
- package/lib/internal/template/panel-layout/styles.css.js +7 -7
- package/lib/internal/template/panel-layout/styles.scoped.css +13 -13
- package/lib/internal/template/panel-layout/styles.selectors.js +7 -7
- package/lib/internal/template/pie-chart/styles.css.js +27 -27
- package/lib/internal/template/pie-chart/styles.scoped.css +53 -53
- package/lib/internal/template/pie-chart/styles.selectors.js +27 -27
- package/lib/internal/template/popover/styles.css.js +58 -58
- package/lib/internal/template/popover/styles.scoped.css +110 -110
- package/lib/internal/template/popover/styles.selectors.js +58 -58
- package/lib/internal/template/progress-bar/internal.d.ts.map +1 -1
- package/lib/internal/template/progress-bar/internal.js +1 -1
- package/lib/internal/template/progress-bar/internal.js.map +1 -1
- package/lib/internal/template/progress-bar/styles.css.js +19 -18
- package/lib/internal/template/progress-bar/styles.scoped.css +44 -32
- package/lib/internal/template/progress-bar/styles.selectors.js +19 -18
- package/lib/internal/template/prompt-input/styles.css.js +26 -26
- package/lib/internal/template/prompt-input/styles.scoped.css +102 -102
- package/lib/internal/template/prompt-input/styles.selectors.js +26 -26
- package/lib/internal/template/property-filter/filtering-token/styles.css.js +18 -18
- package/lib/internal/template/property-filter/filtering-token/styles.scoped.css +55 -55
- package/lib/internal/template/property-filter/filtering-token/styles.selectors.js +18 -18
- package/lib/internal/template/property-filter/styles.css.js +39 -39
- package/lib/internal/template/property-filter/styles.scoped.css +52 -52
- package/lib/internal/template/property-filter/styles.selectors.js +39 -39
- package/lib/internal/template/radio-button/styles.css.js +1 -1
- package/lib/internal/template/radio-button/styles.scoped.css +2 -2
- package/lib/internal/template/radio-button/styles.selectors.js +1 -1
- package/lib/internal/template/radio-group/styles.css.js +5 -5
- package/lib/internal/template/radio-group/styles.scoped.css +7 -7
- package/lib/internal/template/radio-group/styles.selectors.js +5 -5
- package/lib/internal/template/s3-resource-selector/s3-in-context/styles.css.js +7 -7
- package/lib/internal/template/s3-resource-selector/s3-in-context/styles.scoped.css +9 -9
- package/lib/internal/template/s3-resource-selector/s3-in-context/styles.selectors.js +7 -7
- package/lib/internal/template/s3-resource-selector/s3-modal/styles.css.js +3 -3
- package/lib/internal/template/s3-resource-selector/s3-modal/styles.scoped.css +4 -4
- package/lib/internal/template/s3-resource-selector/s3-modal/styles.selectors.js +3 -3
- package/lib/internal/template/segmented-control/styles.css.js +16 -16
- package/lib/internal/template/segmented-control/styles.scoped.css +46 -46
- package/lib/internal/template/segmented-control/styles.selectors.js +16 -16
- package/lib/internal/template/select/parts/styles.css.js +21 -21
- package/lib/internal/template/select/parts/styles.scoped.css +28 -28
- package/lib/internal/template/select/parts/styles.selectors.js +21 -21
- package/lib/internal/template/select/styles.css.js +3 -3
- package/lib/internal/template/select/styles.scoped.css +4 -4
- package/lib/internal/template/select/styles.selectors.js +3 -3
- package/lib/internal/template/side-navigation/implementation.d.ts.map +1 -1
- package/lib/internal/template/side-navigation/implementation.js +6 -3
- package/lib/internal/template/side-navigation/implementation.js.map +1 -1
- package/lib/internal/template/side-navigation/parts.d.ts +2 -1
- package/lib/internal/template/side-navigation/parts.d.ts.map +1 -1
- package/lib/internal/template/side-navigation/parts.js +86 -76
- package/lib/internal/template/side-navigation/parts.js.map +1 -1
- package/lib/internal/template/side-navigation/styles.css.js +64 -50
- package/lib/internal/template/side-navigation/styles.scoped.css +562 -118
- package/lib/internal/template/side-navigation/styles.selectors.js +64 -50
- package/lib/internal/template/side-navigation/util.d.ts +10 -0
- package/lib/internal/template/side-navigation/util.d.ts.map +1 -1
- package/lib/internal/template/side-navigation/util.js +48 -0
- package/lib/internal/template/side-navigation/util.js.map +1 -1
- package/lib/internal/template/skeleton/styles.css.js +15 -15
- package/lib/internal/template/skeleton/styles.scoped.css +27 -27
- package/lib/internal/template/skeleton/styles.selectors.js +15 -15
- package/lib/internal/template/slider/styles.css.js +26 -26
- package/lib/internal/template/slider/styles.scoped.css +154 -154
- package/lib/internal/template/slider/styles.selectors.js +26 -26
- package/lib/internal/template/spinner/styles.css.js +13 -13
- package/lib/internal/template/spinner/styles.scoped.css +21 -21
- package/lib/internal/template/spinner/styles.selectors.js +13 -13
- package/lib/internal/template/split-panel/icons/styles.css.js +22 -22
- package/lib/internal/template/split-panel/icons/styles.scoped.css +44 -44
- package/lib/internal/template/split-panel/icons/styles.selectors.js +22 -22
- package/lib/internal/template/split-panel/styles.css.js +38 -38
- package/lib/internal/template/split-panel/styles.scoped.css +68 -68
- package/lib/internal/template/split-panel/styles.selectors.js +38 -38
- package/lib/internal/template/status-indicator/styles.css.js +25 -25
- package/lib/internal/template/status-indicator/styles.scoped.css +70 -70
- package/lib/internal/template/status-indicator/styles.selectors.js +25 -25
- package/lib/internal/template/steps/styles.css.js +17 -17
- package/lib/internal/template/steps/styles.scoped.css +37 -37
- package/lib/internal/template/steps/styles.selectors.js +17 -17
- package/lib/internal/template/table/body-cell/styles.css.js +48 -48
- package/lib/internal/template/table/body-cell/styles.scoped.css +405 -405
- package/lib/internal/template/table/body-cell/styles.selectors.js +48 -48
- package/lib/internal/template/table/header-cell/styles.css.js +38 -38
- package/lib/internal/template/table/header-cell/styles.scoped.css +102 -102
- package/lib/internal/template/table/header-cell/styles.selectors.js +38 -38
- package/lib/internal/template/table/interfaces.d.ts +62 -45
- package/lib/internal/template/table/interfaces.d.ts.map +1 -1
- package/lib/internal/template/table/interfaces.js.map +1 -1
- package/lib/internal/template/table/internal.d.ts.map +1 -1
- package/lib/internal/template/table/internal.js +2 -2
- package/lib/internal/template/table/internal.js.map +1 -1
- package/lib/internal/template/table/resizer/styles.css.js +17 -17
- package/lib/internal/template/table/resizer/styles.scoped.css +33 -33
- package/lib/internal/template/table/resizer/styles.selectors.js +17 -17
- package/lib/internal/template/table/skeleton-rows.d.ts +2 -1
- package/lib/internal/template/table/skeleton-rows.d.ts.map +1 -1
- package/lib/internal/template/table/skeleton-rows.js +5 -2
- package/lib/internal/template/table/skeleton-rows.js.map +1 -1
- package/lib/internal/template/table/sticky-scrollbar/styles.css.js +6 -6
- package/lib/internal/template/table/sticky-scrollbar/styles.scoped.css +10 -10
- package/lib/internal/template/table/sticky-scrollbar/styles.selectors.js +6 -6
- package/lib/internal/template/table/styles.css.js +37 -37
- package/lib/internal/template/table/styles.scoped.css +52 -52
- package/lib/internal/template/table/styles.selectors.js +37 -37
- package/lib/internal/template/tabs/styles.css.js +30 -30
- package/lib/internal/template/tabs/styles.scoped.css +64 -64
- package/lib/internal/template/tabs/styles.selectors.js +30 -30
- package/lib/internal/template/tabs/tab-header-bar.d.ts.map +1 -1
- package/lib/internal/template/tabs/tab-header-bar.js +5 -0
- package/lib/internal/template/tabs/tab-header-bar.js.map +1 -1
- package/lib/internal/template/tag-editor/styles.css.js +3 -3
- package/lib/internal/template/tag-editor/styles.scoped.css +15 -15
- package/lib/internal/template/tag-editor/styles.selectors.js +3 -3
- package/lib/internal/template/text-content/styles.css.js +1 -1
- package/lib/internal/template/text-content/styles.scoped.css +71 -71
- package/lib/internal/template/text-content/styles.selectors.js +1 -1
- package/lib/internal/template/text-filter/styles.css.js +3 -3
- package/lib/internal/template/text-filter/styles.scoped.css +5 -5
- package/lib/internal/template/text-filter/styles.selectors.js +3 -3
- package/lib/internal/template/textarea/styles.css.js +9 -9
- package/lib/internal/template/textarea/styles.scoped.css +46 -46
- package/lib/internal/template/textarea/styles.selectors.js +9 -9
- package/lib/internal/template/tiles/styles.css.js +30 -30
- package/lib/internal/template/tiles/styles.scoped.css +90 -90
- package/lib/internal/template/tiles/styles.selectors.js +30 -30
- package/lib/internal/template/toggle/styles.css.js +10 -10
- package/lib/internal/template/toggle/styles.scoped.css +27 -27
- package/lib/internal/template/toggle/styles.selectors.js +10 -10
- package/lib/internal/template/toggle-button/styles.css.js +4 -4
- package/lib/internal/template/toggle-button/styles.scoped.css +12 -12
- package/lib/internal/template/toggle-button/styles.selectors.js +4 -4
- package/lib/internal/template/token/styles.css.js +14 -14
- package/lib/internal/template/token/styles.scoped.css +47 -47
- package/lib/internal/template/token/styles.selectors.js +14 -14
- package/lib/internal/template/token-group/styles.css.js +5 -5
- package/lib/internal/template/token-group/styles.scoped.css +5 -5
- package/lib/internal/template/token-group/styles.selectors.js +5 -5
- package/lib/internal/template/top-navigation/styles.css.js +47 -47
- package/lib/internal/template/top-navigation/styles.scoped.css +86 -86
- package/lib/internal/template/top-navigation/styles.selectors.js +47 -47
- package/lib/internal/template/tree-view/styles.css.js +2 -2
- package/lib/internal/template/tree-view/styles.scoped.css +3 -3
- package/lib/internal/template/tree-view/styles.selectors.js +2 -2
- package/lib/internal/template/tree-view/tree-item/styles.css.js +10 -10
- package/lib/internal/template/tree-view/tree-item/styles.scoped.css +17 -17
- package/lib/internal/template/tree-view/tree-item/styles.selectors.js +10 -10
- package/lib/internal/template/tree-view/vertical-connector/styles.css.js +3 -3
- package/lib/internal/template/tree-view/vertical-connector/styles.scoped.css +4 -4
- package/lib/internal/template/tree-view/vertical-connector/styles.selectors.js +3 -3
- package/lib/internal/template/truncated-text/styles.css.js +1 -1
- package/lib/internal/template/truncated-text/styles.scoped.css +6 -6
- package/lib/internal/template/truncated-text/styles.selectors.js +1 -1
- package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/styles.css.js +20 -20
- package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/styles.scoped.css +25 -25
- package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/styles.selectors.js +20 -20
- package/lib/internal/template/tutorial-panel/components/tutorial-list/styles.css.js +18 -18
- package/lib/internal/template/tutorial-panel/components/tutorial-list/styles.scoped.css +35 -35
- package/lib/internal/template/tutorial-panel/components/tutorial-list/styles.selectors.js +18 -18
- package/lib/internal/template/tutorial-panel/styles.css.js +1 -1
- package/lib/internal/template/tutorial-panel/styles.scoped.css +7 -7
- package/lib/internal/template/tutorial-panel/styles.selectors.js +1 -1
- package/lib/internal/template/wizard/styles.css.js +30 -30
- package/lib/internal/template/wizard/styles.scoped.css +84 -84
- package/lib/internal/template/wizard/styles.selectors.js +30 -30
- package/package.json +1 -1
- package/lib/internal/scss/expandable-section/motion.scss +0 -30
|
@@ -7,6 +7,7 @@ import InternalBox from '../box/internal';
|
|
|
7
7
|
import InternalExpandableSection from '../expandable-section/internal';
|
|
8
8
|
import { useInternalI18n } from '../i18n/context';
|
|
9
9
|
import InternalIcon from '../icon/internal';
|
|
10
|
+
import { Transition } from '../internal/components/transition';
|
|
10
11
|
import { isPlainLeftClick } from '../internal/events';
|
|
11
12
|
import { useOneTheme, useVisualRefresh } from '../internal/hooks/use-visual-mode';
|
|
12
13
|
import { checkSafeUrl } from '../internal/utils/check-safe-url';
|
|
@@ -43,7 +44,7 @@ export function Header({ definition, activeHref, fireFollow, collapsed }) {
|
|
|
43
44
|
React.createElement("span", { className: clsx(styles['header-link-text'], analyticsSelectors['header-link-text']) }, definition.text)))),
|
|
44
45
|
!collapsed && React.createElement(Divider, { isPresentational: true, variant: "header" })));
|
|
45
46
|
}
|
|
46
|
-
export function NavigationItemsList({ items, variant, activeHref, fireChange, fireFollow, position = '', collapsed, withIcons, activeTooltip, setActiveTooltip, }) {
|
|
47
|
+
export function NavigationItemsList({ items, variant, activeHref, fireChange, fireFollow, position = '', collapsed, withIcons, ariaLabel, activeTooltip, setActiveTooltip, }) {
|
|
47
48
|
const lists = [];
|
|
48
49
|
let currentListIndex = 0;
|
|
49
50
|
lists[currentListIndex] = {
|
|
@@ -58,7 +59,7 @@ export function NavigationItemsList({ items, variant, activeHref, fireChange, fi
|
|
|
58
59
|
function pushDivider() {
|
|
59
60
|
lists.push({
|
|
60
61
|
listVariant: variant,
|
|
61
|
-
element: (React.createElement("div", { "data-itemid": `item-${itemid}
|
|
62
|
+
element: (React.createElement("div", { "data-itemid": `item-${itemid}`, className: clsx(collapsed && styles['list-item--group']) },
|
|
62
63
|
React.createElement(Divider, { variant: "default", collapsed: collapsed }))),
|
|
63
64
|
});
|
|
64
65
|
currentListIndex =
|
|
@@ -67,49 +68,14 @@ export function NavigationItemsList({ items, variant, activeHref, fireChange, fi
|
|
|
67
68
|
items: [],
|
|
68
69
|
}) - 1;
|
|
69
70
|
}
|
|
70
|
-
//
|
|
71
|
-
//
|
|
72
|
-
//
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
// A section's title is hidden when collapsed; render a divider in its place
|
|
80
|
-
if (leadingDivider) {
|
|
81
|
-
pushDivider();
|
|
82
|
-
}
|
|
83
|
-
const groupElements = iconChildren.map((child, childIndex) => {
|
|
84
|
-
const childPosition = `${position ? `${position},` : ''}${itemid},${childIndex + 1}`;
|
|
85
|
-
return (React.createElement("li", { key: childPosition, className: clsx(styles['list-item'], styles['list-item--collapsed']) },
|
|
86
|
-
React.createElement(Link, { definition: child, activeHref: activeHref, fireFollow: fireFollow, fireChange: fireChange, position: childPosition, collapsed: collapsed, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip })));
|
|
87
|
-
});
|
|
88
|
-
const prevItem = index > 0 ? items[index - 1] : null;
|
|
89
|
-
const nextItem = index < items.length - 1 ? items[index + 1] : null;
|
|
90
|
-
(_a = lists[currentListIndex].items) === null || _a === void 0 ? void 0 : _a.push({
|
|
91
|
-
element: (React.createElement("li", { key: `group-${itemid}`, className: clsx(styles['list-item--group'], (leadingDivider || (prevItem === null || prevItem === void 0 ? void 0 : prevItem.type) === 'divider') && styles['list-item--group-no-padding-start'], (nextItem === null || nextItem === void 0 ? void 0 : nextItem.type) === 'divider' && styles['list-item--group-no-padding-end']) },
|
|
92
|
-
React.createElement("ul", { className: styles['list--collapsed-group'], "aria-label": label }, groupElements))),
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
// In collapsed mode, flatten container items to show only icon-bearing children.
|
|
96
|
-
if (collapsed && (item.type === 'expandable-link-group' || item.type === 'link-group') && !item.icon) {
|
|
97
|
-
const group = item;
|
|
98
|
-
pushCollapsedGroup(group.items, group.text);
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
if (collapsed && (item.type === 'section' || item.type === 'section-group')) {
|
|
102
|
-
const sectionLabel = item.type === 'section'
|
|
103
|
-
? item.text
|
|
104
|
-
: item.title;
|
|
105
|
-
// Section-groups may contain nested sections — flatten one level.
|
|
106
|
-
const childItems = item.type === 'section'
|
|
107
|
-
? item.items
|
|
108
|
-
: item.items.flatMap(child => child.type === 'section' ? child.items : [child]);
|
|
109
|
-
pushCollapsedGroup(childItems, sectionLabel, { leadingDivider: true });
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
if (collapsed && item.type !== 'divider' && !item.icon) {
|
|
71
|
+
// In collapsed mode, hide plain links without icons (they have no visual representation).
|
|
72
|
+
// Exception: link-group / expandable-link-group children must stay rendered so
|
|
73
|
+
// the grid-template-rows collapse animation has content to transition.
|
|
74
|
+
if (collapsed &&
|
|
75
|
+
item.type === 'link' &&
|
|
76
|
+
!item.icon &&
|
|
77
|
+
variant !== 'link-group' &&
|
|
78
|
+
variant !== 'expandable-link-group') {
|
|
113
79
|
return;
|
|
114
80
|
}
|
|
115
81
|
switch (item.type) {
|
|
@@ -126,28 +92,28 @@ export function NavigationItemsList({ items, variant, activeHref, fireChange, fi
|
|
|
126
92
|
}
|
|
127
93
|
case 'section': {
|
|
128
94
|
(_b = lists[currentListIndex].items) === null || _b === void 0 ? void 0 : _b.push({
|
|
129
|
-
element: (React.createElement("li", { key: index, "data-itemid": `item-${itemid}`, className: clsx(styles['list-item'], collapsed && styles['list-item--collapsed']) },
|
|
95
|
+
element: (React.createElement("li", { key: index, "data-itemid": `item-${itemid}`, className: clsx(styles['list-item'], collapsed && styles['list-item--collapsed'], collapsed && styles['list-item--group']) },
|
|
130
96
|
React.createElement(Section, { definition: item, activeHref: activeHref, variant: variant, fireChange: fireChange, fireFollow: fireFollow, position: itemPosition, collapsed: collapsed, withIcons: withIcons, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip }))),
|
|
131
97
|
});
|
|
132
98
|
return;
|
|
133
99
|
}
|
|
134
100
|
case 'section-group': {
|
|
135
101
|
(_c = lists[currentListIndex].items) === null || _c === void 0 ? void 0 : _c.push({
|
|
136
|
-
element: (React.createElement("li", { key: index, "data-itemid": `item-${itemid}`, className: clsx(styles['list-item'], collapsed && styles['list-item--collapsed']) },
|
|
102
|
+
element: (React.createElement("li", { key: index, "data-itemid": `item-${itemid}`, className: clsx(styles['list-item'], collapsed && styles['list-item--collapsed'], collapsed && styles['list-item--group']) },
|
|
137
103
|
React.createElement(SectionGroup, { definition: item, activeHref: activeHref, fireChange: fireChange, fireFollow: fireFollow, position: itemPosition, collapsed: collapsed, withIcons: withIcons, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip }))),
|
|
138
104
|
});
|
|
139
105
|
return;
|
|
140
106
|
}
|
|
141
107
|
case 'link-group': {
|
|
142
108
|
(_d = lists[currentListIndex].items) === null || _d === void 0 ? void 0 : _d.push({
|
|
143
|
-
element: (React.createElement("li", { key: index, "data-itemid": `item-${itemid}`, className: clsx(styles['list-item'], collapsed && styles['list-item--collapsed']) },
|
|
109
|
+
element: (React.createElement("li", { key: index, "data-itemid": `item-${itemid}`, className: clsx(styles['list-item'], collapsed && styles['list-item--collapsed'], collapsed && styles['list-item--group']) },
|
|
144
110
|
React.createElement(LinkGroup, { definition: item, activeHref: activeHref, fireChange: fireChange, fireFollow: fireFollow, position: itemPosition, collapsed: collapsed, withIcons: withIcons, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip }))),
|
|
145
111
|
});
|
|
146
112
|
return;
|
|
147
113
|
}
|
|
148
114
|
case 'expandable-link-group': {
|
|
149
115
|
(_e = lists[currentListIndex].items) === null || _e === void 0 ? void 0 : _e.push({
|
|
150
|
-
element: (React.createElement("li", { key: index, "data-itemid": `item-${itemid}`, className: clsx(styles['list-item'], collapsed && styles['list-item--collapsed']) },
|
|
116
|
+
element: (React.createElement("li", { key: index, "data-itemid": `item-${itemid}`, className: clsx(styles['list-item'], collapsed && styles['list-item--collapsed'], collapsed && styles['list-item--group']) },
|
|
151
117
|
React.createElement(ExpandableLinkGroup, { definition: item, activeHref: activeHref, fireChange: fireChange, fireFollow: fireFollow, variant: variant, position: itemPosition, collapsed: collapsed, withIcons: withIcons, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip }))),
|
|
152
118
|
});
|
|
153
119
|
return;
|
|
@@ -175,16 +141,16 @@ export function NavigationItemsList({ items, variant, activeHref, fireChange, fi
|
|
|
175
141
|
if (!list.items || list.items.length === 0) {
|
|
176
142
|
return (React.createElement("div", { key: `hr-${index}`, className: clsx(styles.list, styles[`list-variant-${variant}`], {
|
|
177
143
|
[styles['list-variant-root--first']]: list.listVariant === 'root' && index === 0,
|
|
178
|
-
[styles[
|
|
144
|
+
[styles[`list-variant-${list.listVariant}--collapsed`]]: collapsed,
|
|
179
145
|
[styles['list--with-icons']]: withIcons,
|
|
180
146
|
}) }, list.element));
|
|
181
147
|
}
|
|
182
148
|
else {
|
|
183
149
|
return (React.createElement("ul", { key: `list-${index}`, className: clsx(styles.list, styles[`list-variant-${list.listVariant}`], {
|
|
184
150
|
[styles['list-variant-root--first']]: list.listVariant === 'root' && index === 0,
|
|
185
|
-
[styles[
|
|
151
|
+
[styles[`list-variant-${list.listVariant}--collapsed`]]: collapsed,
|
|
186
152
|
[styles['list--with-icons']]: withIcons,
|
|
187
|
-
}) }, list.items.map(item => item.element)));
|
|
153
|
+
}), "aria-label": ariaLabel }, list.items.map(item => item.element)));
|
|
188
154
|
}
|
|
189
155
|
})));
|
|
190
156
|
}
|
|
@@ -224,12 +190,28 @@ function Link({ definition, activeHref, fireFollow, position, collapsed, activeT
|
|
|
224
190
|
checkSafeUrl('SideNavigation', definition.href);
|
|
225
191
|
const isActive = definition.href === activeHref;
|
|
226
192
|
const i18n = useInternalI18n('link');
|
|
193
|
+
const linkRef = useRef(null);
|
|
227
194
|
const collapsedTooltip = useCollapsedTooltip({
|
|
228
195
|
label: definition.text,
|
|
229
196
|
position,
|
|
230
197
|
activeTooltip,
|
|
231
198
|
setActiveTooltip,
|
|
232
199
|
});
|
|
200
|
+
// Make icon-less collapsed links inert (they collapse to 0×0 and must
|
|
201
|
+
// not be focusable or visible to assistive technology).
|
|
202
|
+
const isIconLess = !definition.icon;
|
|
203
|
+
useEffect(() => {
|
|
204
|
+
if (linkRef.current) {
|
|
205
|
+
linkRef.current.inert = !!(collapsed && isIconLess);
|
|
206
|
+
}
|
|
207
|
+
}, [collapsed, isIconLess]);
|
|
208
|
+
// Merge linkRef with collapsedTooltip.triggerRef so both can track the <a>.
|
|
209
|
+
const mergedRef = useCallback((node) => {
|
|
210
|
+
linkRef.current = node;
|
|
211
|
+
if (collapsed) {
|
|
212
|
+
collapsedTooltip.triggerRef.current = node;
|
|
213
|
+
}
|
|
214
|
+
}, [collapsed, collapsedTooltip.triggerRef]);
|
|
233
215
|
const onClick = useCallback((event) => {
|
|
234
216
|
if (isPlainLeftClick(event)) {
|
|
235
217
|
fireFollow(definition, event);
|
|
@@ -246,24 +228,26 @@ function Link({ definition, activeHref, fireFollow, position, collapsed, activeT
|
|
|
246
228
|
};
|
|
247
229
|
const renderedExternalIconAriaLabel = i18n('externalIconAriaLabel', definition.externalIconAriaLabel);
|
|
248
230
|
const showInfo = !collapsed && definition.info;
|
|
249
|
-
const internalLink = (React.createElement("a", { ref:
|
|
231
|
+
const internalLink = (React.createElement("a", { ref: mergedRef, href: definition.href, className: clsx(styles.link, {
|
|
250
232
|
[styles['link-active']]: isActive,
|
|
251
233
|
[styles['link--collapsed']]: collapsed,
|
|
252
234
|
}), target: definition.external ? '_blank' : undefined, rel: definition.external ? 'noopener noreferrer' : undefined, "aria-current": definition.href === activeHref ? 'page' : undefined, "aria-label": collapsed ? definition.text : undefined, onClick: onClick, ...(collapsed ? collapsedTooltip.triggerProps : {}), ...getAnalyticsMetadataAttribute(clickActionAnalyticsMetadata) },
|
|
253
235
|
React.createElement(ItemIcon, { icon: definition.icon, collapsed: collapsed, "aria-hidden": collapsed ? true : undefined }),
|
|
254
|
-
|
|
255
|
-
React.createElement("span", { className:
|
|
256
|
-
|
|
257
|
-
React.createElement(
|
|
236
|
+
React.createElement("span", { className: clsx(styles['link-text-wrapper'], collapsed && styles['link-text-wrapper--collapsed']), "aria-hidden": collapsed ? true : undefined },
|
|
237
|
+
React.createElement("span", { className: clsx(styles['link-text-wrapper-content']) },
|
|
238
|
+
React.createElement("span", { className: analyticsSelectors['link-text'] }, definition.text),
|
|
239
|
+
definition.external && (React.createElement("span", { "aria-label": renderedExternalIconAriaLabel, role: renderedExternalIconAriaLabel ? 'img' : undefined },
|
|
240
|
+
React.createElement(InternalIcon, { name: "external", className: styles['external-icon'] }))))),
|
|
258
241
|
collapsed && collapsedTooltip.tooltip));
|
|
259
242
|
return showInfo ? (React.createElement("div", { className: styles['list-item--link-with-info'] },
|
|
260
243
|
internalLink,
|
|
261
244
|
React.createElement("span", { className: clsx(styles.info, testUtilStyles.info) }, definition.info))) : (internalLink);
|
|
262
245
|
}
|
|
263
|
-
function Section({ definition, activeHref, fireFollow, fireChange, variant, position, collapsed, withIcons, }) {
|
|
246
|
+
function Section({ definition, activeHref, fireFollow, fireChange, variant, position, collapsed, withIcons, activeTooltip, setActiveTooltip, }) {
|
|
264
247
|
var _a;
|
|
265
248
|
const [expanded, setExpanded] = useState((_a = definition.defaultExpanded) !== null && _a !== void 0 ? _a : true);
|
|
266
249
|
const isVisualRefresh = useVisualRefresh();
|
|
250
|
+
const sectionRef = useRef(null);
|
|
267
251
|
const onExpandedChange = useCallback((e) => {
|
|
268
252
|
fireChange(definition, e.detail.expanded);
|
|
269
253
|
setExpanded(e.detail.expanded);
|
|
@@ -272,24 +256,48 @@ function Section({ definition, activeHref, fireFollow, fireChange, variant, posi
|
|
|
272
256
|
var _a;
|
|
273
257
|
setExpanded((_a = definition.defaultExpanded) !== null && _a !== void 0 ? _a : true);
|
|
274
258
|
}, [definition]);
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
259
|
+
// Sections are transparent in the collapsed rail — only the header is made inert
|
|
260
|
+
// so child links remain focusable. The header hosts the expand toggle that must
|
|
261
|
+
// leave the tab order when collapsed.
|
|
262
|
+
useEffect(() => {
|
|
263
|
+
const el = sectionRef.current;
|
|
264
|
+
if (el) {
|
|
265
|
+
el.inert = false;
|
|
266
|
+
const header = el.firstElementChild;
|
|
267
|
+
if (header) {
|
|
268
|
+
header.inert = !!collapsed;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}, [collapsed]);
|
|
278
272
|
const isInSectionGroup = variant === 'section-group';
|
|
279
|
-
return (React.createElement(InternalExpandableSection, { variant: "footer", expanded: expanded, onChange: onExpandedChange, disableContentPaddings: true, className: clsx(styles.section, isInSectionGroup && styles['section--no-ident'], withIcons && styles['section--expand-icon-end'], isVisualRefresh && styles.refresh), headerText: React.createElement("span", { className: styles['section-header'] }, definition.text), __expandIconPosition: withIcons ? 'end' : 'start' },
|
|
280
|
-
React.createElement(NavigationItemsList, { variant: "section", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position, withIcons: withIcons })));
|
|
273
|
+
return (React.createElement(InternalExpandableSection, { variant: "footer", expanded: collapsed ? true : expanded, onChange: onExpandedChange, disableContentPaddings: true, __internalRootRef: sectionRef, className: clsx(styles.section, isInSectionGroup && styles['section--no-ident'], withIcons && styles['section--expand-icon-end'], isVisualRefresh && styles.refresh, collapsed && styles['section--collapsed']), headerText: React.createElement("span", { className: clsx(styles['section-header'], styles['label-text'], collapsed && styles['label-text--collapsed']), "aria-hidden": collapsed ? true : undefined }, definition.text), __expandIconPosition: withIcons ? 'end' : 'start' },
|
|
274
|
+
React.createElement(NavigationItemsList, { variant: "section", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position, collapsed: collapsed, withIcons: withIcons, ariaLabel: collapsed ? definition.text : undefined, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip })));
|
|
281
275
|
}
|
|
282
|
-
function SectionGroup({ definition, activeHref, fireFollow, fireChange, position, collapsed, withIcons, }) {
|
|
276
|
+
function SectionGroup({ definition, activeHref, fireFollow, fireChange, position, collapsed, withIcons, activeTooltip, setActiveTooltip, }) {
|
|
283
277
|
const isOneTheme = useOneTheme();
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
278
|
+
const sectionGroupRef = useRef(null);
|
|
279
|
+
// Section-groups are transparent — children are always promoted in the collapsed rail.
|
|
280
|
+
useEffect(() => {
|
|
281
|
+
if (sectionGroupRef.current) {
|
|
282
|
+
sectionGroupRef.current.inert = false;
|
|
283
|
+
}
|
|
284
|
+
}, [collapsed]);
|
|
285
|
+
return (React.createElement("div", { ref: sectionGroupRef, className: styles['section-group'] },
|
|
286
|
+
React.createElement(InternalBox, { className: clsx(styles['section-group-title'], collapsed && styles['section-group-title--collapsed']), variant: "h3", fontSize: isOneTheme ? 'heading-s' : undefined },
|
|
287
|
+
React.createElement("span", { className: clsx(styles['label-text'], collapsed && styles['label-text--collapsed']), "aria-hidden": collapsed ? true : undefined }, definition.title)),
|
|
288
|
+
React.createElement(NavigationItemsList, { variant: "section-group", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position, collapsed: collapsed, withIcons: withIcons, ariaLabel: collapsed ? definition.title : undefined, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip })));
|
|
290
289
|
}
|
|
291
290
|
function LinkGroup({ definition, activeHref, fireFollow, fireChange, position, collapsed, withIcons, activeTooltip, setActiveTooltip, }) {
|
|
292
291
|
checkSafeUrl('SideNavigation', definition.href);
|
|
292
|
+
const childrenRef = useRef(null);
|
|
293
|
+
const isOneTheme = useOneTheme();
|
|
294
|
+
// Set inert on the children container when collapsed so they leave
|
|
295
|
+
// the tab order and assistive technology.
|
|
296
|
+
useEffect(() => {
|
|
297
|
+
if (childrenRef.current) {
|
|
298
|
+
childrenRef.current.inert = !!collapsed;
|
|
299
|
+
}
|
|
300
|
+
}, [collapsed]);
|
|
293
301
|
return (React.createElement(React.Fragment, null,
|
|
294
302
|
React.createElement(Link, { definition: {
|
|
295
303
|
type: 'link',
|
|
@@ -298,7 +306,12 @@ function LinkGroup({ definition, activeHref, fireFollow, fireChange, position, c
|
|
|
298
306
|
info: definition.info,
|
|
299
307
|
icon: definition.icon,
|
|
300
308
|
}, fireFollow: (_, event) => fireFollow(definition, event), fireChange: fireChange, activeHref: activeHref, position: position, collapsed: collapsed, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip }),
|
|
301
|
-
|
|
309
|
+
React.createElement(Transition, { in: !collapsed, disabled: !isOneTheme }, (transitionState, transitionEventsRef, motionDisabled) => {
|
|
310
|
+
const childrenSettled = !collapsed && (motionDisabled || transitionState === 'entered');
|
|
311
|
+
return (React.createElement("div", { ref: transitionEventsRef, className: clsx(styles['link-group-children'], collapsed && styles['link-group-children--collapsed']) },
|
|
312
|
+
React.createElement("div", { ref: childrenRef, className: clsx(styles['link-group-children-inner'], !collapsed && styles['link-group-children-inner--expanded'], childrenSettled && styles['link-group-children-inner--settled']) },
|
|
313
|
+
React.createElement(NavigationItemsList, { variant: "link-group", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position, collapsed: collapsed, withIcons: withIcons, ariaLabel: collapsed ? definition.text : undefined, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip }))));
|
|
314
|
+
})));
|
|
302
315
|
}
|
|
303
316
|
function ExpandableLinkGroup({ definition, fireFollow, fireChange, activeHref, variant, position, collapsed, withIcons, activeTooltip, setActiveTooltip, }) {
|
|
304
317
|
// Check whether the definition contains an active link and memoize it to avoid
|
|
@@ -334,10 +347,7 @@ function ExpandableLinkGroup({ definition, fireFollow, fireChange, activeHref, v
|
|
|
334
347
|
fireChange(definition, true);
|
|
335
348
|
}
|
|
336
349
|
};
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
}
|
|
340
|
-
return (React.createElement(InternalExpandableSection, { className: clsx(styles['expandable-link-group'], variant === 'section-group' && styles['expandable-link-group--no-ident'], withIcons && styles['expandable-link-group--expand-icon-end'], definition.href === activeHref && styles['expandable-link-group--active']), variant: "navigation", expanded: userExpanded !== null && userExpanded !== void 0 ? userExpanded : expanded, onChange: onExpandedChange, disableContentPaddings: true, __disableHeaderPaddings: true, __expandIconPosition: withIcons ? 'end' : 'start', headerText: React.createElement(Link, { definition: { type: 'link', href: definition.href, text: definition.text, icon: definition.icon }, fireFollow: onHeaderFollow, fireChange: fireChange, activeHref: activeHref, position: position }) },
|
|
341
|
-
React.createElement(NavigationItemsList, { variant: "expandable-link-group", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position, withIcons: withIcons })));
|
|
350
|
+
return (React.createElement(InternalExpandableSection, { className: clsx(styles['expandable-link-group'], variant === 'section-group' && styles['expandable-link-group--no-ident'], withIcons && styles['expandable-link-group--expand-icon-end'], definition.href === activeHref && styles['expandable-link-group--active'], collapsed && styles['expandable-link-group--collapsed']), variant: "navigation", expanded: collapsed ? false : (userExpanded !== null && userExpanded !== void 0 ? userExpanded : expanded), onChange: onExpandedChange, disableContentPaddings: true, __disableHeaderPaddings: true, __expandIconPosition: withIcons ? 'end' : 'start', __hideExpandIcon: !!collapsed, headerText: React.createElement(Link, { definition: { type: 'link', href: definition.href, text: definition.text, icon: definition.icon }, fireFollow: onHeaderFollow, fireChange: fireChange, activeHref: activeHref, position: position, collapsed: collapsed, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip }) },
|
|
351
|
+
React.createElement(NavigationItemsList, { variant: "expandable-link-group", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position, collapsed: collapsed, withIcons: withIcons, activeTooltip: activeTooltip, setActiveTooltip: setActiveTooltip })));
|
|
342
352
|
}
|
|
343
353
|
//# sourceMappingURL=parts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parts.js","sourceRoot":"","sources":["../../../src/side-navigation/parts.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAa,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5F,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,6BAA6B,EAAE,MAAM,kEAAkE,CAAC;AAEjH,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAE1C,OAAO,yBAAyB,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAI1C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AACpE,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAuB1D,MAAM,UAAU,MAAM,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAe;IACnF,YAAY,CAAC,gBAAgB,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,KAAuB,EAAE,EAAE;QAC1B,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,EACD,CAAC,UAAU,EAAE,UAAU,CAAC,CACzB,CAAC;IAEF,MAAM,4BAA4B,GAAkD;QAClF,MAAM,EAAE,OAAO;QACf,MAAM,EAAE;YACN,KAAK,EAAE,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,EAAE;YACnD,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,QAAQ,EAAE,QAAQ;SACnB;KACF,CAAC;IAEF,OAAO,CACL;QACG,CAAC,SAAS,IAAI,CACb,4BAAI,SAAS,EAAE,MAAM,CAAC,MAAM;YAC1B,2BACE,IAAI,EAAE,UAAU,CAAC,IAAI,EACrB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,kBAClF,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACjE,OAAO,EAAE,OAAO,KACZ,6BAA6B,CAAC,4BAA4B,CAAC;gBAE9D,UAAU,CAAC,IAAI;oBACd,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CACrB,8BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;4BACrC,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI;yBACrD,CAAC,IAED,UAAU,CAAC,IAAI,CAAC,GAAG,CACf,CACR,CAAC,CAAC,CAAC,CACF,6BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;4BACrC,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI;yBACrD,CAAC,EACF,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,EACxB,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,GACxB,CACH,CAAC;gBACJ,8BAAM,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,IACtF,UAAU,CAAC,IAAI,CACX,CACL,CACD,CACN;QACA,CAAC,SAAS,IAAI,oBAAC,OAAO,IAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAC,QAAQ,GAAG,CAClE,CACJ,CAAC;AACJ,CAAC;AAcD,MAAM,UAAU,mBAAmB,CAAC,EAClC,KAAK,EACL,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAQ,GAAG,EAAE,EACb,SAAS,EACT,SAAS,EACT,aAAa,EACb,gBAAgB,GACS;IACzB,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,KAAK,CAAC,gBAAgB,CAAC,GAAG;QACxB,WAAW,EAAE,OAAO;QACpB,KAAK,EAAE,EAAE;KACV,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;;QAC5B,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;QACzB,MAAM,YAAY,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;QAElE,8EAA8E;QAC9E,SAAS,WAAW;YAClB,KAAK,CAAC,IAAI,CAAC;gBACT,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE,CACP,4CAAkB,QAAQ,MAAM,EAAE;oBAChC,oBAAC,OAAO,IAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAE,SAAS,GAAI,CAC/C,CACP;aACF,CAAC,CAAC;YACH,gBAAgB;gBACd,KAAK,CAAC,IAAI,CAAC;oBACT,WAAW,EAAE,OAAO;oBACpB,KAAK,EAAE,EAAE;iBACV,CAAC,GAAG,CAAC,CAAC;QACX,CAAC;QAED,0EAA0E;QAC1E,yEAAyE;QACzE,4DAA4D;QAC5D,SAAS,kBAAkB,CACzB,QAAiD,EACjD,KAAa,EACb,EAAE,cAAc,GAAG,KAAK,KAAmC,EAAE;;YAE7D,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAE,KAAkC,CAAC,IAAI,CAAC,CAAC;YACxF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO;YACT,CAAC;YACD,4EAA4E;YAC5E,IAAI,cAAc,EAAE,CAAC;gBACnB,WAAW,EAAE,CAAC;YAChB,CAAC;YACD,MAAM,aAAa,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;gBAC3D,MAAM,aAAa,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACrF,OAAO,CACL,4BAAI,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC;oBAC1F,oBAAC,IAAI,IACH,UAAU,EAAE,KAAiC,EAC7C,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,GAClC,CACC,CACN,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACrD,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACpE,MAAA,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,0CAAE,IAAI,CAAC;gBAClC,OAAO,EAAE,CACP,4BACE,GAAG,EAAE,SAAS,MAAM,EAAE,EACtB,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,kBAAkB,CAAC,EAC1B,CAAC,cAAc,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,MAAK,SAAS,CAAC,IAAI,MAAM,CAAC,mCAAmC,CAAC,EAC/F,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,MAAK,SAAS,IAAI,MAAM,CAAC,iCAAiC,CAAC,CAC1E;oBAED,4BAAI,SAAS,EAAE,MAAM,CAAC,uBAAuB,CAAC,gBAAc,KAAK,IAC9D,aAAa,CACX,CACF,CACN;aACF,CAAC,CAAC;QACL,CAAC;QAED,iFAAiF;QACjF,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,uBAAuB,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACrG,MAAM,KAAK,GAAG,IAA+E,CAAC;YAC9F,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QACD,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,EAAE,CAAC;YAC5E,MAAM,YAAY,GAChB,IAAI,CAAC,IAAI,KAAK,SAAS;gBACrB,CAAC,CAAE,IAAoC,CAAC,IAAI;gBAC5C,CAAC,CAAE,IAAyC,CAAC,KAAK,CAAC;YACvD,kEAAkE;YAClE,MAAM,UAAU,GACd,IAAI,CAAC,IAAI,KAAK,SAAS;gBACrB,CAAC,CAAE,IAAoC,CAAC,KAAK;gBAC7C,CAAC,CAAE,IAAyC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAC/D,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAE,KAAqC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAClF,CAAC;YACR,kBAAkB,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QACD,IAAI,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAE,IAAiC,CAAC,IAAI,EAAE,CAAC;YACrF,OAAO;QACT,CAAC;QACD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,WAAW,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAA,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,0CAAE,IAAI,CAAC;oBAClC,OAAO,EAAE,CACP,4BACE,GAAG,EAAE,KAAK,iBACG,QAAQ,MAAM,EAAE,EAC7B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,SAAS,IAAI,MAAM,CAAC,sBAAsB,CAAC,CAAC;wBAEjF,oBAAC,IAAI,IACH,UAAU,EAAE,IAAI,EAChB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,GAClC,CACC,CACN;iBACF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAA,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,0CAAE,IAAI,CAAC;oBAClC,OAAO,EAAE,CACP,4BACE,GAAG,EAAE,KAAK,iBACG,QAAQ,MAAM,EAAE,EAC7B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,SAAS,IAAI,MAAM,CAAC,sBAAsB,CAAC,CAAC;wBAEjF,oBAAC,OAAO,IACN,UAAU,EAAE,IAAI,EAChB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,GAClC,CACC,CACN;iBACF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAA,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,0CAAE,IAAI,CAAC;oBAClC,OAAO,EAAE,CACP,4BACE,GAAG,EAAE,KAAK,iBACG,QAAQ,MAAM,EAAE,EAC7B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,SAAS,IAAI,MAAM,CAAC,sBAAsB,CAAC,CAAC;wBAEjF,oBAAC,YAAY,IACX,UAAU,EAAE,IAAI,EAChB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,GAClC,CACC,CACN;iBACF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAA,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,0CAAE,IAAI,CAAC;oBAClC,OAAO,EAAE,CACP,4BACE,GAAG,EAAE,KAAK,iBACG,QAAQ,MAAM,EAAE,EAC7B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,SAAS,IAAI,MAAM,CAAC,sBAAsB,CAAC,CAAC;wBAEjF,oBAAC,SAAS,IACR,UAAU,EAAE,IAAI,EAChB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,GAClC,CACC,CACN;iBACF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,uBAAuB,CAAC,CAAC,CAAC;gBAC7B,MAAA,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,0CAAE,IAAI,CAAC;oBAClC,OAAO,EAAE,CACP,4BACE,GAAG,EAAE,KAAK,iBACG,QAAQ,MAAM,EAAE,EAC7B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,SAAS,IAAI,MAAM,CAAC,sBAAsB,CAAC,CAAC;wBAEjF,oBAAC,mBAAmB,IAClB,UAAU,EAAE,IAAI,EAChB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,GAClC,CACC,CACN;iBACF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,oFAAoF;IACpF,MAAM,aAAa,GAAG,SAAS;QAC7B,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC3B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAC/B,CAAC;YACD,0FAA0F;YAC1F,MAAM,WAAW,GAAG,KAAK;iBACtB,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;iBACf,OAAO,EAAE;iBACT,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACrF,OAAO,CACL,CAAC,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACnF,WAAW,KAAK,SAAS;gBACzB,CAAC,WAAW,CAAC,KAAK,KAAK,SAAS,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAClE,CAAC;QACJ,CAAC,CAAC;QACJ,CAAC,CAAC,KAAK,CAAC;IAEV,OAAO,CACL,0CACG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACjC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO,CACL,6BACE,GAAG,EAAE,MAAM,KAAK,EAAE,EAClB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,gBAAgB,OAAO,EAAE,CAAC,EAAE;oBAC9D,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,KAAK,CAAC;oBAChF,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,KAAK,MAAM,IAAI,SAAS;oBAClF,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,SAAS;iBACxC,CAAC,IAED,IAAI,CAAC,OAAO,CACT,CACP,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CACL,4BACE,GAAG,EAAE,QAAQ,KAAK,EAAE,EACpB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,gBAAgB,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE;oBACvE,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,KAAK,CAAC;oBAChF,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,KAAK,MAAM,IAAI,SAAS;oBAClF,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,SAAS;iBACxC,CAAC,IAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAClC,CACN,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CACD,CACJ,CAAC;AACJ,CAAC;AAQD,SAAS,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,gBAAgB,GAAG,KAAK,EAAE,SAAS,EAAgB;IACzF,OAAO,CACL,4BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,OAAO,EAAE,CAAC,EAAE,SAAS,IAAI,MAAM,CAAC,oBAAoB,CAAC,CAAC,EACxG,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,GACnD,CACH,CAAC;AACJ,CAAC;AAWD,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAiC,SAAS,QAAQ,CACjF,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EACvC,GAAG;IAEH,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CACL,8BACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,WAAW,CAAC,EACnB,cAAc,CAAC,WAAW,CAAC,EAC3B,SAAS,IAAI,MAAM,CAAC,sBAAsB,CAAC,EAC3C,SAAS,CACV,KACG,IAAI,IAEP,IAAI,CACA,CACR,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,wEAAwE;AACxE,4EAA4E;AAC5E,4EAA4E;AAC5E,sCAAsC;AACtC,SAAS,mBAAmB,CAAwB,EAClD,KAAK,EACL,QAAQ,EACR,aAAa,EACb,gBAAgB,GAMjB;IACC,MAAM,UAAU,GAAG,MAAM,CAAW,IAAI,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,aAAa,KAAK,EAAE,CAAC;IAElC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAG,EAAE,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,IAAI,aAAa,KAAK,EAAE,EAAE,CAAC;YACzB,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAG,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG;QACnB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,OAAO;QACf,YAAY,EAAE,KAAK;QACnB,YAAY,EAAE,OAAO;KACtB,CAAC;IAEF,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CACrB,oBAAC,OAAO,IAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAC,OAAO,EAAC,QAAQ,EAAE,OAAO,GAAI,CACpG,CAAC,CAAC,CAAC,IAAI,CAAC;IAET,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,IAAI,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAa;IACnH,YAAY,CAAC,gBAAgB,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC;IAChD,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,gBAAgB,GAAG,mBAAmB,CAAoB;QAC9D,KAAK,EAAE,UAAU,CAAC,IAAI;QACtB,QAAQ;QACR,aAAa;QACb,gBAAgB;KACjB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,WAAW,CACzB,CAAC,KAAuB,EAAE,EAAE;QAC1B,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,EACD,CAAC,UAAU,EAAE,UAAU,CAAC,CACzB,CAAC;IAEF,MAAM,4BAA4B,GAAkD;QAClF,MAAM,EAAE,OAAO;QACf,MAAM,EAAE;YACN,KAAK,EAAE,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE;YAC5C,QAAQ,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE;YACpC,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,QAAQ;SACT;KACF,CAAC;IAEF,MAAM,6BAA6B,GAAG,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAEtG,MAAM,QAAQ,GAAG,CAAC,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC;IAE/C,MAAM,YAAY,GAAG,CACnB,2BACE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EACxD,IAAI,EAAE,UAAU,CAAC,IAAI,EACrB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAC3B,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ;YACjC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,SAAS;SACvC,CAAC,EACF,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAClD,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,kBAC9C,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,gBACrD,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EACnD,OAAO,EAAE,OAAO,KACZ,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,KAChD,6BAA6B,CAAC,4BAA4B,CAAC;QAE/D,oBAAC,QAAQ,IAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,iBAAe,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,GAAI;QACnG,CAAC,SAAS,IAAI,CACb,8BAAM,SAAS,EAAE,MAAM,CAAC,mBAAmB,CAAC;YAC1C,8BAAM,SAAS,EAAE,kBAAkB,CAAC,WAAW,CAAC,IAAG,UAAU,CAAC,IAAI,CAAQ;YACzE,UAAU,CAAC,QAAQ,IAAI,CACtB,4CAAkB,6BAA6B,EAAE,IAAI,EAAE,6BAA6B,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBACtG,oBAAC,YAAY,IAAC,IAAI,EAAC,UAAU,EAAC,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,GAAI,CAC/D,CACR,CACI,CACR;QACA,SAAS,IAAI,gBAAgB,CAAC,OAAO,CACpC,CACL,CAAC;IACF,OAAO,QAAQ,CAAC,CAAC,CAAC,CAChB,6BAAK,SAAS,EAAE,MAAM,CAAC,2BAA2B,CAAC;QAChD,YAAY;QACb,8BAAM,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAG,UAAU,CAAC,IAAI,CAAQ,CAC7E,CACP,CAAC,CAAC,CAAC,CACF,YAAY,CACb,CAAC;AACJ,CAAC;AAQD,SAAS,OAAO,CAAC,EACf,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,OAAO,EACP,QAAQ,EACR,SAAS,EACT,SAAS,GACI;;IACb,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAU,MAAA,UAAU,CAAC,eAAe,mCAAI,IAAI,CAAC,CAAC;IACtF,MAAM,eAAe,GAAG,gBAAgB,EAAE,CAAC;IAE3C,MAAM,gBAAgB,GAAG,WAAW,CAClC,CAAC,CAAgE,EAAE,EAAE;QACnE,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC,EACD,CAAC,UAAU,EAAE,UAAU,CAAC,CACzB,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;;QACb,WAAW,CAAC,MAAA,UAAU,CAAC,eAAe,mCAAI,IAAI,CAAC,CAAC;IAClD,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,gBAAgB,GAAG,OAAO,KAAK,eAAe,CAAC;IAErD,OAAO,CACL,oBAAC,yBAAyB,IACxB,OAAO,EAAC,QAAQ,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,gBAAgB,EAC1B,sBAAsB,EAAE,IAAI,EAC5B,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,OAAO,EACd,gBAAgB,IAAI,MAAM,CAAC,mBAAmB,CAAC,EAC/C,SAAS,IAAI,MAAM,CAAC,0BAA0B,CAAC,EAC/C,eAAe,IAAI,MAAM,CAAC,OAAO,CAClC,EACD,UAAU,EAAE,8BAAM,SAAS,EAAE,MAAM,CAAC,gBAAgB,CAAC,IAAG,UAAU,CAAC,IAAI,CAAQ,EAC/E,oBAAoB,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;QAEjD,oBAAC,mBAAmB,IAClB,OAAO,EAAC,SAAS,EACjB,KAAK,EAAE,UAAU,CAAC,KAAK,EACvB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,GACpB,CACwB,CAC7B,CAAC;AACJ,CAAC;AAOD,SAAS,YAAY,CAAC,EACpB,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACR,SAAS,EACT,SAAS,GACS;IAClB,MAAM,UAAU,GAAG,WAAW,EAAE,CAAC;IACjC,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CACL,6BAAK,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC;QACrC,oBAAC,WAAW,IACV,SAAS,EAAE,MAAM,CAAC,qBAAqB,CAAC,EACxC,OAAO,EAAC,IAAI,EACZ,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,IAE7C,UAAU,CAAC,KAAK,CACL;QACd,oBAAC,mBAAmB,IAClB,OAAO,EAAC,eAAe,EACvB,KAAK,EAAE,UAAU,CAAC,KAAK,EACvB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,GACpB,CACE,CACP,CAAC;AACJ,CAAC;AAOD,SAAS,SAAS,CAAC,EACjB,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACR,SAAS,EACT,SAAS,EACT,aAAa,EACb,gBAAgB,GACD;IACf,YAAY,CAAC,gBAAgB,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAEhD,OAAO,CACL;QACE,oBAAC,IAAI,IACH,UAAU,EAAE;gBACV,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,IAAI,EAAE,UAAU,CAAC,IAAI;aACtB,EACD,UAAU,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,EACvD,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,GAClC;QACD,CAAC,SAAS,IAAI,CACb,oBAAC,mBAAmB,IAClB,OAAO,EAAC,YAAY,EACpB,KAAK,EAAE,UAAU,CAAC,KAAK,EACvB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,GACpB,CACH,CACA,CACJ,CAAC;AACJ,CAAC;AAQD,SAAS,mBAAmB,CAAC,EAC3B,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,OAAO,EACP,QAAQ,EACR,SAAS,EACT,SAAS,EACT,aAAa,EACb,gBAAgB,GACS;IACzB,+EAA+E;IAC/E,yBAAyB;IACzB,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,EAAE;QACtC,OAAO,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1E,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAEnC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAU,GAAG,EAAE;;QACrD,OAAO,MAAA,UAAU,CAAC,eAAe,mCAAI,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,IAAI,kBAAkB,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,EAAuB,CAAC;IAExE,kEAAkE;IAClE,SAAS,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAE1D,iFAAiF;IACjF,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,IAAI,kBAAkB,CAAC,CAAC;IACpE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC;IAEtD,oFAAoF;IACpF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YAC7C,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,MAAM,gBAAgB,GAAG,WAAW,CAClC,CAAC,CAAgE,EAAE,EAAE;QACnE,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC,EACD,CAAC,UAAU,EAAE,UAAU,CAAC,CACzB,CAAC;IAEF,MAAM,cAAc,GAA4B,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QAC3D,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC9B,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CACL,oBAAC,IAAI,IACH,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EACjG,UAAU,EAAE,cAAc,EAC1B,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,GAClC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,CACL,oBAAC,yBAAyB,IACxB,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,uBAAuB,CAAC,EAC/B,OAAO,KAAK,eAAe,IAAI,MAAM,CAAC,iCAAiC,CAAC,EACxE,SAAS,IAAI,MAAM,CAAC,wCAAwC,CAAC,EAC7D,UAAU,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,+BAA+B,CAAC,CAC1E,EACD,OAAO,EAAC,YAAY,EACpB,QAAQ,EAAE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,QAAQ,EAClC,QAAQ,EAAE,gBAAgB,EAC1B,sBAAsB,EAAE,IAAI,EAC5B,uBAAuB,EAAE,IAAI,EAC7B,oBAAoB,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EACjD,UAAU,EACR,oBAAC,IAAI,IACH,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EACjG,UAAU,EAAE,cAAc,EAC1B,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,GAClB;QAGJ,oBAAC,mBAAmB,IAClB,OAAO,EAAC,uBAAuB,EAC/B,KAAK,EAAE,UAAU,CAAC,KAAK,EACvB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,GACpB,CACwB,CAC7B,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalBox from '../box/internal';\nimport { ExpandableSectionProps } from '../expandable-section/interfaces';\nimport InternalExpandableSection from '../expandable-section/internal';\nimport { useInternalI18n } from '../i18n/context';\nimport InternalIcon from '../icon/internal';\nimport { isPlainLeftClick } from '../internal/events';\nimport { useOneTheme, useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\nimport Tooltip from '../tooltip/internal';\nimport { NonCancelableCustomEvent } from '../types/events';\nimport { GeneratedAnalyticsMetadataSideNavigationClick } from './analytics-metadata/interfaces';\nimport { SideNavigationProps } from './interfaces';\nimport { hasActiveLink } from './util';\n\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\nimport styles from './styles.css.js';\nimport testUtilStyles from './test-classes/styles.css.js';\n\ninterface BaseItemComponentProps {\n activeHref?: string;\n fireChange: (item: SideNavigationProps.Section | SideNavigationProps.ExpandableLinkGroup, expanded: boolean) => void;\n fireFollow: (\n item:\n | SideNavigationProps.Link\n | SideNavigationProps.Header\n | SideNavigationProps.LinkGroup\n | SideNavigationProps.ExpandableLinkGroup,\n event: React.SyntheticEvent | Event\n ) => void;\n position?: string;\n collapsed?: boolean;\n activeTooltip?: string | null;\n setActiveTooltip?: (position: string | null) => void;\n}\n\ninterface HeaderProps extends BaseItemComponentProps {\n definition: SideNavigationProps.Header;\n}\n\nexport function Header({ definition, activeHref, fireFollow, collapsed }: HeaderProps) {\n checkSafeUrl('SideNavigation', definition.href);\n const onClick = useCallback(\n (event: React.MouseEvent) => {\n if (isPlainLeftClick(event)) {\n fireFollow(definition, event);\n }\n },\n [fireFollow, definition]\n );\n\n const clickActionAnalyticsMetadata: GeneratedAnalyticsMetadataSideNavigationClick = {\n action: 'click',\n detail: {\n label: `.${analyticsSelectors['header-link-text']}`,\n external: 'false',\n href: definition.href,\n position: 'header',\n },\n };\n\n return (\n <>\n {!collapsed && (\n <h2 className={styles.header}>\n <a\n href={definition.href}\n className={clsx(styles['header-link'], { [styles['header-link--has-logo']]: !!definition.logo })}\n aria-current={definition.href === activeHref ? 'page' : undefined}\n onClick={onClick}\n {...getAnalyticsMetadataAttribute(clickActionAnalyticsMetadata)}\n >\n {definition.logo &&\n (definition.logo.svg ? (\n <span\n className={clsx(styles['header-logo'], {\n [styles['header-logo--stretched']]: !definition.text,\n })}\n >\n {definition.logo.svg}\n </span>\n ) : (\n <img\n className={clsx(styles['header-logo'], {\n [styles['header-logo--stretched']]: !definition.text,\n })}\n src={definition.logo.src}\n alt={definition.logo.alt}\n />\n ))}\n <span className={clsx(styles['header-link-text'], analyticsSelectors['header-link-text'])}>\n {definition.text}\n </span>\n </a>\n </h2>\n )}\n {!collapsed && <Divider isPresentational={true} variant=\"header\" />}\n </>\n );\n}\n\ninterface NavigationItemsListProps extends BaseItemComponentProps {\n items: ReadonlyArray<SideNavigationProps.Item>;\n variant: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n withIcons?: boolean;\n}\n\ninterface Item {\n element?: ReactNode;\n listVariant?: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n items?: Array<Item>;\n}\n\nexport function NavigationItemsList({\n items,\n variant,\n activeHref,\n fireChange,\n fireFollow,\n position = '',\n collapsed,\n withIcons,\n activeTooltip,\n setActiveTooltip,\n}: NavigationItemsListProps) {\n const lists: Array<Item> = [];\n let currentListIndex = 0;\n lists[currentListIndex] = {\n listVariant: variant,\n items: [],\n };\n\n items.forEach((item, index) => {\n const itemid = index + 1;\n const itemPosition = `${position ? `${position},` : ''}${itemid}`;\n\n // Emits a divider as its own list segment (dividers break the <ul> grouping).\n function pushDivider() {\n lists.push({\n listVariant: variant,\n element: (\n <div data-itemid={`item-${itemid}`}>\n <Divider variant=\"default\" collapsed={collapsed} />\n </div>\n ),\n });\n currentListIndex =\n lists.push({\n listVariant: variant,\n items: [],\n }) - 1;\n }\n\n // Renders icon-bearing children of a container item as a collapsed group.\n // The inner <ul> carries the group label so list semantics are preserved\n // for screen readers even when the visual header is hidden.\n function pushCollapsedGroup(\n children: ReadonlyArray<SideNavigationProps.Item>,\n label: string,\n { leadingDivider = false }: { leadingDivider?: boolean } = {}\n ) {\n const iconChildren = children.filter(child => (child as SideNavigationProps.Link).icon);\n if (iconChildren.length === 0) {\n return;\n }\n // A section's title is hidden when collapsed; render a divider in its place\n if (leadingDivider) {\n pushDivider();\n }\n const groupElements = iconChildren.map((child, childIndex) => {\n const childPosition = `${position ? `${position},` : ''}${itemid},${childIndex + 1}`;\n return (\n <li key={childPosition} className={clsx(styles['list-item'], styles['list-item--collapsed'])}>\n <Link\n definition={child as SideNavigationProps.Link}\n activeHref={activeHref}\n fireFollow={fireFollow}\n fireChange={fireChange}\n position={childPosition}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n );\n });\n const prevItem = index > 0 ? items[index - 1] : null;\n const nextItem = index < items.length - 1 ? items[index + 1] : null;\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={`group-${itemid}`}\n className={clsx(\n styles['list-item--group'],\n (leadingDivider || prevItem?.type === 'divider') && styles['list-item--group-no-padding-start'],\n nextItem?.type === 'divider' && styles['list-item--group-no-padding-end']\n )}\n >\n <ul className={styles['list--collapsed-group']} aria-label={label}>\n {groupElements}\n </ul>\n </li>\n ),\n });\n }\n\n // In collapsed mode, flatten container items to show only icon-bearing children.\n if (collapsed && (item.type === 'expandable-link-group' || item.type === 'link-group') && !item.icon) {\n const group = item as SideNavigationProps.ExpandableLinkGroup | SideNavigationProps.LinkGroup;\n pushCollapsedGroup(group.items, group.text);\n return;\n }\n if (collapsed && (item.type === 'section' || item.type === 'section-group')) {\n const sectionLabel =\n item.type === 'section'\n ? (item as SideNavigationProps.Section).text\n : (item as SideNavigationProps.SectionGroup).title;\n // Section-groups may contain nested sections — flatten one level.\n const childItems =\n item.type === 'section'\n ? (item as SideNavigationProps.Section).items\n : (item as SideNavigationProps.SectionGroup).items.flatMap(child =>\n child.type === 'section' ? (child as SideNavigationProps.Section).items : [child]\n );\n pushCollapsedGroup(childItems, sectionLabel, { leadingDivider: true });\n return;\n }\n if (collapsed && item.type !== 'divider' && !(item as SideNavigationProps.Link).icon) {\n return;\n }\n switch (item.type) {\n case 'divider': {\n pushDivider();\n return;\n }\n case 'link': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(styles['list-item'], collapsed && styles['list-item--collapsed'])}\n >\n <Link\n definition={item}\n activeHref={activeHref}\n fireChange={fireChange}\n fireFollow={fireFollow}\n position={itemPosition}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n case 'section': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(styles['list-item'], collapsed && styles['list-item--collapsed'])}\n >\n <Section\n definition={item}\n activeHref={activeHref}\n variant={variant}\n fireChange={fireChange}\n fireFollow={fireFollow}\n position={itemPosition}\n collapsed={collapsed}\n withIcons={withIcons}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n case 'section-group': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(styles['list-item'], collapsed && styles['list-item--collapsed'])}\n >\n <SectionGroup\n definition={item}\n activeHref={activeHref}\n fireChange={fireChange}\n fireFollow={fireFollow}\n position={itemPosition}\n collapsed={collapsed}\n withIcons={withIcons}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n case 'link-group': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(styles['list-item'], collapsed && styles['list-item--collapsed'])}\n >\n <LinkGroup\n definition={item}\n activeHref={activeHref}\n fireChange={fireChange}\n fireFollow={fireFollow}\n position={itemPosition}\n collapsed={collapsed}\n withIcons={withIcons}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n case 'expandable-link-group': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(styles['list-item'], collapsed && styles['list-item--collapsed'])}\n >\n <ExpandableLinkGroup\n definition={item}\n activeHref={activeHref}\n fireChange={fireChange}\n fireFollow={fireFollow}\n variant={variant}\n position={itemPosition}\n collapsed={collapsed}\n withIcons={withIcons}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n }\n });\n\n // In collapsed mode, skip empty item segments and deduplicate consecutive dividers.\n const filteredLists = collapsed\n ? lists.filter((list, index) => {\n if (list.items) {\n return list.items.length > 0;\n }\n // Divider — skip if preceded by another divider or empty segment, or followed by nothing.\n const prevVisible = lists\n .slice(0, index)\n .reverse()\n .find(l => !l.items || l.items.length > 0);\n const nextVisible = lists.slice(index + 1).find(l => !l.items || l.items.length > 0);\n return (\n (!prevVisible || (prevVisible.items !== undefined && prevVisible.items.length > 0)) &&\n nextVisible !== undefined &&\n (nextVisible.items === undefined || nextVisible.items.length > 0)\n );\n })\n : lists;\n\n return (\n <>\n {filteredLists.map((list, index) => {\n if (!list.items || list.items.length === 0) {\n return (\n <div\n key={`hr-${index}`}\n className={clsx(styles.list, styles[`list-variant-${variant}`], {\n [styles['list-variant-root--first']]: list.listVariant === 'root' && index === 0,\n [styles['list-variant-root--collapsed']]: list.listVariant === 'root' && collapsed,\n [styles['list--with-icons']]: withIcons,\n })}\n >\n {list.element}\n </div>\n );\n } else {\n return (\n <ul\n key={`list-${index}`}\n className={clsx(styles.list, styles[`list-variant-${list.listVariant}`], {\n [styles['list-variant-root--first']]: list.listVariant === 'root' && index === 0,\n [styles['list-variant-root--collapsed']]: list.listVariant === 'root' && collapsed,\n [styles['list--with-icons']]: withIcons,\n })}\n >\n {list.items.map(item => item.element)}\n </ul>\n );\n }\n })}\n </>\n );\n}\n\ninterface DividerProps {\n variant: 'default' | 'header';\n isPresentational?: boolean;\n collapsed?: boolean;\n}\n\nfunction Divider({ variant = 'default', isPresentational = false, collapsed }: DividerProps) {\n return (\n <hr\n className={clsx(styles.divider, styles[`divider-${variant}`], collapsed && styles['divider--collapsed'])}\n role={isPresentational ? 'presentation' : undefined}\n />\n );\n}\n\ninterface LinkProps extends BaseItemComponentProps {\n definition: SideNavigationProps.Link;\n}\n\ninterface ItemIconProps extends React.HTMLAttributes<HTMLSpanElement> {\n icon: React.ReactNode;\n collapsed?: boolean;\n}\n\nconst ItemIcon = React.forwardRef<HTMLSpanElement, ItemIconProps>(function ItemIcon(\n { icon, collapsed, className, ...rest },\n ref\n) {\n if (!icon) {\n return null;\n }\n return (\n <span\n ref={ref}\n className={clsx(\n styles['item-icon'],\n testUtilStyles['item-icon'],\n collapsed && styles['item-icon--collapsed'],\n className\n )}\n {...rest}\n >\n {icon}\n </span>\n );\n});\n\n// Manages a tooltip that shows the item's text label on focus or hover.\n// Used in the collapsed state, where the visible labels are hidden, to give\n// pointer and keyboard users a way to identify each item without relying on\n// their browser's native title popup.\nfunction useCollapsedTooltip<T extends HTMLElement>({\n label,\n position,\n activeTooltip,\n setActiveTooltip,\n}: {\n label: React.ReactNode;\n position?: string;\n activeTooltip?: string | null;\n setActiveTooltip?: (position: string | null) => void;\n}) {\n const triggerRef = useRef<T | null>(null);\n const id = position ?? '';\n const show = activeTooltip === id;\n\n const claim = () => setActiveTooltip?.(id);\n const release = () => {\n if (activeTooltip === id) {\n setActiveTooltip?.(null);\n }\n };\n\n const triggerProps = {\n onFocus: claim,\n onBlur: release,\n onMouseEnter: claim,\n onMouseLeave: release,\n };\n\n const tooltip = show ? (\n <Tooltip getTrack={() => triggerRef.current} content={label} position=\"right\" onEscape={release} />\n ) : null;\n\n return { triggerRef, triggerProps, tooltip };\n}\n\nfunction Link({ definition, activeHref, fireFollow, position, collapsed, activeTooltip, setActiveTooltip }: LinkProps) {\n checkSafeUrl('SideNavigation', definition.href);\n const isActive = definition.href === activeHref;\n const i18n = useInternalI18n('link');\n const collapsedTooltip = useCollapsedTooltip<HTMLAnchorElement>({\n label: definition.text,\n position,\n activeTooltip,\n setActiveTooltip,\n });\n\n const onClick = useCallback(\n (event: React.MouseEvent) => {\n if (isPlainLeftClick(event)) {\n fireFollow(definition, event);\n }\n },\n [fireFollow, definition]\n );\n\n const clickActionAnalyticsMetadata: GeneratedAnalyticsMetadataSideNavigationClick = {\n action: 'click',\n detail: {\n label: `.${analyticsSelectors['link-text']}`,\n external: `${!!definition.external}`,\n href: definition.href,\n position,\n },\n };\n\n const renderedExternalIconAriaLabel = i18n('externalIconAriaLabel', definition.externalIconAriaLabel);\n\n const showInfo = !collapsed && definition.info;\n\n const internalLink = (\n <a\n ref={collapsed ? collapsedTooltip.triggerRef : undefined}\n href={definition.href}\n className={clsx(styles.link, {\n [styles['link-active']]: isActive,\n [styles['link--collapsed']]: collapsed,\n })}\n target={definition.external ? '_blank' : undefined}\n rel={definition.external ? 'noopener noreferrer' : undefined}\n aria-current={definition.href === activeHref ? 'page' : undefined}\n aria-label={collapsed ? definition.text : undefined}\n onClick={onClick}\n {...(collapsed ? collapsedTooltip.triggerProps : {})}\n {...getAnalyticsMetadataAttribute(clickActionAnalyticsMetadata)}\n >\n <ItemIcon icon={definition.icon} collapsed={collapsed} aria-hidden={collapsed ? true : undefined} />\n {!collapsed && (\n <span className={styles['link-text-wrapper']}>\n <span className={analyticsSelectors['link-text']}>{definition.text}</span>\n {definition.external && (\n <span aria-label={renderedExternalIconAriaLabel} role={renderedExternalIconAriaLabel ? 'img' : undefined}>\n <InternalIcon name=\"external\" className={styles['external-icon']} />\n </span>\n )}\n </span>\n )}\n {collapsed && collapsedTooltip.tooltip}\n </a>\n );\n return showInfo ? (\n <div className={styles['list-item--link-with-info']}>\n {internalLink}\n <span className={clsx(styles.info, testUtilStyles.info)}>{definition.info}</span>\n </div>\n ) : (\n internalLink\n );\n}\n\ninterface SectionProps extends BaseItemComponentProps {\n definition: SideNavigationProps.Section;\n variant: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n withIcons?: boolean;\n}\n\nfunction Section({\n definition,\n activeHref,\n fireFollow,\n fireChange,\n variant,\n position,\n collapsed,\n withIcons,\n}: SectionProps) {\n const [expanded, setExpanded] = useState<boolean>(definition.defaultExpanded ?? true);\n const isVisualRefresh = useVisualRefresh();\n\n const onExpandedChange = useCallback(\n (e: NonCancelableCustomEvent<ExpandableSectionProps.ChangeDetail>) => {\n fireChange(definition, e.detail.expanded);\n setExpanded(e.detail.expanded);\n },\n [definition, fireChange]\n );\n\n useEffect(() => {\n setExpanded(definition.defaultExpanded ?? true);\n }, [definition]);\n\n if (collapsed) {\n return null;\n }\n\n const isInSectionGroup = variant === 'section-group';\n\n return (\n <InternalExpandableSection\n variant=\"footer\"\n expanded={expanded}\n onChange={onExpandedChange}\n disableContentPaddings={true}\n className={clsx(\n styles.section,\n isInSectionGroup && styles['section--no-ident'],\n withIcons && styles['section--expand-icon-end'],\n isVisualRefresh && styles.refresh\n )}\n headerText={<span className={styles['section-header']}>{definition.text}</span>}\n __expandIconPosition={withIcons ? 'end' : 'start'}\n >\n <NavigationItemsList\n variant=\"section\"\n items={definition.items}\n fireFollow={fireFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n withIcons={withIcons}\n />\n </InternalExpandableSection>\n );\n}\n\ninterface SectionGroupProps extends BaseItemComponentProps {\n definition: SideNavigationProps.SectionGroup;\n withIcons?: boolean;\n}\n\nfunction SectionGroup({\n definition,\n activeHref,\n fireFollow,\n fireChange,\n position,\n collapsed,\n withIcons,\n}: SectionGroupProps) {\n const isOneTheme = useOneTheme();\n if (collapsed) {\n return null;\n }\n return (\n <div className={styles['section-group']}>\n <InternalBox\n className={styles['section-group-title']}\n variant=\"h3\"\n fontSize={isOneTheme ? 'heading-s' : undefined}\n >\n {definition.title}\n </InternalBox>\n <NavigationItemsList\n variant=\"section-group\"\n items={definition.items}\n fireFollow={fireFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n withIcons={withIcons}\n />\n </div>\n );\n}\n\ninterface LinkGroupProps extends BaseItemComponentProps {\n definition: SideNavigationProps.LinkGroup;\n withIcons?: boolean;\n}\n\nfunction LinkGroup({\n definition,\n activeHref,\n fireFollow,\n fireChange,\n position,\n collapsed,\n withIcons,\n activeTooltip,\n setActiveTooltip,\n}: LinkGroupProps) {\n checkSafeUrl('SideNavigation', definition.href);\n\n return (\n <>\n <Link\n definition={{\n type: 'link',\n href: definition.href,\n text: definition.text,\n info: definition.info,\n icon: definition.icon,\n }}\n fireFollow={(_, event) => fireFollow(definition, event)}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n {!collapsed && (\n <NavigationItemsList\n variant=\"link-group\"\n items={definition.items}\n fireFollow={fireFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n withIcons={withIcons}\n />\n )}\n </>\n );\n}\n\ninterface ExpandableLinkGroupProps extends BaseItemComponentProps {\n definition: SideNavigationProps.ExpandableLinkGroup;\n variant: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n withIcons?: boolean;\n}\n\nfunction ExpandableLinkGroup({\n definition,\n fireFollow,\n fireChange,\n activeHref,\n variant,\n position,\n collapsed,\n withIcons,\n activeTooltip,\n setActiveTooltip,\n}: ExpandableLinkGroupProps) {\n // Check whether the definition contains an active link and memoize it to avoid\n // rechecking every time.\n const containsActiveLink = useMemo(() => {\n return activeHref ? hasActiveLink(definition.items, activeHref) : false;\n }, [activeHref, definition.items]);\n\n const [expanded, setExpanded] = useState<boolean>(() => {\n return definition.defaultExpanded ?? (definition.href === activeHref || containsActiveLink);\n });\n\n const [userExpanded, setUserExpanded] = useState<boolean | undefined>();\n\n // Reset user expansion status when the items property is updated.\n useEffect(() => setUserExpanded(undefined), [definition]);\n\n // By default, the expandable section is open when there's an active link inside.\n useEffect(() => {\n setExpanded(definition.href === activeHref || containsActiveLink);\n }, [definition.href, containsActiveLink, activeHref]);\n\n // If the definition object itself is updated, reset the expansion state to default.\n useEffect(() => {\n if (definition.defaultExpanded !== undefined) {\n setExpanded(definition.defaultExpanded);\n }\n }, [definition]);\n\n const onExpandedChange = useCallback(\n (e: NonCancelableCustomEvent<ExpandableSectionProps.ChangeDetail>) => {\n fireChange(definition, e.detail.expanded);\n setUserExpanded(e.detail.expanded);\n },\n [definition, fireChange]\n );\n\n const onHeaderFollow: LinkProps['fireFollow'] = (_, event) => {\n fireFollow(definition, event);\n setUserExpanded(true);\n if (!expanded) {\n fireChange(definition, true);\n }\n };\n\n if (collapsed) {\n return (\n <Link\n definition={{ type: 'link', href: definition.href, text: definition.text, icon: definition.icon }}\n fireFollow={onHeaderFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n );\n }\n\n return (\n <InternalExpandableSection\n className={clsx(\n styles['expandable-link-group'],\n variant === 'section-group' && styles['expandable-link-group--no-ident'],\n withIcons && styles['expandable-link-group--expand-icon-end'],\n definition.href === activeHref && styles['expandable-link-group--active']\n )}\n variant=\"navigation\"\n expanded={userExpanded ?? expanded}\n onChange={onExpandedChange}\n disableContentPaddings={true}\n __disableHeaderPaddings={true}\n __expandIconPosition={withIcons ? 'end' : 'start'}\n headerText={\n <Link\n definition={{ type: 'link', href: definition.href, text: definition.text, icon: definition.icon }}\n fireFollow={onHeaderFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n />\n }\n >\n <NavigationItemsList\n variant=\"expandable-link-group\"\n items={definition.items}\n fireFollow={fireFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n withIcons={withIcons}\n />\n </InternalExpandableSection>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"parts.js","sourceRoot":"","sources":["../../../src/side-navigation/parts.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport clsx from 'clsx';\n\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalBox from '../box/internal';\nimport { ExpandableSectionProps } from '../expandable-section/interfaces';\nimport InternalExpandableSection from '../expandable-section/internal';\nimport { useInternalI18n } from '../i18n/context';\nimport InternalIcon from '../icon/internal';\nimport { Transition } from '../internal/components/transition';\nimport { isPlainLeftClick } from '../internal/events';\nimport { useOneTheme, useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\nimport Tooltip from '../tooltip/internal';\nimport { NonCancelableCustomEvent } from '../types/events';\nimport { GeneratedAnalyticsMetadataSideNavigationClick } from './analytics-metadata/interfaces';\nimport { SideNavigationProps } from './interfaces';\nimport { hasActiveLink } from './util';\n\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\nimport styles from './styles.css.js';\nimport testUtilStyles from './test-classes/styles.css.js';\n\ninterface BaseItemComponentProps {\n activeHref?: string;\n fireChange: (item: SideNavigationProps.Section | SideNavigationProps.ExpandableLinkGroup, expanded: boolean) => void;\n fireFollow: (\n item:\n | SideNavigationProps.Link\n | SideNavigationProps.Header\n | SideNavigationProps.LinkGroup\n | SideNavigationProps.ExpandableLinkGroup,\n event: React.SyntheticEvent | Event\n ) => void;\n position?: string;\n collapsed?: boolean;\n activeTooltip?: string | null;\n setActiveTooltip?: (position: string | null) => void;\n}\n\ninterface HeaderProps extends BaseItemComponentProps {\n definition: SideNavigationProps.Header;\n}\n\nexport function Header({ definition, activeHref, fireFollow, collapsed }: HeaderProps) {\n checkSafeUrl('SideNavigation', definition.href);\n const onClick = useCallback(\n (event: React.MouseEvent) => {\n if (isPlainLeftClick(event)) {\n fireFollow(definition, event);\n }\n },\n [fireFollow, definition]\n );\n\n const clickActionAnalyticsMetadata: GeneratedAnalyticsMetadataSideNavigationClick = {\n action: 'click',\n detail: {\n label: `.${analyticsSelectors['header-link-text']}`,\n external: 'false',\n href: definition.href,\n position: 'header',\n },\n };\n\n return (\n <>\n {!collapsed && (\n <h2 className={styles.header}>\n <a\n href={definition.href}\n className={clsx(styles['header-link'], { [styles['header-link--has-logo']]: !!definition.logo })}\n aria-current={definition.href === activeHref ? 'page' : undefined}\n onClick={onClick}\n {...getAnalyticsMetadataAttribute(clickActionAnalyticsMetadata)}\n >\n {definition.logo &&\n (definition.logo.svg ? (\n <span\n className={clsx(styles['header-logo'], {\n [styles['header-logo--stretched']]: !definition.text,\n })}\n >\n {definition.logo.svg}\n </span>\n ) : (\n <img\n className={clsx(styles['header-logo'], {\n [styles['header-logo--stretched']]: !definition.text,\n })}\n src={definition.logo.src}\n alt={definition.logo.alt}\n />\n ))}\n <span className={clsx(styles['header-link-text'], analyticsSelectors['header-link-text'])}>\n {definition.text}\n </span>\n </a>\n </h2>\n )}\n {!collapsed && <Divider isPresentational={true} variant=\"header\" />}\n </>\n );\n}\n\ninterface NavigationItemsListProps extends BaseItemComponentProps {\n items: ReadonlyArray<SideNavigationProps.Item>;\n variant: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n withIcons?: boolean;\n ariaLabel?: string;\n}\n\ninterface Item {\n element?: ReactNode;\n listVariant?: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n items?: Array<Item>;\n}\n\nexport function NavigationItemsList({\n items,\n variant,\n activeHref,\n fireChange,\n fireFollow,\n position = '',\n collapsed,\n withIcons,\n ariaLabel,\n activeTooltip,\n setActiveTooltip,\n}: NavigationItemsListProps) {\n const lists: Array<Item> = [];\n let currentListIndex = 0;\n lists[currentListIndex] = {\n listVariant: variant,\n items: [],\n };\n\n items.forEach((item, index) => {\n const itemid = index + 1;\n const itemPosition = `${position ? `${position},` : ''}${itemid}`;\n\n // Emits a divider as its own list segment (dividers break the <ul> grouping).\n function pushDivider() {\n lists.push({\n listVariant: variant,\n element: (\n <div data-itemid={`item-${itemid}`} className={clsx(collapsed && styles['list-item--group'])}>\n <Divider variant=\"default\" collapsed={collapsed} />\n </div>\n ),\n });\n currentListIndex =\n lists.push({\n listVariant: variant,\n items: [],\n }) - 1;\n }\n\n // In collapsed mode, hide plain links without icons (they have no visual representation).\n // Exception: link-group / expandable-link-group children must stay rendered so\n // the grid-template-rows collapse animation has content to transition.\n if (\n collapsed &&\n item.type === 'link' &&\n !(item as SideNavigationProps.Link).icon &&\n variant !== 'link-group' &&\n variant !== 'expandable-link-group'\n ) {\n return;\n }\n switch (item.type) {\n case 'divider': {\n pushDivider();\n return;\n }\n case 'link': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(styles['list-item'], collapsed && styles['list-item--collapsed'])}\n >\n <Link\n definition={item}\n activeHref={activeHref}\n fireChange={fireChange}\n fireFollow={fireFollow}\n position={itemPosition}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n case 'section': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(\n styles['list-item'],\n collapsed && styles['list-item--collapsed'],\n collapsed && styles['list-item--group']\n )}\n >\n <Section\n definition={item}\n activeHref={activeHref}\n variant={variant}\n fireChange={fireChange}\n fireFollow={fireFollow}\n position={itemPosition}\n collapsed={collapsed}\n withIcons={withIcons}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n case 'section-group': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(\n styles['list-item'],\n collapsed && styles['list-item--collapsed'],\n collapsed && styles['list-item--group']\n )}\n >\n <SectionGroup\n definition={item}\n activeHref={activeHref}\n fireChange={fireChange}\n fireFollow={fireFollow}\n position={itemPosition}\n collapsed={collapsed}\n withIcons={withIcons}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n case 'link-group': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(\n styles['list-item'],\n collapsed && styles['list-item--collapsed'],\n collapsed && styles['list-item--group']\n )}\n >\n <LinkGroup\n definition={item}\n activeHref={activeHref}\n fireChange={fireChange}\n fireFollow={fireFollow}\n position={itemPosition}\n collapsed={collapsed}\n withIcons={withIcons}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n case 'expandable-link-group': {\n lists[currentListIndex].items?.push({\n element: (\n <li\n key={index}\n data-itemid={`item-${itemid}`}\n className={clsx(\n styles['list-item'],\n collapsed && styles['list-item--collapsed'],\n collapsed && styles['list-item--group']\n )}\n >\n <ExpandableLinkGroup\n definition={item}\n activeHref={activeHref}\n fireChange={fireChange}\n fireFollow={fireFollow}\n variant={variant}\n position={itemPosition}\n collapsed={collapsed}\n withIcons={withIcons}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </li>\n ),\n });\n return;\n }\n }\n });\n\n // In collapsed mode, skip empty item segments and deduplicate consecutive dividers.\n const filteredLists = collapsed\n ? lists.filter((list, index) => {\n if (list.items) {\n return list.items.length > 0;\n }\n // Divider — skip if preceded by another divider or empty segment, or followed by nothing.\n const prevVisible = lists\n .slice(0, index)\n .reverse()\n .find(l => !l.items || l.items.length > 0);\n const nextVisible = lists.slice(index + 1).find(l => !l.items || l.items.length > 0);\n return (\n (!prevVisible || (prevVisible.items !== undefined && prevVisible.items.length > 0)) &&\n nextVisible !== undefined &&\n (nextVisible.items === undefined || nextVisible.items.length > 0)\n );\n })\n : lists;\n\n return (\n <>\n {filteredLists.map((list, index) => {\n if (!list.items || list.items.length === 0) {\n return (\n <div\n key={`hr-${index}`}\n className={clsx(styles.list, styles[`list-variant-${variant}`], {\n [styles['list-variant-root--first']]: list.listVariant === 'root' && index === 0,\n [styles[`list-variant-${list.listVariant}--collapsed`]]: collapsed,\n [styles['list--with-icons']]: withIcons,\n })}\n >\n {list.element}\n </div>\n );\n } else {\n return (\n <ul\n key={`list-${index}`}\n className={clsx(styles.list, styles[`list-variant-${list.listVariant}`], {\n [styles['list-variant-root--first']]: list.listVariant === 'root' && index === 0,\n [styles[`list-variant-${list.listVariant}--collapsed`]]: collapsed,\n [styles['list--with-icons']]: withIcons,\n })}\n aria-label={ariaLabel}\n >\n {list.items.map(item => item.element)}\n </ul>\n );\n }\n })}\n </>\n );\n}\n\ninterface DividerProps {\n variant: 'default' | 'header';\n isPresentational?: boolean;\n collapsed?: boolean;\n}\n\nfunction Divider({ variant = 'default', isPresentational = false, collapsed }: DividerProps) {\n return (\n <hr\n className={clsx(styles.divider, styles[`divider-${variant}`], collapsed && styles['divider--collapsed'])}\n role={isPresentational ? 'presentation' : undefined}\n />\n );\n}\n\ninterface LinkProps extends BaseItemComponentProps {\n definition: SideNavigationProps.Link;\n}\n\ninterface ItemIconProps extends React.HTMLAttributes<HTMLSpanElement> {\n icon: React.ReactNode;\n collapsed?: boolean;\n}\n\nconst ItemIcon = React.forwardRef<HTMLSpanElement, ItemIconProps>(function ItemIcon(\n { icon, collapsed, className, ...rest },\n ref\n) {\n if (!icon) {\n return null;\n }\n return (\n <span\n ref={ref}\n className={clsx(\n styles['item-icon'],\n testUtilStyles['item-icon'],\n collapsed && styles['item-icon--collapsed'],\n className\n )}\n {...rest}\n >\n {icon}\n </span>\n );\n});\n\n// Manages a tooltip that shows the item's text label on focus or hover.\n// Used in the collapsed state, where the visible labels are hidden, to give\n// pointer and keyboard users a way to identify each item without relying on\n// their browser's native title popup.\nfunction useCollapsedTooltip<T extends HTMLElement>({\n label,\n position,\n activeTooltip,\n setActiveTooltip,\n}: {\n label: React.ReactNode;\n position?: string;\n activeTooltip?: string | null;\n setActiveTooltip?: (position: string | null) => void;\n}) {\n const triggerRef = useRef<T | null>(null);\n const id = position ?? '';\n const show = activeTooltip === id;\n\n const claim = () => setActiveTooltip?.(id);\n const release = () => {\n if (activeTooltip === id) {\n setActiveTooltip?.(null);\n }\n };\n\n const triggerProps = {\n onFocus: claim,\n onBlur: release,\n onMouseEnter: claim,\n onMouseLeave: release,\n };\n\n const tooltip = show ? (\n <Tooltip getTrack={() => triggerRef.current} content={label} position=\"right\" onEscape={release} />\n ) : null;\n\n return { triggerRef, triggerProps, tooltip };\n}\n\nfunction Link({ definition, activeHref, fireFollow, position, collapsed, activeTooltip, setActiveTooltip }: LinkProps) {\n checkSafeUrl('SideNavigation', definition.href);\n const isActive = definition.href === activeHref;\n const i18n = useInternalI18n('link');\n const linkRef = useRef<HTMLAnchorElement>(null);\n const collapsedTooltip = useCollapsedTooltip<HTMLAnchorElement>({\n label: definition.text,\n position,\n activeTooltip,\n setActiveTooltip,\n });\n\n // Make icon-less collapsed links inert (they collapse to 0×0 and must\n // not be focusable or visible to assistive technology).\n const isIconLess = !definition.icon;\n useEffect(() => {\n if (linkRef.current) {\n linkRef.current.inert = !!(collapsed && isIconLess);\n }\n }, [collapsed, isIconLess]);\n\n // Merge linkRef with collapsedTooltip.triggerRef so both can track the <a>.\n const mergedRef = useCallback(\n (node: HTMLAnchorElement | null) => {\n (linkRef as React.MutableRefObject<HTMLAnchorElement | null>).current = node;\n if (collapsed) {\n (collapsedTooltip.triggerRef as React.MutableRefObject<HTMLAnchorElement | null>).current = node;\n }\n },\n [collapsed, collapsedTooltip.triggerRef]\n );\n\n const onClick = useCallback(\n (event: React.MouseEvent) => {\n if (isPlainLeftClick(event)) {\n fireFollow(definition, event);\n }\n },\n [fireFollow, definition]\n );\n\n const clickActionAnalyticsMetadata: GeneratedAnalyticsMetadataSideNavigationClick = {\n action: 'click',\n detail: {\n label: `.${analyticsSelectors['link-text']}`,\n external: `${!!definition.external}`,\n href: definition.href,\n position,\n },\n };\n\n const renderedExternalIconAriaLabel = i18n('externalIconAriaLabel', definition.externalIconAriaLabel);\n\n const showInfo = !collapsed && definition.info;\n\n const internalLink = (\n <a\n ref={mergedRef}\n href={definition.href}\n className={clsx(styles.link, {\n [styles['link-active']]: isActive,\n [styles['link--collapsed']]: collapsed,\n })}\n target={definition.external ? '_blank' : undefined}\n rel={definition.external ? 'noopener noreferrer' : undefined}\n aria-current={definition.href === activeHref ? 'page' : undefined}\n aria-label={collapsed ? definition.text : undefined}\n onClick={onClick}\n {...(collapsed ? collapsedTooltip.triggerProps : {})}\n {...getAnalyticsMetadataAttribute(clickActionAnalyticsMetadata)}\n >\n <ItemIcon icon={definition.icon} collapsed={collapsed} aria-hidden={collapsed ? true : undefined} />\n <span\n className={clsx(styles['link-text-wrapper'], collapsed && styles['link-text-wrapper--collapsed'])}\n aria-hidden={collapsed ? true : undefined}\n >\n <span className={clsx(styles['link-text-wrapper-content'])}>\n <span className={analyticsSelectors['link-text']}>{definition.text}</span>\n {definition.external && (\n <span aria-label={renderedExternalIconAriaLabel} role={renderedExternalIconAriaLabel ? 'img' : undefined}>\n <InternalIcon name=\"external\" className={styles['external-icon']} />\n </span>\n )}\n </span>\n </span>\n {collapsed && collapsedTooltip.tooltip}\n </a>\n );\n return showInfo ? (\n <div className={styles['list-item--link-with-info']}>\n {internalLink}\n <span className={clsx(styles.info, testUtilStyles.info)}>{definition.info}</span>\n </div>\n ) : (\n internalLink\n );\n}\n\ninterface SectionProps extends BaseItemComponentProps {\n definition: SideNavigationProps.Section;\n variant: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n withIcons?: boolean;\n}\n\nfunction Section({\n definition,\n activeHref,\n fireFollow,\n fireChange,\n variant,\n position,\n collapsed,\n withIcons,\n activeTooltip,\n setActiveTooltip,\n}: SectionProps) {\n const [expanded, setExpanded] = useState<boolean>(definition.defaultExpanded ?? true);\n const isVisualRefresh = useVisualRefresh();\n const sectionRef = useRef<HTMLDivElement>(null);\n\n const onExpandedChange = useCallback(\n (e: NonCancelableCustomEvent<ExpandableSectionProps.ChangeDetail>) => {\n fireChange(definition, e.detail.expanded);\n setExpanded(e.detail.expanded);\n },\n [definition, fireChange]\n );\n\n useEffect(() => {\n setExpanded(definition.defaultExpanded ?? true);\n }, [definition]);\n\n // Sections are transparent in the collapsed rail — only the header is made inert\n // so child links remain focusable. The header hosts the expand toggle that must\n // leave the tab order when collapsed.\n useEffect(() => {\n const el = sectionRef.current as HTMLElement | null;\n if (el) {\n el.inert = false;\n const header = el.firstElementChild as HTMLElement | null;\n if (header) {\n header.inert = !!collapsed;\n }\n }\n }, [collapsed]);\n\n const isInSectionGroup = variant === 'section-group';\n\n return (\n <InternalExpandableSection\n variant=\"footer\"\n expanded={collapsed ? true : expanded}\n onChange={onExpandedChange}\n disableContentPaddings={true}\n __internalRootRef={sectionRef}\n className={clsx(\n styles.section,\n isInSectionGroup && styles['section--no-ident'],\n withIcons && styles['section--expand-icon-end'],\n isVisualRefresh && styles.refresh,\n collapsed && styles['section--collapsed']\n )}\n headerText={\n <span\n className={clsx(styles['section-header'], styles['label-text'], collapsed && styles['label-text--collapsed'])}\n aria-hidden={collapsed ? true : undefined}\n >\n {definition.text}\n </span>\n }\n __expandIconPosition={withIcons ? 'end' : 'start'}\n >\n <NavigationItemsList\n variant=\"section\"\n items={definition.items}\n fireFollow={fireFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n collapsed={collapsed}\n withIcons={withIcons}\n ariaLabel={collapsed ? definition.text : undefined}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </InternalExpandableSection>\n );\n}\n\ninterface SectionGroupProps extends BaseItemComponentProps {\n definition: SideNavigationProps.SectionGroup;\n withIcons?: boolean;\n}\n\nfunction SectionGroup({\n definition,\n activeHref,\n fireFollow,\n fireChange,\n position,\n collapsed,\n withIcons,\n activeTooltip,\n setActiveTooltip,\n}: SectionGroupProps) {\n const isOneTheme = useOneTheme();\n const sectionGroupRef = useRef<HTMLDivElement>(null);\n\n // Section-groups are transparent — children are always promoted in the collapsed rail.\n useEffect(() => {\n if (sectionGroupRef.current) {\n sectionGroupRef.current.inert = false;\n }\n }, [collapsed]);\n\n return (\n <div ref={sectionGroupRef} className={styles['section-group']}>\n <InternalBox\n className={clsx(styles['section-group-title'], collapsed && styles['section-group-title--collapsed'])}\n variant=\"h3\"\n fontSize={isOneTheme ? 'heading-s' : undefined}\n >\n <span\n className={clsx(styles['label-text'], collapsed && styles['label-text--collapsed'])}\n aria-hidden={collapsed ? true : undefined}\n >\n {definition.title}\n </span>\n </InternalBox>\n <NavigationItemsList\n variant=\"section-group\"\n items={definition.items}\n fireFollow={fireFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n collapsed={collapsed}\n withIcons={withIcons}\n ariaLabel={collapsed ? definition.title : undefined}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </div>\n );\n}\n\ninterface LinkGroupProps extends BaseItemComponentProps {\n definition: SideNavigationProps.LinkGroup;\n withIcons?: boolean;\n}\n\nfunction LinkGroup({\n definition,\n activeHref,\n fireFollow,\n fireChange,\n position,\n collapsed,\n withIcons,\n activeTooltip,\n setActiveTooltip,\n}: LinkGroupProps) {\n checkSafeUrl('SideNavigation', definition.href);\n const childrenRef = useRef<HTMLDivElement>(null);\n const isOneTheme = useOneTheme();\n\n // Set inert on the children container when collapsed so they leave\n // the tab order and assistive technology.\n useEffect(() => {\n if (childrenRef.current) {\n childrenRef.current.inert = !!collapsed;\n }\n }, [collapsed]);\n\n return (\n <>\n <Link\n definition={{\n type: 'link',\n href: definition.href,\n text: definition.text,\n info: definition.info,\n icon: definition.icon,\n }}\n fireFollow={(_, event) => fireFollow(definition, event)}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n <Transition<HTMLDivElement> in={!collapsed} disabled={!isOneTheme}>\n {(transitionState, transitionEventsRef, motionDisabled) => {\n const childrenSettled = !collapsed && (motionDisabled || transitionState === 'entered');\n\n return (\n <div\n ref={transitionEventsRef}\n className={clsx(styles['link-group-children'], collapsed && styles['link-group-children--collapsed'])}\n >\n <div\n ref={childrenRef}\n className={clsx(\n styles['link-group-children-inner'],\n !collapsed && styles['link-group-children-inner--expanded'],\n childrenSettled && styles['link-group-children-inner--settled']\n )}\n >\n <NavigationItemsList\n variant=\"link-group\"\n items={definition.items}\n fireFollow={fireFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n collapsed={collapsed}\n withIcons={withIcons}\n ariaLabel={collapsed ? definition.text : undefined}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </div>\n </div>\n );\n }}\n </Transition>\n </>\n );\n}\n\ninterface ExpandableLinkGroupProps extends BaseItemComponentProps {\n definition: SideNavigationProps.ExpandableLinkGroup;\n variant: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';\n withIcons?: boolean;\n}\n\nfunction ExpandableLinkGroup({\n definition,\n fireFollow,\n fireChange,\n activeHref,\n variant,\n position,\n collapsed,\n withIcons,\n activeTooltip,\n setActiveTooltip,\n}: ExpandableLinkGroupProps) {\n // Check whether the definition contains an active link and memoize it to avoid\n // rechecking every time.\n const containsActiveLink = useMemo(() => {\n return activeHref ? hasActiveLink(definition.items, activeHref) : false;\n }, [activeHref, definition.items]);\n\n const [expanded, setExpanded] = useState<boolean>(() => {\n return definition.defaultExpanded ?? (definition.href === activeHref || containsActiveLink);\n });\n\n const [userExpanded, setUserExpanded] = useState<boolean | undefined>();\n\n // Reset user expansion status when the items property is updated.\n useEffect(() => setUserExpanded(undefined), [definition]);\n\n // By default, the expandable section is open when there's an active link inside.\n useEffect(() => {\n setExpanded(definition.href === activeHref || containsActiveLink);\n }, [definition.href, containsActiveLink, activeHref]);\n\n // If the definition object itself is updated, reset the expansion state to default.\n useEffect(() => {\n if (definition.defaultExpanded !== undefined) {\n setExpanded(definition.defaultExpanded);\n }\n }, [definition]);\n\n const onExpandedChange = useCallback(\n (e: NonCancelableCustomEvent<ExpandableSectionProps.ChangeDetail>) => {\n fireChange(definition, e.detail.expanded);\n setUserExpanded(e.detail.expanded);\n },\n [definition, fireChange]\n );\n\n const onHeaderFollow: LinkProps['fireFollow'] = (_, event) => {\n fireFollow(definition, event);\n setUserExpanded(true);\n if (!expanded) {\n fireChange(definition, true);\n }\n };\n\n return (\n <InternalExpandableSection\n className={clsx(\n styles['expandable-link-group'],\n variant === 'section-group' && styles['expandable-link-group--no-ident'],\n withIcons && styles['expandable-link-group--expand-icon-end'],\n definition.href === activeHref && styles['expandable-link-group--active'],\n collapsed && styles['expandable-link-group--collapsed']\n )}\n variant=\"navigation\"\n expanded={collapsed ? false : (userExpanded ?? expanded)}\n onChange={onExpandedChange}\n disableContentPaddings={true}\n __disableHeaderPaddings={true}\n __expandIconPosition={withIcons ? 'end' : 'start'}\n __hideExpandIcon={!!collapsed}\n headerText={\n <Link\n definition={{ type: 'link', href: definition.href, text: definition.text, icon: definition.icon }}\n fireFollow={onHeaderFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n collapsed={collapsed}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n }\n >\n <NavigationItemsList\n variant=\"expandable-link-group\"\n items={definition.items}\n fireFollow={fireFollow}\n fireChange={fireChange}\n activeHref={activeHref}\n position={position}\n collapsed={collapsed}\n withIcons={withIcons}\n activeTooltip={activeTooltip}\n setActiveTooltip={setActiveTooltip}\n />\n </InternalExpandableSection>\n );\n}\n"]}
|