@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.
Files changed (179) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/components/molecules/PageHeader/pageHeaderStyles.d.ts.map +1 -1
  3. package/dist/components/molecules/PageHeader/pageHeaderStyles.js +1 -1
  4. package/dist/components/organisms/AppShell/AppShell.d.ts +18 -2
  5. package/dist/components/organisms/AppShell/AppShell.d.ts.map +1 -1
  6. package/dist/components/organisms/AppShell/AppShell.js +160 -115
  7. package/dist/components/organisms/AppShell/appShellStyles.d.ts +7 -2
  8. package/dist/components/organisms/AppShell/appShellStyles.d.ts.map +1 -1
  9. package/dist/components/organisms/AppShell/appShellStyles.js +2 -2
  10. package/dist/components/organisms/Dialog/Dialog.js +31 -31
  11. package/dist/components/organisms/Panel/Panel.js +28 -28
  12. package/dist/components/organisms/Sheet/Sheet.js +28 -28
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +47 -47
  16. package/docs/components.md +1 -1
  17. package/docs/exports.json +1 -1
  18. package/docs/patterns/components-accordion--flush.tsx +1 -1
  19. package/docs/patterns/components-appshell--portal-dashboard-pattern.tsx +1 -1
  20. package/docs/patterns/components-avatar--dropdown-row.tsx +1 -1
  21. package/docs/patterns/components-badge--outline-tags.tsx +1 -1
  22. package/docs/patterns/components-badge--status-pill.tsx +1 -1
  23. package/docs/patterns/components-badge--with-avatar.tsx +1 -1
  24. package/docs/patterns/components-band--page-in-bands.tsx +1 -1
  25. package/docs/patterns/components-breadcrumb--editorial.tsx +1 -1
  26. package/docs/patterns/components-breadcrumb--long-path.tsx +1 -1
  27. package/docs/patterns/components-breadcrumb--path.tsx +1 -1
  28. package/docs/patterns/components-breadcrumb--router-links.tsx +1 -1
  29. package/docs/patterns/components-button-button--copy-button.tsx +1 -1
  30. package/docs/patterns/components-button-button--destructive-action.tsx +1 -1
  31. package/docs/patterns/components-button-button--external-link.tsx +1 -1
  32. package/docs/patterns/components-button-button--ghost-action.tsx +1 -1
  33. package/docs/patterns/components-button-button--inverse-action.tsx +1 -1
  34. package/docs/patterns/components-button-button--link-render.tsx +1 -1
  35. package/docs/patterns/components-button-button--multi-state-badge.tsx +1 -1
  36. package/docs/patterns/components-button-button--outline-mono.tsx +1 -1
  37. package/docs/patterns/components-button-button--primary-action.tsx +1 -1
  38. package/docs/patterns/components-button-button--row-hug.tsx +1 -1
  39. package/docs/patterns/components-button-button--row-layout.tsx +1 -1
  40. package/docs/patterns/components-button-button--secondary-action.tsx +1 -1
  41. package/docs/patterns/components-button-button--suggestion-pills.tsx +1 -1
  42. package/docs/patterns/components-button-button--with-count.tsx +1 -1
  43. package/docs/patterns/components-button-button--with-icon.tsx +1 -1
  44. package/docs/patterns/components-button-floatingactionbutton--vertical-actions.tsx +1 -1
  45. package/docs/patterns/components-calembed--pattern-skip-above.tsx +1 -1
  46. package/docs/patterns/components-card-card--body-slot-occupancy-history.tsx +1 -1
  47. package/docs/patterns/components-card-card--headerless-media.tsx +1 -1
  48. package/docs/patterns/components-card-card--outlined-layout.tsx +1 -1
  49. package/docs/patterns/components-card-card--pinned-height.tsx +1 -1
  50. package/docs/patterns/components-card-card--terminal-frame.tsx +1 -1
  51. package/docs/patterns/components-card-selectablecard--selectable-cards-pattern.tsx +1 -1
  52. package/docs/patterns/components-carousel--image-carousel.tsx +1 -1
  53. package/docs/patterns/components-chart--audience-activity-heatmap.tsx +1 -1
  54. package/docs/patterns/components-chart--cartesian-no-data-gaps.tsx +1 -1
  55. package/docs/patterns/components-chart--occupancy-history-in-card.tsx +1 -1
  56. package/docs/patterns/components-chart--occupancy-in-card.tsx +1 -1
  57. package/docs/patterns/components-chart--post-reach-distribution.tsx +1 -1
  58. package/docs/patterns/components-chart--ranked-audience-breakdown.tsx +1 -1
  59. package/docs/patterns/components-chart--revenue-by-line.tsx +1 -1
  60. package/docs/patterns/components-chart--segmented-ring-pattern.tsx +1 -1
  61. package/docs/patterns/components-chart--unit-grid-composition.tsx +1 -1
  62. package/docs/patterns/components-chatdock--pattern-chat-dock.tsx +1 -1
  63. package/docs/patterns/components-chatdock--pattern-start-project-gate.tsx +1 -1
  64. package/docs/patterns/components-chatqa--pattern-qa-with-reply.tsx +1 -1
  65. package/docs/patterns/components-checkbox-checkbox--default.tsx +1 -1
  66. package/docs/patterns/components-checkbox-checkbox--with-count.tsx +1 -1
  67. package/docs/patterns/components-checkbox-checkbox--with-description.tsx +1 -1
  68. package/docs/patterns/components-checkbox-checkboxgroup--default.tsx +1 -1
  69. package/docs/patterns/components-checkbox-checkboxgroup--option-counts.tsx +1 -1
  70. package/docs/patterns/components-copyfield--clipboard-blocked.tsx +1 -1
  71. package/docs/patterns/components-copyfield--copied.tsx +1 -1
  72. package/docs/patterns/components-copyfield--copy-key.tsx +1 -1
  73. package/docs/patterns/components-copyfield--on-navy.tsx +1 -1
  74. package/docs/patterns/components-descriptionlist--details.tsx +1 -1
  75. package/docs/patterns/components-descriptionlist--post-metadata.tsx +1 -1
  76. package/docs/patterns/components-dialog--alert-dialog-destructive.tsx +1 -1
  77. package/docs/patterns/components-dialog--alert-dialog-typed-confirmation.tsx +1 -1
  78. package/docs/patterns/components-dialog--default-dialog.tsx +1 -1
  79. package/docs/patterns/components-dialog--form-dialog.tsx +1 -1
  80. package/docs/patterns/components-displaycontrols--page-utilities.tsx +1 -1
  81. package/docs/patterns/components-displaycontrols--theme-switch.tsx +1 -1
  82. package/docs/patterns/components-errorsummary--contact-form.tsx +1 -1
  83. package/docs/patterns/components-field--horizontal-input.tsx +1 -1
  84. package/docs/patterns/components-field--horizontal-text-area.tsx +1 -1
  85. package/docs/patterns/components-field--multi-control.tsx +1 -1
  86. package/docs/patterns/components-filterpanel--panel.tsx +1 -1
  87. package/docs/patterns/components-footerreveal--marketing-hero-pattern.tsx +1 -1
  88. package/docs/patterns/components-footerreveal--marketing-hero-ruled-pattern.tsx +1 -1
  89. package/docs/patterns/components-footerreveal--marketing-hero-with-gallery-intro.tsx +1 -1
  90. package/docs/patterns/components-footerreveal--marketing-page-pattern.tsx +1 -1
  91. package/docs/patterns/components-footerreveal--ruled-grid-footer-pattern.tsx +1 -1
  92. package/docs/patterns/components-footerreveal--sequenced-marketing-hero.tsx +1 -1
  93. package/docs/patterns/components-herointro--two-line-intro.tsx +1 -1
  94. package/docs/patterns/components-herointro--with-actions.tsx +1 -1
  95. package/docs/patterns/components-herotilestack--marketing-hero-pattern.tsx +1 -1
  96. package/docs/patterns/components-herotilestack--marketing-hero-text-sequence.tsx +1 -1
  97. package/docs/patterns/components-herotilestack--marketing-hero-with-gallery-intro.tsx +1 -1
  98. package/docs/patterns/components-indexlist--post-index.tsx +1 -1
  99. package/docs/patterns/components-intakeconfirmation--booked-pattern.tsx +1 -1
  100. package/docs/patterns/components-intakeconfirmation--emailed-pattern.tsx +1 -1
  101. package/docs/patterns/components-intakeform--about-you-pattern.tsx +1 -1
  102. package/docs/patterns/components-intakeform--short-form-pattern.tsx +1 -1
  103. package/docs/patterns/components-intakemodal--intake-modal-pattern.tsx +1 -1
  104. package/docs/patterns/components-kbd--command-row.tsx +1 -1
  105. package/docs/patterns/components-kbd--numbered-choices.tsx +1 -1
  106. package/docs/patterns/components-kbd--shortcut.tsx +1 -1
  107. package/docs/patterns/components-linktile--resource-tile.tsx +1 -1
  108. package/docs/patterns/components-linktile--router-link.tsx +1 -1
  109. package/docs/patterns/components-logview--detail-pane.tsx +1 -1
  110. package/docs/patterns/components-logview--log-viewer.tsx +1 -1
  111. package/docs/patterns/components-moremenu--action-menu.tsx +1 -1
  112. package/docs/patterns/components-moremenu--in-card-header.tsx +1 -1
  113. package/docs/patterns/components-navlist--app-sidebar.tsx +1 -1
  114. package/docs/patterns/components-navlist--side-nav-settings.tsx +1 -1
  115. package/docs/patterns/components-pageheader--app-header-pattern.tsx +1 -1
  116. package/docs/patterns/components-pageheader--page-section-header.tsx +1 -1
  117. package/docs/patterns/components-pageheader--toolbar-header.tsx +1 -1
  118. package/docs/patterns/components-panel--end-detail-rail.tsx +1 -1
  119. package/docs/patterns/components-pillgroup--pill-group-pattern.tsx +1 -1
  120. package/docs/patterns/components-promptbar--pattern-prompt-bar.tsx +1 -1
  121. package/docs/patterns/components-prose--article-body.tsx +1 -1
  122. package/docs/patterns/components-radio-radiogroup--default.tsx +1 -1
  123. package/docs/patterns/components-scrollhorizontal--project-gallery-pattern.tsx +1 -1
  124. package/docs/patterns/components-scrollhorizontal--with-intro.tsx +1 -1
  125. package/docs/patterns/components-sectioncaption--column-caption.tsx +1 -1
  126. package/docs/patterns/components-sectioncaption--with-action.tsx +1 -1
  127. package/docs/patterns/components-sheet--bottom-sheet.tsx +1 -1
  128. package/docs/patterns/components-sheet--end-sheet.tsx +1 -1
  129. package/docs/patterns/components-sheet--side-sheet-header-actions.tsx +1 -1
  130. package/docs/patterns/components-sheet--side-sheet-url-deep-link.tsx +1 -1
  131. package/docs/patterns/components-sheet--side-sheet.tsx +1 -1
  132. package/docs/patterns/components-sitenav--brand-and-cta.tsx +1 -1
  133. package/docs/patterns/components-sitenav--centered-links.tsx +1 -1
  134. package/docs/patterns/components-sitenav--compact.tsx +1 -1
  135. package/docs/patterns/components-sitenav--marketing-header.tsx +1 -1
  136. package/docs/patterns/components-sitenav--mega-menu.tsx +1 -1
  137. package/docs/patterns/components-stat--hero-stat.tsx +1 -1
  138. package/docs/patterns/components-stat--insights-row.tsx +1 -1
  139. package/docs/patterns/components-stepprogress--step-progress-pattern.tsx +1 -1
  140. package/docs/patterns/components-switch--default.tsx +1 -1
  141. package/docs/patterns/components-switch--settings-row.tsx +1 -1
  142. package/docs/patterns/components-tab--settings-pages.tsx +1 -1
  143. package/docs/patterns/components-table--approvals-with-sheet.tsx +1 -1
  144. package/docs/patterns/components-table--approvals.tsx +1 -1
  145. package/docs/patterns/components-table--basic.tsx +1 -1
  146. package/docs/patterns/components-taskrows--action-details.tsx +1 -1
  147. package/docs/patterns/components-taskrows--capsules.tsx +1 -1
  148. package/docs/patterns/components-taskrows--card-with-status-rows.tsx +1 -1
  149. package/docs/patterns/components-taskrows--controlled-expand.tsx +1 -1
  150. package/docs/patterns/components-taskrows--custom-slots.tsx +1 -1
  151. package/docs/patterns/components-taskrows--needs-you-table.tsx +1 -1
  152. package/docs/patterns/components-taskrows--status-list.tsx +1 -1
  153. package/docs/patterns/components-taskrows--tag-chips.tsx +1 -1
  154. package/docs/patterns/components-textarea--save-status.tsx +1 -1
  155. package/docs/patterns/components-textlink--external-destination.tsx +1 -1
  156. package/docs/patterns/components-textlink--inline-prose.tsx +1 -1
  157. package/docs/patterns/components-textlink--quiet-title.tsx +1 -1
  158. package/docs/patterns/components-textlink--supporting-copy.tsx +1 -1
  159. package/docs/patterns/components-textsequence--default.tsx +1 -1
  160. package/docs/patterns/components-textsequence--reduced-motion.tsx +1 -1
  161. package/docs/patterns/components-textsequence--shapes.tsx +1 -1
  162. package/docs/patterns/components-tilegrid--masonry.tsx +1 -1
  163. package/docs/patterns/components-toast--stacked-notifications.tsx +1 -1
  164. package/docs/patterns/components-tooltip--controlled.tsx +1 -1
  165. package/docs/patterns/components-tooltip--disabled-control.tsx +1 -1
  166. package/docs/patterns/components-tooltip--icon-action.tsx +1 -1
  167. package/docs/patterns/components-tooltip--keyboard-shortcut.tsx +1 -1
  168. package/docs/patterns/components-tooltip--placement.tsx +1 -1
  169. package/docs/patterns/foundations-scroll-fade--horizontal-rail.tsx +1 -1
  170. package/docs/patterns/foundations-scroll-fade--overflowing-list.tsx +1 -1
  171. package/docs/patterns/guides-chart-explorations--comparison-gallery.tsx +1 -1
  172. package/docs/patterns/guides-filter-panel--filtered-grid.tsx +1 -1
  173. package/docs/patterns/guides-filter-panel--filtered-index.tsx +1 -1
  174. package/docs/patterns/guides-overlay-flows--notification-preferences.tsx +1 -1
  175. package/docs/patterns/guides-post-page--post-page.tsx +1 -1
  176. package/docs/patterns/guides-profile-typography--editorial-profile.tsx +1 -1
  177. package/docs/patterns/guides-resource-detail--detail.tsx +1 -1
  178. package/docs/patterns/index.json +1 -1
  179. 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,CAIpE,CAAC"}
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":"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"}
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 { IconButton as t } from "../../atoms/IconButton/IconButton.js";
4
- import { Kbd as n } from "../../atoms/Kbd/Kbd.js";
5
- import { Tooltip as r } from "../../atoms/Tooltip/Tooltip.js";
6
- import { PageHeader as i } from "../../molecules/PageHeader/PageHeader.js";
7
- import { Panel as a } from "../Panel/Panel.js";
8
- import { Sheet as o } from "../Sheet/Sheet.js";
9
- import { appShellBrandClasses as ee, appShellCanvasClasses as te, appShellMainClasses as ne, appShellRootClasses as re, appShellSheetBodyClasses as ie, appShellSidebarBodyClasses as s, appShellSidebarClasses as ae, appShellSidebarFooterClasses as oe, appShellSkipLinkClasses as se, appShellSurfaceClasses as ce, appShellToggleDesktopClasses as le, appShellToggleMobileClasses as ue } from "./appShellStyles.js";
10
- import { Children as c, createContext as l, isValidElement as u, useCallback as d, useContext as f, useEffect as p, useId as de, useMemo as m, useRef as h, useState as g } from "react";
11
- import { PanelLeft as _ } from "lucide-react";
12
- import { Fragment as v, jsx as y, jsxs as b } from "react/jsx-runtime";
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 fe = {
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__ */ y(v, { children: e });
25
+ return /* @__PURE__ */ _(g, { children: e });
23
26
  }
