gridsmith-ui 0.23.0 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/Breadcrumbs-CGS8GKl-.d.ts +33 -0
  2. package/dist/chat.js +1 -1
  3. package/dist/{chunk-CKWITUSH.js → chunk-2PWGJ4PK.js} +10 -5
  4. package/dist/chunk-2PWGJ4PK.js.map +1 -0
  5. package/dist/chunk-2YSEME33.js +118 -0
  6. package/dist/chunk-2YSEME33.js.map +1 -0
  7. package/dist/{chunk-ICNWPNMM.js → chunk-6XAU44U4.js} +4 -3
  8. package/dist/chunk-6XAU44U4.js.map +1 -0
  9. package/dist/{chunk-RT7RYGC3.js → chunk-JXANCXK6.js} +4 -39
  10. package/dist/chunk-JXANCXK6.js.map +1 -0
  11. package/dist/{chunk-6PL7FXYH.js → chunk-MV7JXWXK.js} +318 -9
  12. package/dist/chunk-MV7JXWXK.js.map +1 -0
  13. package/dist/{chunk-EYMGLK4M.js → chunk-SVP2IG4S.js} +2 -2
  14. package/dist/{chunk-EYMGLK4M.js.map → chunk-SVP2IG4S.js.map} +1 -1
  15. package/dist/chunk-WOVYHFUD.js +50 -0
  16. package/dist/chunk-WOVYHFUD.js.map +1 -0
  17. package/dist/chunk-XVB55M3N.js +42 -0
  18. package/dist/chunk-XVB55M3N.js.map +1 -0
  19. package/dist/data-grid.js +4 -3
  20. package/dist/data-grid.js.map +1 -1
  21. package/dist/editor.js +2 -1
  22. package/dist/editor.js.map +1 -1
  23. package/dist/index.d.ts +199 -38
  24. package/dist/index.js +598 -369
  25. package/dist/index.js.map +1 -1
  26. package/dist/kanban.js +22 -5
  27. package/dist/kanban.js.map +1 -1
  28. package/dist/resizable.d.ts +16 -1
  29. package/dist/resizable.js +87 -20
  30. package/dist/resizable.js.map +1 -1
  31. package/dist/roots.css +5 -0
  32. package/dist/virtualized.js +4 -3
  33. package/dist/virtualized.js.map +1 -1
  34. package/package.json +1 -1
  35. package/dist/chunk-6PL7FXYH.js.map +0 -1
  36. package/dist/chunk-CKWITUSH.js.map +0 -1
  37. package/dist/chunk-ICNWPNMM.js.map +0 -1
  38. package/dist/chunk-RT7RYGC3.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,11 +1,12 @@
1
1
  import * as react from 'react';
2
- import { ButtonHTMLAttributes, ReactNode, InputHTMLAttributes, LabelHTMLAttributes, TextareaHTMLAttributes, Ref, ReactElement, CSSProperties, HTMLAttributes, RefObject, KeyboardEvent, AnchorHTMLAttributes, ComponentType } from 'react';
2
+ import { ButtonHTMLAttributes, ReactNode, InputHTMLAttributes, LabelHTMLAttributes, TextareaHTMLAttributes, Ref, ReactElement, CSSProperties, HTMLAttributes, RefObject, KeyboardEvent, AnchorHTMLAttributes, ElementType } from 'react';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { IconName } from './icons.js';
5
5
  import { C as ColumnKind, B as BreakpointKey } from './table-utils-BkjNEWts.js';
6
6
  export { a as BreakpointWidthProvider, u as useBreakpoint } from './table-utils-BkjNEWts.js';
7
7
  import { P as Pager, A as AppShellPreferences } from './use-pagination-DiJo0aW5.js';
8
8
  export { a as PaginationOptions, b as PreferencesContext, R as ResolvedPreferences, p as preferenceActionKey, u as usePagination, c as usePreferences } from './use-pagination-DiJo0aW5.js';
9
+ export { B as BreadcrumbItem, a as Breadcrumbs, b as BreadcrumbsSeparator, c as BreadcrumbsSize, d as BreadcrumbsVariant } from './Breadcrumbs-CGS8GKl-.js';
9
10
 
10
11
  type ButtonVariant = "default" | "secondary" | "tertiary" | "outline" | "ghost" | "destructive" | "success" | "warning" | "link";
11
12
  type ButtonSize = "xs" | "sm" | "md" | "lg" | "icon-xs" | "icon-sm" | "icon" | "icon-lg";
