@scattered-light/loomiere-mojave 0.9.0 → 0.11.0

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.
@@ -1899,6 +1899,14 @@
1899
1899
  --sl-sheet-tab-padding-inline: var(--sl-space-3-5); /** Space either side of the tab label's text. */
1900
1900
  --sl-sheet-tab-radius: var(--sl-radius-sm); /** The tab label's top corners. Its bottom corners stay square where it meets the rule. */
1901
1901
  --sl-sheet-header-gap: var(--sl-space-3); /** Space between the tab label and an action at the end of the header row, such as an Edit link. */
1902
+ --sl-side-nav-item-padding-inline: var(--sl-space-5); /** Space at each end of a row. */
1903
+ --sl-side-nav-item-gap: var(--sl-space-2); /** Space between a row's label and its count. */
1904
+ --sl-side-nav-indicator-width: var(--sl-stroke-medium); /** The line under the current row. */
1905
+ --sl-side-nav-group-padding-top: var(--sl-space-5); /** Space above a group heading. */
1906
+ --sl-side-nav-toggle-width: var(--sl-space-6); /** The collapse handle's width. It straddles the column's edge. */
1907
+ --sl-side-nav-toggle-height: var(--sl-space-11); /** The collapse handle's height, a tall tab on the column's edge. */
1908
+ --sl-side-nav-toggle-offset: var(--sl-space-7); /** Distance of the collapse button from the top of the column. */
1909
+ --sl-side-nav-collapsed-width: var(--sl-space-11); /** Width of the column when it is collapsed, wide enough for the collapse handle. */
1902
1910
  --sl-slider-thumb-size: var(--sl-space-5); /** Knob diameter, big enough to grab with a finger on a 4px track. */
1903
1911
  --sl-splitter-handle-hit-size: var(--sl-a11y-min-touch-target); /** The part a finger grabs. The line stays one stroke. A fine pointer uses a11y.min-target (24px) instead, so the grab area does not cover the panel's scrollbar. Coarse pointers keep this 44px. */
1904
1912
  --sl-splitter-grip-size: var(--sl-space-1); /** 4px. The diameter of one grip dot. Small enough to sit on the hairline without becoming a second control. */
@@ -2171,6 +2179,8 @@
2171
2179
  --sl-description-list-leader-width: var(--sl-stroke-default); /** Thickness of the dotted leader. */
2172
2180
  --sl-sheet-border-width: var(--sl-stroke-default); /** Thickness of the sides and bottom. */
2173
2181
  --sl-sheet-radius: var(--sl-radius-surface); /** Corners, like any card or panel. The top corners stay square under a tab label, so the tab sits flush on the rule. */
2182
+ --sl-side-nav-item-height: var(--sl-control-height-md); /** Least height of a row: the regular control height, so a row is as tall as a button. */
2183
+ --sl-side-nav-toggle-radius: var(--sl-radius-control); /** The collapse handle's corners. */
2174
2184
  --sl-splitter-handle-size: var(--sl-stroke-default); /** The visible separator. One stroke, the same hairline as Separator, so a splitter reads as a divider you can grab. */
2175
2185
  --sl-focus-shadow-3px-error: 0 0 0 3px var(--sl-status-error); /** Focus halo for a field with an error. */
2176
2186
  --sl-calendar-day-color: var(--sl-text-primary); /** A day in the month being shown. */
@@ -2270,6 +2280,8 @@
2270
2280
  --sl-status-level-warning-bold-fg: var(--sl-scope-warning-on-solid); /** bold in warning: solid in warning */
2271
2281
  --sl-status-level-error-bold-fg: var(--sl-scope-error-on-solid); /** bold in error: solid in error */
2272
2282
  --sl-description-list-value-color: var(--sl-text-primary); /** Values. */
2283
+ --sl-side-nav-item-color: var(--sl-text-primary); /** A row's text. */
2284
+ --sl-side-nav-toggle-border-color: var(--sl-text-primary); /** The collapse handle's outline and chevron. It fills with this color on hover. */
2273
2285
  --sl-stat-figure-figure-color: var(--sl-text-primary); /** The figure's color. */
2274
2286
  --sl-focus-shadow-3px-primary: 0 0 0 3px var(--sl-interactive-tint-hover); /** Soft focus halo for inputs. */
2275
2287
  --sl-focus-shadow-3px-primary-soft: 0 0 0 3px var(--sl-interactive-tint-active); /** Slightly stronger focus halo for inputs on tinted surfaces. */
@@ -2365,6 +2377,16 @@
2365
2377
  --sl-sheet-background: var(--sl-surface-raised); /** The sheet's fill: the raised surface, one level above the page like any card or panel. */
2366
2378
  --sl-sheet-border-color: var(--sl-border-default); /** The sheet's sides and bottom, the everyday divider. */
2367
2379
  --sl-sheet-tab-background: var(--sl-surface-inverse); /** The tab label's fill: the inverse surface, so the label reads as the sheet's name, and its text passes AA in every theme. */