24
27
  function S({ children: e }) {
25
- return /* @__PURE__ */ y(v, { children: e });
28
+ return /* @__PURE__ */ _(g, { children: e });
26
29
  }
27
30
  function C({ children: e }) {
28
- return /* @__PURE__ */ y(v, { children: e });
31
+ return /* @__PURE__ */ _(g, { children: e });
29
32
  }
30
33
  function w({ children: e }) {
31
- return /* @__PURE__ */ y(v, { children: e });
34
+ return /* @__PURE__ */ _(g, { children: e });
32
35
  }
33
36
  function T({ children: e }) {
34
- return /* @__PURE__ */ y(v, { children: e });
37
+ return /* @__PURE__ */ _(g, { children: e });
35
38
  }
36
- var E = l(null);
39
+ var E = c(null);
37
40
  function D() {
38
- let e = f(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] = g(t);
44
- return [e ?? r, d((t) => {
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 pe(e) {
52
+ function be(e) {
50
53
  return e instanceof HTMLElement && e.isContentEditable;
51
54
  }
52
- function me(e) {
55
+ function xe(e) {
53
56
  let t = { content: [] };
54
- return c.forEach(e, (e) => {
55
- if (!u(e)) {
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: c, brand: l, sidebar: u, sidebarFooter: f, header: v, aside: x, asideTitle: S, asideDescription: C, sidebarOpen: w, defaultSidebarOpen: T = !0, onSidebarOpenChange: D, asideOpen: A, defaultAsideOpen: j = !1, onAsideOpenChange: he, labels: ge, children: _e, className: ve }) {
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
- ...fe,
65
- ...ge
66
- }, N = me(_e), P = l ?? N.brand, F = u ?? N.sidebar, I = f ?? N.sidebarFooter, ye = v ?? N.header, L = x ?? N.aside?.children, R = F != null, be = L != null, [z, B] = O(w, T, D), [V, H] = O(A, j, he), [U, W] = g(!1), G = de(), K = h(null), q = h(null), J = d((e) => {
67
- !e && K.current?.contains(document.activeElement) && q.current?.focus(), B(e);
68
- }, [B]), Y = d(() => {
69
- window.matchMedia(k).matches ? J(!z) : W((e) => !e);
70
- }, [J, z]);
71
- p(() => {
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 && W(!1);
78
+ Oe(e.matches), e.matches && G(!1);
75
79
  }
76
80
  return e.addEventListener("change", t), () => e.removeEventListener("change", t);
77
- }, []), p(() => {
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" || pe(e.target) || (e.preventDefault(), Y());
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 xe = m(() => ({
85
- sidebarOpen: z,
88
+ let Ae = ve(() => ({
89
+ sidebarOpen: B,
86
90
  setSidebarOpen: J,
87
- menuOpen: U,
88
- setMenuOpen: W,
89
- asideOpen: V,
90
- setAsideOpen: H,
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
- z,
101
+ B,
98
102
  Y
99
103
  ]);
100
- function Se(e) {
101
- e.target.closest("nav a[href], nav button") != null && W(!1);
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 X = z ? M.collapse : M.expand, Z = `${G}-main`, Q = P == null ? null : /* @__PURE__ */ y("div", {
104
- className: ee,
115
+ let Pe = B ? M.collapse : M.expand, $ = `${K}-main`, Fe = P == null ? null : /* @__PURE__ */ _("div", {
116
+ className: se,
105
117
  children: P
106
- }), $ = I == null ? null : /* @__PURE__ */ y("div", {
107
- className: oe,
118
+ }), Ie = I == null ? null : /* @__PURE__ */ _("div", {
119
+ className: pe,
108
120
  children: I
109
- }), Ce = R ? /* @__PURE__ */ b(r.Provider, { children: [/* @__PURE__ */ b(r, { children: [/* @__PURE__ */ y(r.Trigger, { render: /* @__PURE__ */ y(t, {
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__ */ y(_, { strokeWidth: 2 }),
115
- "aria-label": X,
116
- "aria-expanded": z,
117
- "aria-controls": G,
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: le,
120
- onClick: () => J(!z)
121
- }) }), /* @__PURE__ */ y(r.Content, { children: /* @__PURE__ */ b("span", {
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
- X,
125
- /* @__PURE__ */ y(n, {
136
+ Pe,
137
+ /* @__PURE__ */ _(r, {
126
138
  size: "sm",
127
139
  children: "Ctrl"
128
140
  }),
129
- /* @__PURE__ */ y(n, {
141
+ /* @__PURE__ */ _(r, {
130
142
  size: "sm",
131
143
  children: "B"
132
144
  })
133
145
  ]
134
- }) })] }), /* @__PURE__ */ y(t, {
146
+ }) })] }), Se === "label" ? /* @__PURE__ */ _(t, {
135
147
  role: "ghost",
136
148
  size: "sm",
137
- icon: /* @__PURE__ */ y(_, { strokeWidth: 2 }),
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": U,
161
+ "aria-expanded": W,
140
162
  "aria-haspopup": "dialog",
141
163
  "aria-keyshortcuts": "Control+B Meta+B",
142
- className: ue,
143
- onClick: () => W(!0)
164
+ className: o,
165
+ onClick: () => G(!0)
144
166
  })] }) : null;
145
- return /* @__PURE__ */ y(E.Provider, {
146
- value: xe,
147
- children: /* @__PURE__ */ b("div", {
148
- className: e(re, ve),
167
+ return /* @__PURE__ */ _(E.Provider, {
168
+ value: Ae,
169
+ children: /* @__PURE__ */ v("div", {
170
+ className: e(ue, Te),
149
171
  children: [
150
- /* @__PURE__ */ y("a", {
151
- href: `#${Z}`,
152
- className: se,
172
+ /* @__PURE__ */ _("a", {
173
+ href: `#${$}`,
174
+ className: me,
153
175
  onClick: (e) => {
154
- e.preventDefault(), document.getElementById(Z)?.focus();
176
+ e.preventDefault(), document.getElementById($)?.focus();
155
177
  },
156
178
  children: M.skipToContent
157
179
  }),
158
- R ? /* @__PURE__ */ b("div", {
159
- ref: K,
160
- id: G,
161
- className: e(ae, !z && "lg:!hidden"),
180
+ R ? /* @__PURE__ */ v("div", {
181
+ ref: ke,
182
+ id: K,
183
+ className: e(fe, !B && "lg:!hidden"),
162
184
  children: [
163
- Q,
164
- /* @__PURE__ */ y("div", {
165
- className: s,
185
+ Fe,
186
+ /* @__PURE__ */ _("div", {
187
+ className: a,
166
188
  children: F
167
189
  }),
168
- $
190
+ Ie
169
191
  ]
170
192
  }) : null,
171
- /* @__PURE__ */ y("div", {
172
- className: te,
173
- children: /* @__PURE__ */ b("div", {
174
- className: ce,
175
- children: [/* @__PURE__ */ y(i, {
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: c,
178
- "aria-label": c,
179
- start: Ce,
180
- end: ye
181
- }), /* @__PURE__ */ y("main", {
182
- id: Z,
199
+ title: s,
200
+ "aria-label": s,
201
+ start: Le,
202
+ end: Ee
203
+ }), /* @__PURE__ */ _("main", {
204
+ id: $,
183
205
  tabIndex: -1,
184
- className: ne,
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__ */ y(o, {
190
- open: U,
191
- onOpenChange: W,
192
- children: /* @__PURE__ */ y(o.Content, {
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__ */ b("div", {
196
- className: ie,
197
- onClick: Se,
240
+ children: /* @__PURE__ */ v("div", {
241
+ className: de,
242
+ onClick: je,
198
243
  children: [
199
- Q,
200
- /* @__PURE__ */ y("div", {
201
- className: s,
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
- be ? /* @__PURE__ */ y(a, {
210
- open: V,
211
- onOpenChange: H,
212
- children: /* @__PURE__ */ y(a.Content, {
254
+ z && !X ? /* @__PURE__ */ _(ie, {
255
+ open: H,
256
+ onOpenChange: U,
257
+ children: /* @__PURE__ */ _(ie.Content, {
213
258
  side: "end",
214
- title: S ?? N.aside?.title ?? M.aside,
215
- description: C ?? N.aside?.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,2CAA2C;AAC3C,eAAO,MAAM,qBAAqB,oCAAoC,CAAC;AAEvE,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"}
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), u = "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", d = "min-h-0 flex-1 overflow-y-auto px-[var(--grid-margin)] py-6 focus-visible:outline-none", f = "max-lg:!hidden", p = "lg:!hidden", m = "flex h-full min-h-0 flex-col";
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, d as appShellMainClasses, r as appShellRootClasses, m as appShellSheetBodyClasses, o as appShellSidebarBodyClasses, i as appShellSidebarClasses, s as appShellSidebarFooterClasses, u as appShellSkipLinkClasses, l as appShellSurfaceClasses, f as appShellToggleDesktopClasses, p as appShellToggleMobileClasses };
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 };