@@ -594,13 +595,19 @@ interface FormWrapperProps {
594
595
  */
595
596
  errorSummary?: boolean | ((errors: FormFieldError[]) => ReactNode);
596
597
  /**
597
- * Classes for the form. In a SettingsLayout panel the form keeps the narrow page's reading width however wide the
598
- * page is (the panel's --ds-form-max, Sprint 25.9); a `max-w-*` class here wins.
598
+ * The form takes the full width it is given, for the rare form whose fields need it: several columns side by side,
599
+ * line items. Without it the form, its buttons with it, keeps the narrow reading width wherever it sits.
600
+ */
601
+ fullWidth?: boolean;
602
+ /**
603
+ * Classes for the form. Wherever it sits — a page of its own, a card, beside a list, under a tab, a settings panel —
604
+ * the form keeps the narrow page's reading width however wide its box is (--ds-form-max, Sprint 25.9 A4; everywhere
605
+ * since Sprint 25.16 A8); in a Drawer or a Dialog it takes the overlay's width. A `max-w-*` class here wins.
599
606
  */
600
607
  className?: string;
601
608
  ref?: React.Ref<HTMLFormElement>;
602
609
  }
603
- declare function FormWrapper({ onSubmit, validationMode: validationModeProp, children, actions: actionsProp, actionsAlign: actionsAlignProp, onCancel, cancelLabel, focusFirstError, errorSummary, className, ref }: FormWrapperProps): react_jsx_runtime.JSX.Element;
610
+ declare function FormWrapper({ onSubmit, validationMode: validationModeProp, children, actions: actionsProp, actionsAlign: actionsAlignProp, onCancel, cancelLabel, focusFirstError, errorSummary, fullWidth, className, ref }: FormWrapperProps): react_jsx_runtime.JSX.Element;
604
611
 