2380
+ --sl-side-nav-background: var(--sl-surface-tray); /** The column's fill: the tray surface, a step off the page, so the current row on the raised surface stands out from it. */
2381
+ --sl-side-nav-border-color: var(--sl-border-default); /** The line between the column and the page. */
2382
+ --sl-side-nav-item-divider-color: var(--sl-border-subtle); /** The hairline under each row. */
2383
+ --sl-side-nav-item-color-disabled: var(--sl-text-secondary); /** A row that is not available yet. Secondary text, not the faded disabled color, so its hint stays readable. */
2384
+ --sl-side-nav-item-background-hover: var(--sl-fill-subtle); /** A row under the pointer. */
2385
+ --sl-side-nav-item-background-current: var(--sl-surface-raised); /** The current row: the raised surface, so it reads as the open page. */
2386
+ --sl-side-nav-count-color: var(--sl-text-accent); /** A count at the end of a row, such as items open. Accent text so it asks for attention. */
2387
+ --sl-side-nav-count-color-quiet: var(--sl-text-secondary); /** A count that is only information (tone="quiet"), such as a total. */
2388
+ --sl-side-nav-group-label-color: var(--sl-text-secondary); /** A group heading's caps label. */
2389
+ --sl-side-nav-toggle-background: var(--sl-surface-raised); /** The collapse handle's fill. */
2368
2390
  --sl-stat-figure-figure-color-accent: var(--sl-text-accent); /** The figure's color at tone="accent", for a figure that asks for action (open questions, items to review). */
2369
2391
  --sl-stat-figure-label-color: var(--sl-text-secondary); /** The caps label above the figure. */
2370
2392
  --sl-stat-figure-caption-color: var(--sl-text-secondary); /** The caption under the figure. */
@@ -2390,6 +2412,7 @@
2390
2412
  --sl-app-bar-border-color: var(--sl-rule-color); /** The line under the bar, in the rule color, so an ink rule brand gets an ink line here too. */
2391
2413
  --sl-sheet-rule-color: var(--sl-rule-color); /** The top rule's color: the working-paper rule color, so sheets and ruled tables match. */
2392
2414
  --sl-sheet-tab-color: var(--sl-text-on-inverse-surface); /** Text on the tab label. */
2415
+ --sl-side-nav-indicator-color: var(--sl-rule-color); /** The current row's line: the working-paper rule color, so the nav and the sheets share one ink. */
2393
2416
  --sl-stat-figure-underline-color: var(--sl-rule-color); /** The double underline's color: the working-paper rule color, like a grand total's double rule. */
2394
2417
  --sl-toggle-group-segmented-border-color: var(--sl-rule-color); /** The outline around a segmented group and the line between its toggles. The rule color, so it is a control edge by default and ink with an ink rule. */
2395
2418
  --sl-toggle-group-segmented-pressed-color: var(--sl-text-on-inverse); /** Text on the pressed toggle. */
@@ -5890,6 +5913,19 @@
5890
5913
  --sl-sheet-rule-color: var(--sl-rule-color);
5891
5914
  --sl-sheet-tab-background: var(--sl-surface-inverse);
5892
5915
  --sl-sheet-tab-color: var(--sl-text-on-inverse-surface);
5916
+ --sl-side-nav-background: var(--sl-surface-tray);
5917
+ --sl-side-nav-border-color: var(--sl-border-default);
5918
+ --sl-side-nav-item-divider-color: var(--sl-border-subtle);
5919
+ --sl-side-nav-item-color: var(--sl-text-primary);
5920
+ --sl-side-nav-item-color-disabled: var(--sl-text-secondary);
5921
+ --sl-side-nav-item-background-hover: var(--sl-fill-subtle);
5922
+ --sl-side-nav-item-background-current: var(--sl-surface-raised);
5923
+ --sl-side-nav-indicator-color: var(--sl-rule-color);
5924
+ --sl-side-nav-count-color: var(--sl-text-accent);
5925
+ --sl-side-nav-count-color-quiet: var(--sl-text-secondary);
5926
+ --sl-side-nav-group-label-color: var(--sl-text-secondary);
5927
+ --sl-side-nav-toggle-background: var(--sl-surface-raised);
5928
+ --sl-side-nav-toggle-border-color: var(--sl-text-primary);
5893
5929
  --sl-stat-figure-figure-color: var(--sl-text-primary);
5894
5930
  --sl-stat-figure-figure-color-accent: var(--sl-text-accent);
5895
5931
  --sl-stat-figure-underline-color: var(--sl-rule-color);
@@ -6061,6 +6097,19 @@
6061
6097
  --sl-sheet-rule-color: var(--sl-rule-color);
6062
6098
  --sl-sheet-tab-background: var(--sl-surface-inverse);
6063
6099
  --sl-sheet-tab-color: var(--sl-text-on-inverse-surface);
6100
+ --sl-side-nav-background: var(--sl-surface-tray);
6101
+ --sl-side-nav-border-color: var(--sl-border-default);
6102
+ --sl-side-nav-item-divider-color: var(--sl-border-subtle);
6103
+ --sl-side-nav-item-color: var(--sl-text-primary);
6104
+ --sl-side-nav-item-color-disabled: var(--sl-text-secondary);
6105
+ --sl-side-nav-item-background-hover: var(--sl-fill-subtle);
6106
+ --sl-side-nav-item-background-current: var(--sl-surface-raised);
6107
+ --sl-side-nav-indicator-color: var(--sl-rule-color);
6108
+ --sl-side-nav-count-color: var(--sl-text-accent);
6109
+ --sl-side-nav-count-color-quiet: var(--sl-text-secondary);
6110
+ --sl-side-nav-group-label-color: var(--sl-text-secondary);
6111
+ --sl-side-nav-toggle-background: var(--sl-surface-raised);
6112
+ --sl-side-nav-toggle-border-color: var(--sl-text-primary);
6064
6113
  --sl-stat-figure-figure-color: var(--sl-text-primary);
