@thewhatmatters/wmds 0.4.36 → 0.4.37
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/CHANGELOG.md +13 -0
- package/dist/components/molecules/PageHeader/pageHeaderStyles.d.ts.map +1 -1
- package/dist/components/molecules/PageHeader/pageHeaderStyles.js +1 -1
- package/dist/components/organisms/AppShell/AppShell.d.ts +18 -2
- package/dist/components/organisms/AppShell/AppShell.d.ts.map +1 -1
- package/dist/components/organisms/AppShell/AppShell.js +160 -115
- package/dist/components/organisms/AppShell/appShellStyles.d.ts +7 -2
- package/dist/components/organisms/AppShell/appShellStyles.d.ts.map +1 -1
- package/dist/components/organisms/AppShell/appShellStyles.js +2 -2
- package/dist/components/organisms/Dialog/Dialog.js +31 -31
- package/dist/components/organisms/Panel/Panel.js +28 -28
- package/dist/components/organisms/Sheet/Sheet.js +28 -28
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +47 -47
- package/docs/components.md +1 -1
- package/docs/exports.json +1 -1
- package/docs/patterns/components-accordion--flush.tsx +1 -1
- package/docs/patterns/components-appshell--portal-dashboard-pattern.tsx +1 -1
- package/docs/patterns/components-avatar--dropdown-row.tsx +1 -1
- package/docs/patterns/components-badge--outline-tags.tsx +1 -1
- package/docs/patterns/components-badge--status-pill.tsx +1 -1
- package/docs/patterns/components-badge--with-avatar.tsx +1 -1
- package/docs/patterns/components-band--page-in-bands.tsx +1 -1
- package/docs/patterns/components-breadcrumb--editorial.tsx +1 -1
- package/docs/patterns/components-breadcrumb--long-path.tsx +1 -1
- package/docs/patterns/components-breadcrumb--path.tsx +1 -1
- package/docs/patterns/components-breadcrumb--router-links.tsx +1 -1
- package/docs/patterns/components-button-button--copy-button.tsx +1 -1
- package/docs/patterns/components-button-button--destructive-action.tsx +1 -1
- package/docs/patterns/components-button-button--external-link.tsx +1 -1
- package/docs/patterns/components-button-button--ghost-action.tsx +1 -1
- package/docs/patterns/components-button-button--inverse-action.tsx +1 -1
- package/docs/patterns/components-button-button--link-render.tsx +1 -1
- package/docs/patterns/components-button-button--multi-state-badge.tsx +1 -1
- package/docs/patterns/components-button-button--outline-mono.tsx +1 -1
- package/docs/patterns/components-button-button--primary-action.tsx +1 -1
- package/docs/patterns/components-button-button--row-hug.tsx +1 -1
- package/docs/patterns/components-button-button--row-layout.tsx +1 -1
- package/docs/patterns/components-button-button--secondary-action.tsx +1 -1
- package/docs/patterns/components-button-button--suggestion-pills.tsx +1 -1
- package/docs/patterns/components-button-button--with-count.tsx +1 -1
- package/docs/patterns/components-button-button--with-icon.tsx +1 -1
- package/docs/patterns/components-button-floatingactionbutton--vertical-actions.tsx +1 -1
- package/docs/patterns/components-calembed--pattern-skip-above.tsx +1 -1
- package/docs/patterns/components-card-card--body-slot-occupancy-history.tsx +1 -1
- package/docs/patterns/components-card-card--headerless-media.tsx +1 -1
- package/docs/patterns/components-card-card--outlined-layout.tsx +1 -1
- package/docs/patterns/components-card-card--pinned-height.tsx +1 -1
- package/docs/patterns/components-card-card--terminal-frame.tsx +1 -1
- package/docs/patterns/components-card-selectablecard--selectable-cards-pattern.tsx +1 -1
- package/docs/patterns/components-carousel--image-carousel.tsx +1 -1
- package/docs/patterns/components-chart--audience-activity-heatmap.tsx +1 -1
- package/docs/patterns/components-chart--cartesian-no-data-gaps.tsx +1 -1
- package/docs/patterns/components-chart--occupancy-history-in-card.tsx +1 -1
- package/docs/patterns/components-chart--occupancy-in-card.tsx +1 -1
- package/docs/patterns/components-chart--post-reach-distribution.tsx +1 -1
- package/docs/patterns/components-chart--ranked-audience-breakdown.tsx +1 -1
- package/docs/patterns/components-chart--revenue-by-line.tsx +1 -1
- package/docs/patterns/components-chart--segmented-ring-pattern.tsx +1 -1
- package/docs/patterns/components-chart--unit-grid-composition.tsx +1 -1
- package/docs/patterns/components-chatdock--pattern-chat-dock.tsx +1 -1
- package/docs/patterns/components-chatdock--pattern-start-project-gate.tsx +1 -1
- package/docs/patterns/components-chatqa--pattern-qa-with-reply.tsx +1 -1
- package/docs/patterns/components-checkbox-checkbox--default.tsx +1 -1
- package/docs/patterns/components-checkbox-checkbox--with-count.tsx +1 -1
- package/docs/patterns/components-checkbox-checkbox--with-description.tsx +1 -1
- package/docs/patterns/components-checkbox-checkboxgroup--default.tsx +1 -1
- package/docs/patterns/components-checkbox-checkboxgroup--option-counts.tsx +1 -1
- package/docs/patterns/components-copyfield--clipboard-blocked.tsx +1 -1
- package/docs/patterns/components-copyfield--copied.tsx +1 -1
- package/docs/patterns/components-copyfield--copy-key.tsx +1 -1
- package/docs/patterns/components-copyfield--on-navy.tsx +1 -1
- package/docs/patterns/components-descriptionlist--details.tsx +1 -1
- package/docs/patterns/components-descriptionlist--post-metadata.tsx +1 -1
- package/docs/patterns/components-dialog--alert-dialog-destructive.tsx +1 -1
- package/docs/patterns/components-dialog--alert-dialog-typed-confirmation.tsx +1 -1
- package/docs/patterns/components-dialog--default-dialog.tsx +1 -1
- package/docs/patterns/components-dialog--form-dialog.tsx +1 -1
- package/docs/patterns/components-displaycontrols--page-utilities.tsx +1 -1
- package/docs/patterns/components-displaycontrols--theme-switch.tsx +1 -1
- package/docs/patterns/components-errorsummary--contact-form.tsx +1 -1
- package/docs/patterns/components-field--horizontal-input.tsx +1 -1
- package/docs/patterns/components-field--horizontal-text-area.tsx +1 -1
- package/docs/patterns/components-field--multi-control.tsx +1 -1
- package/docs/patterns/components-filterpanel--panel.tsx +1 -1
- package/docs/patterns/components-footerreveal--marketing-hero-pattern.tsx +1 -1
- package/docs/patterns/components-footerreveal--marketing-hero-ruled-pattern.tsx +1 -1
- package/docs/patterns/components-footerreveal--marketing-hero-with-gallery-intro.tsx +1 -1
- package/docs/patterns/components-footerreveal--marketing-page-pattern.tsx +1 -1
- package/docs/patterns/components-footerreveal--ruled-grid-footer-pattern.tsx +1 -1
- package/docs/patterns/components-footerreveal--sequenced-marketing-hero.tsx +1 -1
- package/docs/patterns/components-herointro--two-line-intro.tsx +1 -1
- package/docs/patterns/components-herointro--with-actions.tsx +1 -1
- package/docs/patterns/components-herotilestack--marketing-hero-pattern.tsx +1 -1
- package/docs/patterns/components-herotilestack--marketing-hero-text-sequence.tsx +1 -1
- package/docs/patterns/components-herotilestack--marketing-hero-with-gallery-intro.tsx +1 -1
- package/docs/patterns/components-indexlist--post-index.tsx +1 -1
- package/docs/patterns/components-intakeconfirmation--booked-pattern.tsx +1 -1
- package/docs/patterns/components-intakeconfirmation--emailed-pattern.tsx +1 -1
- package/docs/patterns/components-intakeform--about-you-pattern.tsx +1 -1
- package/docs/patterns/components-intakeform--short-form-pattern.tsx +1 -1
- package/docs/patterns/components-intakemodal--intake-modal-pattern.tsx +1 -1
- package/docs/patterns/components-kbd--command-row.tsx +1 -1
- package/docs/patterns/components-kbd--numbered-choices.tsx +1 -1
- package/docs/patterns/components-kbd--shortcut.tsx +1 -1
- package/docs/patterns/components-linktile--resource-tile.tsx +1 -1
- package/docs/patterns/components-linktile--router-link.tsx +1 -1
- package/docs/patterns/components-logview--detail-pane.tsx +1 -1
- package/docs/patterns/components-logview--log-viewer.tsx +1 -1
- package/docs/patterns/components-moremenu--action-menu.tsx +1 -1
- package/docs/patterns/components-moremenu--in-card-header.tsx +1 -1
- package/docs/patterns/components-navlist--app-sidebar.tsx +1 -1
- package/docs/patterns/components-navlist--side-nav-settings.tsx +1 -1
- package/docs/patterns/components-pageheader--app-header-pattern.tsx +1 -1
- package/docs/patterns/components-pageheader--page-section-header.tsx +1 -1
- package/docs/patterns/components-pageheader--toolbar-header.tsx +1 -1
- package/docs/patterns/components-panel--end-detail-rail.tsx +1 -1
- package/docs/patterns/components-pillgroup--pill-group-pattern.tsx +1 -1
- package/docs/patterns/components-promptbar--pattern-prompt-bar.tsx +1 -1
- package/docs/patterns/components-prose--article-body.tsx +1 -1
- package/docs/patterns/components-radio-radiogroup--default.tsx +1 -1
- package/docs/patterns/components-scrollhorizontal--project-gallery-pattern.tsx +1 -1
- package/docs/patterns/components-scrollhorizontal--with-intro.tsx +1 -1
- package/docs/patterns/components-sectioncaption--column-caption.tsx +1 -1
- package/docs/patterns/components-sectioncaption--with-action.tsx +1 -1
- package/docs/patterns/components-sheet--bottom-sheet.tsx +1 -1
- package/docs/patterns/components-sheet--end-sheet.tsx +1 -1
- package/docs/patterns/components-sheet--side-sheet-header-actions.tsx +1 -1
- package/docs/patterns/components-sheet--side-sheet-url-deep-link.tsx +1 -1
- package/docs/patterns/components-sheet--side-sheet.tsx +1 -1
- package/docs/patterns/components-sitenav--brand-and-cta.tsx +1 -1
- package/docs/patterns/components-sitenav--centered-links.tsx +1 -1
- package/docs/patterns/components-sitenav--compact.tsx +1 -1
- package/docs/patterns/components-sitenav--marketing-header.tsx +1 -1
- package/docs/patterns/components-sitenav--mega-menu.tsx +1 -1
- package/docs/patterns/components-stat--hero-stat.tsx +1 -1
- package/docs/patterns/components-stat--insights-row.tsx +1 -1
- package/docs/patterns/components-stepprogress--step-progress-pattern.tsx +1 -1
- package/docs/patterns/components-switch--default.tsx +1 -1
- package/docs/patterns/components-switch--settings-row.tsx +1 -1
- package/docs/patterns/components-tab--settings-pages.tsx +1 -1
- package/docs/patterns/components-table--approvals-with-sheet.tsx +1 -1
- package/docs/patterns/components-table--approvals.tsx +1 -1
- package/docs/patterns/components-table--basic.tsx +1 -1
- package/docs/patterns/components-taskrows--action-details.tsx +1 -1
- package/docs/patterns/components-taskrows--capsules.tsx +1 -1
- package/docs/patterns/components-taskrows--card-with-status-rows.tsx +1 -1
- package/docs/patterns/components-taskrows--controlled-expand.tsx +1 -1
- package/docs/patterns/components-taskrows--custom-slots.tsx +1 -1
- package/docs/patterns/components-taskrows--needs-you-table.tsx +1 -1
- package/docs/patterns/components-taskrows--status-list.tsx +1 -1
- package/docs/patterns/components-taskrows--tag-chips.tsx +1 -1
- package/docs/patterns/components-textarea--save-status.tsx +1 -1
- package/docs/patterns/components-textlink--external-destination.tsx +1 -1
- package/docs/patterns/components-textlink--inline-prose.tsx +1 -1
- package/docs/patterns/components-textlink--quiet-title.tsx +1 -1
- package/docs/patterns/components-textlink--supporting-copy.tsx +1 -1
- package/docs/patterns/components-textsequence--default.tsx +1 -1
- package/docs/patterns/components-textsequence--reduced-motion.tsx +1 -1
- package/docs/patterns/components-textsequence--shapes.tsx +1 -1
- package/docs/patterns/components-tilegrid--masonry.tsx +1 -1
- package/docs/patterns/components-toast--stacked-notifications.tsx +1 -1
- package/docs/patterns/components-tooltip--controlled.tsx +1 -1
- package/docs/patterns/components-tooltip--disabled-control.tsx +1 -1
- package/docs/patterns/components-tooltip--icon-action.tsx +1 -1
- package/docs/patterns/components-tooltip--keyboard-shortcut.tsx +1 -1
- package/docs/patterns/components-tooltip--placement.tsx +1 -1
- package/docs/patterns/foundations-scroll-fade--horizontal-rail.tsx +1 -1
- package/docs/patterns/foundations-scroll-fade--overflowing-list.tsx +1 -1
- package/docs/patterns/guides-chart-explorations--comparison-gallery.tsx +1 -1
- package/docs/patterns/guides-filter-panel--filtered-grid.tsx +1 -1
- package/docs/patterns/guides-filter-panel--filtered-index.tsx +1 -1
- package/docs/patterns/guides-overlay-flows--notification-preferences.tsx +1 -1
- package/docs/patterns/guides-post-page--post-page.tsx +1 -1
- package/docs/patterns/guides-profile-typography--editorial-profile.tsx +1 -1
- package/docs/patterns/guides-resource-detail--detail.tsx +1 -1
- package/docs/patterns/index.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,19 @@ Every release of `@thewhatmatters/wmds` is listed here, newest first.
|
|
|
7
7
|
- **Pasted patterns:** when a release changes a **Pattern — …** story's Show code, it is named under Consumer actions so apps re-copy it.
|
|
8
8
|
- **How to add an entry** (contributors): add your change to the top entry. If that version is already on npm (`npm view @thewhatmatters/wmds versions`), start a new entry above it and bump `version` in `package.json` to match. `npm run check:changelog` enforces the format.
|
|
9
9
|
|
|
10
|
+
## 0.4.37
|
|
11
|
+
|
|
12
|
+
**AppShell: a docked aside you can use while watching the page, a labelled phone menu button, and titles that end in an ellipsis.**
|
|
13
|
+
|
|
14
|
+
- **AppShell** `asideMode` (new): `overlay` (default, unchanged) or `docked`. Docked, from `lg`, the aside is a raised column beside the page (320px), and the page narrows to make room instead of being covered: for controls you use while watching the page change, like a font panel. It's a `complementary` landmark named by its title; Close or Escape from inside returns focus to the button that opened it. Below `lg` it's the overlay **Panel** either way. New exports `appShellAsideModes`, `AppShellAsideMode`.
|
|
15
|
+
- **AppShell** `menuButton` (new): `icon` (default, unchanged) or `label`, the icon plus `labels.menu` as visible text on the phone menu button (Header rule N7), for when the glyph alone doesn't say what the menu holds. New exports `appShellMenuButtons`, `AppShellMenuButton`.
|
|
16
|
+
- **PageHeader** `variant="app"`: a long title ends in an ellipsis on one line instead of wrapping out of the 56px band.
|
|
17
|
+
- Stories **AppShell → State — aside docked** and **State — phone, labelled menu**, with interaction tests (the page narrows, no dialog, focus returns on Close and Escape; the labelled button opens the menu).
|
|
18
|
+
|
|
19
|
+
### Consumer actions
|
|
20
|
+
|
|
21
|
+
- None.
|
|
22
|
+
|
|
10
23
|
## 0.4.36
|
|
11
24
|
|
|
12
25
|
**Colour fixes from building every component in light and dark: fills that vanished, the navy on the dark body, invalid hovers, and a primary Button on a band.**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pageHeaderStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/PageHeader/pageHeaderStyles.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB,qCAAsC,CAAC;AAEtE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,4FAA4F;AAC5F,eAAO,MAAM,8BAA8B,uCAAuC,CAAC;AAEnF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAWpE,CAAC;AAEF,eAAO,MAAM,sBAAsB,oCAAoC,CAAC;AAExE,eAAO,MAAM,oBAAoB,qCAAqC,CAAC;AAEvE,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"pageHeaderStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/PageHeader/pageHeaderStyles.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB,qCAAsC,CAAC;AAEtE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,4FAA4F;AAC5F,eAAO,MAAM,8BAA8B,uCAAuC,CAAC;AAEnF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAWpE,CAAC;AAEF,eAAO,MAAM,sBAAsB,oCAAoC,CAAC;AAExE,eAAO,MAAM,oBAAoB,qCAAqC,CAAC;AAEvE,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAKpE,CAAC"}
|
|
@@ -12,7 +12,7 @@ var r = [
|
|
|
12
12
|
page: "flex items-center justify-between gap-4",
|
|
13
13
|
toolbar: e("flex items-center justify-between gap-2", n.md)
|
|
14
14
|
}, o = "flex min-w-0 items-center gap-3", s = "flex shrink-0 items-center gap-2", c = {
|
|
15
|
-
app: e(t("section-heading"), "text-fg"),
|
|
15
|
+
app: e(t("section-heading"), "min-w-0 truncate text-fg"),
|
|
16
16
|
page: e(t("section-heading"), "text-fg"),
|
|
17
17
|
toolbar: e(t("ui-label"), "font-medium text-fg")
|
|
18
18
|
};
|
|
@@ -13,6 +13,10 @@ export interface AppShellLabels {
|
|
|
13
13
|
/** The skip link, the first tab stop, which moves focus to the page content. */
|
|
14
14
|
skipToContent: string;
|
|
15
15
|
}
|
|
16
|
+
export declare const appShellAsideModes: readonly ["overlay", "docked"];
|
|
17
|
+
export type AppShellAsideMode = (typeof appShellAsideModes)[number];
|
|
18
|
+
export declare const appShellMenuButtons: readonly ["icon", "label"];
|
|
19
|
+
export type AppShellMenuButton = (typeof appShellMenuButtons)[number];
|
|
16
20
|
export interface AppShellProps {
|
|
17
21
|
/** Page title — the `h1` in the title bar. */
|
|
18
22
|
title: string;
|
|
@@ -33,11 +37,22 @@ export interface AppShellProps {
|
|
|
33
37
|
sidebarOpen?: boolean;
|
|
34
38
|
defaultSidebarOpen?: boolean;
|
|
35
39
|
onSidebarOpenChange?: (open: boolean) => void;
|
|
40
|
+
/**
|
|
41
|
+
* `overlay` (default): the aside is a non-blocking **Panel** over the page.
|
|
42
|
+
* `docked`: from `lg` it sits beside the page, which narrows to make room, for controls you use while
|
|
43
|
+
* watching the page change (a font panel). Below `lg` it's the overlay **Panel** either way.
|
|
44
|
+
*/
|
|
45
|
+
asideMode?: AppShellAsideMode;
|
|
36
46
|
/** Aside open — controlled. */
|
|
37
47
|
asideOpen?: boolean;
|
|
38
48
|
defaultAsideOpen?: boolean;
|
|
39
49
|
onAsideOpenChange?: (open: boolean) => void;
|
|
40
50
|
labels?: Partial<AppShellLabels>;
|
|
51
|
+
/**
|
|
52
|
+
* The phone menu button (below `lg`): `icon` (default) or `label`, the icon plus `labels.menu` as visible
|
|
53
|
+
* text ("Patterns"), when the glyph alone wouldn't say what the menu holds.
|
|
54
|
+
*/
|
|
55
|
+
menuButton?: AppShellMenuButton;
|
|
41
56
|
/** Page content. **AppShell.Brand**, **Sidebar**, **Header**, and **Aside** children fill their slots instead. */
|
|
42
57
|
children?: ReactNode;
|
|
43
58
|
className?: AppShellLayoutClassName;
|
|
@@ -68,10 +83,11 @@ export interface AppShellContextValue {
|
|
|
68
83
|
}
|
|
69
84
|
/** State of the nearest **AppShell** — for a header button that opens the aside. */
|
|
70
85
|
export declare function useAppShell(): AppShellContextValue;
|
|
71
|
-
declare function AppShellRoot({ title, brand: brandProp, sidebar: sidebarProp, sidebarFooter: sidebarFooterProp, header: headerProp, aside: asideProp, asideTitle, asideDescription, sidebarOpen: sidebarOpenProp, defaultSidebarOpen, onSidebarOpenChange, asideOpen: asideOpenProp, defaultAsideOpen, onAsideOpenChange, labels: labelsProp, children, className, }: AppShellProps): import("react").JSX.Element;
|
|
86
|
+
declare function AppShellRoot({ title, brand: brandProp, sidebar: sidebarProp, sidebarFooter: sidebarFooterProp, header: headerProp, aside: asideProp, asideTitle, asideDescription, sidebarOpen: sidebarOpenProp, defaultSidebarOpen, onSidebarOpenChange, asideOpen: asideOpenProp, defaultAsideOpen, onAsideOpenChange, asideMode, menuButton, labels: labelsProp, children, className, }: AppShellProps): import("react").JSX.Element;
|
|
72
87
|
/**
|
|
73
88
|
* App chrome — a sidebar on the page background and the page as an inset, raised surface with a
|
|
74
|
-
* title bar. Below `lg` the sidebar is a start **Sheet**; the optional aside is a non-blocking **Panel
|
|
89
|
+
* title bar. Below `lg` the sidebar is a start **Sheet**; the optional aside is a non-blocking **Panel**,
|
|
90
|
+
* or with `asideMode="docked"`, from `lg`, a column beside the page.
|
|
75
91
|
*/
|
|
76
92
|
export declare const AppShell: typeof AppShellRoot & {
|
|
77
93
|
Brand: typeof AppShellBrand;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/AppShell/AppShell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAYL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/AppShell/AppShell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,218 +1,263 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cn as e } from "../../../lib/cn.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
3
|
+
import { Button as t } from "../../atoms/Button/Button.js";
|
|
4
|
+
import { IconButton as n } from "../../atoms/IconButton/IconButton.js";
|
|
5
|
+
import { Kbd as r } from "../../atoms/Kbd/Kbd.js";
|
|
6
|
+
import { Tooltip as i } from "../../atoms/Tooltip/Tooltip.js";
|
|
7
|
+
import { PageHeader as ee } from "../../molecules/PageHeader/PageHeader.js";
|
|
8
|
+
import { overlayPanelBodyScrollClasses as te, overlayPanelSectionStackClasses as ne } from "../Dialog/dialogStyles.js";
|
|
9
|
+
import { OverlayPanelHeader as re } from "../Dialog/OverlayPanelHeader.js";
|
|
10
|
+
import { Panel as ie } from "../Panel/Panel.js";
|
|
11
|
+
import { Sheet as ae } from "../Sheet/Sheet.js";
|
|
12
|
+
import { appShellAsideDockedClasses as oe, appShellBrandClasses as se, appShellCanvasClasses as ce, appShellMainClasses as le, appShellRootClasses as ue, appShellSheetBodyClasses as de, appShellSidebarBodyClasses as a, appShellSidebarClasses as fe, appShellSidebarFooterClasses as pe, appShellSkipLinkClasses as me, appShellSurfaceClasses as he, appShellToggleDesktopClasses as ge, appShellToggleMobileClasses as o } from "./appShellStyles.js";
|
|
13
|
+
import { Children as s, createContext as c, isValidElement as l, useCallback as u, useContext as d, useEffect as f, useId as _e, useMemo as ve, useRef as p, useState as m } from "react";
|
|
14
|
+
import { PanelLeft as h } from "lucide-react";
|
|
15
|
+
import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
13
16
|
//#region src/components/organisms/AppShell/AppShell.tsx
|
|
14
|
-
var
|
|
17
|
+
var ye = {
|
|
15
18
|
collapse: "Collapse sidebar",
|
|
16
19
|
expand: "Expand sidebar",
|
|
17
20
|
menu: "Menu",
|
|
18
21
|
aside: "Details",
|
|
19
22
|
skipToContent: "Skip to content"
|
|
20
|
-
};
|
|
23
|
+
}, y = ["overlay", "docked"], b = ["icon", "label"];
|
|
21
24
|
function x({ children: e }) {
|
|
22
|
-
return /* @__PURE__ */
|
|
25
|
+
return /* @__PURE__ */ _(g, { children: e });
|
|
23
26
|
}
|
|
24
27
|
function S({ children: e }) {
|
|
25
|
-
return /* @__PURE__ */
|
|
28
|
+
return /* @__PURE__ */ _(g, { children: e });
|
|
26
29
|
}
|
|
27
30
|
function C({ children: e }) {
|
|
28
|
-
return /* @__PURE__ */
|
|
31
|
+
return /* @__PURE__ */ _(g, { children: e });
|
|
29
32
|
}
|
|
30
33
|
function w({ children: e }) {
|
|
31
|
-
return /* @__PURE__ */
|
|
34
|
+
return /* @__PURE__ */ _(g, { children: e });
|
|
32
35
|
}
|
|
33
36
|
function T({ children: e }) {
|
|
34
|
-
return /* @__PURE__ */
|
|
37
|
+
return /* @__PURE__ */ _(g, { children: e });
|
|
35
38
|
}
|
|
36
|
-
var E =
|
|
39
|
+
var E = c(null);
|
|
37
40
|
function D() {
|
|
38
|
-
let e =
|
|
41
|
+
let e = d(E);
|
|
39
42
|
if (e == null) throw Error("useAppShell must be used inside <AppShell>.");
|
|
40
43
|
return e;
|
|
41
44
|
}
|
|
42
45
|
function O(e, t, n) {
|
|
43
|
-
let [r, i] =
|
|
44
|
-
return [e ?? r,
|
|
46
|
+
let [r, i] = m(t);
|
|
47
|
+
return [e ?? r, u((t) => {
|
|
45
48
|
e ?? i(t), n?.(t);
|
|
46
49
|
}, [e, n])];
|
|
47
50
|
}
|
|
48
51
|
var k = "(min-width: 1024px)";
|
|
49
|
-
function
|
|
52
|
+
function be(e) {
|
|
50
53
|
return e instanceof HTMLElement && e.isContentEditable;
|
|
51
54
|
}
|
|
52
|
-
function
|
|
55
|
+
function xe(e) {
|
|
53
56
|
let t = { content: [] };
|
|
54
|
-
return
|
|
55
|
-
if (!
|
|
57
|
+
return s.forEach(e, (e) => {
|
|
58
|
+
if (!l(e)) {
|
|
56
59
|
e != null && e !== !1 && t.content.push(e);
|
|
57
60
|
return;
|
|
58
61
|
}
|
|
59
62
|
e.type === x ? t.brand = e.props.children : e.type === S ? t.sidebar = e.props.children : e.type === C ? t.sidebarFooter = e.props.children : e.type === w ? t.header = e.props.children : e.type === T ? t.aside = e.props : t.content.push(e);
|
|
60
63
|
}), t;
|
|
61
64
|
}
|
|
62
|
-
function A({ title:
|
|
65
|
+
function A({ title: s, brand: c, sidebar: l, sidebarFooter: d, header: g, aside: y, asideTitle: b, asideDescription: x, sidebarOpen: S, defaultSidebarOpen: C = !0, onSidebarOpenChange: w, asideOpen: T, defaultAsideOpen: D = !1, onAsideOpenChange: A, asideMode: j = "overlay", menuButton: Se = "icon", labels: Ce, children: we, className: Te }) {
|
|
63
66
|
let M = {
|
|
64
|
-
...
|
|
65
|
-
...
|
|
66
|
-
}, N =
|
|
67
|
-
!e &&
|
|
68
|
-
}, [
|
|
69
|
-
window.matchMedia(k).matches ? J(!
|
|
70
|
-
}, [J,
|
|
71
|
-
|
|
67
|
+
...ye,
|
|
68
|
+
...Ce
|
|
69
|
+
}, N = xe(we), P = c ?? N.brand, F = l ?? N.sidebar, I = d ?? N.sidebarFooter, Ee = g ?? N.header, L = y ?? N.aside?.children, R = F != null, z = L != null, [B, V] = O(S, C, w), [H, U] = O(T, D, A), [W, G] = m(!1), [De, Oe] = m(!1), K = _e(), ke = p(null), q = p(null), J = u((e) => {
|
|
70
|
+
!e && ke.current?.contains(document.activeElement) && q.current?.focus(), V(e);
|
|
71
|
+
}, [V]), Y = u(() => {
|
|
72
|
+
window.matchMedia(k).matches ? J(!B) : G((e) => !e);
|
|
73
|
+
}, [J, B]);
|
|
74
|
+
f(() => {
|
|
72
75
|
let e = window.matchMedia(k);
|
|
76
|
+
Oe(e.matches);
|
|
73
77
|
function t(e) {
|
|
74
|
-
e.matches &&
|
|
78
|
+
Oe(e.matches), e.matches && G(!1);
|
|
75
79
|
}
|
|
76
80
|
return e.addEventListener("change", t), () => e.removeEventListener("change", t);
|
|
77
|
-
}, []),
|
|
81
|
+
}, []), f(() => {
|
|
78
82
|
if (!R) return;
|
|
79
83
|
function e(e) {
|
|
80
|
-
e.defaultPrevented || e.altKey || e.shiftKey || !(e.metaKey || e.ctrlKey) || e.key.toLowerCase() !== "b" ||
|
|
84
|
+
e.defaultPrevented || e.altKey || e.shiftKey || !(e.metaKey || e.ctrlKey) || e.key.toLowerCase() !== "b" || be(e.target) || (e.preventDefault(), Y());
|
|
81
85
|
}
|
|
82
86
|
return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
|
|
83
87
|
}, [R, Y]);
|
|
84
|
-
let
|
|
85
|
-
sidebarOpen:
|
|
88
|
+
let Ae = ve(() => ({
|
|
89
|
+
sidebarOpen: B,
|
|
86
90
|
setSidebarOpen: J,
|
|
87
|
-
menuOpen:
|
|
88
|
-
setMenuOpen:
|
|
89
|
-
asideOpen:
|
|
90
|
-
setAsideOpen:
|
|
91
|
+
menuOpen: W,
|
|
92
|
+
setMenuOpen: G,
|
|
93
|
+
asideOpen: H,
|
|
94
|
+
setAsideOpen: U,
|
|
91
95
|
toggleSidebar: Y
|
|
92
96
|
}), [
|
|
93
|
-
V,
|
|
94
|
-
U,
|
|
95
97
|
H,
|
|
98
|
+
W,
|
|
99
|
+
U,
|
|
96
100
|
J,
|
|
97
|
-
|
|
101
|
+
B,
|
|
98
102
|
Y
|
|
99
103
|
]);
|
|
100
|
-
function
|
|
101
|
-
e.target.closest("nav a[href], nav button") != null &&
|
|
104
|
+
function je(e) {
|
|
105
|
+
e.target.closest("nav a[href], nav button") != null && G(!1);
|
|
106
|
+
}
|
|
107
|
+
let X = z && j === "docked" && De, Z = `${K}-aside`, Me = p(null), Q = p(null);
|
|
108
|
+
f(() => {
|
|
109
|
+
X && (H ? Q.current = document.activeElement : Q.current = null);
|
|
110
|
+
}, [H, X]);
|
|
111
|
+
function Ne() {
|
|
112
|
+
let e = Q.current, t = Me.current?.contains(document.activeElement) ?? !1;
|
|
113
|
+
U(!1), t && (e?.isConnected ? e.focus() : document.getElementById(`${K}-main`)?.focus());
|
|
102
114
|
}
|
|
103
|
-
let
|
|
104
|
-
className:
|
|
115
|
+
let Pe = B ? M.collapse : M.expand, $ = `${K}-main`, Fe = P == null ? null : /* @__PURE__ */ _("div", {
|
|
116
|
+
className: se,
|
|
105
117
|
children: P
|
|
106
|
-
}),
|
|
107
|
-
className:
|
|
118
|
+
}), Ie = I == null ? null : /* @__PURE__ */ _("div", {
|
|
119
|
+
className: pe,
|
|
108
120
|
children: I
|
|
109
|
-
}),
|
|
121
|
+
}), Le = R ? /* @__PURE__ */ v(i.Provider, { children: [/* @__PURE__ */ v(i, { children: [/* @__PURE__ */ _(i.Trigger, { render: /* @__PURE__ */ _(n, {
|
|
110
122
|
ref: q,
|
|
111
123
|
role: "ghost",
|
|
112
124
|
size: "sm",
|
|
113
125
|
title: "",
|
|
114
|
-
icon: /* @__PURE__ */
|
|
115
|
-
"aria-label":
|
|
116
|
-
"aria-expanded":
|
|
117
|
-
"aria-controls":
|
|
126
|
+
icon: /* @__PURE__ */ _(h, { strokeWidth: 2 }),
|
|
127
|
+
"aria-label": Pe,
|
|
128
|
+
"aria-expanded": B,
|
|
129
|
+
"aria-controls": K,
|
|
118
130
|
"aria-keyshortcuts": "Control+B Meta+B",
|
|
119
|
-
className:
|
|
120
|
-
onClick: () => J(!
|
|
121
|
-
}) }), /* @__PURE__ */
|
|
131
|
+
className: ge,
|
|
132
|
+
onClick: () => J(!B)
|
|
133
|
+
}) }), /* @__PURE__ */ _(i.Content, { children: /* @__PURE__ */ v("span", {
|
|
122
134
|
className: "inline-flex items-center gap-2",
|
|
123
135
|
children: [
|
|
124
|
-
|
|
125
|
-
/* @__PURE__ */
|
|
136
|
+
Pe,
|
|
137
|
+
/* @__PURE__ */ _(r, {
|
|
126
138
|
size: "sm",
|
|
127
139
|
children: "Ctrl"
|
|
128
140
|
}),
|
|
129
|
-
/* @__PURE__ */
|
|
141
|
+
/* @__PURE__ */ _(r, {
|
|
130
142
|
size: "sm",
|
|
131
143
|
children: "B"
|
|
132
144
|
})
|
|
133
145
|
]
|
|
134
|
-
}) })] }), /* @__PURE__ */
|
|
146
|
+
}) })] }), Se === "label" ? /* @__PURE__ */ _(t, {
|
|
135
147
|
role: "ghost",
|
|
136
148
|
size: "sm",
|
|
137
|
-
icon: /* @__PURE__ */
|
|
149
|
+
icon: /* @__PURE__ */ _(h, { strokeWidth: 2 }),
|
|
150
|
+
"aria-expanded": W,
|
|
151
|
+
"aria-haspopup": "dialog",
|
|
152
|
+
"aria-keyshortcuts": "Control+B Meta+B",
|
|
153
|
+
className: e(o, "shrink-0"),
|
|
154
|
+
onClick: () => G(!0),
|
|
155
|
+
children: M.menu
|
|
156
|
+
}) : /* @__PURE__ */ _(n, {
|
|
157
|
+
role: "ghost",
|
|
158
|
+
size: "sm",
|
|
159
|
+
icon: /* @__PURE__ */ _(h, { strokeWidth: 2 }),
|
|
138
160
|
"aria-label": M.menu,
|
|
139
|
-
"aria-expanded":
|
|
161
|
+
"aria-expanded": W,
|
|
140
162
|
"aria-haspopup": "dialog",
|
|
141
163
|
"aria-keyshortcuts": "Control+B Meta+B",
|
|
142
|
-
className:
|
|
143
|
-
onClick: () =>
|
|
164
|
+
className: o,
|
|
165
|
+
onClick: () => G(!0)
|
|
144
166
|
})] }) : null;
|
|
145
|
-
return /* @__PURE__ */
|
|
146
|
-
value:
|
|
147
|
-
children: /* @__PURE__ */
|
|
148
|
-
className: e(
|
|
167
|
+
return /* @__PURE__ */ _(E.Provider, {
|
|
168
|
+
value: Ae,
|
|
169
|
+
children: /* @__PURE__ */ v("div", {
|
|
170
|
+
className: e(ue, Te),
|
|
149
171
|
children: [
|
|
150
|
-
/* @__PURE__ */
|
|
151
|
-
href: `#${
|
|
152
|
-
className:
|
|
172
|
+
/* @__PURE__ */ _("a", {
|
|
173
|
+
href: `#${$}`,
|
|
174
|
+
className: me,
|
|
153
175
|
onClick: (e) => {
|
|
154
|
-
e.preventDefault(), document.getElementById(
|
|
176
|
+
e.preventDefault(), document.getElementById($)?.focus();
|
|
155
177
|
},
|
|
156
178
|
children: M.skipToContent
|
|
157
179
|
}),
|
|
158
|
-
R ? /* @__PURE__ */
|
|
159
|
-
ref:
|
|
160
|
-
id:
|
|
161
|
-
className: e(
|
|
180
|
+
R ? /* @__PURE__ */ v("div", {
|
|
181
|
+
ref: ke,
|
|
182
|
+
id: K,
|
|
183
|
+
className: e(fe, !B && "lg:!hidden"),
|
|
162
184
|
children: [
|
|
163
|
-
|
|
164
|
-
/* @__PURE__ */
|
|
165
|
-
className:
|
|
185
|
+
Fe,
|
|
186
|
+
/* @__PURE__ */ _("div", {
|
|
187
|
+
className: a,
|
|
166
188
|
children: F
|
|
167
189
|
}),
|
|
168
|
-
|
|
190
|
+
Ie
|
|
169
191
|
]
|
|
170
192
|
}) : null,
|
|
171
|
-
/* @__PURE__ */
|
|
172
|
-
className:
|
|
173
|
-
children: /* @__PURE__ */
|
|
174
|
-
className:
|
|
175
|
-
children: [/* @__PURE__ */
|
|
193
|
+
/* @__PURE__ */ v("div", {
|
|
194
|
+
className: ce,
|
|
195
|
+
children: [/* @__PURE__ */ v("div", {
|
|
196
|
+
className: he,
|
|
197
|
+
children: [/* @__PURE__ */ _(ee, {
|
|
176
198
|
variant: "app",
|
|
177
|
-
title:
|
|
178
|
-
"aria-label":
|
|
179
|
-
start:
|
|
180
|
-
end:
|
|
181
|
-
}), /* @__PURE__ */
|
|
182
|
-
id:
|
|
199
|
+
title: s,
|
|
200
|
+
"aria-label": s,
|
|
201
|
+
start: Le,
|
|
202
|
+
end: Ee
|
|
203
|
+
}), /* @__PURE__ */ _("main", {
|
|
204
|
+
id: $,
|
|
183
205
|
tabIndex: -1,
|
|
184
|
-
className:
|
|
206
|
+
className: le,
|
|
185
207
|
children: N.content
|
|
186
208
|
})]
|
|
187
|
-
})
|
|
209
|
+
}), X && H ? /* @__PURE__ */ _("aside", {
|
|
210
|
+
ref: Me,
|
|
211
|
+
id: Z,
|
|
212
|
+
"aria-labelledby": `${Z}-title`,
|
|
213
|
+
className: oe,
|
|
214
|
+
onKeyDown: (e) => {
|
|
215
|
+
e.key === "Escape" && !e.defaultPrevented && (e.preventDefault(), Ne());
|
|
216
|
+
},
|
|
217
|
+
children: /* @__PURE__ */ v("div", {
|
|
218
|
+
className: ne,
|
|
219
|
+
children: [/* @__PURE__ */ _(re, {
|
|
220
|
+
titleId: `${Z}-title`,
|
|
221
|
+
descriptionId: `${Z}-description`,
|
|
222
|
+
title: b ?? N.aside?.title ?? M.aside,
|
|
223
|
+
description: x ?? N.aside?.description,
|
|
224
|
+
closeLabel: "Close panel",
|
|
225
|
+
onClose: Ne,
|
|
226
|
+
delineated: !0
|
|
227
|
+
}), /* @__PURE__ */ _("div", {
|
|
228
|
+
className: e(te, "pb-4"),
|
|
229
|
+
children: L
|
|
230
|
+
})]
|
|
231
|
+
})
|
|
232
|
+
}) : null]
|
|
188
233
|
}),
|
|
189
|
-
R ? /* @__PURE__ */
|
|
190
|
-
open:
|
|
191
|
-
onOpenChange:
|
|
192
|
-
children: /* @__PURE__ */
|
|
234
|
+
R ? /* @__PURE__ */ _(ae, {
|
|
235
|
+
open: W,
|
|
236
|
+
onOpenChange: G,
|
|
237
|
+
children: /* @__PURE__ */ _(ae.Content, {
|
|
193
238
|
side: "start",
|
|
194
239
|
title: M.menu,
|
|
195
|
-
children: /* @__PURE__ */
|
|
196
|
-
className:
|
|
197
|
-
onClick:
|
|
240
|
+
children: /* @__PURE__ */ v("div", {
|
|
241
|
+
className: de,
|
|
242
|
+
onClick: je,
|
|
198
243
|
children: [
|
|
199
|
-
|
|
200
|
-
/* @__PURE__ */
|
|
201
|
-
className:
|
|
244
|
+
Fe,
|
|
245
|
+
/* @__PURE__ */ _("div", {
|
|
246
|
+
className: a,
|
|
202
247
|
children: F
|
|
203
248
|
}),
|
|
204
|
-
|
|
249
|
+
Ie
|
|
205
250
|
]
|
|
206
251
|
})
|
|
207
252
|
})
|
|
208
253
|
}) : null,
|
|
209
|
-
|
|
210
|
-
open:
|
|
211
|
-
onOpenChange:
|
|
212
|
-
children: /* @__PURE__ */
|
|
254
|
+
z && !X ? /* @__PURE__ */ _(ie, {
|
|
255
|
+
open: H,
|
|
256
|
+
onOpenChange: U,
|
|
257
|
+
children: /* @__PURE__ */ _(ie.Content, {
|
|
213
258
|
side: "end",
|
|
214
|
-
title:
|
|
215
|
-
description:
|
|
259
|
+
title: b ?? N.aside?.title ?? M.aside,
|
|
260
|
+
description: x ?? N.aside?.description,
|
|
216
261
|
children: L
|
|
217
262
|
})
|
|
218
263
|
}) : null
|
|
@@ -228,4 +273,4 @@ var j = Object.assign(A, {
|
|
|
228
273
|
Aside: T
|
|
229
274
|
});
|
|
230
275
|
//#endregion
|
|
231
|
-
export { j as AppShell, D as useAppShell };
|
|
276
|
+
export { j as AppShell, y as appShellAsideModes, b as appShellMenuButtons, D as useAppShell };
|
|
@@ -7,8 +7,13 @@ export declare const appShellBrandClasses: string;
|
|
|
7
7
|
export declare const appShellSidebarBodyClasses = "min-h-0 flex-1 overflow-y-auto";
|
|
8
8
|
/** Pinned under the scrolling nav — the same 16px inset as the brand row. */
|
|
9
9
|
export declare const appShellSidebarFooterClasses = "box-border shrink-0 px-4 py-3";
|
|
10
|
-
/** 8px inset around the raised surface. */
|
|
11
|
-
export declare const appShellCanvasClasses = "flex min-h-0 min-w-0 flex-1 p-2";
|
|
10
|
+
/** 8px inset around the raised surface (and a docked aside beside it, 8px apart). */
|
|
11
|
+
export declare const appShellCanvasClasses = "flex min-h-0 min-w-0 flex-1 gap-2 p-2";
|
|
12
|
+
/**
|
|
13
|
+
* `asideMode="docked"` from `lg`: a second raised surface beside the page, which narrows to make room,
|
|
14
|
+
* so the page stays visible and usable while the aside is open (live controls, a font panel).
|
|
15
|
+
*/
|
|
16
|
+
export declare const appShellAsideDockedClasses: string;
|
|
12
17
|
/** Raised surface — the Card shell radius and the soft card shadow. */
|
|
13
18
|
export declare const appShellSurfaceClasses: string;
|
|
14
19
|
/** First tab stop: hidden until focused, then pinned over the top-start corner. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appShellStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/AppShell/appShellStyles.ts"],"names":[],"mappings":"AAIA,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,yDAAyD,CAAC;AAE1F,sFAAsF;AACtF,eAAO,MAAM,sBAAsB,mEAAmE,CAAC;AAEvG,wEAAwE;AACxE,eAAO,MAAM,oBAAoB,QAGhC,CAAC;AAEF,eAAO,MAAM,0BAA0B,mCAAmC,CAAC;AAE3E,6EAA6E;AAC7E,eAAO,MAAM,4BAA4B,kCAAkC,CAAC;AAE5E,
|
|
1
|
+
{"version":3,"file":"appShellStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/AppShell/appShellStyles.ts"],"names":[],"mappings":"AAIA,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,yDAAyD,CAAC;AAE1F,sFAAsF;AACtF,eAAO,MAAM,sBAAsB,mEAAmE,CAAC;AAEvG,wEAAwE;AACxE,eAAO,MAAM,oBAAoB,QAGhC,CAAC;AAEF,eAAO,MAAM,0BAA0B,mCAAmC,CAAC;AAE3E,6EAA6E;AAC7E,eAAO,MAAM,4BAA4B,kCAAkC,CAAC;AAE5E,qFAAqF;AACrF,eAAO,MAAM,qBAAqB,0CAA0C,CAAC;AAE7E;;;GAGG;AACH,eAAO,MAAM,0BAA0B,QAGtC,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,sBAAsB,QAGlC,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,uBAAuB,QAGqB,CAAC;AAE1D,eAAO,MAAM,mBAAmB,2FAC0D,CAAC;AAE3F,eAAO,MAAM,4BAA4B,mBAAmB,CAAC;AAE7D,eAAO,MAAM,2BAA2B,eAAe,CAAC;AAExD,eAAO,MAAM,wBAAwB,iCAAiC,CAAC"}
|
|
@@ -3,6 +3,6 @@ import { cn as e } from "../../../lib/cn.js";
|
|
|
3
3
|
import { cardLayoutShellShapeClasses as t } from "../../molecules/Card/cardStyles.js";
|
|
4
4
|
import { pageHeaderAppBandHeightClasses as n } from "../../molecules/PageHeader/pageHeaderStyles.js";
|
|
5
5
|
//#region src/components/organisms/AppShell/appShellStyles.ts
|
|
6
|
-
var r = "flex h-full min-h-0 w-full bg-body font-sans text-fg", i = "flex h-full min-h-0 w-60 shrink-0 flex-col pt-2 max-lg:!hidden", a = e("box-border flex shrink-0 items-center gap-2 px-4", n), o = "min-h-0 flex-1 overflow-y-auto", s = "box-border shrink-0 px-4 py-3", c = "flex min-h-0 min-w-0 flex-1 p-2", l = e("flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-surface shadow-soft-card", t.rounded),
|
|
6
|
+
var r = "flex h-full min-h-0 w-full bg-body font-sans text-fg", i = "flex h-full min-h-0 w-60 shrink-0 flex-col pt-2 max-lg:!hidden", a = e("box-border flex shrink-0 items-center gap-2 px-4", n), o = "min-h-0 flex-1 overflow-y-auto", s = "box-border shrink-0 px-4 py-3", c = "flex min-h-0 min-w-0 flex-1 gap-2 p-2", l = e("flex min-h-0 w-80 shrink-0 flex-col overflow-hidden bg-surface shadow-soft-card", t.rounded), u = e("flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-surface shadow-soft-card", t.rounded), d = "sr-only focus:not-sr-only focus:fixed focus:start-4 focus:top-4 focus:z-50 focus:rounded-[var(--radius-control)] focus:bg-body focus:px-4 focus:py-2 focus:text-sm focus:font-medium focus:text-fg focus:outline-none focus:ring-2 focus:ring-focus-ring", f = "min-h-0 flex-1 overflow-y-auto px-[var(--grid-margin)] py-6 focus-visible:outline-none", p = "max-lg:!hidden", m = "lg:!hidden", h = "flex h-full min-h-0 flex-col";
|
|
7
7
|
//#endregion
|
|
8
|
-
export { a as appShellBrandClasses, c as appShellCanvasClasses,
|
|
8
|
+
export { l as appShellAsideDockedClasses, a as appShellBrandClasses, c as appShellCanvasClasses, f as appShellMainClasses, r as appShellRootClasses, h as appShellSheetBodyClasses, o as appShellSidebarBodyClasses, i as appShellSidebarClasses, s as appShellSidebarFooterClasses, d as appShellSkipLinkClasses, u as appShellSurfaceClasses, p as appShellToggleDesktopClasses, m as appShellToggleMobileClasses };
|