@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.
- package/dist/aurora.js +371 -349
- package/dist/blob.js +42 -42
- package/dist/{checkbox-BnXuGgJ3.js → checkbox-B1qn65se.js} +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/color.glsl-DTJhdekG.js +34 -0
- package/dist/color.wgsl-BTszLY39.js +398 -0
- package/dist/{command-BuBnYpxF.js → command-tEzAaVY_.js} +1 -1
- package/dist/command.js +1 -1
- package/dist/components/_shared/control.d.ts +0 -1
- package/dist/components/_shared/index.d.ts +0 -1
- package/dist/components/aurora/Aurora.vue.d.ts +1 -0
- package/dist/components/aurora/composables/frameLoop.d.ts +6 -5
- package/dist/components/aurora/composables/runtime.d.ts +26 -1
- package/dist/components/aurora/composables/useAurora.d.ts +28 -0
- package/dist/components/aurora/composables/wgpuSetup.d.ts +1 -1
- package/dist/components/aurora/constants/presets.d.ts +44 -5
- package/dist/components/aurora/index.d.ts +1 -1
- package/dist/components/configurator/Configurator.vue.d.ts +25 -2
- package/dist/components/configurator/ConfiguratorRow.vue.d.ts +4 -2
- package/dist/components/configurator/styles.css +1 -1
- package/dist/components/dock/DockSeparator.vue.d.ts +2 -3
- package/dist/components/dock/GlassDock.vue.d.ts +1 -0
- package/dist/components/dock/composables/dockContext.d.ts +1 -8
- package/dist/components/dock/composables/useDockRun.d.ts +20 -0
- package/dist/components/dock/composables/useDockSearch.d.ts +1 -1
- package/dist/components/dock/composables/useDockShellProps.d.ts +18 -101
- package/dist/components/dock/composables/useDockState.d.ts +2 -9
- package/dist/components/dock/constants.d.ts +15 -0
- package/dist/components/dock/index.d.ts +2 -2
- package/dist/components/dock/styles/controls/icon-button.css +1 -1
- package/dist/components/dock/styles/controls/tab-button.css +1 -1
- package/dist/components/dock/styles/controls/triggers.css +1 -1
- package/dist/components/dock/styles/controls.css +1 -1
- package/dist/components/dock/styles/density.css +1 -1
- package/dist/components/dock/styles/index.css +1 -1
- package/dist/components/dock/styles/layer-group.css +1 -1
- package/dist/components/dock/styles/layers.css +1 -1
- package/dist/components/dock/styles/morph.css +1 -1
- package/dist/components/dock/styles/run.css +1 -0
- package/dist/components/dock/styles/search.css +1 -1
- package/dist/components/dock/styles/shape.css +1 -1
- package/dist/components/dock/styles/shell-regions.css +1 -1
- package/dist/components/dock/styles/shell.css +1 -1
- package/dist/components/fourier-field/FourierField.vue.d.ts +28 -25
- package/dist/components/fourier-field/clock.d.ts +35 -0
- package/dist/components/fourier-field/constants.d.ts +78 -103
- package/dist/components/fourier-field/index.d.ts +3 -28
- package/dist/components/fourier-field/math.d.ts +69 -77
- package/dist/components/fourier-field/renderer/mint.d.ts +50 -0
- package/dist/components/fourier-field/renderer/uniforms.d.ts +84 -0
- package/dist/components/fourier-field/renderer/wgpu.d.ts +28 -0
- package/dist/components/fourier-field/shaders/compute.wgsl.d.ts +1 -0
- package/dist/components/fourier-field/shaders/render.wgsl.d.ts +1 -0
- package/dist/components/fourier-field/useFourierField.d.ts +49 -0
- package/dist/components/handmark/HandMark.vue.d.ts +18 -14
- package/dist/components/handmark/index.d.ts +4 -23
- package/dist/components/handmark/stroke.d.ts +92 -0
- package/dist/composables/dark/darkModeSyncScript.d.ts +19 -0
- package/dist/composables/motion/pointer/pointerFieldMappings.d.ts +0 -41
- package/dist/{components/search/composables → composables/search}/index.d.ts +2 -2
- package/dist/{components/search/composables/fuzzySearchIndex.d.ts → composables/search/match.d.ts} +8 -3
- package/dist/configurator-BHJymdrF.js +339 -0
- package/dist/configurator.js +1 -1
- package/dist/constellation.js +2 -2
- package/dist/control-DJp15L4U.js +7 -0
- package/dist/{dark-z_P5QwqI.js → dark-CLlmo7dD.js} +2 -2
- package/dist/dark-mode-toggle.js +1 -1
- package/dist/dark.js +1 -1
- package/dist/dock.js +712 -486
- package/dist/dom.js +90 -8
- package/dist/easing.js +3 -3
- package/dist/expandable-container-BY1hQXi4.js +142 -0
- package/dist/expandable-container.js +2 -142
- package/dist/fourier-field.js +643 -855
- package/dist/fourier-math.js +6 -6
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +85 -72
- package/dist/handmark.js +330 -718
- package/dist/index.d.ts +1 -1
- package/dist/labeled-field.js +2 -2
- package/dist/{menu-wLu1XGKn.js → menu-TDMNtZjG.js} +1 -1
- package/dist/menu.js +1 -1
- package/dist/motion-core.js +34 -34
- package/dist/{participation-B0hdsIRo.js → participation-Di4UHbzk.js} +8 -8
- package/dist/{pointerFieldMappings-DP5tla5z.js → pointerFieldMappings-DXwlU5uj.js} +7 -23
- package/dist/{popover-DBMKTPkL.js → popover-C04Rrdcz.js} +1 -1
- package/dist/popover.js +1 -1
- package/dist/{radio-group-Ci8o-pDx.js → radio-group-BNV7PN1O.js} +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/{select-CDgwGH_P.js → select-COox45Kv.js} +1 -1
- package/dist/select.js +1 -1
- package/dist/{slider-gsc8jDIo.js → slider-5ChjjWSR.js} +1 -1
- package/dist/slider.js +1 -1
- package/dist/styles/components.css +1 -1
- package/dist/styles/glass/material.css +1 -1
- package/dist/styles/glass/overlay-plate.css +1 -1
- package/dist/{switch-DxZzDrmV.js → switch-lLkbREB-.js} +1 -1
- package/dist/switch.js +1 -1
- package/dist/{tabs-CYscnq5H.js → tabs-DSJMd1Et.js} +1 -1
- package/dist/tabs.js +1 -1
- package/dist/{toggle-group-11aPGMfE.js → toggle-group-DUcmKnDw.js} +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/{tooltip-DqKMZ4dn.js → tooltip-BKk2qVDn.js} +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{resolveCanvasColor-6MCrswTB.js → useCanvas2D-CQRElMyE.js} +1 -11
- package/dist/useResolveTokenColor-B2FfJnd9.js +24 -0
- package/package.json +2 -20
- package/dist/canvas.d.ts +0 -1
- package/dist/canvas.js +0 -2
- package/dist/color.wgsl-B0N3mKMb.js +0 -412
- package/dist/compile-D7VYG3gi.js +0 -19
- package/dist/components/dock/composables/useDockOverflowFit.d.ts +0 -20
- package/dist/components/dock/composables/useDockTouchGate.d.ts +0 -42
- package/dist/components/dock/styles/overflow.css +0 -1
- package/dist/components/fourier-field/composables/fourierFieldGLSetup.d.ts +0 -24
- package/dist/components/fourier-field/composables/fourierFieldWGPUSetup.d.ts +0 -31
- package/dist/components/fourier-field/composables/uniformBridgeWGPU.d.ts +0 -39
- package/dist/components/fourier-field/composables/useFourierField.d.ts +0 -56
- package/dist/components/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +0 -1
- package/dist/components/fourier-field/shaders/fourier-field.glsl.d.ts +0 -4
- package/dist/components/fourier-field/shaders/fourier-field.render.wgsl.d.ts +0 -1
- package/dist/components/fourier-field/shaders/fourier-field.ribbon.d.ts +0 -51
- package/dist/components/handmark/brush.d.ts +0 -269
- package/dist/components/handmark/composables/useHandMark.d.ts +0 -99
- package/dist/components/handmark/constants.d.ts +0 -69
- package/dist/components/handmark/freehand.d.ts +0 -69
- package/dist/components/handmark/geometry.d.ts +0 -62
- package/dist/components/handmark/ink.d.ts +0 -11
- package/dist/components/handmark/noise.d.ts +0 -30
- package/dist/components/handmark/texture.d.ts +0 -39
- package/dist/components/handmark/types.d.ts +0 -70
- package/dist/components/search/SearchBar.vue.d.ts +0 -38
- package/dist/components/search/index.d.ts +0 -8
- package/dist/components/search/searchVariants.d.ts +0 -16
- package/dist/configurator-BoeScnDL.js +0 -311
- package/dist/control-Da4XeT43.js +0 -11
- package/dist/search.d.ts +0 -1
- package/dist/search.js +0 -61
- package/dist/useFuzzySearch-CUnZknpm.js +0 -177
- package/dist/useResolveTokenColor-CspQv_ik.js +0 -107
- /package/dist/{components/search/composables → composables/search}/types.d.ts +0 -0
- /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).
|
|
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;}@
|
|
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
|
|
10
|
-
* dock-root ancestor class (`.glass-dock.vertical
|
|
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,
|
|
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 "
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
62
|
-
*
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
*
|
|
67
|
-
*
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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){
|
|
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);}&:
|
|
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){
|
|
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{
|
|
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-
|
|
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 "./
|
|
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;}
|
|
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
|
|
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)
|
|
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
|
|
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:
|
|
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;
|
|
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;}}
|