@object-ui/layout 17.5.0 → 17.7.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.
@@ -24,12 +24,19 @@ import { default as React } from 'react';
24
24
  export interface PageHeaderComponentProps extends React.HTMLAttributes<HTMLDivElement> {
25
25
  title: string;
26
26
  /**
27
- * Optional secondary line under the title. Spec schemas use `subtitle`,
28
- * the legacy console pages use `description` — both are supported and
29
- * resolve {field.path} tokens against the current record context.
27
+ * Optional secondary line under the title. `subtitle` is the only spelling:
28
+ * it is the key `@objectstack/spec/ui`'s `PageHeaderProps` declares, and it
29
+ * resolves {field.path} tokens against the current record context.
30
+ *
31
+ * The legacy `description` alias this component used to read alongside it
32
+ * was retired in objectui#3789, once the ADR-0087 D2 conversion
33
+ * `page-header-subtitle-alias` was measured to reach EVERY spec-valid header
34
+ * position on the load path (regions, slots, and containers nested to any
35
+ * depth — objectstack#6775 / objectstack-ai/objectstack#6776 / PR objectstack-ai/objectstack#7034). Stored metadata authored with
36
+ * `description` is rewritten to `subtitle` before it ever reaches a renderer,
37
+ * so the second line survives without this side holding a second dialect open.
30
38
  */
31
39
  subtitle?: string;
32
- description?: string;
33
40
  /**
34
41
  * Optional icon for the header chip. Accepts either a string Lucide icon
35
42
  * name (resolved via `LazyIcon`, the standard ObjectUI helper) or a
@@ -66,4 +73,4 @@ export interface PageHeaderComponentProps extends React.HTMLAttributes<HTMLDivEl
66
73
  };
67
74
  };
68
75
  }
69
- export declare function PageHeader({ title, subtitle, description, icon, action, actions, showBack, schema, className, children, ...props }: PageHeaderComponentProps): React.JSX.Element;
76
+ export declare function PageHeader({ title, subtitle, icon, action, actions, showBack, schema, className, children, ...props }: PageHeaderComponentProps): React.JSX.Element;
@@ -1,25 +1,59 @@
1
1
  import { default as React } from 'react';
2
- import { BreakpointColumnMap, BreakpointOrderMap } from '@objectstack/spec/ui';
3
2
  /**
4
- * Breakpoint column map (`BreakpointColumnMapSchema`) and breakpoint order map
5
- * (`BreakpointOrderMapSchema`), both re-exported from `@objectstack/spec/ui`.
3
+ * Breakpoint column map — grid column counts per Tailwind-style breakpoint,
4
+ * owned by this package since objectui#7580 (maintainer ruling 2026-09-04,
5
+ * option A).
6
6
  *
7
7
  * These were hand copies until objectui#4167, each carrying the word "mirrors"
8
8
  * — the doc-comment shape objectstack#4115 catalogues, where the claim is what
9
- * the next agent reads as canonical and the code is what actually decides. rc.6
10
- * publishes both names, and both copies happened to still be exact: six
11
- * optional numbers keyed `xs`…`2xl`, on a `$strict` schema. "Still exact" is
12
- * the argument FOR binding them, not against — the copies had nothing to
13
- * protect, so the only thing they could do from here was drift, and a
14
- * breakpoint the spec adds now arrives instead of silently not existing.
15
- *
16
- * `BreakpointOrderMap` has no read point in this package (`ResponsiveGrid`
17
- * resolves columns only); it is published because `ResponsiveConfigSchema`
18
- * pairs the two and an author configuring order needs the type. Bound rather
19
- * than deleted for that reason — deleting a published type is a separate
20
- * decision from stopping it being a fork.
9
+ * the next agent reads as canonical and the code is what actually decides. They
10
+ * were then bound by reference to `@objectstack/spec/ui`, which was right for
11
+ * as long as the spec published them.
12
+ *
13
+ * objectstack#11027 retired the whole `ui/responsive` vocabulary upstream, so
14
+ * there is no longer anything to bind to — and, unlike the four types that left
15
+ * with the key, this one has a renderer that implements it:
16
+ * {@link resolveColumnClasses} applies it on `ResponsiveGrid`'s render path.
17
+ * The tombstone's own return condition — the vocabulary "returns if and when a
18
+ * renderer implements it" — is met here, which is why the type is re-homed
19
+ * rather than deleted.
20
+ *
21
+ * The node that once made it authorable from JSON is gone. The
22
+ * `responsive-grid` registration retired under objectui#11441 (the
23
+ * maintainer's ruling `5950208338`, letter B), which kept this declaration and
24
+ * named the `grid` node with a breakpoint `columns` object as the one
25
+ * authorable spelling. `ResponsiveGrid` is now a React-only export, and this
26
+ * map is the type of its `columns` prop.
27
+ *
28
+ * ⚠️ Members are the retired `BreakpointColumnMapSchema`'s, verbatim: six
29
+ * optional column counts keyed `xs`…`2xl`. The schema was `$strict`, so no
30
+ * index signature is restored here either — an unknown breakpoint key was a
31
+ * parse error upstream and stays a type error here.
32
+ *
33
+ * `BreakpointOrderMap` RETIRED with the key (same ruling, item 3) and is NOT
34
+ * re-homed. Its own comment in this file already recorded the reason: it had no
35
+ * read point in this package — `ResponsiveGrid` resolves columns only — and it
36
+ * was published solely because the spec's `ResponsiveConfigSchema` paired the
37
+ * two, so an author configuring `order` needed the type. That pairing is what
38
+ * objectstack#11027 deleted; with the schema gone there is no order vocabulary
39
+ * left for it to be the type OF, and re-homing it would have re-declared a key
40
+ * nothing reads on either side of the boundary — the declare-without-enforce
41
+ * shape ADR-0049 removes.
42
+ *
43
+ * ⏳ Interim, and it self-expires: the pin is still `@objectstack/spec` 17.2.0,
44
+ * which PRE-dates the retirement and still exports this name, so the collision
45
+ * is real today and carries a reasoned entry in
46
+ * `scripts/check-spec-symbol-derivation.mjs`. The guard's ratchet 3 fails an
47
+ * ALLOW entry that excuses nothing, so the pin bump is forced to delete it.
21
48
  */
22
- export type { BreakpointColumnMap, BreakpointOrderMap };
49
+ export interface BreakpointColumnMap {
50
+ xs?: number;
51
+ sm?: number;
52
+ md?: number;
53
+ lg?: number;
54
+ xl?: number;
55
+ '2xl'?: number;
56
+ }
23
57
  export interface ResponsiveGridProps {
24
58
  /** Grid column map per breakpoint */
25
59
  columns?: BreakpointColumnMap;
@@ -31,8 +65,9 @@ export interface ResponsiveGridProps {
31
65
  children: React.ReactNode;
32
66
  }
33
67
  /**
34
- * ResponsiveGrid — A layout component that consumes @objectstack/spec
35
- * BreakpointColumnMapSchema for responsive grid layouts.
68
+ * ResponsiveGrid — A layout component that consumes this package's own
69
+ * BreakpointColumnMap (the six keys xs, sm, md, lg, xl, '2xl') for
70
+ * responsive grid layouts.
36
71
  *
37
72
  * Uses pure Tailwind CSS classes for responsive behavior (no JS resize listeners).
38
73
  *
package/dist/index.d.ts CHANGED
@@ -2,11 +2,11 @@
2
2
  * ObjectUI Layout
3
3
  * Copyright (c) 2024-present ObjectStack Inc.
4
4
  */
5
- export * from './PageHeader';
6
- export * from './AppShell';
7
- export * from './PageCard';
8
- export * from './SidebarNav';
9
- export * from './ResponsiveGrid';
10
- export * from './NavigationRenderer';
11
- export * from './AppSchemaRenderer';
5
+ export * from './PageHeader.js';
6
+ export * from './AppShell.js';
7
+ export * from './PageCard.js';
8
+ export * from './SidebarNav.js';
9
+ export * from './ResponsiveGrid.js';
10
+ export * from './NavigationRenderer.js';
11
+ export * from './AppSchemaRenderer.js';
12
12
  export declare function registerLayout(): void;