@starci/grammar 0.1.0 → 0.2.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 (46) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +53 -40
  3. package/dist/common/styles.css +2 -2
  4. package/dist/core/StateMark.d.ts +4 -0
  5. package/dist/core/StateMark.d.ts.map +1 -1
  6. package/dist/core/StateMark.js +1 -0
  7. package/dist/core/StateMark.js.map +1 -1
  8. package/dist/core/branch/Rail/index.d.ts +13 -2
  9. package/dist/core/branch/Rail/index.d.ts.map +1 -1
  10. package/dist/core/branch/Rail/index.js +17 -2
  11. package/dist/core/branch/Rail/index.js.map +1 -1
  12. package/dist/core/branch/SurfaceCard/index.d.ts +7 -1
  13. package/dist/core/branch/SurfaceCard/index.d.ts.map +1 -1
  14. package/dist/core/branch/SurfaceCard/index.js +3 -2
  15. package/dist/core/branch/SurfaceCard/index.js.map +1 -1
  16. package/dist/core/branch/SurfaceListCard/index.d.ts +20 -10
  17. package/dist/core/branch/SurfaceListCard/index.d.ts.map +1 -1
  18. package/dist/core/branch/SurfaceListCard/index.js +7 -9
  19. package/dist/core/branch/SurfaceListCard/index.js.map +1 -1
  20. package/dist/core/composite/StaticStateRow/index.d.ts +17 -0
  21. package/dist/core/composite/StaticStateRow/index.d.ts.map +1 -0
  22. package/dist/core/composite/StaticStateRow/index.js +11 -0
  23. package/dist/core/composite/StaticStateRow/index.js.map +1 -0
  24. package/dist/core/contracts.d.ts +28 -28
  25. package/dist/core/contracts.d.ts.map +1 -1
  26. package/dist/core/contracts.js +65 -11
  27. package/dist/core/contracts.js.map +1 -1
  28. package/dist/core/grammar.d.ts +1 -1
  29. package/dist/core/grammar.js +1 -1
  30. package/dist/core/index.d.ts +3 -0
  31. package/dist/core/index.d.ts.map +1 -1
  32. package/dist/core/index.js +3 -0
  33. package/dist/core/index.js.map +1 -1
  34. package/dist/core/layout.d.ts +9 -0
  35. package/dist/core/layout.d.ts.map +1 -0
  36. package/dist/core/layout.js +43 -0
  37. package/dist/core/layout.js.map +1 -0
  38. package/dist/core/rules.d.ts +18 -0
  39. package/dist/core/rules.d.ts.map +1 -1
  40. package/dist/core/rules.js +21 -0
  41. package/dist/core/rules.js.map +1 -1
  42. package/dist/core/styles.css +211 -162
  43. package/dist/offset-pop/index.d.ts +29 -29
  44. package/dist/offset-pop/index.js +2 -2
  45. package/dist/offset-pop/styles.css +393 -393
  46. package/package.json +72 -72