6065
6114
  --sl-stat-figure-figure-color-accent: var(--sl-text-accent);
6066
6115
  --sl-stat-figure-underline-color: var(--sl-rule-color);
@@ -6232,6 +6281,19 @@
6232
6281
  --sl-sheet-rule-color: var(--sl-rule-color);
6233
6282
  --sl-sheet-tab-background: var(--sl-surface-inverse);
6234
6283
  --sl-sheet-tab-color: var(--sl-text-on-inverse-surface);
6284
+ --sl-side-nav-background: var(--sl-surface-tray);
6285
+ --sl-side-nav-border-color: var(--sl-border-default);
6286
+ --sl-side-nav-item-divider-color: var(--sl-border-subtle);
6287
+ --sl-side-nav-item-color: var(--sl-text-primary);
6288
+ --sl-side-nav-item-color-disabled: var(--sl-text-secondary);
6289
+ --sl-side-nav-item-background-hover: var(--sl-fill-subtle);
6290
+ --sl-side-nav-item-background-current: var(--sl-surface-raised);
6291
+ --sl-side-nav-indicator-color: var(--sl-rule-color);
6292
+ --sl-side-nav-count-color: var(--sl-text-accent);
6293
+ --sl-side-nav-count-color-quiet: var(--sl-text-secondary);
6294
+ --sl-side-nav-group-label-color: var(--sl-text-secondary);
6295
+ --sl-side-nav-toggle-background: var(--sl-surface-raised);
6296
+ --sl-side-nav-toggle-border-color: var(--sl-text-primary);
6235
6297
  --sl-stat-figure-figure-color: var(--sl-text-primary);
6236
6298
  --sl-stat-figure-figure-color-accent: var(--sl-text-accent);
6237
6299
  --sl-stat-figure-underline-color: var(--sl-rule-color);
@@ -6597,7 +6659,7 @@
6597
6659
  }
6598
6660
 
6599
6661
 
6600
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
6662
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
6601
6663
  /* Loomiere for Base UI: component styles. Brand-free: every value is a --sl- variable from a
6602
6664
  Loomiere theme. Load the theme first:
6603
6665
  @import '<your theme>/tokens.css';
@@ -6607,7 +6669,7 @@
6607
6669
  /* Document defaults, in the reset layer so any unlayered rule wins over them, and so layered
6608
6670
  frameworks (Chakra's recipes, Tailwind's utilities) are not undone by them. */