605
612
  interface AddAnotherProps<T> {
606
613
  /** The rows. Each keeps its own id (`getId`), never its index, so its values, field ids and errors stay with it when another row goes. */
@@ -1309,12 +1316,18 @@ interface TreeViewProps {
1309
1316
  checkable?: boolean;
1310
1317
  defaultExpanded?: string[];
1311
1318
  defaultSelected?: string[];
1319
+ /**
1320
+ * The selected ids, when the app holds the selection: the address names the open item, or a crumb of its path
1321
+ * selects a folder (Sprint 25.16 A19). `onSelect` reports a click and the app passes the new selection back.
1322
+ * Without it the tree keeps its own, starting from `defaultSelected`.
1323
+ */
1324
+ selected?: string[];
1312
1325
  defaultChecked?: string[];
1313
1326
  onSelect?: (ids: string[]) => void;
1314
1327
  onCheck?: (ids: string[]) => void;
1315
1328
  className?: string;
1316
1329
  }
1317
- declare function TreeView({ nodes, selectable, multiSelect, checkable, defaultExpanded, defaultSelected, defaultChecked, onSelect, onCheck, className, }: TreeViewProps): react_jsx_runtime.JSX.Element;
1330
+ declare function TreeView({ nodes, selectable, multiSelect, checkable, defaultExpanded, defaultSelected, selected: selectedProp, defaultChecked, onSelect, onCheck, className, }: TreeViewProps): react_jsx_runtime.JSX.Element;
1318
1331
 
1319
1332
  interface CarouselProps {
1320
1333
  children: ReactNode[];
@@ -2065,9 +2078,11 @@ interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
2065
2078
  * Render through a router link component instead of a plain anchor
2066
2079
  * (e.g. `component={RouterLink}` from react-router or next/link). The
2067
2080
  * component receives the same props; `href` is also passed as `to` for
2068
- * react-router compatibility.
2081
+ * react-router compatibility. Any element type: a router's Link requires
2082
+ * its own props (react-router's `to`), which a narrower type refused under
2083
+ * strict TypeScript (Sprint 25.16 A19).
2069
2084
  */
2070
- component?: ComponentType<Record<string, unknown>>;
2085
+ component?: ElementType;
2071
2086
  iconLeft?: ReactNode;
2072
2087
  iconRight?: ReactNode;
2073
2088
  }
@@ -2276,33 +2291,6 @@ interface SettingsLayoutProps {
2276
2291
  */
2277
2292
  declare function SettingsLayout({ sections, value, onChange, layout: layoutProp, railWidth, collapseBelow: collapseBelowProp, "aria-label": ariaLabel, children, className, }: SettingsLayoutProps): react_jsx_runtime.JSX.Element;
2278
2293
 
2279
- interface BreadcrumbItem$1 {
2280
- label: string;
2281
- href?: string;
2282
- onClick?: () => void;
2283
- icon?: IconName;
2284
- }
2285
- type BreadcrumbsVariant = "inline" | "contained" | "pill";
2286
- type BreadcrumbsSeparator = "slash" | "chevron" | "dot" | "arrow";
2287
- type BreadcrumbsSize = "sm" | "md";
2288
- interface BreadcrumbsProps {
2289
- items: BreadcrumbItem$1[];
2290
- separator?: BreadcrumbsSeparator;
2291
- variant?: BreadcrumbsVariant;
2292
- /** Visual treatment of individual breadcrumb items — independent of layout variant. */
2293
- itemVariant?: "default" | "pill";
2294
- size?: BreadcrumbsSize;
2295
- showIcons?: boolean;
2296
- maxItems?: number;
2297
- /** Full-bleed: contained background extends edge-to-edge, breaking out of parent padding. Text stays aligned with sibling content. */
2298
- bleed?: boolean;
2299
- /** Max-width for bleed content alignment. Defaults to --ds-bp-xl. */
2300
- contentMaxWidth?: string;
2301
- className?: string;
2302
- container?: Element | DocumentFragment;
2303
- }
2304
- declare const Breadcrumbs: react.ForwardRefExoticComponent<BreadcrumbsProps & react.RefAttributes<HTMLElement>>;
2305
-
2306
2294
  interface PaginationProps {
2307
2295
  currentPage: number;
2308
2296
  totalPages: number;
@@ -2332,6 +2320,8 @@ interface Step {
2332
2320
  label: string;
2333
2321
  description?: string;
2334
2322
  status?: "complete" | "error" | "loading";
2323
+ /** Not reached yet, so it can't be gone to: its circle can't be pressed (Sprint 25.16 A30, useFlowSteps' stepper). */
2324
+ disabled?: boolean;
2335
2325
  }
2336
2326
  interface StepperProps {
2337
2327
  steps: Step[];
@@ -3135,6 +3125,14 @@ interface AppShellContextValue {
3135
3125
  addUnsavedChanges: () => () => void;
3136
3126
  /** The width every Drawer in the app takes when it is given none (Sprint 25.14 A24): AppShell's drawerWidth, 520 px by default. */
3137
3127
  drawerWidth: string;
3128
+ /** The app's router (AppShell's `navigate`), or null: the library's links in the shell (a breadcrumb's crumb) and a flow's steps go through it. */
3129
+ navigate: ((href: string, options?: {
3130
+ replace?: boolean;
3131
+ }) => void) | null;
3132
+ /** A page that has left the flow is showing (<FlowSaved>, Sprint 25.16 A30): focus mode draws no exit control. */
3133
+ flowLeft: boolean;
3134
+ /** Set by FlowSaved; not for pages to call. Returns the release. */
3135
+ markFlowLeft: () => () => void;
3138
3136
  }
3139
3137
  /**
3140
3138
  * Focus mode (Sprint 25.7, C1): a task flow the user completes before or outside the app — setup, onboarding,
@@ -3206,6 +3204,16 @@ interface AppShellProps {
3206
3204
  currentPath?: string;
3207
3205
  /** The home page's path. Default "/". */
3208
3206
  homePath?: string;
3207
+ /**
3208
+ * The app's router: `(href, options) => navigate(href, options)` with React Router, `(href, options) =>
3209
+ * (options?.replace ? router.replace(href) : router.push(href))` with Next.js. The library's links in the shell — a
3210
+ * breadcrumb's crumb, a SplitView's path — go through it on a plain click, so the page changes with no reload, and so
3211
+ * do a flow's steps (useFlowSteps), which replace an address that isn't a step reached (Sprint 25.16 A19, A30).
3212
+ * Without it they are ordinary links. The generated layout passes it.
3213
+ */
3214
+ navigate?: (href: string, options?: {
3215
+ replace?: boolean;
3216
+ }) => void;
3209
3217
  /**
3210
3218
  * Focus mode for a flow outside the navigation (setup, onboarding, checkout). The sidebar, mobile menu and bottom
3211
3219
  * nav are not rendered, and the Navbar drops its links and search; the logo, the assistant (its launcher and its
@@ -3216,6 +3224,139 @@ interface AppShellProps {
3216
3224
  }
3217
3225
  declare const AppShell: react.ForwardRefExoticComponent<AppShellProps & react.RefAttributes<HTMLDivElement>>;
3218
3226
 
3227
+ interface FlowStep<A> {
3228
+ /** The step's name in the Stepper ("Team size"). */
3229
+ label: string;
3230
+ /** The page's title on this step ("How big is your team?"). */
3231
+ title: string;
3232
+ /** The step is shown only while this holds, so the total follows the answers ("Just me" leaves out the team's step). */
3233
+ when?: (answers: A) => boolean;
3234
+ }
3235
+ /**
3236
+ * What a flow keeps between visits: the furthest step reached, the step the user was on, and the answers so far. The
3237
+ * answers are kept as JSON: strings, numbers, booleans, arrays and plain objects (a Date comes back as its string).
3238
+ */
3239
+ interface FlowProgress<A> {
3240
+ furthest: number;
3241
+ current?: number;
3242
+ answers: A;
3243
+ }
3244
+ type FlowNavigate = (href: string, options?: {
3245
+ replace?: boolean;
3246
+ }) => void;
3247
+ interface UseFlowStepsOptions<A, S extends FlowStep<A>> {
3248
+ /** Every step, in order; a step with `when` is shown only while it holds. */
3249
+ steps: readonly S[];
3250
+ /** The step the address names: the flow's one `:step` route parameter ("3"). */
3251
+ at: string | undefined;
3252
+ /** Step n's address, counting the steps shown from 1: (n) => `/setup/${n}`. */
3253
+ href: (step: number) => string;
3254
+ /**
3255
+ * The flow's name in the browser's storage, where its progress and answers are kept between visits. With sign-in,
3256
+ * name it for the user (`setup:${userId}`), so the next person on the browser starts afresh; pass undefined until the
3257
+ * user is known, and the flow waits (draws nothing, moves nothing, writes nothing).
3258
+ */
3259
+ storageKey: string | undefined;
3260
+ /** The answers before the user has given any. */
3261
+ initialAnswers: A;
3262
+ /**
3263
+ * Where saveAndExit goes with no sign-in: a page drawing <FlowSaved> (the shell's exit, "Save and continue later",
3264
+ * goes there too). An app with sign-in leaves through the shell's "Save and log out" instead, and resumes on return.
3265
+ */
3266
+ exitTo: string;
3267
+ /** Where Finish goes once the flow is done: the app's home. */
3268
+ finishTo: string;
3269
+ /** The app's router. Left out, the shell's (AppShell's navigate); with neither, a page load. */
3270
+ navigate?: FlowNavigate;
3271
+ }
3272
+ interface FlowSteps<A, S extends FlowStep<A>> {
3273
+ /**
3274
+ * False until the flow's progress has been read and the address names a step reached. Draw nothing until then: an
3275
+ * address not reached yet, past the last step or not a step at all is being moved to the furthest step reached.
3276
+ */
3277
+ ready: boolean;
3278
+ /** This step, counting the steps shown from 1. */
3279
+ step: number;
3280
+ /** How many steps are shown, which follows the answers. */
3281
+ total: number;
3282
+ /** This step's own entry in `steps`: pick its form from it. */
3283
+ current: S;
3284
+ /** "Step 2 of 6": PageHeader's caption. */
3285
+ caption: string;
3286
+ /** This step's title: PageHeader's title. The browser tab's title follows it. */
3287
+ title: string;
3288
+ /** The answers so far, kept with the progress. */
3289
+ answers: A;
3290
+ /** Merges answers in. One that changes which steps follow this one means walking them again: they count as not reached. */
3291
+ setAnswers: (patch: Partial<A>) => void;
3292
+ /** The furthest step reached: any step up to it can be gone to. */
3293
+ furthest: number;
3294
+ isFirst: boolean;
3295
+ isLast: boolean;
3296
+ /** Goes on to the next step, which then counts as reached; answers given with it are kept in the same move. */
3297
+ next: (patch?: Partial<A>) => void;
3298
+ /** PageHeader's onBack: the step before, or undefined on the first step (no Back link there). */
3299
+ back: (() => void) | undefined;
3300
+ /** Goes to a step reached; any other is ignored. */
3301
+ goTo: (step: number) => void;
3302
+ /** The Stepper's props: the steps shown (done before the furthest, and a step past it can't be pressed), this one, and going to one. */
3303
+ stepper: {
3304
+ steps: {
3305
+ label: string;
3306
+ status?: "complete";
3307
+ disabled?: boolean;
3308
+ }[];
3309
+ currentStep: number;
3310
+ onStepChange: (index: number) => void;
3311
+ };
3312
+ /** Keeps the progress and leaves the flow, for exitTo. */
3313
+ saveAndExit: () => void;
3314
+ /** Ends the flow: its stored progress and answers go, and the user goes on to finishTo. */
3315
+ finish: () => void;
3316
+ }
3317
+ /** A flow's stored progress: its record under the prefix, its answers merged over the initial ones. Null when none (or unreadable). */
3318
+ declare function readFlowProgress<A>(storageKey: string, initialAnswers: A): FlowProgress<A> | null;
3319
+ /**
3320
+ * Sprint 25.16 A30 (R28-57, R28-58; P22): the library owns a flow's step. A flow with an address per step has one
3321
+ * `:step` route, and this hook reads the step from it: the step and the total, next, back and go-to, never past the
3322
+ * furthest step reached. An address not reached yet, past the last step or not a step at all ("/setup/9",
3323
+ * "/setup/abc") goes to the furthest step reached, the address changing with it: a fresh "/setup/3" lands on
3324
+ * "/setup/1". Steps can be conditional, so the total follows the answers. The progress (the furthest step, and the step
3325
+ * on screen) and the answers are kept in the browser's storage under the flow's name, so a return resumes; they go once
3326
+ * the flow finishes. Every caller with that name (a layout and its step, a page that mounts anew on each step, another
3327
+ * tab) shares one flow: its progress, its finish, the focus after a move and the tab's title. Its save-and-exit leaves
3328
+ * the flow (GOV.UK's save and return): with sign-in, the shell's "Save and log out", resumed after signing in; with
3329
+ * none, a page drawing <FlowSaved>, whose Continue resumes at the step the user was on. The focus shell's PageHeader
3330
+ * reads its caption, title, Stepper and Back from it; after a move the new step's heading takes focus and the browser
3331
+ * tab names the step.
3332
+ */
3333
+ declare function useFlowSteps<A, S extends FlowStep<A>>(options: UseFlowStepsOptions<A, S>): FlowSteps<A, S>;
3334
+
3335
+ interface FlowSavedProps {
3336
+ /** The flow's storageKey, as its useFlowSteps has it. */
3337
+ storageKey: string;
3338
+ /** The flow's step addresses, as its useFlowSteps has them: Continue goes to the step the user was on. */
3339
+ href: (step: number) => string;
3340
+ /** The page's one heading. Default "Your progress has been saved". */
3341
+ title?: string;
3342
+ /** What the user should know about coming back. Default: the answers are kept in this browser. */
3343
+ children?: ReactNode;
3344
+ /** The app's router. Left out, the shell's (AppShell's navigate). */
3345
+ navigate?: (href: string, options?: {
3346
+ replace?: boolean;
3347
+ }) => void;
3348
+ }
3349
+ /**
3350
+ * Sprint 25.16 A30 (R28-58): where a flow's "Save and continue later" goes when the app has no sign-in to leave to —
3351
+ * save and return: a page saying the progress has been saved, whose Continue resumes at the step the user was on. It
3352
+ * has left the flow, so the focus shell draws no exit while it shows; its heading takes focus, as the pressed exit has
3353
+ * gone. A status page, as "Page not found" is: one centred message under the page's one heading. With nothing saved
3354
+ * (a bookmark, cleared storage) it says so, and Continue starts the flow. Continue goes back to the step when the user
3355
+ * has just left it for this page (so Back from the step doesn't show it twice), else replaces this page with it; the
3356
+ * step's heading takes focus either way.
3357
+ */
3358
+ declare function FlowSaved({ storageKey, href, title, children, navigate }: FlowSavedProps): react_jsx_runtime.JSX.Element;
3359
+
3219
3360
  interface DestructiveActionOptions {
3220
3361
  /** The action's key as the preference lists name it ("remove_range"); derived from `title` when omitted. */
3221
3362
  action?: string;
@@ -3290,8 +3431,9 @@ interface PageContainerProps {
3290
3431
  maxWidth?: MaxWidth;
3291
3432
  /**
3292
3433
  * Caps the content under the header without narrowing the page: the header and tab strip keep the page's width, the
3293
- * content column below is capped at this width and left-aligned. For a form tab inside a tabbed area (round 17,
3294
- * 54.1) — `contentWidth="narrow"`; a layout pattern that wraps PageContainer passes it through. Never a hand-rolled
3434
+ * content column below is capped at this width and left-aligned. For a tab whose content is a form (round 17, 54.1)
3435
+ * — `contentWidth="narrow"`; a layout pattern that wraps PageContainer passes it through. A tab with lists or tables
3436
+ * beside its form keeps the full width: FormWrapper caps the fields itself (Sprint 25.16 A8). Never a hand-rolled
3295
3437
  * `max-w-` wrapper around the form.
3296
3438
  */
3297
3439
  contentWidth?: PageContainerWidth;
@@ -3317,6 +3459,15 @@ interface PageContainerProps {
3317
3459
  * `useContentWidth("narrow")` at the top of the page; the cap lifts when the page unmounts.
3318
3460
  */
3319
3461
  declare function useContentWidth(width: PageContainerWidth): void;
3462
+ /**
3463
+ * Sprint 25.16 A4 (R28-7): a page's own actions in the header its area layout draws ("Invite user" on Users, "Save" on
3464
+ * Roles), beside useContentWidth. Put them anywhere in the page: they render in the layout's PageHeader, as the page's
3465
+ * own live elements (its state and handlers, never a stale copy), and go when the page does. The layout passes no
3466
+ * actions per tab. Outside a PageContainer with a header they render nothing.
3467
+ */
3468
+ declare function PageActions({ children }: {
3469
+ children: ReactNode;
3470
+ }): react.ReactPortal | null;
3320
3471
  /**
3321
3472
  * The page's width constraint, and — when a PageHeader is among its direct
3322
3473
  * children — the page's composition: the header is placed inside the column
@@ -3332,6 +3483,15 @@ declare const PageContainer: react.ForwardRefExoticComponent<PageContainerProps
3332
3483
  interface SectionHeadingProps {
3333
3484
  /** Wraps onto more lines rather than being cut (an insight above a chart); a pane's title keeps one line. */
3334
3485
  title: string;
3486
+ /**
3487
+ * Makes the title editable, for a view whose name the user changes in place (a document, a board): called with each
3488
+ * new title as the user types. The title shows as a field at the title's size, filling the title's line. The actions
3489
+ * stay beside it while it keeps about 20 characters, and move under it when it can't, as they always do on a phone,
3490
+ * so a phone never squeezes the name to a few letters (the owner's review of 1 October: run 71's "Sys").
3491
+ */
3492
+ onTitleChange?: (title: string) => void;
3493
+ /** The editable title's name for a screen reader, what it is the title of ("Document title"). Default "Title". */
3494
+ titleLabel?: string;
3335
3495
  description?: string;
3336
3496
  /** The section's buttons. Below sm they sit under the title, like PageHeader's actions. */
3337
3497
  actions?: ReactNode;
@@ -3345,7 +3505,8 @@ interface SectionHeadingProps {
3345
3505
  * "section" (default): a heading within a page, spaced below by --ds-heading-gap. "pane": the title block at the
3346
3506
  * top of a SplitView pane on a fill page (an inbox, a library), where there is no PageHeader — a 16 px inset that
3347
3507
  * matches the list rows under it, a rule at the bottom and no margin below (Sprint 25.4 C-9, folded in from
3348
- * PaneHeader on the owner's review).
3508
+ * PaneHeader on the owner's review). At the top of the detail, an item's own header: there it insets at the page's
3509
+ * gutter, as the item's path above it does.
3349
3510
  */
3350
3511
  variant?: "section" | "pane";
3351
3512
  className?: string;
@@ -3410,4 +3571,4 @@ interface UseTextOverflowResult {
3410
3571
  */
3411
3572
  declare function useTextOverflow(options?: UseTextOverflowOptions): UseTextOverflowResult;
3412
3573
 
3413
- export { Accordion, ActionPanel, ActionPanelGroup, AddAnother, type AddAnotherProps, Alert, type AlertPlacement, AppShell, type AppShellContextValue, type AppShellFocus, AppShellPreferences, type AppShellTheme, AsidePanel, type AsidePanelProps, type AsidePanelSide, Avatar, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, type AvatarStatus, Badge, type BadgePaletteColor, type BadgeSeverity, type BadgeSize, type BadgeVariant, BottomNav, type BottomNavItem, type BreadcrumbItem$1 as BreadcrumbItem, Breadcrumbs, type BreadcrumbsSeparator, type BreadcrumbsSize, type BreadcrumbsVariant, BreakpointKey, BulkActionBar, Button, ButtonSizeContext, Calendar, type CalendarDay, Card, CardContent, CardDescription, CardFooter, CardGrid, type CardGridProps, CardHeader, type CardSelectType, CardTitle, type CardVariant, Carousel, type ChatMessage, type ChatMessageAction, type ChatMessageLayout, ChatMessageList, type ChatMessageSender, type ChatMessageSource, type ChatMessageStatus, ChatPanel, type ChatPanelProps, type ChatPanelStatusTone, Checkbox, CheckboxGroup, CheckboxGroupItem, CodeBlock, Collapsible, ColorPicker, type Column, Combobox, CommandPalette, ContextMenu, type ControlSize, ControlSizeContext, CornerPanel, type CornerPanelEdge, type CornerPanelProps, DEFAULT_DATE_RANGE_PRESETS, DataList, type DateInput, DatePicker, type DateRange, DateRangePicker, type DateRangePickerProps, type DateRangePreset, type DateRangeWords, type DescriptionItem, DescriptionList, type DescriptionListOrientation, type DescriptionListSize, type DestructiveActionHandle, type DestructiveActionOptions, Dialog, Divider, Dock, Drawer, Dropdown, DropdownMenu, type DropdownMenuDivider, type DropdownMenuEntry, type DropdownMenuItem, EmptyState, EntityCell, Field, type FieldControlProps, type FieldLabel, type FieldProps, FileUpload, type FileUploadItem, type FileUploadRequestOptions, type FileUploadStatus, type FitLabelsOptions, type FittedLabel, FormWrapper, Gantt, type GanttGroup, type GanttItem, type GanttProps, type GanttStatus, type GanttTone, type GridKeyboard, type GridKeyboardOptions, HoverCard, InlineFieldError, Input, Kbd, Label, type LabelBox, Launcher, type LauncherEdge, type LauncherProps, type LauncherVariant, type LauncherWhenOpen, Link, type LinkProps, MentionInput, MobileHeaderMenu, type MobileHeaderMenuItemData, type MobileHeaderMenuType, NavItem, type NavItemProps, type NavItemType, NavMenu, type NavMenuItem, Navbar, type NavbarSize, type NavbarType, type NavbarVariant, NotificationCenter, NumberInput, PageContainer, type PageContainerWidth, PageHeader, type PageHeaderBehavior, type PageHeaderIntensity, type PageHeaderProps, type PageHeaderVariant, Pager, Pagination, PinInput, Popover, Progress, type PromiseToastMessages, RadioGroup, Rating, ScrollArea, SectionHeading, type SectionHeadingProps, SegmentedControl, SettingsLayout, type SettingsLayoutProps, type SettingsSection, Sheet, Sidebar, type SidebarContextValue, type SidebarItem, SidebarNav, type SidebarNavSize, type SidebarPosition, type SidebarSection, type SidebarType, Skeleton, SkipLink, SliderRange, type SortDir, Spinner, StackedList, type StackedListVariant, StatsCard, StatusDot, type StatusDotVariant, Stepper, TIME_ZOOMS, type Tab, Table, type TableDensity, type TableProps, type TableRow, TableToolbar, type TableToolbarActiveFilter, type TableToolbarFilterOption, Tabs, Tag, TagInput, type TagPaletteColor, type TagVariant, TextOverflow, type TextOverflowProps, Textarea, TimeBar, type TimeBarProps, TimePicker, TimeRow, type TimeRowProps, type TimeScale, TimeScaleHeader, type TimeScaleHeaderProps, type TimeScaleOptions, type TimeTick, TimeViewport, type TimeViewportHandle, type TimeViewportLayout, type TimeViewportProps, type TimeViewportState, type TimeZoom, Timeline, Toast, type ToastAction, type ToastApi, type ToastOptions, type ToastPosition, ToastProvider, type ToastVariant, Toggle, Tooltip, Tour, TransferList, TreeView, type Trend, type UseTextOverflowOptions, type UseTextOverflowResult, dateOfDay, dayOf, endDayOf, fitLabel, fitLabels, formatDateRange, timeExtent, useAppShell, useContentWidth, useDestructiveAction, useFittedLabels, useFormContext, useGridKeyboard, useSidebar, useTextMeasure, useTextOverflow, useTimeScale, useTimeViewport, useTimeViewportLayout, useToast, useToastOptional, useUnsavedChanges };
3574
+ export { Accordion, ActionPanel, ActionPanelGroup, AddAnother, type AddAnotherProps, Alert, type AlertPlacement, AppShell, type AppShellContextValue, type AppShellFocus, AppShellPreferences, type AppShellTheme, AsidePanel, type AsidePanelProps, type AsidePanelSide, Avatar, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, type AvatarStatus, Badge, type BadgePaletteColor, type BadgeSeverity, type BadgeSize, type BadgeVariant, BottomNav, type BottomNavItem, BreakpointKey, BulkActionBar, Button, ButtonSizeContext, Calendar, type CalendarDay, Card, CardContent, CardDescription, CardFooter, CardGrid, type CardGridProps, CardHeader, type CardSelectType, CardTitle, type CardVariant, Carousel, type ChatMessage, type ChatMessageAction, type ChatMessageLayout, ChatMessageList, type ChatMessageSender, type ChatMessageSource, type ChatMessageStatus, ChatPanel, type ChatPanelProps, type ChatPanelStatusTone, Checkbox, CheckboxGroup, CheckboxGroupItem, CodeBlock, Collapsible, ColorPicker, type Column, Combobox, CommandPalette, ContextMenu, type ControlSize, ControlSizeContext, CornerPanel, type CornerPanelEdge, type CornerPanelProps, DEFAULT_DATE_RANGE_PRESETS, DataList, type DateInput, DatePicker, type DateRange, DateRangePicker, type DateRangePickerProps, type DateRangePreset, type DateRangeWords, type DescriptionItem, DescriptionList, type DescriptionListOrientation, type DescriptionListSize, type DestructiveActionHandle, type DestructiveActionOptions, Dialog, Divider, Dock, Drawer, Dropdown, DropdownMenu, type DropdownMenuDivider, type DropdownMenuEntry, type DropdownMenuItem, EmptyState, EntityCell, Field, type FieldControlProps, type FieldLabel, type FieldProps, FileUpload, type FileUploadItem, type FileUploadRequestOptions, type FileUploadStatus, type FitLabelsOptions, type FittedLabel, type FlowNavigate, type FlowProgress, FlowSaved, type FlowSavedProps, type FlowStep, type FlowSteps, FormWrapper, Gantt, type GanttGroup, type GanttItem, type GanttProps, type GanttStatus, type GanttTone, type GridKeyboard, type GridKeyboardOptions, HoverCard, InlineFieldError, Input, Kbd, Label, type LabelBox, Launcher, type LauncherEdge, type LauncherProps, type LauncherVariant, type LauncherWhenOpen, Link, type LinkProps, MentionInput, MobileHeaderMenu, type MobileHeaderMenuItemData, type MobileHeaderMenuType, NavItem, type NavItemProps, type NavItemType, NavMenu, type NavMenuItem, Navbar, type NavbarSize, type NavbarType, type NavbarVariant, NotificationCenter, NumberInput, PageActions, PageContainer, type PageContainerWidth, PageHeader, type PageHeaderBehavior, type PageHeaderIntensity, type PageHeaderProps, type PageHeaderVariant, Pager, Pagination, PinInput, Popover, Progress, type PromiseToastMessages, RadioGroup, Rating, ScrollArea, SectionHeading, type SectionHeadingProps, SegmentedControl, SettingsLayout, type SettingsLayoutProps, type SettingsSection, Sheet, Sidebar, type SidebarContextValue, type SidebarItem, SidebarNav, type SidebarNavSize, type SidebarPosition, type SidebarSection, type SidebarType, Skeleton, SkipLink, SliderRange, type SortDir, Spinner, StackedList, type StackedListVariant, StatsCard, StatusDot, type StatusDotVariant, Stepper, TIME_ZOOMS, type Tab, Table, type TableDensity, type TableProps, type TableRow, TableToolbar, type TableToolbarActiveFilter, type TableToolbarFilterOption, Tabs, Tag, TagInput, type TagPaletteColor, type TagVariant, TextOverflow, type TextOverflowProps, Textarea, TimeBar, type TimeBarProps, TimePicker, TimeRow, type TimeRowProps, type TimeScale, TimeScaleHeader, type TimeScaleHeaderProps, type TimeScaleOptions, type TimeTick, TimeViewport, type TimeViewportHandle, type TimeViewportLayout, type TimeViewportProps, type TimeViewportState, type TimeZoom, Timeline, Toast, type ToastAction, type ToastApi, type ToastOptions, type ToastPosition, ToastProvider, type ToastVariant, Toggle, Tooltip, Tour, TransferList, TreeView, type Trend, type UseFlowStepsOptions, type UseTextOverflowOptions, type UseTextOverflowResult, dateOfDay, dayOf, endDayOf, fitLabel, fitLabels, formatDateRange, readFlowProgress, timeExtent, useAppShell, useContentWidth, useDestructiveAction, useFittedLabels, useFlowSteps, useFormContext, useGridKeyboard, useSidebar, useTextMeasure, useTextOverflow, useTimeScale, useTimeViewport, useTimeViewportLayout, useToast, useToastOptional, useUnsavedChanges };