@@ -1,193 +1,242 @@
1
- @layer starci-grammar-core {
2
- .starci-core-surface-card,
3
- .starci-core-surface-list {
4
- container-name: starci-core-surface;
5
- container-type: inline-size;
6
- display: flex;
7
- min-width: 0;
8
- width: 100%;
9
- flex-direction: column;
10
- gap: var(--starci-core-section-gap, 0.75rem);
11
- }
12
-
13
- .starci-core-surface-label {
14
- display: flex;
15
- min-width: 0;
16
- align-items: baseline;
17
- justify-content: space-between;
18
- gap: var(--starci-core-inline-gap, 0.5rem);
19
- }
20
-
21
- .starci-core-surface-label > :first-child {
22
- min-width: 0;
23
- margin: 0;
1
+ @layer starci-grammar-core {
2
+ .starci-core-surface-card,
3
+ .starci-core-surface-list {
4
+ container-name: starci-core-surface;
5
+ container-type: inline-size;
6
+ display: flex;
7
+ min-width: 0;
8
+ width: 100%;
9
+ flex-direction: column;
10
+ gap: var(--starci-core-section-gap, 0.75rem);
11
+ }
12
+
13
+ .starci-core-surface-label {
14
+ display: flex;
15
+ min-width: 0;
16
+ align-items: baseline;
17
+ justify-content: space-between;
18
+ gap: var(--starci-core-inline-gap, 0.5rem);
19
+ }
20
+
21
+ .starci-core-surface-label > :first-child {
22
+ min-width: 0;
23
+ margin: 0;
24
+ }
25
+
26
+ .starci-core-surface {
27
+ position: relative;
28
+ min-width: 0;
29
+ overflow: hidden;
30
+ border-radius: var(--starci-core-surface-radius, 1rem);
31
+ background: var(--surface, Canvas);
32
+ color: var(--surface-foreground, CanvasText);
33
+ }
34
+
35
+ .starci-core-surface[data-grammar-surface-depth="top"] {
36
+ border: 0;
37
+ box-shadow: var(--starci-core-surface-shadow, var(--shadow-surface, 0 1px 3px rgb(0 0 0 / 0.16)));
38
+ }
39
+
40
+ .starci-core-surface[data-grammar-surface-depth="nested"] {
41
+ border: 1px solid var(--border, GrayText);
42
+ box-shadow: none;
43
+ }
44
+
45
+ .starci-core-surface-content {
46
+ min-width: 0;
47
+ padding: var(--starci-core-surface-inset, 1rem);
24
48
  }
25
49
 
26
- .starci-core-surface {
50
+ .starci-core-surface.starci-core-frameless-surface {
27
51
  position: relative;
28
52
  min-width: 0;
29
- overflow: hidden;
30
- border-radius: var(--starci-core-surface-radius, 1rem);
31
- background: var(--surface);
32
- color: var(--surface-foreground);
33
- }
34
-
35
- .starci-core-surface[data-grammar-surface-depth="top"] {
36
- border: 0;
37
- box-shadow: var(--starci-core-surface-shadow, var(--shadow-surface));
38
- }
39
-
40
- .starci-core-surface[data-grammar-surface-depth="nested"] {
41
- border: 1px solid var(--border);
42
- box-shadow: none;
43
- }
44
-
45
- .starci-core-surface-content {
46
- min-width: 0;
47
- padding: var(--starci-core-surface-inset, 1rem);
48
- }
49
-
50
- [data-grammar-whole-action] {
51
- position: absolute;
52
- z-index: 1;
53
- inset: 0;
53
+ overflow: visible;
54
54
  border: 0;
55
- border-radius: inherit;
55
+ border-radius: 0;
56
56
  background: transparent;
57
+ box-shadow: none;
57
58
  color: inherit;
58
- cursor: pointer;
59
- }
60
-
61
- [data-grammar-whole-action]:focus-visible {
62
- outline: 2px solid var(--focus);
63
- outline-offset: -2px;
64
- }
65
-
66
- [data-grammar-whole-action][aria-disabled="true"],
67
- [data-grammar-whole-action]:disabled {
68
- cursor: not-allowed;
69
- }
70
-
71
- [data-grammar-state="unavailable"] {
72
- opacity: var(--starci-core-disabled-opacity, 0.55);
73
- }
74
-
75
- [data-grammar-state="pending"] {
76
- cursor: progress;
77
59
  }
78
60
 
79
- .starci-core-list-shell {
61
+ .starci-core-frameless-surface > .starci-core-surface-content {
80
62
  padding: 0;
81
63
  }
82
64
 
83
- .starci-core-static-list {
84
- display: flex;
85
- margin: 0;
86
- padding: 0;
87
- flex-direction: column;
88
- list-style: none;
65
+ [data-grammar-scroll="contained"] {
66
+ max-height: var(--starci-core-contained-max-height, none);
67
+ overflow: hidden;
89
68
  }
90
69
 
91
- .starci-core-static-row,
92
- .starci-core-empty-row {
93
- display: flex;
94
- min-width: 0;
95
- margin: 0;
96
- align-items: flex-start;
97
- gap: var(--starci-core-row-gap, 0.75rem);
98
- padding: var(--starci-core-row-inset, 1rem);
70
+ [data-grammar-scroll="contained"] > .starci-core-surface-content {
71
+ min-height: 0;
72
+ overflow-y: auto;
73
+ overscroll-behavior: contain;
99
74
  }
100
-
101
- .starci-core-static-row + .starci-core-static-row {
102
- border-top: 1px solid var(--separator);
75
+
76
+ [data-grammar-whole-action] {
77
+ position: absolute;
78
+ z-index: 1;
79
+ inset: 0;
80
+ border: 0;
81
+ border-radius: inherit;
82
+ background: transparent;
83
+ color: inherit;
84
+ cursor: pointer;
85
+ }
86
+
87
+ [data-grammar-whole-action]:focus-visible {
88
+ outline: 2px solid var(--focus, Highlight);
89
+ outline-offset: -2px;
90
+ }
91
+
92
+ [data-grammar-whole-action][aria-disabled="true"],
93
+ [data-grammar-whole-action]:disabled {
94
+ cursor: not-allowed;
95
+ }
96
+
97
+ [data-grammar-state="unavailable"] {
98
+ opacity: var(--starci-core-disabled-opacity, 0.55);
99
+ }
100
+
101
+ [data-grammar-state="pending"] {
102
+ cursor: progress;
103
+ }
104
+
105
+ .starci-core-list-shell {
106
+ padding: 0;
107
+ }
108
+
109
+ .starci-core-static-list {
110
+ display: flex;
111
+ margin: 0;
112
+ padding: 0;
113
+ flex-direction: column;
114
+ list-style: none;
103
115
  }
104
116
 
105
- .starci-core-static-row-copy {
106
- display: flex;
117
+ .starci-core-owned-collection {
107
118
  min-width: 0;
108
- flex: 1;
109
- flex-direction: column;
110
- gap: var(--starci-core-copy-gap, 0.25rem);
111
- }
112
-
113
- .starci-core-static-row-copy > :last-child:not(:first-child) {
114
- color: var(--muted);
115
119
  }
116
120
 
117
- [data-grammar-state-mark="check"] {
118
- width: 1.25rem;
119
- height: 1.25rem;
120
- flex: none;
121
- color: var(--success);
122
- }
123
-
124
- .starci-core-rail {
125
- container-name: starci-core-rail;
126
- container-type: inline-size;
127
- width: 100%;
121
+ .starci-core-surface-footer {
128
122
  min-width: 0;
129
123
  }
130
-
124
+
125
+ .starci-core-static-row,
126
+ .starci-core-empty-row {
127
+ display: flex;
128
+ min-width: 0;
129
+ margin: 0;
130
+ align-items: flex-start;
131
+ gap: var(--starci-core-row-gap, 0.75rem);
132
+ padding: var(--starci-core-row-inset, 1rem);
133
+ }
134
+
135
+ .starci-core-static-row + .starci-core-static-row {
136
+ border-top: 1px solid var(--separator, var(--border, GrayText));
137
+ }
138
+
139
+ .starci-core-static-row-copy {
140
+ display: flex;
141
+ min-width: 0;
142
+ flex: 1;
143
+ flex-direction: column;
144
+ gap: var(--starci-core-copy-gap, 0.25rem);
145
+ }
146
+
147
+ .starci-core-static-row-copy > :last-child:not(:first-child) {
148
+ color: var(--muted, GrayText);
149
+ }
150
+
151
+ [data-grammar-state-mark="check"] {
152
+ width: 1.25rem;
153
+ height: 1.25rem;
154
+ flex: none;
155
+ color: var(--success, #15803d);
156
+ }
157
+
158
+ .starci-core-rail {
159
+ container-name: starci-core-rail;
160
+ container-type: inline-size;
161
+ width: 100%;
162
+ min-width: 0;
163
+ }
164
+
131
165
  .starci-core-rail[data-grammar-rail-width="compact"] {
132
- max-width: var(--starci-core-rail-compact, 16rem);
133
- }
134
-
135
- .starci-core-rail[data-grammar-rail-width="standard"] {
136
- max-width: var(--starci-core-rail-standard, 20rem);
137
- }
138
-
139
- .starci-core-rail[data-grammar-rail-width="wide"] {
140
- max-width: var(--starci-core-rail-wide, 24rem);
141
- }
142
-
143
- .starci-core-rail-frame {
144
- display: flex;
145
- min-width: 0;
146
- max-height: calc(100dvh - var(--starci-core-rail-offset, 5.5rem) - 1.5rem);
147
- flex-direction: column;
148
- gap: var(--starci-core-rail-gap, 1rem);
149
- }
150
-
151
- .starci-core-rail[data-grammar-rail-mode="sticky"] .starci-core-rail-frame {
152
- position: sticky;
153
- top: var(--starci-core-rail-offset, 5.5rem);
154
- }
155
-
156
- .starci-core-rail-body {
157
- min-height: 0;
158
- overflow-y: auto;
159
- overscroll-behavior: contain;
160
- }
161
-
166
+ max-width: var(--starci-core-rail-compact, 16rem);
167
+ }
168
+
169
+ .starci-core-rail[data-grammar-collapse="collapsed"] {
170
+ max-width: var(--starci-core-rail-collapsed, 4rem);
171
+ }
172
+
173
+ .starci-core-rail[data-grammar-rail-width="standard"] {
174
+ max-width: var(--starci-core-rail-standard, 20rem);
175
+ }
176
+
177
+ .starci-core-rail[data-grammar-rail-width="wide"] {
178
+ max-width: var(--starci-core-rail-wide, 24rem);
179
+ }
180
+
181
+ .starci-core-rail-frame {
182
+ display: flex;
183
+ min-width: 0;
184
+ max-height: calc(100dvh - var(--starci-core-rail-offset, 5.5rem) - 1.5rem);
185
+ flex-direction: column;
186
+ gap: var(--starci-core-rail-gap, 1rem);
187
+ }
188
+
189
+ .starci-core-rail[data-grammar-rail-mode="sticky"] .starci-core-rail-frame {
190
+ position: sticky;
191
+ top: var(--starci-core-rail-offset, 5.5rem);
192
+ }
193
+
194
+ .starci-core-rail-body {
195
+ min-height: 0;
196
+ overflow-y: auto;
197
+ overscroll-behavior: contain;
198
+ }
199
+
162
200
  .starci-core-rail-footer {
163
201
  flex: none;
164
202
  }
165
203
 
166
- @container starci-core-surface (max-width: 28rem) {
167
- .starci-core-surface-label {
168
- align-items: flex-start;
169
- flex-direction: column;
170
- }
171
-
172
- .starci-core-static-row {
173
- gap: var(--starci-core-row-gap-compact, 0.5rem);
174
- }
175
- }
176
-
177
- @container starci-core-rail (max-width: 18rem) {
178
- .starci-core-rail-frame {
179
- gap: var(--starci-core-rail-gap-compact, 0.75rem);
180
- }
181
- }
182
-
204
+ .starci-core-rail :where(button, [role="button"]) {
205
+ min-inline-size: 44px;
206
+ min-block-size: 44px;
207
+ }
208
+
209
+ @container starci-core-surface (max-width: 28rem) {
210
+ .starci-core-surface-label {
211
+ align-items: flex-start;
212
+ flex-direction: column;
213
+ }
214
+
215
+ .starci-core-static-row {
216
+ gap: var(--starci-core-row-gap-compact, 0.5rem);
217
+ }
218
+ }
219
+
220
+ @container starci-core-rail (max-width: 18rem) {
221
+ .starci-core-rail-frame {
222
+ gap: var(--starci-core-rail-gap-compact, 0.75rem);
223
+ }
224
+ }
225
+
183
226
  @media (max-width: 47.999rem) {
184
- .starci-core-rail[data-grammar-rail-mode="sticky"] .starci-core-rail-frame {
185
- position: static;
186
- max-height: none;
187
- }
188
-
189
- .starci-core-rail-body {
190
- overflow-y: visible;
227
+ .starci-core-rail[data-grammar-rail-mode="sticky"] .starci-core-rail-frame {
228
+ position: static;
229
+ max-height: none;
230
+ }
231
+
232
+ .starci-core-rail-body {
233
+ overflow-y: visible;
234
+ }
235
+ }
236
+
237
+ @media (prefers-reduced-motion: reduce) {
238
+ [data-grammar-motion="animated"] {
239
+ scroll-behavior: auto;
191
240
  }
192
241
  }
193
242
  }
@@ -27,7 +27,7 @@ export declare const OFFSET_POP_COMPLEX_CASES: readonly ["nested-surface-keeps-o
27
27
  /** One installable Grammar bundle: Core owns anatomy; Offset Pop owns only visual treatment. */
28
28
  export declare const offsetPopGrammar: Readonly<{
29
29
  id: "offset-pop";
30
- version: "1.0.0";
30
+ version: "1.1.0";
31
31
  extends: readonly {
32
32
  id: string;
33
33
  version: string;
@@ -60,16 +60,16 @@ export declare const offsetPopGrammar: Readonly<{
60
60
  key: "core.surface-card";
61
61
  version: string;
62
62
  spec: Readonly<{
63
- readonly version: "1.0.0";
63
+ readonly version: "1.1.0";
64
64
  readonly layer: "branch";
65
65
  readonly slots: readonly ["external-label", "content", "whole-action"];
66
66
  readonly stateInputs: readonly ["neutral", "informative", "affirmative", "cautionary", "negative", "pending", "unavailable"];
67
- readonly variableAxes: readonly ["surface-depth", "state-treatment", "action-mode", "container-response"];
67
+ readonly variableAxes: readonly ["surface-depth", "state-treatment", "action-mode", "label-end", "frame-mode", "scroll-mode", "container-response"];
68
68
  readonly extensionPolicy: {
69
- readonly allowedAxes: readonly ["surface-depth", "state-treatment", "container-response"];
69
+ readonly allowedAxes: readonly ["surface-depth", "state-treatment", "label-end", "frame-mode", "scroll-mode", "container-response"];
70
70
  readonly forbiddenChanges: readonly ["anatomy", "closed-invariant", "owner-substitution"];
71
71
  };
72
- readonly closedInvariants: readonly ["label-outside-surface", "nested-border-xor-shadow", "one-content-owner", "whole-action-is-overlay", "neutral-state-only"];
72
+ readonly closedInvariants: readonly ["label-outside-surface", "nested-border-xor-shadow", "one-content-owner", "whole-action-is-overlay", "frameless-has-no-surface-shell", "contained-scroll-has-one-scroll-owner", "neutral-state-only"];
73
73
  }>;
74
74
  base: Readonly<{
75
75
  key: string;
@@ -83,16 +83,16 @@ export declare const offsetPopGrammar: Readonly<{
83
83
  key: "core.surface-list-card";
84
84
  version: string;
85
85
  spec: Readonly<{
86
- readonly version: "1.0.0";
86
+ readonly version: "1.1.0";
87
87
  readonly layer: "branch";
88
- readonly slots: readonly ["external-label", "single-list-shell", "static-row"];
88
+ readonly slots: readonly ["external-label", "single-list-shell", "single-collection-shell", "static-row", "interactive-row", "footer"];
89
89
  readonly stateInputs: readonly ["neutral", "informative", "affirmative", "cautionary", "negative", "pending", "unavailable"];
90
- readonly variableAxes: readonly ["surface-depth", "state-treatment", "row-count", "container-response"];
90
+ readonly variableAxes: readonly ["surface-depth", "state-treatment", "row-count", "row-mode", "label-visibility", "footer-mode", "container-response"];
91
91
  readonly extensionPolicy: {
92
- readonly allowedAxes: readonly ["surface-depth", "state-treatment", "container-response"];
92
+ readonly allowedAxes: readonly ["surface-depth", "state-treatment", "row-mode", "label-visibility", "footer-mode", "container-response"];
93
93
  readonly forbiddenChanges: readonly ["anatomy", "closed-invariant", "owner-substitution"];
94
94
  };
95
- readonly closedInvariants: readonly ["one-list-one-shell", "rows-separated-by-dividers", "affirmative-row-uses-one-check", "nested-border-xor-shadow", "static-rows-have-no-action", "neutral-state-only"];
95
+ readonly closedInvariants: readonly ["one-list-one-shell", "one-collection-one-shell", "rows-separated-by-dividers", "affirmative-row-uses-one-check", "nested-border-xor-shadow", "static-rows-have-no-action", "interactive-rows-own-their-actions", "hidden-label-retains-accessible-name", "footer-follows-collection", "neutral-state-only"];
96
96
  }>;
97
97
  base: Readonly<{
98
98
  key: string;
@@ -106,16 +106,16 @@ export declare const offsetPopGrammar: Readonly<{
106
106
  key: "core.rail";
107
107
  version: string;
108
108
  spec: Readonly<{
109
- readonly version: "1.0.0";
109
+ readonly version: "1.1.0";
110
110
  readonly layer: "branch";
111
- readonly slots: readonly ["heading", "body", "footer"];
111
+ readonly slots: readonly ["heading", "body", "footer", "content-landmark"];
112
112
  readonly stateInputs: readonly ["neutral", "informative", "affirmative", "cautionary", "negative", "pending", "unavailable"];
113
- readonly variableAxes: readonly ["rail-mode", "rail-width", "state-treatment", "container-response"];
113
+ readonly variableAxes: readonly ["landmark-mode", "rail-mode", "rail-width", "collapse-mode", "motion-mode", "state-treatment", "container-response"];
114
114
  readonly extensionPolicy: {
115
- readonly allowedAxes: readonly ["rail-width", "state-treatment", "container-response"];
115
+ readonly allowedAxes: readonly ["landmark-mode", "rail-width", "collapse-mode", "motion-mode", "state-treatment", "container-response"];
116
116
  readonly forbiddenChanges: readonly ["anatomy", "closed-invariant", "owner-substitution"];
117
117
  };
118
- readonly closedInvariants: readonly ["one-rail-landmark", "sticky-disabled-on-narrow-viewport", "body-remains-reachable", "footer-follows-body", "neutral-state-only"];
118
+ readonly closedInvariants: readonly ["one-rail-landmark", "sticky-disabled-on-narrow-viewport", "body-remains-reachable", "footer-follows-body", "content-landmark-is-not-wrapped-by-a-second-landmark", "collapsed-navigation-retains-accessible-names", "reduced-motion-removes-interpolation-not-state-change", "neutral-state-only"];
119
119
  }>;
120
120
  base: Readonly<{
121
121
  key: string;
@@ -153,16 +153,16 @@ export declare const offsetPopGrammar: Readonly<{
153
153
  key: "core.surface-card";
154
154
  version: string;
155
155
  spec: Readonly<{
156
- readonly version: "1.0.0";
156
+ readonly version: "1.1.0";
157
157
  readonly layer: "branch";
158
158
  readonly slots: readonly ["external-label", "content", "whole-action"];
159
159
  readonly stateInputs: readonly ["neutral", "informative", "affirmative", "cautionary", "negative", "pending", "unavailable"];
160
- readonly variableAxes: readonly ["surface-depth", "state-treatment", "action-mode", "container-response"];
160
+ readonly variableAxes: readonly ["surface-depth", "state-treatment", "action-mode", "label-end", "frame-mode", "scroll-mode", "container-response"];
161
161
  readonly extensionPolicy: {
162
- readonly allowedAxes: readonly ["surface-depth", "state-treatment", "container-response"];
162
+ readonly allowedAxes: readonly ["surface-depth", "state-treatment", "label-end", "frame-mode", "scroll-mode", "container-response"];
163
163
  readonly forbiddenChanges: readonly ["anatomy", "closed-invariant", "owner-substitution"];
164
164
  };
165
- readonly closedInvariants: readonly ["label-outside-surface", "nested-border-xor-shadow", "one-content-owner", "whole-action-is-overlay", "neutral-state-only"];
165
+ readonly closedInvariants: readonly ["label-outside-surface", "nested-border-xor-shadow", "one-content-owner", "whole-action-is-overlay", "frameless-has-no-surface-shell", "contained-scroll-has-one-scroll-owner", "neutral-state-only"];
166
166
  }>;
167
167
  base: Readonly<{
168
168
  key: string;
@@ -175,16 +175,16 @@ export declare const offsetPopGrammar: Readonly<{
175
175
  key: "core.surface-list-card";
176
176
  version: string;
177
177
  spec: Readonly<{
178
- readonly version: "1.0.0";
178
+ readonly version: "1.1.0";
179
179
  readonly layer: "branch";
180
- readonly slots: readonly ["external-label", "single-list-shell", "static-row"];
180
+ readonly slots: readonly ["external-label", "single-list-shell", "single-collection-shell", "static-row", "interactive-row", "footer"];
181
181
  readonly stateInputs: readonly ["neutral", "informative", "affirmative", "cautionary", "negative", "pending", "unavailable"];
182
- readonly variableAxes: readonly ["surface-depth", "state-treatment", "row-count", "container-response"];
182
+ readonly variableAxes: readonly ["surface-depth", "state-treatment", "row-count", "row-mode", "label-visibility", "footer-mode", "container-response"];
183
183
  readonly extensionPolicy: {
184
- readonly allowedAxes: readonly ["surface-depth", "state-treatment", "container-response"];
184
+ readonly allowedAxes: readonly ["surface-depth", "state-treatment", "row-mode", "label-visibility", "footer-mode", "container-response"];
185
185
  readonly forbiddenChanges: readonly ["anatomy", "closed-invariant", "owner-substitution"];
186
186
  };
187
- readonly closedInvariants: readonly ["one-list-one-shell", "rows-separated-by-dividers", "affirmative-row-uses-one-check", "nested-border-xor-shadow", "static-rows-have-no-action", "neutral-state-only"];
187
+ readonly closedInvariants: readonly ["one-list-one-shell", "one-collection-one-shell", "rows-separated-by-dividers", "affirmative-row-uses-one-check", "nested-border-xor-shadow", "static-rows-have-no-action", "interactive-rows-own-their-actions", "hidden-label-retains-accessible-name", "footer-follows-collection", "neutral-state-only"];
188
188
  }>;
189
189
  base: Readonly<{
190
190
  key: string;
@@ -197,16 +197,16 @@ export declare const offsetPopGrammar: Readonly<{
197
197
  key: "core.rail";
198
198
  version: string;
199
199
  spec: Readonly<{
200
- readonly version: "1.0.0";
200
+ readonly version: "1.1.0";
201
201
  readonly layer: "branch";
202
- readonly slots: readonly ["heading", "body", "footer"];
202
+ readonly slots: readonly ["heading", "body", "footer", "content-landmark"];
203
203
  readonly stateInputs: readonly ["neutral", "informative", "affirmative", "cautionary", "negative", "pending", "unavailable"];
204
- readonly variableAxes: readonly ["rail-mode", "rail-width", "state-treatment", "container-response"];
204
+ readonly variableAxes: readonly ["landmark-mode", "rail-mode", "rail-width", "collapse-mode", "motion-mode", "state-treatment", "container-response"];
205
205
  readonly extensionPolicy: {
206
- readonly allowedAxes: readonly ["rail-width", "state-treatment", "container-response"];
206
+ readonly allowedAxes: readonly ["landmark-mode", "rail-width", "collapse-mode", "motion-mode", "state-treatment", "container-response"];
207
207
  readonly forbiddenChanges: readonly ["anatomy", "closed-invariant", "owner-substitution"];
208
208
  };
209
- readonly closedInvariants: readonly ["one-rail-landmark", "sticky-disabled-on-narrow-viewport", "body-remains-reachable", "footer-follows-body", "neutral-state-only"];
209
+ readonly closedInvariants: readonly ["one-rail-landmark", "sticky-disabled-on-narrow-viewport", "body-remains-reachable", "footer-follows-body", "content-landmark-is-not-wrapped-by-a-second-landmark", "collapsed-navigation-retains-accessible-names", "reduced-motion-removes-interpolation-not-state-change", "neutral-state-only"];
210
210
  }>;
211
211
  base: Readonly<{
212
212
  key: string;
@@ -54,8 +54,8 @@ export const OFFSET_POP_COMPLEX_CASES = Object.freeze([
54
54
  /** One installable Grammar bundle: Core owns anatomy; Offset Pop owns only visual treatment. */
55
55
  export const offsetPopGrammar = Object.freeze({
56
56
  id: "offset-pop",
57
- version: "1.0.0",
58
- extends: Object.freeze([{ id: "core", version: "1.0.0" }]),
57
+ version: "1.1.0",
58
+ extends: Object.freeze([{ id: "core", version: "1.1.0" }]),
59
59
  contracts: Object.freeze({
60
60
  ...CORE_COMPONENT_CONTRACTS,
61
61
  [offsetPopVisualTreatmentContract.key]: offsetPopVisualTreatmentContract,