@mkbabb/glass-ui 8.0.0 → 9.0.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.
Files changed (142) hide show
  1. package/dist/aurora.js +371 -349
  2. package/dist/blob.js +42 -42
  3. package/dist/{checkbox-BnXuGgJ3.js → checkbox-B1qn65se.js} +1 -1
  4. package/dist/checkbox.js +1 -1
  5. package/dist/color.glsl-DTJhdekG.js +34 -0
  6. package/dist/color.wgsl-BTszLY39.js +398 -0
  7. package/dist/{command-BuBnYpxF.js → command-tEzAaVY_.js} +1 -1
  8. package/dist/command.js +1 -1
  9. package/dist/components/_shared/control.d.ts +0 -1
  10. package/dist/components/_shared/index.d.ts +0 -1
  11. package/dist/components/aurora/Aurora.vue.d.ts +1 -0
  12. package/dist/components/aurora/composables/frameLoop.d.ts +6 -5
  13. package/dist/components/aurora/composables/runtime.d.ts +26 -1
  14. package/dist/components/aurora/composables/useAurora.d.ts +28 -0
  15. package/dist/components/aurora/composables/wgpuSetup.d.ts +1 -1
  16. package/dist/components/aurora/constants/presets.d.ts +44 -5
  17. package/dist/components/aurora/index.d.ts +1 -1
  18. package/dist/components/configurator/Configurator.vue.d.ts +25 -2
  19. package/dist/components/configurator/ConfiguratorRow.vue.d.ts +4 -2
  20. package/dist/components/configurator/styles.css +1 -1
  21. package/dist/components/dock/DockSeparator.vue.d.ts +2 -3
  22. package/dist/components/dock/GlassDock.vue.d.ts +1 -0
  23. package/dist/components/dock/composables/dockContext.d.ts +1 -8
  24. package/dist/components/dock/composables/useDockRun.d.ts +20 -0
  25. package/dist/components/dock/composables/useDockSearch.d.ts +1 -1
  26. package/dist/components/dock/composables/useDockShellProps.d.ts +18 -101
  27. package/dist/components/dock/composables/useDockState.d.ts +2 -9
  28. package/dist/components/dock/constants.d.ts +15 -0
  29. package/dist/components/dock/index.d.ts +2 -2
  30. package/dist/components/dock/styles/controls/icon-button.css +1 -1
  31. package/dist/components/dock/styles/controls/tab-button.css +1 -1
  32. package/dist/components/dock/styles/controls/triggers.css +1 -1
  33. package/dist/components/dock/styles/controls.css +1 -1
  34. package/dist/components/dock/styles/density.css +1 -1
  35. package/dist/components/dock/styles/index.css +1 -1
  36. package/dist/components/dock/styles/layer-group.css +1 -1
  37. package/dist/components/dock/styles/layers.css +1 -1
  38. package/dist/components/dock/styles/morph.css +1 -1
  39. package/dist/components/dock/styles/run.css +1 -0
  40. package/dist/components/dock/styles/search.css +1 -1
  41. package/dist/components/dock/styles/shape.css +1 -1
  42. package/dist/components/dock/styles/shell-regions.css +1 -1
  43. package/dist/components/dock/styles/shell.css +1 -1
  44. package/dist/components/fourier-field/FourierField.vue.d.ts +28 -25
  45. package/dist/components/fourier-field/clock.d.ts +35 -0
  46. package/dist/components/fourier-field/constants.d.ts +78 -103
  47. package/dist/components/fourier-field/index.d.ts +3 -28
  48. package/dist/components/fourier-field/math.d.ts +69 -77
  49. package/dist/components/fourier-field/renderer/mint.d.ts +50 -0
  50. package/dist/components/fourier-field/renderer/uniforms.d.ts +84 -0
  51. package/dist/components/fourier-field/renderer/wgpu.d.ts +28 -0
  52. package/dist/components/fourier-field/shaders/compute.wgsl.d.ts +1 -0
  53. package/dist/components/fourier-field/shaders/render.wgsl.d.ts +1 -0
  54. package/dist/components/fourier-field/useFourierField.d.ts +49 -0
  55. package/dist/components/handmark/HandMark.vue.d.ts +18 -14
  56. package/dist/components/handmark/index.d.ts +4 -23
  57. package/dist/components/handmark/stroke.d.ts +92 -0
  58. package/dist/composables/dark/darkModeSyncScript.d.ts +19 -0
  59. package/dist/composables/motion/pointer/pointerFieldMappings.d.ts +0 -41
  60. package/dist/{components/search/composables → composables/search}/index.d.ts +2 -2
  61. package/dist/{components/search/composables/fuzzySearchIndex.d.ts → composables/search/match.d.ts} +8 -3
  62. package/dist/configurator-BHJymdrF.js +339 -0
  63. package/dist/configurator.js +1 -1
  64. package/dist/constellation.js +2 -2
  65. package/dist/control-DJp15L4U.js +7 -0
  66. package/dist/{dark-z_P5QwqI.js → dark-CLlmo7dD.js} +2 -2
  67. package/dist/dark-mode-toggle.js +1 -1
  68. package/dist/dark.js +1 -1
  69. package/dist/dock.js +712 -486
  70. package/dist/dom.js +90 -8
  71. package/dist/easing.js +3 -3
  72. package/dist/expandable-container-BY1hQXi4.js +142 -0
  73. package/dist/expandable-container.js +2 -142
  74. package/dist/fourier-field.js +643 -855
  75. package/dist/fourier-math.js +6 -6
  76. package/dist/glass-ui.css +1 -1
  77. package/dist/glass-ui.js +85 -72
  78. package/dist/handmark.js +330 -718
  79. package/dist/index.d.ts +1 -1
  80. package/dist/labeled-field.js +2 -2
  81. package/dist/{menu-wLu1XGKn.js → menu-TDMNtZjG.js} +1 -1
  82. package/dist/menu.js +1 -1
  83. package/dist/motion-core.js +34 -34
  84. package/dist/{participation-B0hdsIRo.js → participation-Di4UHbzk.js} +8 -8
  85. package/dist/{pointerFieldMappings-DP5tla5z.js → pointerFieldMappings-DXwlU5uj.js} +7 -23
  86. package/dist/{popover-DBMKTPkL.js → popover-C04Rrdcz.js} +1 -1
  87. package/dist/popover.js +1 -1
  88. package/dist/{radio-group-Ci8o-pDx.js → radio-group-BNV7PN1O.js} +1 -1
  89. package/dist/radio-group.js +1 -1
  90. package/dist/{select-CDgwGH_P.js → select-COox45Kv.js} +1 -1
  91. package/dist/select.js +1 -1
  92. package/dist/{slider-gsc8jDIo.js → slider-5ChjjWSR.js} +1 -1
  93. package/dist/slider.js +1 -1
  94. package/dist/styles/components.css +1 -1
  95. package/dist/styles/glass/material.css +1 -1
  96. package/dist/styles/glass/overlay-plate.css +1 -1
  97. package/dist/{switch-DxZzDrmV.js → switch-lLkbREB-.js} +1 -1
  98. package/dist/switch.js +1 -1
  99. package/dist/{tabs-CYscnq5H.js → tabs-DSJMd1Et.js} +1 -1
  100. package/dist/tabs.js +1 -1
  101. package/dist/{toggle-group-11aPGMfE.js → toggle-group-DUcmKnDw.js} +1 -1
  102. package/dist/toggle-group.js +1 -1
  103. package/dist/{tooltip-DqKMZ4dn.js → tooltip-BKk2qVDn.js} +1 -1
  104. package/dist/tooltip.js +1 -1
  105. package/dist/{resolveCanvasColor-6MCrswTB.js → useCanvas2D-CQRElMyE.js} +1 -11
  106. package/dist/useResolveTokenColor-B2FfJnd9.js +24 -0
  107. package/package.json +2 -20
  108. package/dist/canvas.d.ts +0 -1
  109. package/dist/canvas.js +0 -2
  110. package/dist/color.wgsl-B0N3mKMb.js +0 -412
  111. package/dist/compile-D7VYG3gi.js +0 -19
  112. package/dist/components/dock/composables/useDockOverflowFit.d.ts +0 -20
  113. package/dist/components/dock/composables/useDockTouchGate.d.ts +0 -42
  114. package/dist/components/dock/styles/overflow.css +0 -1
  115. package/dist/components/fourier-field/composables/fourierFieldGLSetup.d.ts +0 -24
  116. package/dist/components/fourier-field/composables/fourierFieldWGPUSetup.d.ts +0 -31
  117. package/dist/components/fourier-field/composables/uniformBridgeWGPU.d.ts +0 -39
  118. package/dist/components/fourier-field/composables/useFourierField.d.ts +0 -56
  119. package/dist/components/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +0 -1
  120. package/dist/components/fourier-field/shaders/fourier-field.glsl.d.ts +0 -4
  121. package/dist/components/fourier-field/shaders/fourier-field.render.wgsl.d.ts +0 -1
  122. package/dist/components/fourier-field/shaders/fourier-field.ribbon.d.ts +0 -51
  123. package/dist/components/handmark/brush.d.ts +0 -269
  124. package/dist/components/handmark/composables/useHandMark.d.ts +0 -99
  125. package/dist/components/handmark/constants.d.ts +0 -69
  126. package/dist/components/handmark/freehand.d.ts +0 -69
  127. package/dist/components/handmark/geometry.d.ts +0 -62
  128. package/dist/components/handmark/ink.d.ts +0 -11
  129. package/dist/components/handmark/noise.d.ts +0 -30
  130. package/dist/components/handmark/texture.d.ts +0 -39
  131. package/dist/components/handmark/types.d.ts +0 -70
  132. package/dist/components/search/SearchBar.vue.d.ts +0 -38
  133. package/dist/components/search/index.d.ts +0 -8
  134. package/dist/components/search/searchVariants.d.ts +0 -16
  135. package/dist/configurator-BoeScnDL.js +0 -311
  136. package/dist/control-Da4XeT43.js +0 -11
  137. package/dist/search.d.ts +0 -1
  138. package/dist/search.js +0 -61
  139. package/dist/useFuzzySearch-CUnZknpm.js +0 -177
  140. package/dist/useResolveTokenColor-CspQv_ik.js +0 -107
  141. /package/dist/{components/search/composables → composables/search}/types.d.ts +0 -0
  142. /package/dist/{components/search/composables → composables/search}/useFuzzySearch.d.ts +0 -0
@@ -53,7 +53,7 @@ export interface ConfiguratorPreset<T> {
53
53
  readonly config: T;
54
54
  }
55
55
  declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
56
- props: import("vue").PublicProps & __VLS_PrettifyLocal<{
56
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<({
57
57
  /** Optional preset table; presented to the `presets` slot fallback. */
58
58
  presets?: readonly ConfiguratorPreset<T>[];
59
59
  /** Currently active preset key — display only; selection is the consumer's. */
@@ -98,10 +98,33 @@ declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_se
98
98
  * length to pin the band (`min === max`), or a `[min, max]` pair.
99
99
  */
100
100
  asideWidth?: string | readonly [min: string, max: string];
101
+ /**
102
+ * Mount the studio inside an <ExpandableContainer>: a corner trigger that
103
+ * promotes the whole instrument to a full-window ROOM and back. The
104
+ * container already ships focus trap, Esc, body-overflow lock and focus
105
+ * restore, so this prop wires an affordance rather than a mechanism.
106
+ *
107
+ * The subtree is TELEPORTED, never duplicated — one mount, so a live GPU
108
+ * stage in the `#stage` slot survives the promotion instead of being torn
109
+ * down and re-created behind a second canvas.
110
+ *
111
+ * Expanded, the gallery is forced to `top`: the room has the width for the
112
+ * full preset ribbon, and spending it on a 400px gutter is the one thing
113
+ * expansion is for.
114
+ */
115
+ expandable?: boolean;
116
+ /** Accessible name of the expand trigger. */
117
+ expandLabel?: string;
118
+ /** Accessible name of the collapse trigger. */
119
+ collapseLabel?: string;
101
120
  /** Optional outer container override. */
102
121
  class?: HTMLAttributes["class"];
103
122
  } & {
123
+ /** Two-way so a consumer can drive/observe the room from outside the trigger. */
124
+ expanded?: boolean;
125
+ }) & {
104
126
  onReset?: (() => any) | undefined;
127
+ "onUpdate:expanded"?: ((value: boolean) => any) | undefined;
105
128
  "onSelect-preset"?: ((key: string) => any) | undefined;
106
129
  "onSelect-layer"?: ((id: string) => any) | undefined;
107
130
  }> & (typeof globalThis extends {
@@ -147,7 +170,7 @@ declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_se
147
170
  (e: "select-preset", key: string): void;
148
171
  (e: "select-layer", id: string): void;
149
172
  (e: "reset"): void;
150
- };
173
+ } & ((event: "update:expanded", value: boolean) => void);
151
174
  }>) => import("vue").VNode & {
152
175
  __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
153
176
  };
@@ -41,7 +41,7 @@ import { type ConfiguratorSize } from "./size.js";
41
41
  * interchangeable — they emphasize DIFFERENT features:
42
42
  * - **ConfiguratorRow** (this) — for TOKEN, PRESET controls. Carries the
43
43
  * token-`name` reference, the opt-in `reset` affordance (`canReset`), and the
44
- * three-rung `size` axis (local-prop-over-inject). No a11y for/id wiring.
44
+ * three-rung `size` axis (local-prop-over-inject).
45
45
  * - **LabeledField** — for form controls. Carries stable label, description,