6609
6671
  @layer reset {
6610
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
6672
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
6611
6673
  /* CSS Reset - Mojave Theme */
6612
6674
 
6613
6675
  /* ============================================
@@ -7051,7 +7113,7 @@ hr {
7051
7113
  }
7052
7114
  }
7053
7115
  @layer reset {
7054
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
7116
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
7055
7117
  /* Accessibility — base rules (no theme color dependencies). Theme-specific focus/invalid: accessibility-theme.css */
7056
7118
 
7057
7119
  /* Remove default focus; keyboard focus styled in accessibility-theme.css */
@@ -7164,7 +7226,7 @@ main:focus {
7164
7226
 
7165
7227
  }
7166
7228
  @layer reset {
7167
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
7229
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
7168
7230
  /* Focus, invalid, contrast — requires theme tokens (after theme-accessibility.css). */
7169
7231
 
7170
7232
  :focus-visible {
@@ -7232,7 +7294,7 @@ button,
7232
7294
 
7233
7295
  }
7234
7296
  /* Component styles */
7235
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
7297
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
7236
7298
  /* Accordion - Mojave Theme
7237
7299
  *
7238
7300
  * No component tokens. Hover, press, chevron, divider and motion are the disclosure
@@ -7353,7 +7415,7 @@ button,
7353
7415
  overflow: hidden;
7354
7416
  }
7355
7417
 
7356
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
7418
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
7357
7419
  /* Alert Dialog - Mojave Theme
7358
7420
  *
7359
7421
  * No component tokens and no rules of its own. An alert dialog looks exactly like a
@@ -7362,7 +7424,7 @@ button,
7362
7424
  * cancel quiet, and a destructive one bold with data-color="error".
7363
7425
  */
7364
7426
 
7365
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
7427
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
7366
7428
  /* Autocomplete - Mojave Theme
7367
7429
  *
7368
7430
  * No component tokens. The input is Input (Input.css), the clear button is an icon
@@ -7564,7 +7626,7 @@ button,
7564
7626
  (reset-accessibility.css).
7565
7627
  ============================================ */
7566
7628
 
7567
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
7629
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
7568
7630
  /* Avatar - Mojave Theme
7569
7631
  *
7570
7632
  * A round picture with a ring in the page color, so avatars in a group cut out of each other in
@@ -7672,7 +7734,7 @@ button,
7672
7734
  }
7673
7735
  }
7674
7736
 
7675
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
7737
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
7676
7738
  /* Button - Mojave Theme
7677
7739
  *
7678
7740
  * Colors are the brand's emphasis levels, sizes are control.*, text is the trigger
@@ -7822,7 +7884,7 @@ button,
7822
7884
  font-size: var(--sl-icon-size-maximize);
7823
7885
  }
7824
7886
 
7825
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
7887
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
7826
7888
  /* Checkbox - Mojave Theme
7827
7889
  * Sizes follow the label: the box is the icon size one tier above the label's text
7828
7890
  * tier (like a button's icon) and the check mark one tier below it.
@@ -7979,7 +8041,7 @@ button,
7979
8041
  border-radius: var(--sl-radius-pill);
7980
8042
  }
7981
8043
 
7982
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
8044
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
7983
8045
  /* Checkbox Group - Mojave Theme */
7984
8046
 
7985
8047
  /* Each checkbox row is already a full tap target tall, so the rows sit close. */
@@ -7995,7 +8057,7 @@ button,
7995
8057
  pointer-events: none;
7996
8058
  }
7997
8059
 
7998
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
8060
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
7999
8061
  /* Collapsible - Mojave Theme
8000
8062
  *
8001
8063
  * No component tokens. Hover, press, chevron and motion are the disclosure concept
@@ -8111,7 +8173,7 @@ button,
8111
8173
  background: var(--sl-surface-raised);
8112
8174
  }
8113
8175
 
8114
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
8176
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
8115
8177
  /* Combobox - Mojave Theme
8116
8178
  *
8117
8179
  * No component tokens. The input is Input (Input.css); the chips box is a field; the
@@ -8596,7 +8658,7 @@ button,
8596
8658
  color: var(--sl-text-tertiary);
8597
8659
  }
8598
8660
 
8599
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
8661
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
8600
8662
  /* Context Menu - Mojave Theme
8601
8663
  *
8602
8664
  * No component tokens. Opens on right-click; the trigger area only sets the cursor. The popup is the popup concept, rows are item rows at the
@@ -8765,7 +8827,7 @@ button,
8765
8827
  stroke-width: var(--sl-stroke-default);
8766
8828
  }
8767
8829
 
8768
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
8830
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
8769
8831
  /* Dialog and Alert dialog - Mojave Theme
8770
8832
  *
8771
8833
  * Both are centered modals built from the modal concept (tokens/semantic/modal.json):
@@ -8911,7 +8973,7 @@ button,
8911
8973
  margin-top: var(--sl-modal-actions-spacing);
8912
8974
  }
8913
8975
 
8914
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
8976
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
8915
8977
  /* Drawer - a panel that slides in from an edge and can be swiped away.
8916
8978
  The surface, scrim, heading and motion are the modal concept's (--sl-modal-*), so a
8917
8979
  drawer reads as a dialog's sibling; only its size and grab bar are its own
@@ -9044,7 +9106,7 @@ button,
9044
9106
  color: var(--sl-modal-description-color);
9045
9107
  }
9046
9108
 
9047
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
9109
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
9048
9110
  /* Field - Mojave Theme
9049
9111
  *
9050
9112
  * Label, control, description and error. No component tokens: spacing is the field
@@ -9105,7 +9167,7 @@ textarea.FieldControl {
9105
9167
  height: auto;
9106
9168
  }
9107
9169
 
9108
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
9170
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
9109
9171
  /* Fieldset - Mojave Theme
9110
9172
  *
9111
9173
  * No component tokens: a titled group of fields, spaced by the stack gaps, with
@@ -9147,7 +9209,7 @@ textarea.FieldControl {
9147
9209
  color: var(--sl-text-secondary);
9148
9210
  }
9149
9211
 
9150
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
9212
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
9151
9213
  /* Form - Mojave Theme
9152
9214
  *
9153
9215
  * No component tokens: fields stack with the large block space, and the action
@@ -9167,7 +9229,7 @@ textarea.FieldControl {
9167
9229
  margin-top: var(--sl-space-block-md);
9168
9230
  }
9169
9231
 
9170
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
9232
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
9171
9233
  /* Input - Mojave Theme
9172
9234
  *
9173
9235
  * No component tokens: the look is the field concept (tokens/semantic/field.json),
@@ -9304,7 +9366,7 @@ textarea.FieldControl {
9304
9366
  padding-inline: var(--sl-control-padding-inline-lg);
9305
9367
  }
9306
9368
 
9307
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
9369
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
9308
9370
  /* Menu - Mojave Theme
9309
9371
  *
9310
9372
  * No component tokens. The trigger is a Button. The popup is the popup concept, rows are item rows at the
@@ -9453,7 +9515,7 @@ textarea.FieldControl {
9453
9515
  color: var(--sl-text-tertiary);
9454
9516
  }
9455
9517
 
9456
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
9518
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
9457
9519
  /* Menubar - Mojave Theme
9458
9520
  *
9459
9521
  * No component tokens. A row of quiet triggers, each opening a menu. The popup is the popup concept, rows are item rows at the
@@ -9646,7 +9708,7 @@ textarea.FieldControl {
9646
9708
  color: var(--sl-text-tertiary);
9647
9709
  }
9648
9710
 
9649
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
9711
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
9650
9712
  /* Meter - Mojave Theme
9651
9713
  *
9652
9714
  * A gauge (tokens/semantic/gauge.json). The fill is the solid color of the scope around it:
@@ -9709,7 +9771,7 @@ textarea.FieldControl {
9709
9771
  height: var(--sl-gauge-height-lg);
9710
9772
  }
9711
9773
 
9712
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
9774
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
9713
9775
  /* Navigation Menu - Mojave Theme
9714
9776
  *
9715
9777
  * The strip is the bar concept, the panel is the popup concept and each link is an item
@@ -10129,7 +10191,7 @@ textarea.FieldControl {
10129
10191
  width: 100%;
10130
10192
  }
10131
10193
 
10132
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
10194
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
10133
10195
  /* Number Field - Mojave Theme
10134
10196
  *
10135
10197
  * No component tokens. The input is Input (Input.css) and the label, description and
@@ -10220,7 +10282,7 @@ textarea.FieldControl {
10220
10282
  user-select: none;
10221
10283
  }
10222
10284
 
10223
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
10285
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
10224
10286
  /* OTP Field - Mojave Theme
10225
10287
  *
10226
10288
  * One-time code entry: a row of single-character inputs. Each slot is the same control as Input
@@ -10283,7 +10345,7 @@ textarea.FieldControl {
10283
10345
  letter-spacing: var(--sl-font-body-magnify-letter-spacing);
10284
10346
  }
10285
10347
 
10286
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
10348
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
10287
10349
  /* Popover - Mojave Theme */
10288
10350
 
10289
10351
  /* ============================================
@@ -10448,7 +10510,7 @@ textarea.FieldControl {
10448
10510
  fill: var(--sl-popup-arrow-stroke);
10449
10511
  }
10450
10512
 
10451
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
10513
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
10452
10514
  /* Preview Card - Mojave Theme
10453
10515
  *
10454
10516
  * The popup concept (surface, arrow, motion) with a title-magnify title and condense
@@ -10565,7 +10627,7 @@ textarea.FieldControl {
10565
10627
  fill: var(--sl-popup-arrow-stroke);
10566
10628
  }
10567
10629
 
10568
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
10630
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
10569
10631
  /* Progress - Mojave Theme
10570
10632
  *
10571
10633
  * A gauge (tokens/semantic/gauge.json), the same bar as Meter. The fill is the solid color of
@@ -10642,7 +10704,7 @@ textarea.FieldControl {
10642
10704
  height: var(--sl-gauge-height-lg);
10643
10705
  }
10644
10706
 
10645
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
10707
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
10646
10708
  /* Radio - Mojave Theme
10647
10709
  * Same box as Checkbox, always round. Sizes follow the label the same way, and the
10648
10710
  * dot is a share of the circle (check.dot-scale).
@@ -10794,7 +10856,7 @@ textarea.FieldControl {
10794
10856
  gap: var(--sl-gap-stack-sm);
10795
10857
  }
10796
10858
 
10797
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
10859
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
10798
10860
  /* Scroll Area - Mojave Theme
10799
10861
  *
10800
10862
  * The scrollbar is the content scrollbar (content.scrollbar-*): a track that stays clear until
@@ -10876,7 +10938,7 @@ textarea.FieldControl {
10876
10938
  background: transparent;
10877
10939
  }
10878
10940
 
10879
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
10941
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
10880
10942
  /* Select - Mojave Theme
10881
10943
  *
10882
10944
  * The trigger is a field (the field pattern, control sizes, the base text style); the
@@ -11161,7 +11223,7 @@ textarea.FieldControl {
11161
11223
  stroke-width: var(--sl-stroke-default);
11162
11224
  }
11163
11225
 
11164
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
11226
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
11165
11227
  /* Separator - Mojave Theme
11166
11228
  *
11167
11229
  * A hairline in the everyday divider color (border.default), one stroke thick, with a step of
@@ -11189,7 +11251,7 @@ textarea.FieldControl {
11189
11251
  margin-inline: var(--sl-space-4);
11190
11252
  }
11191
11253
 
11192
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
11254
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
11193
11255
  /* Slider - Mojave Theme
11194
11256
  *
11195
11257
  * A slider is a gauge you can drag: the track, fill and label row are gauge.* (the same bar as
@@ -11355,7 +11417,7 @@ textarea.FieldControl {
11355
11417
  transform: translate(-50%, 50%);
11356
11418
  }
11357
11419
 
11358
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
11420
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
11359
11421
  /* Switch - Mojave Theme
11360
11422
  * Switch keeps its track sizes. The thumb, its travel and the ON/OFF text are
11361
11423
  * worked out from them: the thumb fills the track's height inside the padding,
@@ -11521,7 +11583,7 @@ textarea.FieldControl {
11521
11583
  color: var(--sl-text-disabled);
11522
11584
  }
11523
11585
 
11524
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
11586
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
11525
11587
  /* Tabs - Mojave Theme
11526
11588
  *
11527
11589
  * No component tokens. The divider, the selected line and color, hover and the disabled
@@ -11657,7 +11719,7 @@ textarea.FieldControl {
11657
11719
  padding: var(--sl-space-6);
11658
11720
  }
11659
11721
 
11660
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
11722
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
11661
11723
  /* Toast - Mojave Theme
11662
11724
  *
11663
11725
  * A toast is a notice (tokens/semantic/notice.json) on the popup surface. A toast whose type
@@ -11893,7 +11955,7 @@ textarea.FieldControl {
11893
11955
  flex-shrink: 0;
11894
11956
  }
11895
11957
 
11896
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
11958
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
11897
11959
  /* Toggle - Mojave Theme
11898
11960
  * A toggle is a button that stays pressed: the same heights, padding, gap and
11899
11961
  * trigger text style as a button of the same size. Pressed, it takes its emphasis level's
@@ -12005,7 +12067,7 @@ textarea.FieldControl {
12005
12067
  height: var(--sl-icon-size-maximize);
12006
12068
  }
12007
12069
 
12008
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
12070
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
12009
12071
  /* Toggle Group - Mojave Theme
12010
12072
  *
12011
12073
  * No component tokens. The strip is the bar concept (tokens/semantic/bar.json); the
@@ -12067,7 +12129,7 @@ textarea.FieldControl {
12067
12129
  outline-offset: var(--sl-focus-outline-offset-inset);
12068
12130
  }
12069
12131
 
12070
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
12132
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
12071
12133
  /* Toolbar - Mojave Theme
12072
12134
  *
12073
12135
  * The strip is the bar concept (tokens/semantic/bar.json). Buttons, toggles, selects
@@ -12129,7 +12191,7 @@ textarea.FieldControl {
12129
12191
  max-width: var(--sl-toolbar-input-max-width);
12130
12192
  }
12131
12193
 
12132
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
12194
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
12133
12195
  /* Tooltip - Mojave Theme
12134
12196
  *
12135
12197
  * The inverse surface (surface.inverse, text.on-inverse-surface) with condense text, so a tooltip
@@ -12190,7 +12252,7 @@ textarea.FieldControl {
12190
12252
  }
12191
12253
 
12192
12254
  /* Custom components: not Base UI parts. Built from existing concepts and tokens. */
12193
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
12255
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
12194
12256
  /* Badge
12195
12257
  *
12196
12258
  * A status or count label. Not a Base UI part, and not interactive: no hover or focus.
@@ -12295,7 +12357,7 @@ textarea.FieldControl {
12295
12357
  height: var(--sl-badge-dot-base);
12296
12358
  }
12297
12359
 
12298
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
12360
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
12299
12361
  /*
12300
12362
  * DatePicker: a field that opens a calendar for one date or a period.
12301
12363
  * Not a Base UI part. The popup is Popover on a wide viewport and Drawer
@@ -12868,7 +12930,7 @@ textarea.FieldControl {
12868
12930
  flex-basis: 100%;
12869
12931
  }
12870
12932
 
12871
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
12933
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
12872
12934
  /* Money field
12873
12935
  *
12874
12936
  * An amount of money, built on Number field. The value is an integer in minor units
@@ -13213,7 +13275,7 @@ textarea.FieldControl {
13213
13275
  letter-spacing: var(--sl-font-body-base-letter-spacing);
13214
13276
  }
13215
13277
 
13216
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
13278
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
13217
13279
  /* ListDetail
13218
13280
  *
13219
13281
  * The detail of one item, next to its list. Not a Base UI part. It is a Splitter
@@ -13340,7 +13402,7 @@ textarea.FieldControl {
13340
13402
  background: transparent;
13341
13403
  }
13342
13404
 
13343
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
13405
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
13344
13406
  /* Splitter
13345
13407
  *
13346
13408
  * Two or more panels and a handle between them. Not a Base UI part. It follows the
@@ -13548,7 +13610,7 @@ textarea.FieldControl {
13548
13610
  background: var(--sl-border-default);
13549
13611
  }
13550
13612
 
13551
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
13613
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
13552
13614
  /* EmptyState
13553
13615
  *
13554
13616
  * The block a page, pane, table, list or popup shows when it has nothing to show.
@@ -13804,7 +13866,7 @@ textarea.FieldControl {
13804
13866
  color: inherit;
13805
13867
  }
13806
13868
 
13807
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
13869
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
13808
13870
  /* Table - Mojave Theme
13809
13871
  *
13810
13872
  * Base UI has no table, so this styles the native <table class="Table"> elements with the
@@ -14038,7 +14100,7 @@ textarea.FieldControl {
14038
14100
  color: inherit;
14039
14101
  }
14040
14102
 
14041
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14103
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
14042
14104
  /* Collection
14043
14105
  *
14044
14106
  * DataTable, DataList, the toolbar and the pagination, in one place so the two views
@@ -14049,7 +14111,7 @@ textarea.FieldControl {
14049
14111
  * the tabs and the search where they are, so selecting rows does not grow the toolbar.
14050
14112
  */
14051
14113
 
14052
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14114
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
14053
14115
  /* Collection toolbar
14054
14116
  *
14055
14117
  * The wrap follows the toolbar's own width, not the window: a table in a narrow pane wraps
@@ -14190,7 +14252,7 @@ textarea.FieldControl {
14190
14252
  letter-spacing: var(--sl-font-body-condense-letter-spacing);
14191
14253
  }
14192
14254
 
14193
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14255
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
14194
14256
  /* DataTable additions on top of .Table.
14195
14257
  *
14196
14258
  * Sort buttons fill the header cell and inherit its hover, so old aria-sort markup keeps
@@ -14311,7 +14373,7 @@ textarea.FieldControl {
14311
14373
  color: var(--sl-table-subtle-color);
14312
14374
  }
14313
14375
 
14314
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14376
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
14315
14377
  /* DataList
14316
14378
  *
14317
14379
  * The same rows as the table, in one container with the table's borders, hover, selected
@@ -14453,7 +14515,7 @@ textarea.FieldControl {
14453
14515
  transition: opacity var(--sl-duration-fast) var(--sl-easing-default);
14454
14516
  }
14455
14517
 
14456
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14518
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
14457
14519
  /* Pagination
14458
14520
  *
14459
14521
  * Not tied to a collection. Anything with a page, a page count and a total can use it.
@@ -14478,7 +14540,7 @@ textarea.FieldControl {
14478
14540
  margin: 0;
14479
14541
  }
14480
14542
 
14481
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14543
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
14482
14544
  /* EditableList
14483
14545
  *
14484
14546
  * One table at every width, so a field is not submitted twice. Under the stack width each
@@ -14577,7 +14639,7 @@ textarea.FieldControl {
14577
14639
  }
14578
14640
  }
14579
14641
 
14580
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14642
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
14581
14643
  /* Sheet
14582
14644
  *
14583
14645
  * A working-paper surface: the raised surface with a heavier rule across its top
@@ -14668,7 +14730,7 @@ textarea.FieldControl {
14668
14730
  border-top: 0;
14669
14731
  }
14670
14732
 
14671
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14733
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
14672
14734
  /* StatFigure
14673
14735
  *
14674
14736
  * One large figure with a caps label above and a caption under it. The label is
@@ -14729,7 +14791,7 @@ textarea.FieldControl {
14729
14791
  color: var(--sl-stat-figure-caption-color);
14730
14792
  }
14731
14793
 
14732
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14794
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
14733
14795
  /* DescriptionList
14734
14796
  *
14735
14797
  * Label and value pairs in a native dl, one DescriptionItem (a div holding a dt and a dd)
@@ -14805,7 +14867,7 @@ textarea.FieldControl {
14805
14867
  text-align: end;
14806
14868
  }
14807
14869
 
14808
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14870
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
14809
14871
  /* AppBar
14810
14872
  *
14811
14873
  * The bar across the top of an app window, one row on a line in the rule color. The line is
@@ -14839,7 +14901,7 @@ textarea.FieldControl {
14839
14901
  background: var(--sl-app-bar-divider-color);
14840
14902
  }
14841
14903
 
14842
- /* @scattered-light/loomiere-base-ui 0.9.0 · styles for @base-ui/react 1.9.0 */
14904
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
14843
14905
  /* PickerButton
14844
14906
  *
14845
14907
  * A trigger with a caps label before the current choice: CLIENT Alpha Services. The field
@@ -14924,3 +14986,186 @@ textarea.FieldControl {
14924
14986
  .PickerButton[data-popup-open] .PickerButtonIcon {
14925
14987
  transform: rotate(180deg);
14926
14988
  }
14989
+
14990
+ /* @scattered-light/loomiere-base-ui 0.11.0 · styles for @base-ui/react 1.9.0 */
14991
+ /* SideNav
14992
+ *
14993
+ * The column of links down the side of a workspace. Rows are ruled apart with a hairline; the
14994
+ * current row (aria-current="page") sits on the raised surface with a rule under it in the
14995
+ * working-paper ink; counts are figures; group headings are caps labels. SideNavToggle is a
14996
+ * small tab-shaped handle on the column's edge, whose chevron turns with the state. The parent
14997
+ * sets the width and must not clip the toggle (overflow: visible), since it hangs over the edge.
14998
+ * Tokens: side-nav.* (tokens/component/side-nav.json).
14999
+ */
15000
+
15001
+ .SideNav {
15002
+ position: relative;
15003
+ box-sizing: border-box;
15004
+ display: flex;
15005
+ flex-direction: column;
15006
+ height: 100%;
15007
+ min-width: 0;
15008
+ padding-block: var(--sl-space-4);
15009
+ background: var(--sl-side-nav-background);
15010
+ border-inline-end: var(--sl-stroke-default) solid var(--sl-side-nav-border-color);
15011
+ }
15012
+
15013
+ .SideNav[data-collapsed] {
15014
+ min-width: var(--sl-side-nav-collapsed-width);
15015
+ }
15016
+
15017
+ /* Collapsed: only the toggle stays. */
15018
+ .SideNav[data-collapsed] > :not(.SideNavToggle) {
15019
+ display: none;
15020
+ }
15021
+
15022
+ .SideNavItem {
15023
+ font-family: var(--sl-font-body-base-font-family);
15024
+ font-size: var(--sl-font-body-base-font-size);
15025
+ font-weight: var(--sl-font-body-base-font-weight);
15026
+ line-height: var(--sl-font-body-base-line-height);
15027
+ letter-spacing: var(--sl-font-body-base-letter-spacing);
15028
+ box-sizing: border-box;
15029
+ display: flex;
15030
+ align-items: center;
15031
+ justify-content: space-between;
15032
+ gap: var(--sl-side-nav-item-gap);
15033
+ min-height: var(--sl-side-nav-item-height);
15034
+ padding-inline: var(--sl-side-nav-item-padding-inline);
15035
+ color: var(--sl-side-nav-item-color);
15036
+ text-decoration: none;
15037
+ border-bottom: var(--sl-stroke-default) solid var(--sl-side-nav-item-divider-color);
15038
+ cursor: pointer;
15039
+ transition: background var(--sl-duration-fast) var(--sl-easing-default);
15040
+ }
15041
+
15042
+ .SideNavItemText {
15043
+ display: flex;
15044
+ flex-direction: column;
15045
+ min-width: 0;
15046
+ }
15047
+
15048
+ .SideNavItemLabel {
15049
+ overflow: hidden;
15050
+ text-overflow: ellipsis;
15051
+ white-space: nowrap;
15052
+ }
15053
+
15054
+ .SideNavItemHint {
15055
+ font-family: var(--sl-font-body-minimize-font-family);
15056
+ font-size: var(--sl-font-body-minimize-font-size);
15057
+ font-weight: var(--sl-font-body-minimize-font-weight);
15058
+ line-height: var(--sl-font-body-minimize-line-height);
15059
+ letter-spacing: var(--sl-font-body-minimize-letter-spacing);
15060
+ color: var(--sl-side-nav-item-color-disabled);
15061
+ }
15062
+
15063
+ .SideNavItem:hover:not([data-current]):not([data-disabled]) {
15064
+ background: var(--sl-side-nav-item-background-hover);
15065
+ }
15066
+
15067
+ .SideNavItem:focus-visible {
15068
+ outline: var(--sl-focus-outline);
15069
+ outline-offset: var(--sl-focus-outline-offset-inset);
15070
+ }
15071
+
15072
+ .SideNavItem[data-current] {
15073
+ background: var(--sl-side-nav-item-background-current);
15074
+ font-weight: var(--sl-font-weight-semibold);
15075
+ box-shadow: inset 0 calc(-1 * var(--sl-side-nav-indicator-width)) 0 var(--sl-side-nav-indicator-color);
15076
+ }
15077
+
15078
+ .SideNavItem[data-disabled] {
15079
+ color: var(--sl-side-nav-item-color-disabled);
15080
+ cursor: default;
15081
+ }
15082
+
15083
+ .SideNavItemCount {
15084
+ flex: none;
15085
+ font-family: var(--sl-font-figures-condense-font-family);
15086
+ font-variant-numeric: var(--sl-font-figures-condense-font-variant-numeric);
15087
+ font-size: var(--sl-font-figures-condense-font-size);
15088
+ font-weight: var(--sl-font-weight-semibold);
15089
+ line-height: var(--sl-font-figures-condense-line-height);
15090
+ color: var(--sl-side-nav-count-color);
15091
+ }
15092
+
15093
+ .SideNavItemCount[data-tone='quiet'] {
15094
+ color: var(--sl-side-nav-count-color-quiet);
15095
+ }
15096
+
15097
+ .SideNavGroupLabel {
15098
+ font-family: var(--sl-font-caps-condense-font-family);
15099
+ font-size: var(--sl-font-caps-condense-font-size);
15100
+ font-weight: var(--sl-font-caps-condense-font-weight);
15101
+ line-height: var(--sl-font-caps-condense-line-height);
15102
+ letter-spacing: var(--sl-font-caps-condense-letter-spacing);
15103
+ text-transform: var(--sl-font-caps-condense-text-transform);
15104
+ padding-top: var(--sl-side-nav-group-padding-top);
15105
+ padding-bottom: var(--sl-space-1-5);
15106
+ padding-inline: var(--sl-side-nav-item-padding-inline);
15107
+ color: var(--sl-side-nav-group-label-color);
15108
+ }
15109
+
15110
+ /* ============================================
15111
+ COLLAPSE BUTTON
15112
+ ============================================ */
15113
+
15114
+ .SideNavToggle {
15115
+ all: unset;
15116
+ box-sizing: border-box;
15117
+ position: absolute;
15118
+ z-index: 1;
15119
+ top: var(--sl-side-nav-toggle-offset);
15120
+ inset-inline-end: calc(-0.5 * var(--sl-side-nav-toggle-width));
15121
+ display: inline-flex;
15122
+ align-items: center;
15123
+ justify-content: center;
15124
+ width: var(--sl-side-nav-toggle-width);
15125
+ height: var(--sl-side-nav-toggle-height);
15126
+ border-radius: var(--sl-side-nav-toggle-radius);
15127
+ background: var(--sl-side-nav-toggle-background);
15128
+ border: var(--sl-stroke-default) solid var(--sl-side-nav-toggle-border-color);
15129
+ color: var(--sl-side-nav-toggle-border-color);
15130
+ cursor: pointer;
15131
+ transition: color var(--sl-duration-fast) var(--sl-easing-default),
15132
+ background var(--sl-duration-fast) var(--sl-easing-default),
15133
+ border-color var(--sl-duration-fast) var(--sl-easing-default);
15134
+ }
15135
+
15136
+ .SideNavToggle:hover {
15137
+ color: var(--sl-side-nav-toggle-background);
15138
+ background: var(--sl-side-nav-toggle-border-color);
15139
+ }
15140
+
15141
+ .SideNavToggle:focus-visible {
15142
+ outline: var(--sl-focus-outline);
15143
+ outline-offset: var(--sl-focus-outline-offset);
15144
+ }
15145
+
15146
+ .SideNavToggleIcon {
15147
+ width: var(--sl-icon-size-minimize);
15148
+ height: var(--sl-icon-size-minimize);
15149
+ transition: transform var(--sl-duration-normal) var(--sl-easing-default);
15150
+ }
15151
+
15152
+ /* The chevron points the way the column will go: left to collapse, right to expand. */
15153
+ .SideNavToggle[aria-expanded='false'] .SideNavToggleIcon {
15154
+ transform: rotate(180deg);
15155
+ }
15156
+
15157
+ [dir='rtl'] .SideNavToggleIcon {
15158
+ transform: scaleX(-1);
15159
+ }
15160
+
15161
+ [dir='rtl'] .SideNavToggle[aria-expanded='false'] .SideNavToggleIcon {
15162
+ transform: scaleX(-1) rotate(180deg);
15163
+ }
15164
+
15165
+ @media (prefers-reduced-motion: reduce) {
15166
+ .SideNavToggleIcon,
15167
+ .SideNavItem,
15168
+ .SideNavToggle {
15169
+ transition: none;
15170
+ }
15171
+ }