diff --git a/library/components/legends/LegendCollapseCaret.vue b/library/components/legends/LegendCollapseCaret.vue new file mode 100644 index 000000000..84b602710 --- /dev/null +++ b/library/components/legends/LegendCollapseCaret.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/library/components/legends/LegendDesktop.vue b/library/components/legends/LegendDesktop.vue index 1c8ee13f1..3db1899fb 100644 --- a/library/components/legends/LegendDesktop.vue +++ b/library/components/legends/LegendDesktop.vue @@ -13,6 +13,7 @@ import { retryableAsyncComponent } from '../../composables/retryableAsyncCompone import LegendRows from './LegendRows.vue' import PeopleGroupDetail from '../PeopleGroupDetail.vue' import ApproxPinNote from './ApproxPinNote.vue' +import LegendCollapseCaret from './LegendCollapseCaret.vue' import { buildColocationIndex, colocatedWith } from '../../utils/colocation.js' // Async-import the heavier branches so the boot bundle stays lean. const LegendMobile = retryableAsyncComponent(() => import('./LegendMobile.vue')) @@ -68,11 +69,6 @@ useShadowStyles(` LegendRows. Matches SemanticTreeLegend's .stl-collapse-btn look: 22x20px, rounded-rect, subtle dark bg + border, right-chevron SVG that rotates 180deg when expanded. */ -.legend-collapse-caret{background:rgba(110,118,129,0.15);border:1px solid #30363d;border-radius:5px;color:#8b949e;cursor:pointer;width:22px;height:20px;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:color 0.1s,background 0.1s,transform 0.18s;outline:none;-webkit-tap-highlight-color:transparent;padding:0;} -.legend-collapse-caret:focus{outline:none;} -.legend-collapse-caret:hover{color:#c9d1d9;background:rgba(59,70,61,0.18);border-color:#73A17F;} -.legend-collapse-caret svg{transition:transform 0.18s;transform:rotate(180deg);} -.legend-collapse-caret.rotated svg{transform:rotate(0deg);} /* Light mode caret — mirrors STL's [data-theme="light"] .stl-collapse-btn */ .legend-container:not(.legend-dark) .legend-collapse-caret{background:rgba(208,215,222,0.4);border-color:#d0d7de;color:#57606a;} .legend-container:not(.legend-dark) .legend-collapse-caret:hover{background:rgba(59,70,61,0.12);border-color:#3b463d;color:#3b463d;} @@ -86,8 +82,14 @@ useShadowStyles(` above the PeopleGroupDetail sticky header (.detail-header z-index:10) so it is always tappable even when the detail panel scrolls. The button is only rendered in the detail-mode template branch (see