46
46
  * error, requirement, state, and layout associations without styling the control.
47
47
  *
@@ -74,7 +74,9 @@ type __VLS_Props = {
74
74
  size?: ConfiguratorSize;
75
75
  class?: HTMLAttributes["class"];
76
76
  };
77
- declare var __VLS_12: {};
77
+ declare var __VLS_12: {
78
+ labelledBy: string;
79
+ };
78
80
  type __VLS_Slots = {} & {
79
81
  default?: (props: typeof __VLS_12) => any;
80
82
  };
@@ -1 +1 @@
1
- :root{--configurator-pad-inline: 1.25rem;}.configurator{-webkit-backdrop-filter: none;backdrop-filter: none;}.configurator > .configurator-presets,.configurator > .configurator-aside{-webkit-backdrop-filter: var(--glass-blur-floating);backdrop-filter: var(--glass-blur-floating);}.configurator-section-label{font-family: var(--font-text);font-size: var(--configurator-section-size);line-height: var(--type-leading-body);font-weight: var(--configurator-section-weight);letter-spacing: var(--type-tracking-tight);color: var(--foreground);}.configurator-presets{padding-block: var(--configurator-preset-row-weight);}.configurator-presets .configurator-gallery-track,.configurator-presets [role="group"]{gap: var(--configurator-preset-row-gap);}.configurator-layer{border-color: var(--configurator-divider-section);background-color: var(--configurator-section-tint);border-radius: max( var(--radius-floor),calc(var(--radius-ctx) - var(--radius-inset)) );}.configurator-layer:has(+ .configurator-layer){border-end-start-radius: 0;border-end-end-radius: 0;border-bottom-width: 0;}.configurator-layer + .configurator-layer{margin-block-start: 0;border-start-start-radius: 0;border-start-end-radius: 0;}.configurator-layer-trigger{padding-inline: var(--configurator-pad-inline);}.configurator-layer-body{padding-inline: var(--configurator-pad-inline);}.configurator-layer-body[data-dividers] > * + *{border-color: var(--configurator-divider);}.configurator-aside,.configurator-presets,.configurator-footer{border-color: var(--configurator-divider);}[data-slot="configurator"] > [data-gallery-dock]{grid-row: 1;grid-column: 1;}[data-slot="configurator"] > .configurator-stage{grid-row: 2;grid-column: 1;}[data-slot="configurator"] > .configurator-aside{grid-row: 3;grid-column: 1;}@media (min-width: 1024px){[data-slot="configurator"]{grid-template-columns: minmax(0,1fr) minmax( var(--configurator-aside-min,300px),var(--configurator-aside-max,400px) );grid-template-rows: auto minmax(0,1fr);}[data-slot="configurator"][data-gallery="aside"] > [data-gallery-dock]{grid-row: 1;grid-column: 2;}[data-slot="configurator"][data-gallery="aside"] > .configurator-stage{grid-row: 1 / span 2;grid-column: 1;}[data-slot="configurator"][data-gallery="aside"] > .configurator-aside{grid-row: 2;grid-column: 2;}[data-slot="configurator"][data-gallery="top"] > [data-gallery-dock]{grid-row: 1;grid-column: 1 / span 2;}[data-slot="configurator"][data-gallery="top"] > .configurator-stage{grid-row: 2;grid-column: 1;}[data-slot="configurator"][data-gallery="top"] > .configurator-aside{grid-row: 2;grid-column: 2;}}[data-slot="configurator"] > [data-gallery-dock]{border-color: var(--configurator-divider);}[data-slot="configurator"][data-gallery="aside"] > [data-gallery-dock]{border-bottom-width: 1px;}@media (min-width: 1024px){[data-slot="configurator"][data-gallery="top"] > [data-gallery-dock]{border-bottom-width: 1px;}}.configurator-preset-tile{inline-size: clamp(160px,22vw,232px);border-radius: var(--radius-card);}[data-slot="configurator"][data-gallery="top"] .configurator-preset-tile{inline-size: clamp(200px,20vw,288px);}.configurator-preset-well{background-size: cover;background-position: center;image-rendering: auto;}.configurator-preset-well.is-loading{background-image: linear-gradient( 100deg,color-mix(in oklab,var(--card) 84%,transparent) 30%,color-mix(in oklab,var(--foreground) 8%,var(--card)) 50%,color-mix(in oklab,var(--card) 84%,transparent) 70% );background-size: 200% 100%;animation: configurator-preset-shimmer 1.2s ease-in-out infinite;}@media (prefers-reduced-motion: reduce){.configurator-preset-well.is-loading{animation: none;}}@keyframes configurator-preset-shimmer{from{background-position: 200% 0;}to{background-position: -200% 0;}}.configurator-preset-tile.is-active{box-shadow: inset 0 0 0 2px var(--focus-ring-color),var(--shadow-cartoon-lg);}.configurator-preset-chip{border-radius: var(--radius-pill);}.configurator-preset-chip.is-active{--glass-capsule-fill: var(--glass-plate-quiet);}@media (min-width: 1024px){[data-slot="configurator"][data-aside-side="left"] > .configurator-stage{grid-column: 2;}[data-slot="configurator"][data-aside-side="left"] > .configurator-aside{grid-column: 1;}[data-slot="configurator"][data-aside-side="left"][data-gallery="aside"] > [data-gallery-dock]{grid-column: 1;}}
1
+ :root{--configurator-pad-inline: 1.25rem;}.configurator-shell{-webkit-backdrop-filter: none;backdrop-filter: none;container-type: inline-size;display: grid;grid-template-rows: minmax(0,1fr);min-block-size: 0;min-inline-size: min(20rem,100%);}.configurator > .configurator-presets,.configurator > .configurator-aside{-webkit-backdrop-filter: var(--glass-blur-floating);backdrop-filter: var(--glass-blur-floating);}.configurator-section-label{font-family: var(--font-text);font-size: var(--configurator-section-size);line-height: var(--type-leading-body);font-weight: var(--configurator-section-weight);letter-spacing: var(--type-tracking-tight);color: var(--foreground);}.configurator-presets{padding-block: var(--configurator-preset-row-weight);}.configurator-presets .configurator-gallery-track,.configurator-presets [role="group"]{gap: var(--configurator-preset-row-gap);}.configurator-layer{border-color: var(--configurator-divider-section);background-color: var(--configurator-section-tint);border-radius: max( var(--radius-floor),calc(var(--radius-ctx) - var(--radius-inset)) );}.configurator-layer:has(+ .configurator-layer){border-end-start-radius: 0;border-end-end-radius: 0;border-bottom-width: 0;}.configurator-layer + .configurator-layer{margin-block-start: 0;border-start-start-radius: 0;border-start-end-radius: 0;}.configurator-layer-trigger{padding-inline: var(--configurator-pad-inline);}.configurator-layer-body{padding-inline: var(--configurator-pad-inline);}.configurator-layer-body[data-dividers] > * + *{border-color: var(--configurator-divider);}.configurator-aside,.configurator-presets,.configurator-footer{border-color: var(--configurator-divider);}[data-slot="configurator"] > [data-gallery-dock]{grid-row: 1;grid-column: 1;}[data-slot="configurator"] > .configurator-stage{grid-row: 2;grid-column: 1;}[data-slot="configurator"] > .configurator-aside{grid-row: 3;grid-column: 1;}@container (inline-size >= 64rem){[data-slot="configurator"]{grid-template-columns: minmax(0,1fr) minmax( var(--configurator-aside-min,300px),var(--configurator-aside-max,400px) );grid-template-rows: auto minmax(0,1fr);}[data-slot="configurator"][data-gallery="aside"] > [data-gallery-dock]{grid-row: 1;grid-column: 2;}[data-slot="configurator"][data-gallery="aside"] > .configurator-stage{grid-row: 1 / span 2;grid-column: 1;}[data-slot="configurator"][data-gallery="aside"] > .configurator-aside{grid-row: 2;grid-column: 2;}[data-slot="configurator"][data-gallery="top"] > [data-gallery-dock]{grid-row: 1;grid-column: 1 / span 2;}[data-slot="configurator"][data-gallery="top"] > .configurator-stage{grid-row: 2;grid-column: 1;}[data-slot="configurator"][data-gallery="top"] > .configurator-aside{grid-row: 2;grid-column: 2;}[data-slot="configurator"] > .configurator-aside{border-block-start-width: 0;border-inline-start-width: 1px;}[data-slot="configurator"][data-aside-side="left"] > .configurator-aside{border-inline-start-width: 0;border-inline-end-width: 1px;}}[data-slot="configurator"] > [data-gallery-dock]{border-color: var(--configurator-divider);}[data-slot="configurator"][data-gallery="aside"] > [data-gallery-dock]{border-bottom-width: 1px;}@container (inline-size >= 64rem){[data-slot="configurator"][data-gallery="top"] > [data-gallery-dock]{border-bottom-width: 1px;}}.configurator-preset-tile{inline-size: clamp(160px,22cqi,232px);border-radius: var(--radius-card);}[data-slot="configurator"][data-gallery="top"] .configurator-preset-tile{inline-size: clamp(200px,20cqi,288px);}.configurator-preset-well{background-size: cover;background-position: center;image-rendering: auto;}.configurator-preset-well.is-loading{background-image: linear-gradient( 100deg,color-mix(in oklab,var(--card) 84%,transparent) 30%,color-mix(in oklab,var(--foreground) 8%,var(--card)) 50%,color-mix(in oklab,var(--card) 84%,transparent) 70% );background-size: 200% 100%;animation: configurator-preset-shimmer 1.2s ease-in-out infinite;}@media (prefers-reduced-motion: reduce){.configurator-preset-well.is-loading{animation: none;}}@keyframes configurator-preset-shimmer{from{background-position: 200% 0;}to{background-position: -200% 0;}}.configurator-preset-tile.is-active{box-shadow: inset 0 0 0 2px var(--focus-ring-color),var(--shadow-cartoon-lg);}.configurator-preset-chip{border-radius: var(--radius-pill);}.configurator-preset-chip.is-active{--glass-capsule-fill: var(--glass-plate-quiet);}@container (inline-size >= 64rem){[data-slot="configurator"][data-aside-side="left"] > .configurator-stage{grid-column: 2;}[data-slot="configurator"][data-aside-side="left"] > .configurator-aside{grid-column: 1;}[data-slot="configurator"][data-aside-side="left"][data-gallery="aside"] > [data-gallery-dock]{grid-column: 1;}}.configurator-expand-host[data-state="expanded"] > [data-part="panel"]{padding: var(--space-section);}.configurator-expand-host[data-state="expanded"] .configurator-shell{block-size: 100%;}
@@ -6,12 +6,11 @@
6
6
  * class was axis-blind — a fixed VERTICAL 1px hairline that paints a useless
7
7
  * 1px-wide sliver in a column (vertical) dock and a single cell-sliver in a grid
8
8
  * dock. This primitive bundles the orientation contract the bare class could not:
9
- * it reads the dock `orientation`/`layout` via `useOptionalDockContext()` and the
10
- * dock-root ancestor class (`.glass-dock.vertical`, `.layout-grid`) drives the
9
+ * it reads the dock `orientation` via `useOptionalDockContext()` and the
10
+ * dock-root ancestor class (`.glass-dock.vertical`) drives the
11
11
  * PERPENDICULAR paint (dock.css) —
12
12
  * - row dock (horizontal, default) → a vertical 1px rule
13
13
  * - column dock (vertical) → a horizontal 1px rule
14
- * - grid dock (`layout="grid"`) → a full-row section break (grid-column: 1, -1)
15
14
  *
16
15
  * It is a thin oriented `<div>` (KISS); `data-orientation` is the explicit axis
17
16
  * marker (so the perpendicular paint resolves even when used inside a
@@ -22,6 +22,7 @@ declare const __VLS_base: import("vue").DefineComponent<DockProps, {
22
22
  keepOpen: (kind?: import("./composables/dockContext.js").DockHoldKind) => void;
23
23
  release: (kind?: import("./composables/dockContext.js").DockHoldKind) => void;
24
24
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<DockProps> & Readonly<{}>, {
25
+ collapse: import(".").DockCollapse;
25
26
  backdropMode: import(".").DockBackdropMode;
26
27
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
27
28
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
@@ -1,6 +1,5 @@
1
1
  import type { ComputedRef } from "vue";
2
2
  export type DockOrientation = "horizontal" | "vertical";
3
- export type DockLayout = "linear" | "grid";
4
3
  /**
5
4
  * What KIND of hold a token is. The two are different facts about the dock and
6
5
  * only one of them is a hand:
@@ -20,7 +19,7 @@ export type DockHoldKind = "morph" | "grasp";
20
19
  * Dock context surfaces the dock id + orientation + held-state coordination
21
20
  * to descendants.
22
21
  *
23
- * One typed key carries id, orientation, layout, and held-state coordination.
22
+ * One typed key carries id, orientation, and held-state coordination.
24
23
  * Paired helpers:
25
24
  * - `useDockContext()` — strict; throws when used outside `<GlassDock>`.
26
25
  * - `useOptionalDockContext()` — befitting silent default for primitives
@@ -32,12 +31,6 @@ export type DockHoldKind = "morph" | "grasp";
32
31
  export interface DockContext {
33
32
  id: string;
34
33
  orientation: ComputedRef<DockOrientation>;
35
- /**
36
- * In-cap arrangement (`linear` row/column vs `grid` tile panel).
37
- * `<DockSeparator>` reads this to paint a full-row section break in a grid dock
38
- * (a 1px perpendicular hairline is useless in a 2D tile grid).
39
- */
40
- layout: ComputedRef<DockLayout>;
41
34
  /**
42
35
  * Acquire a hold token; suppresses timer-based collapse. `kind` defaults to
43
36
  * `"morph"` (posture only). Pass `"grasp"` for a live pointer hold — it takes
@@ -0,0 +1,20 @@
1
+ import { type ComputedRef, type Ref } from "vue";
2
+ export interface UseDockRunOptions {
3
+ /** The scroll port — `.dock-run`, the element the seats are children of. */
4
+ runEl: Ref<HTMLElement | null>;
5
+ /** The `role="status"` node reach announces through. */
6
+ statusEl: Ref<HTMLElement | null>;
7
+ /** Resolved layout axis; selects the scroll axis and the arrow-key pair. */
8
+ orientation: ComputedRef<"horizontal" | "vertical">;
9
+ }
10
+ export interface UseDockRunReturn {
11
+ /**
12
+ * Bring `seat` fully into view at its lattice anchor, on the DOCK spring. Exposed
13
+ * so a consumer driving selection programmatically reaches the same anchor the
14
+ * pointer and keyboard paths do — one reach, three callers.
15
+ */
16
+ reach: (seat: HTMLElement) => void;
17
+ /** Re-derive the tab stop. Called on mount, on focus moves, and on content change. */
18
+ syncRoving: () => void;
19
+ }
20
+ export declare function useDockRun(options: UseDockRunOptions): UseDockRunReturn;
@@ -1,6 +1,6 @@
1
1
  import { type MaybeRefOrGetter, type Ref } from "vue";
2
2
  import type { UseDockStateReturn } from "./useDockState.js";
3
- import { type FuzzySearchState, type SearchableItem, type SearchResult } from "../../search/composables/index.js";
3
+ import { type FuzzySearchState, type SearchableItem, type SearchResult } from "../../../composables/search/index.js";
4
4
  import { type UseScrollChromeReturn } from "../../../composables/motion/scroll/useScrollChrome.js";
5
5
  export interface UseDockSearchOptions<T extends SearchableItem = SearchableItem> {
6
6
  /** Composes the existing dock state machine (no fork) — `armSearch`/`disarmSearch`
@@ -1,34 +1,24 @@
1
1
  import { type ComputedRef } from "vue";
2
- export type DockSize = "sm" | "md" | "lg" | "xl";
3
2
  export type DockBackdropMode = "live" | "static";
4
- export type DockInteraction = "auto" | "manual";
3
+ /**
4
+ * Collapse posture. `"closed"` (default) mounts collapsed, `"open"` mounts
5
+ * expanded, and `false` never collapses at all — the single opt-out of the
6
+ * collapse↔expand machinery, on both orientations.
7
+ */
8
+ export type DockCollapse = false | "closed" | "open";
5
9
  /**
6
10
  * The GlassDock prop shape. Every dock—horizontal or vertical—reads the same
7
- * surface; orientation
8
- * is the single layout axis and the collapse surface applies on both.
11
+ * surface; orientation is the single layout axis and the collapse surface applies
12
+ * on both.
9
13
  */
10
14
  export interface DockProps {
11
15
  fitContent?: boolean;
12
- /**
13
- * Positioning register: `"inline"` (default) participates in normal flow;
14
- * `"fixed"` pins the dock centred to the viewport bottom; `"sticky"` rides
15
- * the `.dock-sticky` register.
16
- */
17
- position?: "fixed" | "inline" | "sticky";
18
16
  /**
19
17
  * Backdrop material mode. `"live"` (default) samples and filters the painted
20
18
  * backdrop; `"static"` uses a solid plate with no luminance observer or
21
19
  * backdrop-filter work.
22
20
  */
23
21
  backdropMode?: DockBackdropMode;
24
- /**
25
- * Never collapse: render permanently expanded, the single opt-out of the
26
- * collapse↔expand machinery. Default `false` (every dock is collapsible).
27
- * A vertical dock morphs its height too. A `layout="grid"` dock is
28
- * always expanded by contract (a 2D tile panel does not read as a collapsible
29
- * pill). A vertical navigation column can opt into the static expanded posture.
30
- */
31
- alwaysExpanded?: boolean;
32
22
  /**
33
23
  * Corner treatment.
34
24
  * `"pill"` — the stadium silhouette (default).
@@ -46,8 +36,8 @@ export interface DockProps {
46
36
  * surface where the superellipse reads (cards/pills stay
47
37
  * round); the border-radius arc is the cross-engine contract.
48
38
  *
49
- * Paints on both orientations: a vertical dock reads `shape="rounded"` for the tool-palette
50
- * look, a horizontal dock reads `shape="card"` for the big-dock shell).
39
+ * Paints on both orientations: a vertical dock reads `shape="rounded"` for the
40
+ * tool-palette look, a horizontal dock reads `shape="card"` for the big-dock shell.
51
41
  */
52
42
  shape?: "pill" | "rounded" | "card";
53
43
  /**
@@ -58,76 +48,15 @@ export interface DockProps {
58
48
  */
59
49
  orientation?: "horizontal" | "vertical";
60
50
  /**
61
- * Size controls dock padding, gaps, layer height, and inherited
62
- * dock control sizing. Root CSS variables can override each rung.
63
- */
64
- size?: DockSize;
65
- /**
66
- * Overflow strategy when the expanded content exceeds the dock's
67
- * axis cap (`--dock-max-inline-size` horizontally,
68
- * `--dock-max-block-size` vertically). The ONE knob governing every
69
- * overflow behavior.
70
- * `"grow"` — content grows to fit then overflows visibly past
71
- * the cap (the default; nothing clips or scrolls).
72
- * `"wrap"` — expanded content wraps to multiple rows via CONTENT-DRIVEN
73
- * intrinsic flex-wrap (the `.dock-overflow-wrap` recipe). The
74
- * dock shrink-wraps to content and caps that intrinsic width
75
- * at `max-inline-size: var(--dock-max-inline-size)`, so the row
76
- * reflows to N rows EXACTLY when its intrinsic width exceeds
77
- * the cap — at ANY viewport width — and collapses to one row
78
- * when it fits (no viewport breakpoint). The wrapped multi-row silhouette lifts
79
- * onto the card/floating shadow tier as the dock expands.
80
- * HORIZONTAL-ONLY: a vertical dock grows-to-fit + clamps via
81
- * `--dock-max-block-size` (its own overflow story), so the
82
- * `.dock-overflow-wrap` class is not emitted for a vertical
83
- * orientation.
84
- *
85
- * A capped axis is intrinsically a scroll axis: a horizontal
86
- * dock's inline axis reads `.dock-scroll-x` unconditionally (the CSS
87
- * `overflow-x: auto` scrolls ONLY when the row exceeds
88
- * `--dock-max-inline-size`; under the cap nothing scrolls), and a vertical
89
- * vertical dock's block axis scrolls via the unconditional cap-derived shell rule
90
- * (`--dock-max-block-size` is the sole knob). No prop, no unreachable
91
- * controls.
92
- */
93
- overflow?: "grow" | "wrap";
94
- /**
95
- * Idle-collapse delay in ms (default 3600). Inert on an always-expanded dock.
96
- */
97
- collapseDelay?: number;
98
- /**
99
- * Start in the collapsed state (default true). Applies on BOTH orientations
100
- * and a vertical dock morphs its block axis open too. Inert on an always-expanded dock.
101
- */
102
- startCollapsed?: boolean;
103
- /**
104
- * Posture ownership on a COLLAPSIBLE dock.
105
- * `"auto"` (default) — the built-in FSM owns posture.
106
- * `"manual"` — the consumer owns posture. Every internal environmental writer
107
- * (hover, focus, idle timer, outside-click, collapsed-tap, touch)
108
- * is suppressed at BOTH poles; only `expand()`/`collapse()` write.
109
- * Mount pole from `startCollapsed`. Read posture via `expanded`.
110
- * a11y: the consumer MUST author a focusable disclosure in a
111
- * never-inert slot (`#persistent`/`#collapsed`) — glass does not
112
- * auto-expand on focus in manual and provides no fallback.
113
- * Resolved to `"auto"` on an always-expanded dock (that pole is force-pinned;
114
- * interaction is meaningless there — no dead combination reaches the FSM).
51
+ * Collapse posture — mount pole AND opt-out in one member.
52
+ * `"closed"` (default) — collapsible, mounts collapsed.
53
+ * `"open"` — collapsible, mounts expanded.
54
+ * `false` — never collapses; the FSM is force-pinned and every
55
+ * environmental writer (hover, focus, idle timer,
56
+ * outside-click, collapsed-tap, touch) is quiet.
57
+ * Applies on BOTH orientations: a vertical dock morphs its block axis too.
115
58
  */
116
- interaction?: DockInteraction;
117
- /**
118
- * In-cap arrangement. `"linear"` (default) lays the active layer out as a
119
- * linear row/column. `"grid"` makes the active layer a self-wrapping tile
120
- * grid (Launchpad/Stage-Manager track symmetry — `auto-fill` columns of
121
- * `--dock-tile-min`). ORTHOGONAL to `overflow` (the OVER-cap strategy):
122
- * `layout` is the IN-cap arrangement.
123
- *
124
- * Hard contract: a `layout="grid"` dock is `alwaysExpanded` (a 2D panel
125
- * does not read as a collapsible pill, and no width morph means no
126
- * per-frame grid reflow). The canonical pairing is
127
- * `shape="card" layout="grid"` (the props stay independent — no
128
- * auto-implication of `shape`).
129
- */
130
- layout?: "linear" | "grid";
59
+ collapse?: DockCollapse;
131
60
  /**
132
61
  * The KNOWN background-layer canvas the dock floats over (an aurora/blob
133
62
  * `<canvas>`) — an element, a getter, or a CSS selector. When present, the
@@ -135,24 +64,12 @@ export interface DockProps {
135
64
  * case); absent, it stack-walks the painted page background (the static case).
136
65
  */
137
66
  backgroundCanvas?: HTMLCanvasElement | (() => HTMLCanvasElement | null) | string | null;
138
- /**
139
- * Native dynamic-search mode. Default `false`. When enabled, the dock stamps
140
- * `[data-search]` and renders `#search` inside the existing morph aperture. The
141
- * consumer composes `useDockSearch` and supplies its field and result menu. The
142
- * dock's `--dock-morph-t` remains the sole pill-to-field motion scalar.
143
- */
144
- search?: boolean;
145
67
  }
146
68
  /** The resolved shell-prop computeds the GlassDock SFC binds. */
147
69
  export interface DockShellProps {
148
- collapseDelay: ComputedRef<number>;
149
70
  startCollapsed: ComputedRef<boolean>;
150
- interaction: ComputedRef<DockInteraction>;
151
- layoutValue: ComputedRef<"linear" | "grid">;
152
71
  shape: ComputedRef<"pill" | "rounded" | "card">;
153
72
  orientation: ComputedRef<"horizontal" | "vertical">;
154
- size: ComputedRef<DockSize>;
155
- scrollClass: ComputedRef<string | null>;
156
73
  alwaysExpanded: ComputedRef<boolean>;
157
74
  fitContent: ComputedRef<boolean>;
158
75
  }
@@ -1,20 +1,13 @@
1
1
  import type { ComputedRef, Ref } from "vue";
2
2
  import type { DockHoldKind } from "./dockContext.js";
3
- import type { DockInteraction } from "./useDockShellProps.js";
4
3
  export interface UseDockStateOptions {
5
- /** Delay before auto-collapse after mouse leaves (ms) */
4
+ /** Delay before auto-collapse after mouse leaves (ms). Defaults to
5
+ * `DOCK_COLLAPSE_DELAY_MS`, the one idle window every GlassDock reads. */
6
6
  collapseDelay?: number;
7
7
  /** Root element ref — used for contains() checks */
8
8
  rootEl: Ref<HTMLElement | null>;
9
9
  /** Disable collapse behavior and keep the dock expanded. */
10
10
  alwaysExpanded?: Ref<boolean> | boolean;
11
- /**
12
- * Posture ownership. `"auto"` (default) runs the built-in FSM; `"manual"`
13
- * suppresses every environmental writer (hover, focus, idle timer,
14
- * outside-click, collapsed-tap) at BOTH poles, leaving only `expand()` /
15
- * `collapse()` operative — the consumer owns posture.
16
- */
17
- interaction?: Ref<DockInteraction> | DockInteraction;
18
11
  /** Mount-only posture for a collapsible dock. */
19
12
  initialExpanded?: boolean;
20
13
  /** Ref that suppresses click-away during an active dock animation. */
@@ -33,4 +33,19 @@ export declare const DOCK_LAYER_GROUP_LABEL = "glass-ui:dock-layer-group";
33
33
  /** Intent dwell before a collapsed→hover expand commits. A chasing leave inside
34
34
  * this window cancels the expansion. */
35
35
  export declare const HOVER_INTENT_MS = 60;
36
+ /**
37
+ * The ONE idle window before an unheld, unhovered dock auto-collapses.
38
+ *
39
+ * [2026-08-12 · BK #47 W1 SURFACE] `collapseDelay` was a per-dock prop; it is struck
40
+ * and this is its single resolution point. The patient-dwell value (2500 → 3600) is a
41
+ * forgiving hover/interaction window.
42
+ *
43
+ * [2026-08-24 · BK #47 W3 LATTICE] ~~`useDockState` and `useDockTouchGate` both default
44
+ * to it, so the two owners of the same timer cannot drift apart.~~ — `useDockTouchGate`
45
+ * is DELETED (a JS touch gate beside a native snap scroller is a second owner of one
46
+ * gesture; `touch-action: pan-x` + mandatory snap supersede it outright). There is now
47
+ * exactly ONE consumer, `useDockState`, so the drift this sentence guarded against is
48
+ * not merely prevented — it has no second party left to occur between.
49
+ */
50
+ export declare const DOCK_COLLAPSE_DELAY_MS = 3600;
36
51
  export declare const MORPH_SETTLE_MS = 840;
@@ -1,5 +1,5 @@
1
1
  export { default as GlassDock } from "./GlassDock.vue.js";
2
- export type { DockBackdropMode, DockInteraction } from "./composables/useDockShellProps.js";
2
+ export type { DockBackdropMode, DockCollapse, DockProps, } from "./composables/useDockShellProps.js";
3
3
  export { default as DockLayerGroup } from "./DockLayerGroup.vue.js";
4
4
  export { default as DockLayer } from "./DockLayer.vue.js";
5
5
  export { default as DockCrossfade } from "./DockCrossfade.vue.js";
@@ -9,7 +9,7 @@ export { default as DockTrigger } from "./DockTrigger.vue.js";
9
9
  export { default as DockBackgroundToggle } from "./DockBackgroundToggle.vue.js";
10
10
  export { default as DockSeparator } from "./DockSeparator.vue.js";
11
11
  export type { UseDockStateOptions, UseDockStateReturn, DockState } from "./composables/index.js";
12
- export { DOCK_CONTEXT_KEY, useDockContext, useOptionalDockContext, provideDockContext, type DockContext, type DockOrientation, type DockLayout, } from "./composables/dockContext.js";
12
+ export { DOCK_CONTEXT_KEY, useDockContext, useOptionalDockContext, provideDockContext, type DockContext, type DockOrientation, } from "./composables/dockContext.js";
13
13
  export { useDockCtaReceive, type UseDockCtaReceiveOptions, type UseDockCtaReceiveReturn, type DockCtaReceivePreset, } from "../../composables/motion/morph/useDockCtaReceive.js";
14
14
  export { useDockSearch } from "./composables/index.js";
15
15
  export type { UseDockSearchOptions, UseDockSearchReturn } from "./composables/index.js";
@@ -1 +1 @@
1
- @layer components{@property --dock-press-t{syntax: "<number>";inherits: true;initial-value: 0;}.dock-icon-button{display: inline-flex;align-items: center;justify-content: center;flex-shrink: 0;scale: 1;width: var(--dock-control-size,var(--size-icon-btn));height: var(--dock-control-size,var(--size-icon-btn));padding: var(--dock-icon-padding,0);cursor: pointer;border: none;background: transparent;border-radius: var(--dock-control-radius,var(--radius-pill));color: color-mix( in srgb,var(--dock-fg-on-aurora,var(--foreground)) calc(var(--opacity-icon-muted) * 100%),transparent );outline: none;transition: background-color var(--dock-motion-fast),color var(--dock-motion-fast),scale var(--dock-press-spring),opacity var(--dock-motion-fast),box-shadow var(--dock-motion-fast);--glass-btn-press-t: var(--dock-press-t,0);filter: brightness(calc(1 - var(--dock-press-t,0) * 0.04));&:hover:not(:disabled):not([aria-disabled="true"]){background: var(--dock-icon-hover-bg,var(--dock-control-hover-bg));color: var(--btn-hover-color,var(--foreground));scale: var(--scale-hover-dock);}&:active:not(:disabled):not([aria-disabled="true"]){background: var(--dock-control-press-bg);}&:active:not(:disabled):not([data-press-armed]):not([aria-disabled="true"]){scale: var(--scale-press-dock);}&:disabled,&[aria-disabled="true"]{opacity: var(--opacity-disabled,0.4);pointer-events: none;cursor: default;}&:focus:not(:focus-visible){box-shadow: none;outline: none;}&:is(.is-active,.active,[aria-expanded="true"],[aria-pressed="true"]){background: var(--dock-active-bg);color: var(--dock-active-color);scale: var(--dock-active-scale);border: var(--dock-active-border);box-shadow: var(--dock-active-shadow);}&[data-active]{--glass-capsule-fill: var( --dock-control-active-bg,var(--glass-plate-floating) );background: var(--glass-capsule-fill);color: var(--dock-fg-on-aurora,var(--foreground));}}.dock-icon-button > svg{width: var(--dock-icon-glyph,1.25rem);height: var(--dock-icon-glyph,1.25rem);}.dock-icon-button--compact{width: var(--dock-compact-control-size,auto);height: var(--dock-compact-control-size,auto);min-width: var(--dock-compact-control-min-width,0);padding: var(--dock-compact-control-padding,0.25rem);}}
1
+ @layer components{@property --dock-press-t{syntax: "<number>";inherits: true;initial-value: 0;}.dock-icon-button{display: inline-flex;align-items: center;justify-content: center;flex-shrink: 0;scale: 1;width: var(--dock-control-size,var(--size-icon-btn));height: var(--dock-control-size,var(--size-icon-btn));padding: var(--dock-icon-padding,0);cursor: pointer;border: none;background: transparent;border-radius: var(--dock-control-radius,var(--radius-pill));color: color-mix( in srgb,var(--dock-fg-on-aurora,var(--foreground)) calc(var(--opacity-icon-muted) * 100%),transparent );outline: none;transition: background-color var(--dock-motion-fast),color var(--dock-motion-fast),scale var(--dock-press-spring),opacity var(--dock-motion-fast),box-shadow var(--dock-motion-fast);--glass-btn-press-t: var(--dock-press-t,0);filter: brightness(calc(1 - var(--dock-press-t,0) * 0.04));&:hover:not(:disabled):not([aria-disabled="true"]){background: var(--dock-icon-hover-bg,var(--dock-control-hover-bg));color: var(--btn-hover-color,var(--foreground));scale: var(--scale-hover-dock);}&:active:not(:disabled):not([aria-disabled="true"]){background: var(--dock-control-press-bg);}&:active:not(:disabled):not([data-press-armed]):not([aria-disabled="true"]){scale: var(--scale-press-dock);}&:disabled,&[aria-disabled="true"]{opacity: var(--opacity-disabled,0.4);pointer-events: none;cursor: default;}&:focus:not(:focus-visible){outline: none;}&:is(.is-active,.active,[aria-expanded="true"],[aria-pressed="true"]){background: var(--dock-active-bg);color: var(--dock-active-color);scale: var(--dock-active-scale);border: var(--dock-active-border);box-shadow: var(--dock-active-shadow);}&[data-active]{--glass-capsule-fill: var( --dock-control-active-bg,var(--glass-plate-floating) );background: var(--glass-capsule-fill);color: var(--dock-fg-on-aurora,var(--foreground));}}.dock-icon-button > svg{width: var(--dock-icon-glyph,1.25rem);height: var(--dock-icon-glyph,1.25rem);}.dock-icon-button--compact{width: var(--dock-compact-control-size,auto);height: var(--dock-compact-control-size,auto);min-width: var(--dock-compact-control-min-width,0);padding: var(--dock-compact-control-padding,0.25rem);}}
@@ -1 +1 @@
1
- @layer components{.dock-tab-button{display: inline-flex;align-items: center;flex-shrink: 0;min-height: var(--dock-tab-h,var(--dock-tab-min-height,auto));padding-inline: var(--dock-tab-padding-inline,0.75rem);padding-block: var(--dock-tab-padding-block,0.375rem);border: none;background: transparent;background-clip: content-box;border-radius: var(--dock-control-radius,var(--radius-pill));font-size: var(--type-small);line-height: 1;color: var(--muted-foreground);text-decoration: none;cursor: pointer;white-space: nowrap;outline: none;scale: 1;transition: background-color var(--dock-motion-fast),color var(--dock-motion-fast),scale var(--dock-press-spring);&:hover:not(:disabled):not([aria-disabled="true"]){background: var(--dock-control-hover-bg);color: var(--foreground);scale: var(--scale-hover-dock);}&:active:not(:disabled):not([aria-disabled="true"]){background: var(--dock-control-press-bg);scale: var(--scale-press-dock);}&:focus:not(:focus-visible){box-shadow: none;}&:is(.is-active,.active,[aria-current="page"],[aria-pressed="true"]){background: var(--dock-control-active-bg);color: var(--foreground);}}.dock-tab-button[data-tier="primary"]{--dock-tab-min-height: 4rem;padding-inline: 1.5rem;background: color-mix(in srgb,var(--card) 60%,transparent);color: var(--foreground);}.dock-tab-button[data-tier="secondary"],.dock-icon-button[data-tier="secondary"]{background: color-mix(in srgb,var(--card) 50%,transparent);border: 1px solid var(--glass-border-quiet);box-shadow: var(--border-hairline);}.dock-tab-button[data-tier="secondary"]:hover:not(:disabled):not([aria-disabled="true"]),.dock-icon-button[data-tier="secondary"]:hover:not(:disabled):not([aria-disabled="true"]){background: color-mix(in srgb,var(--card) 65%,transparent);box-shadow: var(--glass-material-rim),0 0.5px 0 0 rgb(0 0 0 / 0.06);}}
1
+ @layer components{.dock-tab-button{display: inline-flex;align-items: center;flex-shrink: 0;min-height: var(--dock-tab-h,var(--dock-tab-min-height,auto));padding-inline: var(--dock-tab-padding-inline,0.75rem);padding-block: var(--dock-tab-padding-block,0.375rem);border: none;background: transparent;background-clip: content-box;border-radius: var(--dock-control-radius,var(--radius-pill));font-size: var(--type-small);line-height: 1;color: var(--muted-foreground);text-decoration: none;cursor: pointer;white-space: nowrap;outline: none;scale: 1;transition: background-color var(--dock-motion-fast),color var(--dock-motion-fast),scale var(--dock-press-spring);&:hover:not(:disabled):not([aria-disabled="true"]){background: var(--dock-control-hover-bg);color: var(--foreground);scale: var(--scale-hover-dock);}&:active:not(:disabled):not([aria-disabled="true"]){background: var(--dock-control-press-bg);scale: var(--scale-press-dock);}&:is(.is-active,.active,[aria-current="page"],[aria-pressed="true"]){background: var(--dock-control-active-bg);color: var(--foreground);}}.dock-tab-button[data-tier="primary"]{--dock-tab-min-height: 4rem;padding-inline: 1.5rem;background: color-mix(in srgb,var(--card) 60%,transparent);color: var(--foreground);}.dock-tab-button[data-tier="secondary"],.dock-icon-button[data-tier="secondary"]{background: color-mix(in srgb,var(--card) 50%,transparent);border: 1px solid var(--glass-border-quiet);box-shadow: var(--border-hairline);}.dock-tab-button[data-tier="secondary"]:hover:not(:disabled):not([aria-disabled="true"]),.dock-icon-button[data-tier="secondary"]:hover:not(:disabled):not([aria-disabled="true"]){background: color-mix(in srgb,var(--card) 65%,transparent);box-shadow: var(--glass-material-rim),0 0.5px 0 0 rgb(0 0 0 / 0.06);}}
@@ -1 +1 @@
1
- @layer components{.dock-trigger,.dock-select-trigger,.dock-dropdown-trigger{display: inline-flex;align-items: center;justify-content: center;flex-shrink: 0;scale: 1;gap: var(--dock-trigger-gap,0.25rem);min-height: var(--dock-trigger-min-height,auto);padding: var(--dock-trigger-padding-block,0.25rem) var(--dock-trigger-padding-inline,0.5rem);white-space: nowrap;cursor: pointer;border: none;background: transparent;background-clip: content-box;border-radius: var(--dock-control-radius,var(--radius-pill));color: color-mix( in srgb,var(--dock-fg-on-aurora,var(--foreground)) calc(var(--opacity-icon-muted) * 100%),transparent );outline: none;transition: background-color var(--dock-motion-fast),color var(--dock-motion-fast),scale var(--dock-press-spring),opacity var(--dock-motion-fast);}.dock-trigger:hover:not(:disabled),.dock-select-trigger:hover:not(:disabled),.dock-dropdown-trigger:hover:not(:disabled){background: var(--dock-control-hover-bg);color: var(--btn-hover-color,var(--foreground));}.dock-trigger:active:not(:disabled),.dock-select-trigger:active:not(:disabled),.dock-dropdown-trigger:active:not(:disabled){background: var(--dock-control-press-bg);scale: var(--scale-press-dock);}.dock-trigger:focus:not(:focus-visible),.dock-select-trigger:focus:not(:focus-visible),.dock-dropdown-trigger:focus:not(:focus-visible){box-shadow: none;outline: none;}.dock-trigger:focus-visible,.dock-select-trigger:focus-visible,.dock-dropdown-trigger:focus-visible{transition: background-color var(--dock-motion-fast),color var(--dock-motion-fast),scale var(--dock-press-spring),opacity var(--dock-motion-fast),box-shadow var(--dock-motion-fast);}.dock-trigger:is( .is-active,.active,[aria-expanded="true"],[aria-pressed="true"] ),.dock-select-trigger:is( .is-active,.active,[aria-expanded="true"],[aria-pressed="true"] ),.dock-dropdown-trigger:is( .is-active,.active,[aria-expanded="true"],[aria-pressed="true"] ){background: var(--dock-control-active-bg);color: var(--foreground);}.dock-select-trigger__chevron{width: var(--dock-trigger-icon-size,0.75rem);height: var(--dock-trigger-icon-size,0.75rem);flex-shrink: 0;opacity: 0.5;rotate: 0deg;transition: rotate var(--dock-press-spring);}.dock-select-trigger[data-state="open"] .dock-select-trigger__chevron{rotate: 180deg;}}
1
+ @layer components{.dock-trigger,.dock-select-trigger,.dock-dropdown-trigger{display: inline-flex;align-items: center;justify-content: center;flex-shrink: 0;scale: 1;gap: var(--dock-trigger-gap,0.25rem);min-height: var(--dock-trigger-min-height,auto);padding: var(--dock-trigger-padding-block,0.25rem) var(--dock-trigger-padding-inline,0.5rem);white-space: nowrap;cursor: pointer;border: none;background: transparent;background-clip: content-box;border-radius: var(--dock-control-radius,var(--radius-pill));color: color-mix( in srgb,var(--dock-fg-on-aurora,var(--foreground)) calc(var(--opacity-icon-muted) * 100%),transparent );outline: none;transition: background-color var(--dock-motion-fast),color var(--dock-motion-fast),scale var(--dock-press-spring),opacity var(--dock-motion-fast);}.dock-trigger:hover:not(:disabled),.dock-select-trigger:hover:not(:disabled),.dock-dropdown-trigger:hover:not(:disabled){background: var(--dock-control-hover-bg);color: var(--btn-hover-color,var(--foreground));}.dock-trigger:active:not(:disabled),.dock-select-trigger:active:not(:disabled),.dock-dropdown-trigger:active:not(:disabled){background: var(--dock-control-press-bg);scale: var(--scale-press-dock);}.dock-trigger:focus:not(:focus-visible),.dock-select-trigger:focus:not(:focus-visible),.dock-dropdown-trigger:focus:not(:focus-visible){outline: none;}.dock-trigger:focus-visible,.dock-select-trigger:focus-visible,.dock-dropdown-trigger:focus-visible{transition: background-color var(--dock-motion-fast),color var(--dock-motion-fast),scale var(--dock-press-spring),opacity var(--dock-motion-fast),box-shadow var(--dock-motion-fast);}.dock-trigger:is( .is-active,.active,[aria-expanded="true"],[aria-pressed="true"] ),.dock-select-trigger:is( .is-active,.active,[aria-expanded="true"],[aria-pressed="true"] ),.dock-dropdown-trigger:is( .is-active,.active,[aria-expanded="true"],[aria-pressed="true"] ){background: var(--dock-control-active-bg);color: var(--foreground);}.dock-select-trigger__chevron{width: var(--dock-trigger-icon-size,0.75rem);height: var(--dock-trigger-icon-size,0.75rem);flex-shrink: 0;opacity: 0.5;rotate: 0deg;transition: rotate var(--dock-press-spring);}.dock-select-trigger[data-state="open"] .dock-select-trigger__chevron{rotate: 180deg;}}
@@ -1 +1 @@
1
- @import "./controls/icon-button.css";@import "./controls/tab-button.css";@import "./controls/triggers.css";@import "./controls/touch-floor.css";@layer components{.glass-dock.dock-items-draggable:not(.vertical) .dock-icon-button.glass-drag-lift{scale: var(--stretch,1) calc(1 / var(--stretch,1));}.glass-dock.dock-items-draggable.vertical .dock-icon-button.glass-drag-lift{scale: calc(1 / var(--stretch,1)) var(--stretch,1);}:where( .dock-icon-button,.dock-tab-button,.dock-select-trigger,.dock-dropdown-trigger ){--glass-specular-size: var(--dock-control-specular-size,22%);}}
1
+ @import "./controls/icon-button.css";@import "./controls/tab-button.css";@import "./controls/triggers.css";@import "./controls/touch-floor.css";@layer components{:where( .dock-icon-button,.dock-tab-button,.dock-select-trigger,.dock-dropdown-trigger ){--glass-specular-size: var(--dock-control-specular-size,22%);}}
@@ -1 +1 @@
1
- :root{--dock-content-safe-inset: var(--dock-vertical-extend-length,2.5rem);--dock-shape-from: var(--radius-dock,9999px);--dock-shape-to: var(--radius-dock,9999px);--dock-shape-clip-from: none;--dock-shape-clip-to: none;--dock-morph-max-stretch: 1.14;--dock-search-shrink-start: calc(0rem * var(--dock-scale));--dock-search-shrink-end: calc(7.25rem * var(--dock-scale));}@layer components{.glass-dock[data-size="sm"]{--dock-padding-block: calc( var(--dock-density-compact-padding-block,0.375rem) * var(--dock-scale) );--dock-padding-inline: calc( var(--dock-density-compact-padding-inline,0.5rem) * var(--dock-scale) );--dock-control-size: max( calc(var(--dock-density-compact-control-size,2rem) * var(--dock-scale)),var(--dock-control-floor,0px) );--dock-layer-height: max( calc(var(--dock-density-compact-layer-height,2rem) * var(--dock-scale)),var(--dock-control-floor,0px) );--dock-control-safe-inset: calc(var(--dock-control-size) * 0.1);--dock-layer-gap: calc( var(--dock-density-compact-gap,0.25rem) * var(--dock-scale) );--dock-tile-min: calc( var(--dock-control-size) + var(--dock-tile-pad,1rem) * var(--dock-scale) );--dock-trigger-padding-block: calc( var(--dock-density-compact-trigger-padding-block,0.1875rem) * var(--dock-scale) );--dock-trigger-padding-inline: calc( var(--dock-density-compact-trigger-padding-inline,0.4375rem) * var(--dock-scale) );--dock-tab-padding-block: calc( var(--dock-density-compact-tab-padding-block,0.3125rem) * var(--dock-scale) );--dock-tab-padding-inline: calc( var(--dock-density-compact-tab-padding-inline,0.625rem) * var(--dock-scale) );--dock-tab-h: calc(32px * var(--dock-scale));}.glass-dock[data-size="md"]{--dock-padding-block: calc( var(--dock-density-comfortable-padding-block,0.5rem) * var(--dock-scale) );--dock-padding-inline: calc( var(--dock-density-comfortable-padding-inline,0.75rem) * var(--dock-scale) );--dock-control-size: max( calc( var(--dock-density-comfortable-control-size,2.5rem) * var(--dock-scale) ),var(--dock-control-floor,0px) );--dock-layer-height: max( calc( var(--dock-density-comfortable-layer-height,2.5rem) * var(--dock-scale) ),var(--dock-control-floor,0px) );--dock-control-safe-inset: calc(var(--dock-control-size) * 0.1);--dock-layer-gap: calc( var(--dock-density-comfortable-gap,0.375rem) * var(--dock-scale) );--dock-tile-min: calc( var(--dock-control-size) + var(--dock-tile-pad,2rem) * var(--dock-scale) );--dock-trigger-padding-block: calc( var(--dock-density-comfortable-trigger-padding-block,0.25rem) * var(--dock-scale) );--dock-trigger-padding-inline: calc( var(--dock-density-comfortable-trigger-padding-inline,0.5rem) * var(--dock-scale) );--dock-tab-padding-block: calc( var(--dock-density-comfortable-tab-padding-block,0.4375rem) * var(--dock-scale) );--dock-tab-padding-inline: calc( var(--dock-density-comfortable-tab-padding-inline,0.75rem) * var(--dock-scale) );--dock-tab-h: calc(38px * var(--dock-scale));}.glass-dock[data-size="lg"]{--dock-padding-block: calc( var(--dock-density-spacious-padding-block,0.625rem) * var(--dock-scale) );--dock-padding-inline: calc( var(--dock-density-spacious-padding-inline,1rem) * var(--dock-scale) );--dock-control-size: max( calc( var(--dock-density-spacious-control-size,2.75rem) * var(--dock-scale) ),var(--dock-control-floor,0px) );--dock-layer-height: max( calc( var(--dock-density-spacious-layer-height,2.75rem) * var(--dock-scale) ),var(--dock-control-floor,0px) );--dock-control-safe-inset: calc(var(--dock-control-size) * 0.1);--dock-layer-gap: calc( var(--dock-density-spacious-gap,0.5rem) * var(--dock-scale) );--dock-tile-min: calc( var(--dock-control-size) + var(--dock-tile-pad,2.75rem) * var(--dock-scale) );--dock-trigger-padding-block: calc( var(--dock-density-spacious-trigger-padding-block,0.375rem) * var(--dock-scale) );--dock-trigger-padding-inline: calc( var(--dock-density-spacious-trigger-padding-inline,0.625rem) * var(--dock-scale) );--dock-tab-padding-block: calc( var(--dock-density-spacious-tab-padding-block,0.5rem) * var(--dock-scale) );--dock-tab-padding-inline: calc( var(--dock-density-spacious-tab-padding-inline,0.875rem) * var(--dock-scale) );--dock-tab-h: calc(44px * var(--dock-scale));}.glass-dock[data-size="xl"]{--dock-padding-block: calc( var(--dock-density-audacious-padding-block,0.5rem) * var(--dock-scale) );--dock-padding-inline: calc( var(--dock-density-audacious-padding-inline,0.875rem) * var(--dock-scale) );--dock-control-size: max( calc(var(--dock-density-audacious-control-size,4rem) * var(--dock-scale)),var(--dock-control-floor,0px) );--dock-layer-height: max( calc(var(--dock-density-audacious-layer-height,4rem) * var(--dock-scale)),var(--dock-control-floor,0px) );--dock-control-safe-inset: calc(var(--dock-control-size) * 0.1);--dock-layer-gap: calc( var(--dock-density-audacious-gap,0.875rem) * var(--dock-scale) );--dock-tile-min: calc( var(--dock-control-size) + var(--dock-tile-pad,2.75rem) * var(--dock-scale) );--dock-trigger-padding-block: calc( var(--dock-density-audacious-trigger-padding-block,0.625rem) * var(--dock-scale) );--dock-trigger-padding-inline: calc( var(--dock-density-audacious-trigger-padding-inline,1rem) * var(--dock-scale) );--dock-tab-padding-block: calc( var(--dock-density-audacious-tab-padding-block,0.5rem) * var(--dock-scale) );--dock-tab-padding-inline: calc( var(--dock-density-audacious-tab-padding-inline,1.5rem) * var(--dock-scale) );--dock-tab-min-height: calc( var(--dock-density-audacious-tab-min-height,3.5rem) * var(--dock-scale) );--dock-tab-h: calc( var(--dock-density-audacious-tab-min-height,3.5rem) * var(--dock-scale) );}.glass-dock[data-preset="cockpit"]{--dock-control-size: max( calc(2.75rem * var(--dock-scale)),var(--dock-control-floor,0px) );--dock-layer-height: max( calc(2.75rem * var(--dock-scale)),var(--dock-control-floor,0px) );--dock-padding-block: calc( var(--dock-density-compact-padding-block,0.25rem) * var(--dock-scale) );--dock-padding-inline: calc( var(--dock-density-compact-padding-inline,0.375rem) * var(--dock-scale) );--dock-layer-gap: calc( var(--dock-density-compact-gap,0.25rem) * var(--dock-scale) );--dock-control-safe-inset: calc(var(--dock-control-size) * 0.1);--dock-tile-min: calc( var(--dock-control-size) + var(--dock-tile-pad,1rem) * var(--dock-scale) );--dock-trigger-padding-block: calc( var(--dock-density-compact-trigger-padding-block,0.1875rem) * var(--dock-scale) );--dock-trigger-padding-inline: calc( var(--dock-density-compact-trigger-padding-inline,0.4375rem) * var(--dock-scale) );--dock-tab-padding-block: calc( var(--dock-density-compact-tab-padding-block,0.3125rem) * var(--dock-scale) );--dock-tab-padding-inline: calc( var(--dock-density-compact-tab-padding-inline,0.625rem) * var(--dock-scale) );--dock-tab-h: calc(32px * var(--dock-scale));--dock-label-ratio: 0.275;--dock-icon-glyph: max( calc(var(--dock-layer-height) * var(--dock-icon-glyph-ratio)),var(--dock-icon-glyph-floor) );--dock-control-glyph-size: var(--dock-icon-glyph);}.glass-dock[data-size]{--dock-icon-glyph: max( calc( var(--dock-layer-height,calc(2.5rem * var(--dock-scale))) * var(--dock-icon-glyph-ratio) ),var(--dock-icon-glyph-floor) );--dock-control-glyph-size: var(--dock-icon-glyph);}@container dock (max-width: 29.9375rem){.glass-dock[data-size="xl"] .dock-label{--dock-label-size: 14px;}}@container dock (min-width: 30rem) and (max-width: 44.9375rem){.glass-dock[data-size="xl"] .dock-label{--dock-label-size: 15px;}}}
1
+ :root{--dock-content-safe-inset: var(--dock-vertical-extend-length,2.5rem);--dock-morph-max-stretch: 1.14;--dock-search-shrink-start: calc(0rem * var(--dock-scale));--dock-search-shrink-end: calc(7.25rem * var(--dock-scale));}@layer components{.glass-dock{--dock-padding-block: calc( var(--dock-density-comfortable-padding-block,0.5rem) * var(--dock-scale) );--dock-padding-inline: calc( var(--dock-density-comfortable-padding-inline,0.75rem) * var(--dock-scale) );--dock-control-size: max( calc( var(--dock-density-comfortable-control-size,2.5rem) * var(--dock-scale) ),var(--dock-control-floor,0px) );--dock-layer-height: max( calc( var(--dock-density-comfortable-layer-height,2.5rem) * var(--dock-scale) ),var(--dock-control-floor,0px) );--dock-control-safe-inset: calc(var(--dock-control-size) * 0.1);--dock-layer-gap: calc( var(--dock-density-comfortable-gap,0.375rem) * var(--dock-scale) );--dock-trigger-padding-block: calc( var(--dock-density-comfortable-trigger-padding-block,0.25rem) * var(--dock-scale) );--dock-trigger-padding-inline: calc( var(--dock-density-comfortable-trigger-padding-inline,0.5rem) * var(--dock-scale) );--dock-tab-padding-block: calc( var(--dock-density-comfortable-tab-padding-block,0.4375rem) * var(--dock-scale) );--dock-tab-padding-inline: calc( var(--dock-density-comfortable-tab-padding-inline,0.75rem) * var(--dock-scale) );--dock-tab-h: calc(38px * var(--dock-scale));}.glass-dock[data-preset="cockpit"]{--dock-control-size: max( calc(2.75rem * var(--dock-scale)),var(--dock-control-floor,0px) );--dock-layer-height: max( calc(2.75rem * var(--dock-scale)),var(--dock-control-floor,0px) );--dock-padding-block: calc( var(--dock-density-compact-padding-block,0.25rem) * var(--dock-scale) );--dock-padding-inline: calc( var(--dock-density-compact-padding-inline,0.375rem) * var(--dock-scale) );--dock-layer-gap: calc( var(--dock-density-compact-gap,0.25rem) * var(--dock-scale) );--dock-control-safe-inset: calc(var(--dock-control-size) * 0.1);--dock-trigger-padding-block: calc( var(--dock-density-compact-trigger-padding-block,0.1875rem) * var(--dock-scale) );--dock-trigger-padding-inline: calc( var(--dock-density-compact-trigger-padding-inline,0.4375rem) * var(--dock-scale) );--dock-tab-padding-block: calc( var(--dock-density-compact-tab-padding-block,0.3125rem) * var(--dock-scale) );--dock-tab-padding-inline: calc( var(--dock-density-compact-tab-padding-inline,0.625rem) * var(--dock-scale) );--dock-tab-h: calc(32px * var(--dock-scale));--dock-label-ratio: 0.275;--dock-icon-glyph: max( calc(var(--dock-layer-height) * var(--dock-icon-glyph-ratio)),var(--dock-icon-glyph-floor) );--dock-control-glyph-size: var(--dock-icon-glyph);}.glass-dock{--dock-icon-glyph: max( calc( var(--dock-layer-height,calc(2.5rem * var(--dock-scale))) * var(--dock-icon-glyph-ratio) ),var(--dock-icon-glyph-floor) );--dock-control-glyph-size: var(--dock-icon-glyph);}@media (pointer: coarse){.glass-dock{--dock-scale: var(--dock-mobile-scale,1);--dock-control-floor: var(--dock-touch-target,2.75rem);--size-icon-btn: var(--dock-touch-target,2.75rem);--dock-icon-glyph: max( calc( var(--dock-layer-height,calc(2.5rem * var(--dock-scale))) * var(--dock-icon-glyph-ratio) ),var(--dock-icon-glyph-floor) );--dock-control-glyph-size: var(--dock-icon-glyph);--dock-collapsed-padding: calc(0.25rem * var(--dock-scale));--dock-layer-tab-size: calc(1.75rem * var(--dock-scale));--dock-collapsed-summary-min-size: calc( var(--dock-layer-height,2.5rem) * 0.85 );}}}
@@ -1 +1 @@
1
- @import "./shell.css";@import "./shell-regions.css";@import "./dock.css";@import "./morph.css";@import "./adaptive-legibility.css";@import "./density.css";@import "./shape.css";@import "./layers.css";@import "./layer-group.css";@import "./crossfade.css";@import "./overflow.css";@import "./cta-seat.css";@import "./search.css";@property --dock-morph-t{syntax: "<number>";inherits: true;initial-value: 0;}@property --dock-t{syntax: "<number>";inherits: false;initial-value: 0;}@property --dock-local-scale{syntax: "<number>";inherits: true;initial-value: 1;}@property --dock-scale{syntax: "<number>";inherits: true;initial-value: 1;}@layer components{:where( .glass-dock,.dock-layer-tab,.dock-icon-button,.dark-mode-toggle-button,.dock-tab-button,.dock-select-trigger,.dock-dropdown-trigger ){--dock-motion-fast: var(--duration-fast) var(--ease-standard);--dock-motion-standard: var(--duration-normal) var(--ease-standard);--dock-motion-resize: var(--spring-dock-duration) var(--dock-resize-spring);}.dock-icon-button:focus-visible,.dock-tab-button:focus-visible,.dock-select-trigger:focus-visible,.dock-dropdown-trigger:focus-visible{box-shadow: var(--dock-ring);outline: none;}.glass-dock [data-ring-yield]:focus-visible{box-shadow: none;}.dock-icon-button:disabled,.dock-tab-button:disabled,.dock-select-trigger:disabled,.dock-dropdown-trigger:disabled,.dock-icon-button[aria-disabled="true"],.dock-tab-button[aria-disabled="true"]{opacity: var(--opacity-disabled);cursor: not-allowed;}}
1
+ @import "./shell.css";@import "./shell-regions.css";@import "./dock.css";@import "./morph.css";@import "./adaptive-legibility.css";@import "./density.css";@import "./shape.css";@import "./layers.css";@import "./layer-group.css";@import "./crossfade.css";@import "./run.css";@import "./cta-seat.css";@import "./search.css";@property --dock-morph-t{syntax: "<number>";inherits: true;initial-value: 0;}@property --dock-t{syntax: "<number>";inherits: false;initial-value: 0;}@property --dock-local-scale{syntax: "<number>";inherits: true;initial-value: 1;}@property --dock-scale{syntax: "<number>";inherits: true;initial-value: 1;}@property --dock-pitch{syntax: "<length>";inherits: true;initial-value: 0px;}@property --dock-open-pitches{syntax: "<number>";inherits: true;initial-value: 3;}@layer components{:where( .glass-dock,.dock-layer-tab,.dock-icon-button,.dark-mode-toggle-button,.dock-tab-button,.dock-select-trigger,.dock-dropdown-trigger ){--dock-motion-fast: var(--duration-fast) var(--ease-standard);--dock-motion-standard: var(--duration-normal) var(--ease-standard);--dock-motion-resize: var(--spring-dock-duration) var(--dock-resize-spring);--dock-ring-width: var(--focus-ring-width);--dock-ring-offset: var(--focus-ring-width);--dock-ring-color: color-mix(in srgb,var(--focus-ring-color) 48%,transparent);--dock-ring-reserve: calc(var(--dock-ring-width) + var(--dock-ring-offset));}.dock-icon-button:focus-visible,.dock-tab-button:focus-visible,.dock-select-trigger:focus-visible,.dock-dropdown-trigger:focus-visible{outline: var(--dock-ring-width) solid var(--dock-ring-color);outline-offset: var(--dock-ring-offset);}.glass-dock [data-ring-yield]:focus-visible{outline: none;}.dock-icon-button:disabled,.dock-tab-button:disabled,.dock-select-trigger:disabled,.dock-dropdown-trigger:disabled,.dock-icon-button[aria-disabled="true"],.dock-tab-button[aria-disabled="true"]{opacity: var(--opacity-disabled);cursor: not-allowed;}}
@@ -1 +1 @@
1
- @layer components{.dock-separator{@apply flex-shrink-0;width: 1px;height: var(--dock-separator-height);margin: 0 0.375rem;background: var(--dock-hairline);}.glass-dock.vertical .dock-separator,.dock-layer-group.vertical .dock-separator,.dock-separator[data-orientation="vertical"]{width: var(--dock-separator-height);height: 1px;align-self: center;margin: 0.375rem 0;}.glass-dock.layout-grid .dock-separator{grid-column: 1 / -1;width: 100%;height: 1px;margin: var(--dock-layer-gap,0.375rem) 0;align-self: center;}:is(.glass-dock,.dock-layer-group):not(.vertical):not(.layout-grid) .dock-hairline{align-self: stretch;height: 100%;margin-block: 0;}:is(.glass-dock,.dock-layer-group).vertical .dock-hairline{align-self: stretch;width: 100%;margin-inline: 0;}.dock-spacer{@apply flex-1;}.dock-layer-group{display: flex;gap: var(--dock-layer-group-gap,var(--dock-layer-gap,0.25rem));min-width: 0;min-height: 0;}.dock-layer-group.horizontal{flex-direction: row;align-items: stretch;}.dock-layer-group.horizontal.switcher-end{flex-direction: row-reverse;}.dock-layer-group.vertical{flex-direction: column;align-items: stretch;}.dock-layer-group.vertical.switcher-end{flex-direction: column-reverse;}:where(.glass-dock,.dock-layer-group) .dock-layer-switcher{display: flex;flex-direction: column;flex-shrink: 0;align-self: start;min-height: max-content;gap: var(--dock-layer-switcher-gap,0.125rem);padding: var(--dock-layer-switcher-padding,0.125rem);background: var(--dock-layer-switcher-bg,transparent);border-right: 1px solid var(--dock-hairline);}.dock-layer-group.vertical .dock-layer-switcher{flex-direction: row;border-right: none;border-bottom: 1px solid var(--dock-hairline);}.dock-layer-group.horizontal.switcher-end .dock-layer-switcher{border-right: none;border-left: 1px solid var(--dock-hairline);}.dock-layer-group.vertical.switcher-end .dock-layer-switcher{border-bottom: none;border-top: 1px solid var(--dock-hairline);}:where(.glass-dock,.dock-layer-group) .dock-layer-switcher{position: relative;}:where(.glass-dock,.dock-layer-group) .dock-layer-switcher .dock-layer-tab{position: relative;display: inline-flex;align-items: center;justify-content: center;flex-shrink: 0;width: var(--dock-layer-tab-size,var(--dock-control-size,1.75rem));height: var(--dock-layer-tab-size,var(--dock-control-size,1.75rem));border: 0;border-radius: var(--dock-layer-tab-radius,var(--radius-sm));background: transparent;color: var( --dock-layer-switcher-glyph,color-mix( in srgb,var(--dock-fg-on-aurora,var(--foreground)) 78%,transparent ) );cursor: pointer;font: inherit;font-size: var(--type-caption);z-index: 1;transition: background var(--dock-motion-fast),color var(--dock-motion-fast);}:where(.glass-dock,.dock-layer-group) .dock-layer-switcher .dock-layer-tab svg{width: 1rem;height: 1rem;flex-shrink: 0;}:where(.glass-dock,.dock-layer-group) .dock-layer-switcher .dock-layer-tab:hover{background: var( --dock-layer-switcher-hover,color-mix(in srgb,var(--accent) 30%,transparent) );color: var(--dock-fg-on-aurora,var(--foreground));}:where(.glass-dock,.dock-layer-group) .dock-layer-switcher .dock-layer-tab[aria-selected="true"]{color: var( --dock-layer-switcher-glyph-active,var(--dock-fg-on-aurora,var(--foreground)) );}:where(.glass-dock,.dock-layer-group) .dock-layer-switcher [role="tab"]:focus-visible{box-shadow: var(--focus-ring-shadow);outline: none;}:where(.glass-dock,.dock-layer-group) .dock-layer-switcher .dock-layer-tab-indicator{position: absolute;left: 0;top: 0;width: var(--dock-layer-tab-size,var(--dock-control-size,1.75rem));opacity: 0;border-radius: var(--dock-layer-tab-radius,var(--radius-sm));background: var(--dock-layer-switcher-active,var(--glass-plate-floating));transition: width var(--spring-dock-duration) var(--spring-dock),height var(--spring-dock-duration) var(--spring-dock),translate var(--spring-dock-duration) var(--spring-dock);pointer-events: none;}.dock-layer-group.vertical .dock-layer-switcher .dock-layer-tab-indicator{width: auto;height: var(--dock-layer-tab-size,var(--dock-control-size,1.75rem));}}
1
+ @layer components{.dock-separator{@apply flex-shrink-0;width: 1px;height: var(--dock-separator-height);margin: 0 0.375rem;background: var(--dock-hairline);}.glass-dock.vertical .dock-separator,.dock-layer-group.vertical .dock-separator,.dock-separator[data-orientation="vertical"]{width: var(--dock-separator-height);height: 1px;align-self: center;margin: 0.375rem 0;}:is(.glass-dock,.dock-layer-group):not(.vertical) .dock-hairline{align-self: stretch;height: 100%;margin-block: 0;}:is(.glass-dock,.dock-layer-group).vertical .dock-hairline{align-self: stretch;width: 100%;margin-inline: 0;}.dock-spacer{@apply flex-1;}.dock-layer-group{display: flex;gap: var(--dock-layer-group-gap,var(--dock-layer-gap,0.25rem));min-width: 0;min-height: 0;}.dock-layer-group.horizontal{flex-direction: row;align-items: stretch;}.dock-layer-group.horizontal.switcher-end{flex-direction: row-reverse;}.dock-layer-group.vertical{flex-direction: column;align-items: stretch;}.dock-layer-group.vertical.switcher-end{flex-direction: column-reverse;}:where(.glass-dock,.dock-layer-group) .dock-layer-switcher{display: flex;flex-direction: column;flex-shrink: 0;align-self: start;min-height: max-content;gap: var(--dock-layer-switcher-gap,0.125rem);padding: var(--dock-layer-switcher-padding,0.125rem);background: var(--dock-layer-switcher-bg,transparent);border-right: 1px solid var(--dock-hairline);}.dock-layer-group.vertical .dock-layer-switcher{flex-direction: row;border-right: none;border-bottom: 1px solid var(--dock-hairline);}.dock-layer-group.horizontal.switcher-end .dock-layer-switcher{border-right: none;border-left: 1px solid var(--dock-hairline);}.dock-layer-group.vertical.switcher-end .dock-layer-switcher{border-bottom: none;border-top: 1px solid var(--dock-hairline);}:where(.glass-dock,.dock-layer-group) .dock-layer-switcher{position: relative;}:where(.glass-dock,.dock-layer-group) .dock-layer-switcher .dock-layer-tab{position: relative;display: inline-flex;align-items: center;justify-content: center;flex-shrink: 0;width: var(--dock-layer-tab-size,var(--dock-control-size,1.75rem));height: var(--dock-layer-tab-size,var(--dock-control-size,1.75rem));border: 0;border-radius: var(--dock-layer-tab-radius,var(--radius-sm));background: transparent;color: var( --dock-layer-switcher-glyph,color-mix( in srgb,var(--dock-fg-on-aurora,var(--foreground)) 78%,transparent ) );cursor: pointer;font: inherit;font-size: var(--type-caption);z-index: 1;transition: background var(--dock-motion-fast),color var(--dock-motion-fast);}:where(.glass-dock,.dock-layer-group) .dock-layer-switcher .dock-layer-tab svg{width: 1rem;height: 1rem;flex-shrink: 0;}:where(.glass-dock,.dock-layer-group) .dock-layer-switcher .dock-layer-tab:hover{background: var( --dock-layer-switcher-hover,color-mix(in srgb,var(--accent) 30%,transparent) );color: var(--dock-fg-on-aurora,var(--foreground));}:where(.glass-dock,.dock-layer-group) .dock-layer-switcher .dock-layer-tab[aria-selected="true"]{color: var( --dock-layer-switcher-glyph-active,var(--dock-fg-on-aurora,var(--foreground)) );}:where(.glass-dock,.dock-layer-group) .dock-layer-switcher [role="tab"]:focus-visible{outline: var(--dock-ring-width) solid var(--dock-ring-color);outline-offset: var(--dock-ring-offset);}:where(.glass-dock,.dock-layer-group) .dock-layer-switcher .dock-layer-tab-indicator{position: absolute;left: 0;top: 0;width: var(--dock-layer-tab-size,var(--dock-control-size,1.75rem));opacity: 0;border-radius: var(--dock-layer-tab-radius,var(--radius-sm));background: var(--dock-layer-switcher-active,var(--glass-plate-floating));transition: width var(--spring-dock-duration) var(--spring-dock),height var(--spring-dock-duration) var(--spring-dock),translate var(--spring-dock-duration) var(--spring-dock);pointer-events: none;}.dock-layer-group.vertical .dock-layer-switcher .dock-layer-tab-indicator{width: auto;height: var(--dock-layer-tab-size,var(--dock-control-size,1.75rem));}}
@@ -1 +1 @@
1
- @layer components{:where(.glass-dock,.dock-layer-group) .dock-layers{display: grid;min-width: 0;}.glass-dock[data-morphing]{--dock-live: calc( var(--dock-collapsed-px,var(--dock-expanded-px,0px)) + ( var(--dock-expanded-px,0px) - var(--dock-collapsed-px,var(--dock-expanded-px,0px)) ) * clamp(0,var(--dock-expand-t),1) );--dock-size-scale: clamp( 0.06,calc(var(--dock-live) / max(var(--dock-expanded-px,1px),1px)),1 );transform-origin: center center;will-change: transform;}.glass-dock[data-morphing]:not(.vertical){inline-size: var(--dock-expanded-px);}.glass-dock[data-morphing].vertical{block-size: var(--dock-expanded-px);}.glass-dock.expanded:not(.dock-overflow-wrap) > .dock-controls > .dock-layers{overflow-x: visible;}:where(.glass-dock,.dock-layer-group) .dock-layer{transition: visibility 0s linear var(--duration-normal);}:where(.glass-dock,.dock-layer-group) .dock-layer:not(.is-active):not(.is-leaving){opacity: 0;visibility: hidden;pointer-events: none;}:where(.glass-dock,.dock-layer-group) .dock-layer.is-active{opacity: 1;visibility: visible;pointer-events: auto;transition: visibility 0s;}:where(.glass-dock,.dock-layer-group) .dock-layer.is-leaving{opacity: 0;visibility: visible;pointer-events: none;}.glass-dock[data-morphing] .dock-layer.is-leaving{opacity: calc(1 - var(--dock-morph-t));}.glass-dock .dock-layer.is-leaving.is-press-keepalive{opacity: 1;visibility: visible;pointer-events: none;}.glass-dock .dock-layer.is-leaving.is-press-keepalive [inert]{visibility: hidden;}.glass-dock .dock-layer.is-leaving.is-press-keepalive [data-dock-press-origin]{position: relative;z-index: 1;pointer-events: auto;}:where(.glass-dock,.dock-layer-group) .dock-layer{display: flex;align-items: center;grid-area: 1 / 1;gap: var(--dock-layer-gap,0.375rem);}.glass-dock:not(.vertical) .dock-layer{white-space: nowrap;min-height: var(--dock-layer-height,2.5rem);}:where(.glass-dock,.dock-layer-group) .dock-layer.is-active{position: relative;}:where(.glass-dock,.dock-layer-group) .dock-layer:not(.is-active){position: absolute;inset: 0;}.glass-dock[data-morphing] .dock-layer.is-active > *{--dock-stagger-window: var(--dock-stagger-window-size,0.55);--dock-stagger-onset: 0;--child-reveal: clamp( 0,calc( (var(--dock-expand-t) - var(--dock-stagger-onset)) / var(--dock-stagger-window) ),1 );opacity: var(--child-reveal);scale: calc(0.82 + 0.18 * var(--child-reveal));transform-origin: center;}.glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(2 of *),.glass-dock[data-morphing] .dock-layer.is-active > *:nth-last-child(2 of *){--dock-stagger-onset: calc(var(--dock-stagger-step) * 1);}.glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(3 of *),.glass-dock[data-morphing] .dock-layer.is-active > *:nth-last-child(3 of *){--dock-stagger-onset: calc(var(--dock-stagger-step) * 2);}.glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(n + 4):nth-child(-n + 5){--dock-stagger-onset: calc(var(--dock-stagger-step) * 3);}.glass-dock.expanded:not(.fit-content):not([data-morphing]) .dock-layers{width: 100%;}.glass-dock.expanded:not(.fit-content) .dock-layer--full{width: 100%;}.glass-dock.always-expanded{cursor: default;}.glass-dock.layout-grid{white-space: normal;}.glass-dock.layout-grid .dock-layer--full{display: grid;grid-template-columns: repeat( auto-fill,minmax(var(--dock-tile-min,4.5rem),1fr) );grid-auto-rows: var(--dock-tile-min,4.5rem);gap: var(--dock-layer-gap,0.375rem);width: 100%;height: auto;white-space: normal;place-items: center;}.glass-dock.layout-grid .dock-layers{width: 100%;}.glass-dock.layout-grid.shape-card .dock-layer--full > *{border-radius: calc( var(--dock-card-radius) - var(--dock-padding-inline,0.5rem) );}}
1
+ @layer components{:where(.glass-dock,.dock-layer-group) .dock-layers{display: grid;min-width: 0;}.glass-dock[data-morphing]{--dock-live: calc( var(--dock-collapsed-px,var(--dock-expanded-px,0px)) + ( var(--dock-expanded-px,0px) - var(--dock-collapsed-px,var(--dock-expanded-px,0px)) ) * clamp(0,var(--dock-expand-t),1) );--dock-size-scale: clamp( 0.06,calc(var(--dock-live) / max(var(--dock-expanded-px,1px),1px)),1 );transform-origin: center center;will-change: transform;}.glass-dock[data-morphing]:not(.vertical){inline-size: var(--dock-expanded-px);}.glass-dock[data-morphing].vertical{block-size: var(--dock-expanded-px);}.glass-dock.expanded > .dock-controls > .dock-layers{overflow-x: visible;}:where(.glass-dock,.dock-layer-group) .dock-layer{transition: visibility 0s linear var(--duration-normal);}:where(.glass-dock,.dock-layer-group) .dock-layer:not(.is-active):not(.is-leaving){opacity: 0;visibility: hidden;pointer-events: none;}:where(.glass-dock,.dock-layer-group) .dock-layer.is-active{opacity: 1;visibility: visible;pointer-events: auto;transition: visibility 0s;}:where(.glass-dock,.dock-layer-group) .dock-layer.is-leaving{opacity: 0;visibility: visible;pointer-events: none;}.glass-dock[data-morphing] .dock-layer.is-leaving{opacity: calc(1 - var(--dock-morph-t));}.glass-dock .dock-layer.is-leaving.is-press-keepalive{opacity: 1;visibility: visible;pointer-events: none;}.glass-dock .dock-layer.is-leaving.is-press-keepalive [inert]{visibility: hidden;}.glass-dock .dock-layer.is-leaving.is-press-keepalive [data-dock-press-origin]{position: relative;z-index: 1;pointer-events: auto;}:where(.glass-dock,.dock-layer-group) .dock-layer{display: flex;align-items: center;grid-area: 1 / 1;gap: var(--dock-layer-gap,0.375rem);}.glass-dock:not(.vertical) .dock-layer{white-space: nowrap;min-height: var(--dock-layer-height,2.5rem);}:where(.glass-dock,.dock-layer-group) .dock-layer.is-active{position: relative;}:where(.glass-dock,.dock-layer-group) .dock-layer:not(.is-active){position: absolute;inset: 0;}.glass-dock[data-morphing] .dock-layer.is-active > *{--dock-stagger-window: var(--dock-stagger-window-size,0.55);--dock-stagger-onset: 0;--child-reveal: clamp( 0,calc( (var(--dock-expand-t) - var(--dock-stagger-onset)) / var(--dock-stagger-window) ),1 );opacity: var(--child-reveal);scale: calc(0.82 + 0.18 * var(--child-reveal));transform-origin: center;}.glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(2 of *),.glass-dock[data-morphing] .dock-layer.is-active > *:nth-last-child(2 of *){--dock-stagger-onset: calc(var(--dock-stagger-step) * 1);}.glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(3 of *),.glass-dock[data-morphing] .dock-layer.is-active > *:nth-last-child(3 of *){--dock-stagger-onset: calc(var(--dock-stagger-step) * 2);}.glass-dock[data-morphing] .dock-layer.is-active > *:nth-child(n + 4):nth-child(-n + 5){--dock-stagger-onset: calc(var(--dock-stagger-step) * 3);}.glass-dock.expanded:not(.fit-content):not([data-morphing]) .dock-layers{width: 100%;}.glass-dock.expanded:not(.fit-content) .dock-layer--full{width: 100%;}.glass-dock.always-expanded{cursor: default;}}
@@ -1 +1 @@
1
- @layer components{.glass-dock.expanded,.glass-dock.always-expanded{--dock-expand-t: 1;}.glass-dock.collapsed{--dock-expand-t: 0;}.glass-dock.expanded[data-morphing],.glass-dock.always-expanded[data-morphing]{--dock-expand-t: var(--dock-morph-t);}.glass-dock.collapsed[data-morphing]{--dock-expand-t: calc(1 - var(--dock-morph-t));}.glass-dock:not(.vertical):not(.dock-overflow-wrap){--dock-pad-collapsed: max( var(--dock-padding-block,0.375rem),var(--dock-collapsed-padding,0px) );padding-block: var(--dock-padding-block,0.375rem);padding-inline: calc( var(--dock-pad-collapsed) + (var(--dock-padding-inline,0.5rem) - var(--dock-pad-collapsed)) * var(--dock-expand-t) );}.glass-dock.vertical:not(.dock-overflow-wrap){--dock-pad-collapsed: max( var(--dock-padding-inline,0.5rem),var(--dock-collapsed-padding,0px) );padding-inline: var(--dock-padding-inline,0.5rem);padding-block: calc( var(--dock-pad-collapsed) + (var(--dock-padding-block,0.375rem) - var(--dock-pad-collapsed)) * var(--dock-expand-t) );}.glass-dock.collapsed{cursor: pointer;justify-content: center;box-shadow: var(--shadow-dock-override,var(--shadow-dock-collapsed));}.glass-dock .dock-layer--summary{min-width: var( --dock-collapsed-summary-min-size,var(--dock-layer-height,2.5rem) );min-block-size: var( --dock-collapsed-summary-min-size,var(--dock-layer-height,2.5rem) );block-size: var( --dock-collapsed-summary-min-size,var(--dock-layer-height,2.5rem) );height: var( --dock-collapsed-summary-min-size,var(--dock-layer-height,2.5rem) );aspect-ratio: 1;justify-content: center;}.glass-dock[data-morphing] .dock-layer--summary{--dock-expand-t: var(--dock-morph-t);}.glass-dock .dock-layer--summary:empty{min-width: 0;inline-size: 0;padding: 0;margin: 0;border: 0;}.glass-dock.collapsed:has(.dock-layer--summary:empty) .dock-persistent + .dock-layers{margin-inline-start: 0;}.glass-dock.collapsed:has(.dock-layer--summary:empty) .dock-persistent{display: grid;place-items: center;}.glass-dock.collapsed:has(.dock-layer--summary:empty) .dock-persistent > *{place-self: center;}.glass-dock.collapsed .dock-persistent svg,.glass-dock.collapsed .dock-layer--summary svg{min-width: 1rem;min-height: 1rem;}.glass-dock.collapsed:hover{box-shadow: var(--shadow-dock-override,var(--shadow-dock));}.glass-dock.collapsed:hover:not([data-morphing]){scale: var(--dock-collapsed-hover-scale);will-change: transform;}.glass-dock[data-held] .dock-plate{--dock-plate-expanded-border: var(--glass-border-floating);transition: border-color var(--duration-fast) var(--ease-standard);}}
1
+ @layer components{.glass-dock.expanded,.glass-dock.always-expanded{--dock-expand-t: 1;}.glass-dock.collapsed{--dock-expand-t: 0;}.glass-dock.expanded[data-morphing],.glass-dock.always-expanded[data-morphing]{--dock-expand-t: var(--dock-morph-t);}.glass-dock.collapsed[data-morphing]{--dock-expand-t: calc(1 - var(--dock-morph-t));}.glass-dock:not(.vertical){--dock-pad-collapsed: max( var(--dock-padding-block,0.375rem),var(--dock-collapsed-padding,0px) );padding-block: var(--dock-padding-block,0.375rem);padding-inline: calc( var(--dock-pad-collapsed) + (var(--dock-padding-inline,0.5rem) - var(--dock-pad-collapsed)) * var(--dock-expand-t) );}.glass-dock.vertical{--dock-pad-collapsed: max( var(--dock-padding-inline,0.5rem),var(--dock-collapsed-padding,0px) );padding-inline: var(--dock-padding-inline,0.5rem);padding-block: calc( var(--dock-pad-collapsed) + (var(--dock-padding-block,0.375rem) - var(--dock-pad-collapsed)) * var(--dock-expand-t) );}.glass-dock.collapsed{cursor: pointer;justify-content: center;box-shadow: var(--shadow-dock-override,var(--shadow-dock-collapsed));}.glass-dock .dock-layer--summary{min-width: var( --dock-collapsed-summary-min-size,var(--dock-layer-height,2.5rem) );min-block-size: var( --dock-collapsed-summary-min-size,var(--dock-layer-height,2.5rem) );block-size: var( --dock-collapsed-summary-min-size,var(--dock-layer-height,2.5rem) );height: var( --dock-collapsed-summary-min-size,var(--dock-layer-height,2.5rem) );aspect-ratio: 1;justify-content: center;}.glass-dock[data-morphing] .dock-layer--summary{--dock-expand-t: var(--dock-morph-t);}.glass-dock .dock-layer--summary:empty{min-width: 0;inline-size: 0;padding: 0;margin: 0;border: 0;}.glass-dock.collapsed:has(.dock-layer--summary:empty) .dock-persistent + .dock-layers{margin-inline-start: 0;}.glass-dock.collapsed:has(.dock-layer--summary:empty) .dock-persistent{display: grid;place-items: center;}.glass-dock.collapsed:has(.dock-layer--summary:empty) .dock-persistent > *{place-self: center;}.glass-dock.collapsed .dock-persistent svg,.glass-dock.collapsed .dock-layer--summary svg{min-width: 1rem;min-height: 1rem;}.glass-dock.collapsed:hover{box-shadow: var(--shadow-dock-override,var(--shadow-dock));}.glass-dock[data-held] .dock-plate{--dock-plate-expanded-border: var(--glass-border-floating);transition: border-color var(--duration-fast) var(--ease-standard);}}
@@ -0,0 +1 @@
1
+ @layer components{.glass-dock{--dock-seat: var(--dock-control-size);--dock-run-gap: 0.5rem;--dock-pitch: calc(var(--dock-seat) + var(--dock-run-gap));--dock-open-pitches: 3;--dock-open-seat: calc( var(--dock-open-pitches) * var(--dock-pitch) - var(--dock-run-gap) );}.glass-dock.vertical{--dock-open-pitches: 2;}.glass-dock > .dock-controls > .dock-layers{flex: 1 1 auto;min-inline-size: 0;min-block-size: 0;}.glass-dock > .dock-controls > .dock-persistent{flex: 0 0 auto;}.glass-dock .dock-run{overflow-x: auto;overflow-y: hidden;scroll-snap-type: x mandatory;scroll-padding-inline: calc(var(--dock-pitch) / 2);touch-action: pan-x;overscroll-behavior: contain;scrollbar-width: none;min-inline-size: 0;box-sizing: content-box;padding-block: var(--dock-ring-reserve);margin-block: calc(-1 * var(--dock-ring-reserve));gap: var(--dock-run-gap);}.glass-dock .dock-run::-webkit-scrollbar{display: none;}.glass-dock .dock-run > *{scroll-snap-align: start;flex: 0 0 auto;}.glass-dock.vertical .dock-run{overflow-x: hidden;overflow-y: auto;scroll-snap-type: y mandatory;scroll-padding-block: calc(var(--dock-pitch) / 2);touch-action: pan-y;min-block-size: 0;padding-block: 0;margin-block: 0;padding-inline: var(--dock-ring-reserve);margin-inline: calc(-1 * var(--dock-ring-reserve));}.glass-dock .dock-run > [aria-current]:not([aria-current="false"]),.glass-dock .dock-run > :has([aria-current]:not([aria-current="false"])){inline-size: var(--dock-open-seat);transition: inline-size var(--spring-dock-duration) var(--spring-dock);}.glass-dock .dock-run > :not([aria-current]:not([aria-current="false"])):not( :has([aria-current]:not([aria-current="false"])) ){transition: inline-size var(--spring-dock-duration) var(--spring-dock);}.glass-dock.vertical .dock-run > [aria-current]:not([aria-current="false"]),.glass-dock.vertical .dock-run > :has([aria-current]:not([aria-current="false"])){inline-size: auto;block-size: var(--dock-open-seat);transition: block-size var(--spring-dock-duration) var(--spring-dock);}.glass-dock.vertical .dock-run > :not([aria-current]:not([aria-current="false"])):not( :has([aria-current]:not([aria-current="false"])) ){transition: block-size var(--spring-dock-duration) var(--spring-dock);}.glass-dock{timeline-scope: --dock-run;--dock-cap-rest: 50%;--dock-cap-cut: var(--radius-card);}.glass-dock.shape-rounded{--dock-cap-rest: var(--radius-card);--dock-cap-cut: var(--radius-xs);}.glass-dock.shape-card{--dock-cap-rest: var(--dock-card-radius,var(--radius-dock-card));--dock-cap-cut: var(--radius-lg);}.glass-dock .dock-run{scroll-timeline: --dock-run inline;}.glass-dock.vertical .dock-run{scroll-timeline: --dock-run block;}.glass-dock .dock-plate{animation: gl-dock-cap-inline-start linear both,gl-dock-cap-inline-end linear both;animation-timeline: --dock-run,--dock-run;animation-range: 0 var(--dock-pitch),calc(100% - var(--dock-pitch)) 100%;animation-direction: normal,reverse;}.glass-dock.vertical .dock-plate{animation: gl-dock-cap-block-start linear both,gl-dock-cap-block-end linear both;animation-timeline: --dock-run,--dock-run;animation-range: 0 var(--dock-pitch),calc(100% - var(--dock-pitch)) 100%;animation-direction: normal,reverse;}.glass-dock .dock-run-status{position: absolute;inline-size: 1px;block-size: 1px;margin: -1px;padding: 0;overflow: hidden;clip-path: inset(50%);white-space: nowrap;border: 0;}}@keyframes gl-dock-cap-inline-start{from{border-start-start-radius: var(--dock-cap-rest);border-end-start-radius: var(--dock-cap-rest);}to{border-start-start-radius: var(--dock-cap-cut);border-end-start-radius: var(--dock-cap-cut);}}@keyframes gl-dock-cap-inline-end{from{border-start-end-radius: var(--dock-cap-rest);border-end-end-radius: var(--dock-cap-rest);}to{border-start-end-radius: var(--dock-cap-cut);border-end-end-radius: var(--dock-cap-cut);}}@keyframes gl-dock-cap-block-start{from{border-start-start-radius: var(--dock-cap-rest);border-start-end-radius: var(--dock-cap-rest);}to{border-start-start-radius: var(--dock-cap-cut);border-start-end-radius: var(--dock-cap-cut);}}@keyframes gl-dock-cap-block-end{from{border-end-start-radius: var(--dock-cap-rest);border-end-end-radius: var(--dock-cap-rest);}to{border-end-start-radius: var(--dock-cap-cut);border-end-end-radius: var(--dock-cap-cut);}}
@@ -1 +1 @@
1
- @layer components{.glass-dock[data-search] .dock-search-field{display: flex;flex-direction: column;inline-size: 100%;min-inline-size: 0;gap: var(--dock-search-field-gap,0.375rem);}.glass-dock[data-search] .dock-search-field .input-bar{--glass-veil-tier: var(--glass-veil-floating);@apply glass-plate;color: var(--foreground);}.glass-dock[data-search] .dock-search-field .input-bar-field::placeholder,.glass-dock[data-search] .dock-search-field .dock-search-ghost,.glass-dock[data-search] .dock-search-field .dock-search-result-meta{color: var(--on-glass-muted);}.glass-dock[data-search] .dock-search-field .dock-search-result{color: var(--foreground);}}
1
+ @layer components{.glass-dock .dock-search-field{display: flex;flex-direction: column;inline-size: 100%;min-inline-size: 0;gap: var(--dock-search-field-gap,0.375rem);}.glass-dock .dock-search-field .input-bar{--glass-veil-tier: var(--glass-veil-floating);@apply glass-plate;color: var(--foreground);}.glass-dock .dock-search-field .input-bar-field::placeholder,.glass-dock .dock-search-field .dock-search-ghost,.glass-dock .dock-search-field .dock-search-result-meta{color: var(--on-glass-muted);}.glass-dock .dock-search-field .dock-search-result{color: var(--foreground);}}
@@ -1 +1 @@
1
- @layer components{.glass-dock{border-radius: calc( var(--dock-shape-from,var(--radius-dock)) + ( var(--dock-shape-to,var(--radius-dock)) - var(--dock-shape-from,var(--radius-dock)) ) * var(--dock-expand-t) );}.glass-dock{--dock-shape-clip: var(--dock-shape-clip-to,none);clip-path: var(--dock-shape-clip);}.glass-dock[data-morphing]{--dock-shape-clip: var(--dock-shape-clip-from,none);}.glass-dock[data-morphing]:where(.expanded,.always-expanded){--dock-shape-clip: var(--dock-shape-clip-to,none);}.glass-dock[data-morphing]:not(.vertical){scale: var(--dock-size-scale,1) 1;}.glass-dock[data-morphing].vertical{scale: 1 var(--dock-size-scale,1);}.glass-dock[data-morphing]:not(.vertical) > .dock-controls > .dock-persistent,.glass-dock[data-morphing]:not(.vertical) > .dock-controls > .dock-layers{scale: calc(1 / max(var(--dock-size-scale,1),0.06)) 1;will-change: transform;}.glass-dock[data-morphing].vertical > .dock-controls > .dock-persistent,.glass-dock[data-morphing].vertical > .dock-controls > .dock-layers{scale: 1 calc(1 / max(var(--dock-size-scale,1),0.06));will-change: transform;}.glass-dock{--motion-weight: 1;}@media (prefers-reduced-motion: reduce){.glass-dock{--motion-weight: 0;}}}
1
+ @layer components{.glass-dock{border-radius: var(--radius-dock);}.glass-dock[data-morphing]:not(.vertical){scale: var(--dock-size-scale,1) 1;}.glass-dock[data-morphing].vertical{scale: 1 var(--dock-size-scale,1);}.glass-dock[data-morphing]:not(.vertical) > .dock-controls > .dock-persistent,.glass-dock[data-morphing]:not(.vertical) > .dock-controls > .dock-layers{scale: calc(1 / max(var(--dock-size-scale,1),0.06)) 1;will-change: transform;}.glass-dock[data-morphing].vertical > .dock-controls > .dock-persistent,.glass-dock[data-morphing].vertical > .dock-controls > .dock-layers{scale: 1 calc(1 / max(var(--dock-size-scale,1),0.06));will-change: transform;}.glass-dock{--motion-weight: 1;}@media (prefers-reduced-motion: reduce){.glass-dock{--motion-weight: 0;}}}
@@ -1 +1 @@
1
- @layer components{.dock-persistent{display: flex;align-items: center;flex-shrink: 0;gap: var(--dock-layer-gap,0.375rem);}.glass-dock:not(.vertical) .dock-persistent{flex-direction: row;}.glass-dock.vertical .dock-persistent{flex-direction: column;align-items: stretch;}.glass-dock:not(.vertical) .dock-persistent + .dock-layers{margin-inline-start: var(--dock-layer-gap,0.375rem);}.glass-dock.vertical .dock-persistent + .dock-layers{margin-block-start: var(--dock-layer-gap,0.375rem);}.glass-dock.vertical .dock-layer{flex-direction: column;align-items: stretch;gap: var(--dock-layer-gap,0.375rem);min-width: 0;}}
1
+ @layer components{.dock-persistent{display: flex;align-items: center;flex-shrink: 0;gap: var(--dock-layer-gap,0.375rem);}.glass-dock:not(.vertical) .dock-persistent{flex-direction: row;}.glass-dock.vertical .dock-persistent{flex-direction: column;align-items: stretch;}.glass-dock:not(.vertical) .dock-persistent + .dock-layers{margin-inline-start: var(--dock-layer-gap,0.375rem);}.glass-dock.vertical .dock-persistent + .dock-layers{margin-block-start: var(--dock-layer-gap,0.375rem);}.glass-dock.vertical .dock-layer{flex-direction: column;align-items: stretch;min-width: 0;}}