@astryxdesign/lab 0.4.7-canary.b7fc8b1 → 0.4.7-canary.de6d448
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CodeEditor/CodeEditor.d.ts +3 -0
- package/dist/CodeEditor/CodeEditor.d.ts.map +1 -1
- package/dist/CodeEditor/CodeEditor.js +11 -1
- package/dist/Schedule/MonthlyView.d.ts.map +1 -1
- package/dist/Schedule/MonthlyView.js +6 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/lab.css +0 -37
- package/package.json +3 -3
- package/src/CodeEditor/CodeEditor.test.tsx +36 -0
- package/src/CodeEditor/CodeEditor.tsx +9 -0
- package/src/Schedule/MonthlyView.tsx +14 -2
- package/src/Schedule/Schedule.test.tsx +27 -6
- package/src/index.ts +0 -1
- package/dist/Stepper/Step.d.ts +0 -130
- package/dist/Stepper/Step.d.ts.map +0 -1
- package/dist/Stepper/Step.js +0 -887
- package/dist/Stepper/StepStatus.d.ts +0 -24
- package/dist/Stepper/StepStatus.d.ts.map +0 -1
- package/dist/Stepper/StepStatus.js +0 -1
- package/dist/Stepper/Stepper.d.ts +0 -98
- package/dist/Stepper/Stepper.d.ts.map +0 -1
- package/dist/Stepper/Stepper.js +0 -134
- package/dist/Stepper/StepperContext.d.ts +0 -28
- package/dist/Stepper/StepperContext.d.ts.map +0 -1
- package/dist/Stepper/StepperContext.js +0 -34
- package/dist/Stepper/index.d.ts +0 -8
- package/dist/Stepper/index.d.ts.map +0 -1
- package/dist/Stepper/index.js +0 -7
- package/dist/Stepper/stepper.stylex.d.ts +0 -15
- package/dist/Stepper/stepper.stylex.d.ts.map +0 -1
- package/dist/Stepper/stepper.stylex.js +0 -20
- package/src/Stepper/Step.doc.mjs +0 -17
- package/src/Stepper/Step.tsx +0 -1317
- package/src/Stepper/StepStatus.ts +0 -26
- package/src/Stepper/Stepper.doc.mjs +0 -281
- package/src/Stepper/Stepper.test.tsx +0 -699
- package/src/Stepper/Stepper.tsx +0 -222
- package/src/Stepper/StepperContext.ts +0 -58
- package/src/Stepper/index.ts +0 -17
- package/src/Stepper/stepper.stylex.ts +0 -19
- package/src/__tests__/labApiContractDrift.test.tsx +0 -57
|
@@ -42,6 +42,9 @@ export interface CodeEditorProps extends Omit<BaseProps<HTMLDivElement>, 'onChan
|
|
|
42
42
|
* The escape is advertised to assistive technology via a visually hidden
|
|
43
43
|
* aria-describedby hint (see `escapeHint`).
|
|
44
44
|
*
|
|
45
|
+
* The editor carries an explicit tabindex="0" (including when read-only) so
|
|
46
|
+
* the scrollable container passes axe's scrollable-region-focusable check.
|
|
47
|
+
*
|
|
45
48
|
* @example
|
|
46
49
|
* ```
|
|
47
50
|
* const [code, setCode] = useState('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeEditor.d.ts","sourceRoot":"","sources":["../../src/CodeEditor/CodeEditor.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAkBlD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,8BAA8B,CAAC;AAuF5D,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAC3C,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,CACX;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sFAAsF;IACtF,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qCAAqC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,+BAA+B;IAC/B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,uBAAuB;IACvB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;IAC5D;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAsED
|
|
1
|
+
{"version":3,"file":"CodeEditor.d.ts","sourceRoot":"","sources":["../../src/CodeEditor/CodeEditor.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAkBlD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,8BAA8B,CAAC;AAuF5D,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAC3C,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,CACX;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sFAAsF;IACtF,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qCAAqC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,+BAA+B;IAC/B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,uBAAuB;IACvB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;IAC5D;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAsED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,QAAsB,EACtB,cAAsB,EACtB,UAAkB,EAClB,WAAW,EACX,SAAS,EACT,IAAW,EACX,SAAS,EAAE,eAAe,EAC1B,KAAK,EACL,UAAqE,EACrE,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,eAAe,+BA8UjB;yBA/Ve,UAAU"}
|
|
@@ -170,6 +170,9 @@ let editorInstanceCounter = 0;
|
|
|
170
170
|
* The escape is advertised to assistive technology via a visually hidden
|
|
171
171
|
* aria-describedby hint (see `escapeHint`).
|
|
172
172
|
*
|
|
173
|
+
* The editor carries an explicit tabindex="0" (including when read-only) so
|
|
174
|
+
* the scrollable container passes axe's scrollable-region-focusable check.
|
|
175
|
+
*
|
|
173
176
|
* @example
|
|
174
177
|
* ```
|
|
175
178
|
* const [code, setCode] = useState('');
|
|
@@ -472,7 +475,14 @@ export function CodeEditor({
|
|
|
472
475
|
ref: editorRef
|
|
473
476
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
474
477
|
,
|
|
475
|
-
contentEditable: isReadOnly ? false : 'plaintext-only'
|
|
478
|
+
contentEditable: isReadOnly ? false : 'plaintext-only'
|
|
479
|
+
// Explicit tabindex: editing hosts have an effective tabIndex of 0
|
|
480
|
+
// already, but axe reads the attribute, and contenteditable is not
|
|
481
|
+
// on its natively-focusable whitelist — without it a maxHeight
|
|
482
|
+
// editor fails scrollable-region-focusable. Also keeps read-only
|
|
483
|
+
// editors keyboard-focusable, like a readonly textarea.
|
|
484
|
+
,
|
|
485
|
+
tabIndex: 0,
|
|
476
486
|
role: "textbox",
|
|
477
487
|
"aria-multiline": "true",
|
|
478
488
|
"aria-label": label,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MonthlyView.d.ts","sourceRoot":"","sources":["../../src/Schedule/MonthlyView.tsx"],"names":[],"mappings":"AA8CA,OAAO,KAAK,EAEV,YAAY,EAEb,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,0BAA0B;IACzC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAC1C;
|
|
1
|
+
{"version":3,"file":"MonthlyView.d.ts","sourceRoot":"","sources":["../../src/Schedule/MonthlyView.tsx"],"names":[],"mappings":"AA8CA,OAAO,KAAK,EAEV,YAAY,EAEb,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,0BAA0B;IACzC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAC1C;AA4SD,wBAAgB,yBAAyB,CAAC,EACxC,YAAgB,GACjB,GAAE,0BAA+B,GAAG,YAAY,CAAC,0BAA0B,CAAC,CAmC5E"}
|
|
@@ -45,7 +45,12 @@ function ScheduleMonthlyView(_props) {
|
|
|
45
45
|
children: /*#__PURE__*/_jsxs("div", {
|
|
46
46
|
role: "grid",
|
|
47
47
|
"aria-label": formatMonthTitle(rangeDate, timezoneID),
|
|
48
|
-
"aria-readonly": true
|
|
48
|
+
"aria-readonly": true
|
|
49
|
+
// The grid scrolls horizontally at narrow viewports and contains no
|
|
50
|
+
// focusable descendants, so it must be focusable itself for keyboard
|
|
51
|
+
// scrolling (axe: scrollable-region-focusable).
|
|
52
|
+
,
|
|
53
|
+
tabIndex: 0,
|
|
49
54
|
...stylex.props(styles.monthGrid),
|
|
50
55
|
children: [/*#__PURE__*/_jsx("div", {
|
|
51
56
|
role: "row",
|
package/dist/index.d.ts
CHANGED
|
@@ -25,7 +25,6 @@ export { RadialChart, type RadialChartProps, RadialGrid, type RadialGridProps, R
|
|
|
25
25
|
export { ThreeDChart, type ThreeDChartProps, ThreeDScatter, ThreeDScatterGL, type ThreeDScatterProps, type ThreeDScatterGLProps, ThreeDBar, type ThreeDBarProps, ThreeDGrid, type ThreeDGridProps, ThreeDAxis, type ThreeDAxisProps, ThreeDSurface, type ThreeDSurfaceProps, use3D, type ThreeDContext, type Camera, type Point3D, type ProjectedPoint, } from './ThreeD';
|
|
26
26
|
export { ChartBrush, type ChartBrushProps, type BrushMode, type BrushRange, ChartZoom, type ChartZoomProps, ChartSelect, type ChartSelectProps, ChartReferenceLine, type ChartReferenceLineProps, } from './Chart';
|
|
27
27
|
export { SankeyChart, type SankeyChartProps, SankeyLink, type SankeyLinkProps, SankeyNode, type SankeyNodeProps, SankeyLabel, type SankeyLabelProps, useSankey, type SankeyNodeDatum, type SankeyLinkDatum, type SankeyColumn, type SankeyColumnDef, type SankeyNodeLayout, type SankeyLinkLayout, type SankeyColumnLayout, SankeyGrid, type SankeyGridProps, type SankeyContext, } from './Sankey';
|
|
28
|
-
export * from './Stepper';
|
|
29
28
|
export * from './CircularProgress';
|
|
30
29
|
export * from './ListInput';
|
|
31
30
|
export { LogStream, type LogStreamProps, type LogEntry, type LogStreamLevel, } from './LogStream';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -58,7 +58,6 @@ export { SankeyChart, SankeyLink, SankeyNode, SankeyLabel, useSankey, SankeyGrid
|
|
|
58
58
|
|
|
59
59
|
// Chart v2 (config model) moved to its own package: @astryxdesign/charts.
|
|
60
60
|
// It is no longer re-exported from @astryxdesign/lab.
|
|
61
|
-
export * from "./Stepper/index.js";
|
|
62
61
|
export * from "./CircularProgress/index.js";
|
|
63
62
|
|
|
64
63
|
// ListInput — compact editor for short collections of simple records
|
package/dist/lab.css
CHANGED
|
@@ -11,14 +11,11 @@
|
|
|
11
11
|
@property --x-gridTemplateColumns { syntax: "*"; inherits: false;}
|
|
12
12
|
@property --x-height { syntax: "*"; inherits: false;}
|
|
13
13
|
@property --x-insetInlineStart { syntax: "*"; inherits: false;}
|
|
14
|
-
@property --x-marginBlock { syntax: "*"; inherits: false;}
|
|
15
14
|
@property --x-marginBlockStart { syntax: "*"; inherits: false;}
|
|
16
15
|
@property --x-maxHeight { syntax: "*"; inherits: false;}
|
|
17
16
|
@property --x-maxWidth { syntax: "*"; inherits: false;}
|
|
18
17
|
@property --x-minHeight { syntax: "*"; inherits: false;}
|
|
19
18
|
@property --x-minWidth { syntax: "*"; inherits: false;}
|
|
20
|
-
@property --x-paddingBlock { syntax: "*"; inherits: false;}
|
|
21
|
-
@property --x-paddingInline { syntax: "*"; inherits: false;}
|
|
22
19
|
@property --x-top { syntax: "*"; inherits: false;}
|
|
23
20
|
@property --x-transform { syntax: "*"; inherits: false;}
|
|
24
21
|
@property --x-viewTransitionName { syntax: "*"; inherits: false;}
|
|
@@ -125,7 +122,6 @@
|
|
|
125
122
|
.x33j1x8:not(#\#):not(#\#){grid-row:var(--x-gridRow)}
|
|
126
123
|
.x17y0mx6:not(#\#):not(#\#){inset-inline:0}
|
|
127
124
|
.x1yqqeh1:not(#\#):not(#\#){margin-block:var(--spacing-0-5)}
|
|
128
|
-
.x1oqu0vw:not(#\#):not(#\#){margin-block:var(--x-marginBlock)}
|
|
129
125
|
.x1a2a7pz:not(#\#):not(#\#){outline:none}
|
|
130
126
|
.xysyzu8:not(#\#):not(#\#){overflow:auto}
|
|
131
127
|
.xb3r6kr:not(#\#):not(#\#){overflow:hidden}
|
|
@@ -137,15 +133,12 @@
|
|
|
137
133
|
.xu0wf1k:not(#\#):not(#\#){padding-block:var(--spacing-1)}
|
|
138
134
|
.xce4md1:not(#\#):not(#\#){padding-block:var(--spacing-2)}
|
|
139
135
|
.x8o8v82:not(#\#):not(#\#){padding-block:var(--spacing-3)}
|
|
140
|
-
.x1giekp1:not(#\#):not(#\#){padding-block:var(--x-paddingBlock)}
|
|
141
136
|
.xnjsko4:not(#\#):not(#\#){padding-inline:0}
|
|
142
137
|
.x4ezzuc:not(#\#):not(#\#){padding-inline:var(--spacing-1-5)}
|
|
143
138
|
.x7a5moj:not(#\#):not(#\#){padding-inline:var(--spacing-1)}
|
|
144
139
|
.xf314gf:not(#\#):not(#\#){padding-inline:var(--spacing-2)}
|
|
145
140
|
.xrrkdod:not(#\#):not(#\#){padding-inline:var(--spacing-3)}
|
|
146
141
|
.x1pzlopt:not(#\#):not(#\#){padding-inline:var(--spacing-4)}
|
|
147
|
-
.x30g6up:not(#\#):not(#\#){padding-inline:var(--x-paddingInline)}
|
|
148
|
-
.x1ku5rj1:not(#\#):not(#\#){place-items:center}
|
|
149
142
|
.x1hl2dhg:not(#\#):not(#\#){text-decoration:none}
|
|
150
143
|
.xb0j27v:not(#\#):not(#\#){transition:grid-template-rows var(--duration-medium) var(--ease-standard)}
|
|
151
144
|
.x1ob6yzd:not(#\#):not(#\#){transition:transform var(--duration-fast) var(--ease-standard)}
|
|
@@ -168,7 +161,6 @@
|
|
|
168
161
|
.xuk3077:not(#\#):not(#\#):not(#\#){align-items:flex-end}
|
|
169
162
|
.x1cy8zhl:not(#\#):not(#\#):not(#\#){align-items:flex-start}
|
|
170
163
|
.x7a106z:not(#\#):not(#\#):not(#\#){align-items:start}
|
|
171
|
-
.x1qjc9v5:not(#\#):not(#\#):not(#\#){align-items:stretch}
|
|
172
164
|
.x7fd4wk:not(#\#):not(#\#):not(#\#){align-self:end}
|
|
173
165
|
.xqcrz7y:not(#\#):not(#\#):not(#\#){align-self:flex-start}
|
|
174
166
|
.x1y8v6su:not(#\#):not(#\#):not(#\#){align-self:start}
|
|
@@ -237,12 +229,9 @@
|
|
|
237
229
|
.xg9c4l2:not(#\#):not(#\#):not(#\#){background-color:var(--color-border-red)}
|
|
238
230
|
.x1m3yk8c:not(#\#):not(#\#):not(#\#){background-color:var(--color-border-teal)}
|
|
239
231
|
.x154rz6c:not(#\#):not(#\#):not(#\#){background-color:var(--color-border-yellow)}
|
|
240
|
-
.x1m4xfpy:not(#\#):not(#\#):not(#\#){background-color:var(--color-border)}
|
|
241
232
|
.x1pjz0fi:not(#\#):not(#\#):not(#\#){background-color:var(--color-error)}
|
|
242
233
|
.x1q5y3ey:not(#\#):not(#\#):not(#\#){background-color:var(--color-icon-secondary)}
|
|
243
|
-
.xdsz4j9:not(#\#):not(#\#):not(#\#){background-color:var(--color-success)}
|
|
244
234
|
.xdomwnj:not(#\#):not(#\#):not(#\#){background-color:var(--color-text-secondary)}
|
|
245
|
-
.x1q8g9m5:not(#\#):not(#\#):not(#\#){background-color:var(--color-warning)}
|
|
246
235
|
.xct3ic7:not(#\#):not(#\#):not(#\#){background-image:linear-gradient(90deg,var(--color-text-secondary) 0%,var(--color-text-disabled) 50%,var(--color-text-secondary) 100%)}
|
|
247
236
|
.x18o3ruo:not(#\#):not(#\#):not(#\#){background-image:none}
|
|
248
237
|
.xakli9p:not(#\#):not(#\#):not(#\#){background-size:200% 100%}
|
|
@@ -281,15 +270,11 @@
|
|
|
281
270
|
.x1lenag:not(#\#):not(#\#):not(#\#){color:light-dark(var(--color-error),color-mix(in srgb,var(--color-error) 82%,white))}
|
|
282
271
|
.x19co3pv:not(#\#):not(#\#):not(#\#){color:transparent}
|
|
283
272
|
.xqwr325:not(#\#):not(#\#):not(#\#){color:var(--color-accent)}
|
|
284
|
-
.xrkvqaz:not(#\#):not(#\#):not(#\#){color:var(--color-background-surface)}
|
|
285
273
|
.xjt36v0:not(#\#):not(#\#):not(#\#){color:var(--color-error)}
|
|
286
274
|
.xqa6c3m:not(#\#):not(#\#):not(#\#){color:var(--color-icon-disabled)}
|
|
287
275
|
.xtbr613:not(#\#):not(#\#):not(#\#){color:var(--color-icon-primary)}
|
|
288
276
|
.xv9yike:not(#\#):not(#\#):not(#\#){color:var(--color-icon-secondary)}
|
|
289
277
|
.x17wrial:not(#\#):not(#\#):not(#\#){color:var(--color-on-accent)}
|
|
290
|
-
.x1m024r3:not(#\#):not(#\#):not(#\#){color:var(--color-on-error)}
|
|
291
|
-
.xri61p4:not(#\#):not(#\#):not(#\#){color:var(--color-on-success)}
|
|
292
|
-
.xrebv38:not(#\#):not(#\#):not(#\#){color:var(--color-on-warning)}
|
|
293
278
|
.xtjic6:not(#\#):not(#\#):not(#\#){color:var(--color-success)}
|
|
294
279
|
.xjse4m1:not(#\#):not(#\#):not(#\#){color:var(--color-text-accent)}
|
|
295
280
|
.x1vvqiwl:not(#\#):not(#\#):not(#\#){color:var(--color-text-blue)}
|
|
@@ -310,7 +295,6 @@
|
|
|
310
295
|
.xak3so:not(#\#):not(#\#):not(#\#){column-gap:var(--spacing-2)}
|
|
311
296
|
.xewh9hi:not(#\#):not(#\#):not(#\#){column-gap:var(--spacing-3)}
|
|
312
297
|
.x1w36mze:not(#\#):not(#\#):not(#\#){contain-intrinsic-height:auto 28px}
|
|
313
|
-
.x1hppuf3:not(#\#):not(#\#):not(#\#){container-name:astryx-stepper}
|
|
314
298
|
.x63rumg:not(#\#):not(#\#):not(#\#){container-name:list-input}
|
|
315
299
|
.x12h1iku:not(#\#):not(#\#):not(#\#){container-type:inline-size}
|
|
316
300
|
.xb5mbof:not(#\#):not(#\#):not(#\#){content-visibility:auto}
|
|
@@ -326,7 +310,6 @@
|
|
|
326
310
|
.xbh8q5q:not(#\#):not(#\#):not(#\#){fill:none}
|
|
327
311
|
.xdl72j9:not(#\#):not(#\#):not(#\#){flex-basis:auto}
|
|
328
312
|
.xdt5ytf:not(#\#):not(#\#):not(#\#){flex-direction:column}
|
|
329
|
-
.x1q0g3np:not(#\#):not(#\#):not(#\#){flex-direction:row}
|
|
330
313
|
.x1iyjqo2:not(#\#):not(#\#):not(#\#){flex-grow:1}
|
|
331
314
|
.x2lah0s:not(#\#):not(#\#):not(#\#){flex-shrink:0}
|
|
332
315
|
.xs83m0k:not(#\#):not(#\#):not(#\#){flex-shrink:1}
|
|
@@ -391,8 +374,6 @@
|
|
|
391
374
|
.x1lqcxt8:not(#\#):not(#\#):not(#\#){justify-self:start}
|
|
392
375
|
.x9pfba7:not(#\#):not(#\#):not(#\#){letter-spacing:.08em}
|
|
393
376
|
.xa7kkou:not(#\#):not(#\#):not(#\#){line-height:1.7}
|
|
394
|
-
.xo5v014:not(#\#):not(#\#):not(#\#){line-height:1}
|
|
395
|
-
.x1d3mw78:not(#\#):not(#\#):not(#\#){line-height:16px}
|
|
396
377
|
.xklk4pu:not(#\#):not(#\#):not(#\#){line-height:30px}
|
|
397
378
|
.xw6l6zx:not(#\#):not(#\#):not(#\#){line-height:var(--text-body-leading)}
|
|
398
379
|
.x17iicif:not(#\#):not(#\#):not(#\#){line-height:var(--text-code-leading)}
|
|
@@ -419,11 +400,8 @@
|
|
|
419
400
|
.x1t818jl:not(#\#):not(#\#):not(#\#){padding-inline-end:var(--spacing-3)}
|
|
420
401
|
.x1f43n9v:not(#\#):not(#\#):not(#\#){padding-inline-start:calc(16px + var(--spacing-1-5))}
|
|
421
402
|
.xmarwi5:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--icon-inline-offset)}
|
|
422
|
-
.x18gyask:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-0)}
|
|
423
403
|
.x1vsv5vr:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-1)}
|
|
424
404
|
.x1rey3nv:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-4)}
|
|
425
|
-
.x31w388:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-6)}
|
|
426
|
-
.xchaq28:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-7)}
|
|
427
405
|
.x67bb7w:not(#\#):not(#\#):not(#\#){pointer-events:auto}
|
|
428
406
|
.x47corl:not(#\#):not(#\#):not(#\#){pointer-events:none}
|
|
429
407
|
.x10l6tqk:not(#\#):not(#\#):not(#\#){position:absolute}
|
|
@@ -447,7 +425,6 @@
|
|
|
447
425
|
.x2b8uid:not(#\#):not(#\#):not(#\#){text-align:center}
|
|
448
426
|
.xp4054r:not(#\#):not(#\#):not(#\#){text-align:end}
|
|
449
427
|
.xdpxx8g:not(#\#):not(#\#):not(#\#){text-align:left}
|
|
450
|
-
.x1yc453h:not(#\#):not(#\#):not(#\#){text-align:start}
|
|
451
428
|
.xlyipyv:not(#\#):not(#\#):not(#\#){text-overflow:ellipsis}
|
|
452
429
|
.xtvhhri:not(#\#):not(#\#):not(#\#){text-transform:uppercase}
|
|
453
430
|
.x5ve5x3:not(#\#):not(#\#):not(#\#){touch-action:none}
|
|
@@ -476,7 +453,6 @@
|
|
|
476
453
|
.xxymvpz:not(#\#):not(#\#):not(#\#){vertical-align:middle}
|
|
477
454
|
.xqwjeat:not(#\#):not(#\#):not(#\#){view-transition-name:var(--x-viewTransitionName)}
|
|
478
455
|
.xlshs6z:not(#\#):not(#\#):not(#\#){visibility:hidden}
|
|
479
|
-
.xnpuxes:not(#\#):not(#\#):not(#\#){visibility:visible}
|
|
480
456
|
.xuxw1ft:not(#\#):not(#\#):not(#\#){white-space:nowrap}
|
|
481
457
|
.x126k92a:not(#\#):not(#\#):not(#\#){white-space:pre-wrap}
|
|
482
458
|
.x1sdyfia:not(#\#):not(#\#):not(#\#){white-space:pre}
|
|
@@ -485,15 +461,12 @@
|
|
|
485
461
|
.x1vjfegm:not(#\#):not(#\#):not(#\#){z-index:1}
|
|
486
462
|
.x1355qak:not(#\#):not(#\#):not(#\#){z-index:20}
|
|
487
463
|
.xr3buco:not(#\#):not(#\#):not(#\#){z-index:var(--x-zIndex)}
|
|
488
|
-
.x1rmeqbc.x1rmeqbc:where(.x1fcdk97:first-child *):not(#\#):not(#\#):not(#\#){visibility:hidden}
|
|
489
|
-
.xehs70j.xehs70j:where(.x1fcdk97:last-child *):not(#\#):not(#\#):not(#\#){visibility:hidden}
|
|
490
464
|
.x1iutq3a.x1iutq3a:hover:where(:not(:disabled,[aria-disabled="true"])):not(#\#):not(#\#):not(#\#){background-color:transparent}
|
|
491
465
|
.xrz1bfo.xrz1bfo:hover:where(:not(:disabled,[aria-disabled="true"])):not(#\#):not(#\#):not(#\#){background-image:none}
|
|
492
466
|
.x16khyan:is(:disabled,[aria-disabled="true"]):not(#\#):not(#\#):not(#\#){cursor:default}
|
|
493
467
|
.x1bqaal:focus-visible:not(#\#):not(#\#):not(#\#){outline-offset:-2px}
|
|
494
468
|
.x1df3fe5:is([dir="rtl"] *):not(#\#):not(#\#):not(#\#){transform:translateX(-100%)}
|
|
495
469
|
.xttggg:is([dir="rtl"] *):not(#\#):not(#\#):not(#\#){transform:translateX(100%)}
|
|
496
|
-
.xyxi2l3:active:not(#\#):not(#\#):not(#\#){background-color:var(--color-overlay-pressed)}
|
|
497
470
|
.xuqm82a:active:not(#\#):not(#\#):not(#\#){background-image:none}
|
|
498
471
|
@media (prefers-reduced-motion: reduce){.xnh0sag.xnh0sag:not(#\#):not(#\#):not(#\#){animation-duration:3s}}
|
|
499
472
|
@media (prefers-reduced-motion: reduce){.xy02sl2.xy02sl2:not(#\#):not(#\#):not(#\#){animation-duration:4s}}
|
|
@@ -510,7 +483,6 @@
|
|
|
510
483
|
@container (max-width: 40rem){.x12eanku.x12eanku:not(#\#):not(#\#):not(#\#){border-inline-start-width:0}}
|
|
511
484
|
@container list-input (max-width: 640px){.x1jiamoa.x1jiamoa:not(#\#):not(#\#):not(#\#){display:block}}
|
|
512
485
|
@container list-input (max-width: 640px){.x12gktpv.x12gktpv:not(#\#):not(#\#):not(#\#){display:contents}}
|
|
513
|
-
@container astryx-stepper (max-width: 480px){.x1wzf6n4.x1wzf6n4:not(#\#):not(#\#):not(#\#){display:none}}
|
|
514
486
|
@container (max-width: 40rem){.x1sp3fdr.x1sp3fdr:not(#\#):not(#\#):not(#\#){grid-template-columns:minmax(0,1fr)}}
|
|
515
487
|
@container list-input (max-width: 640px){.x540v0d.x540v0d:not(#\#):not(#\#):not(#\#){grid-template-columns:minmax(0,1fr)}}
|
|
516
488
|
@container list-input (max-width: 640px){.xrs5tkd.xrs5tkd:not(#\#):not(#\#):not(#\#){row-gap:var(--spacing-2)}}
|
|
@@ -540,9 +512,6 @@
|
|
|
540
512
|
.x1d9x2de:not(#\#):not(#\#):not(#\#):not(#\#){height:640px}
|
|
541
513
|
.xt7dq6l:not(#\#):not(#\#):not(#\#):not(#\#){height:auto}
|
|
542
514
|
.xhigkf7:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--icon-size)}
|
|
543
|
-
.x11c6zpc:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--spacing-1)}
|
|
544
|
-
.x6b6gus:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--spacing-4)}
|
|
545
|
-
.x1grt7ep:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--spacing-5)}
|
|
546
515
|
.x16ye13r:not(#\#):not(#\#):not(#\#):not(#\#){height:var(--x-height)}
|
|
547
516
|
.x1unci72:not(#\#):not(#\#):not(#\#):not(#\#){left:var(--spacing-4)}
|
|
548
517
|
.xlstkdb:not(#\#):not(#\#):not(#\#):not(#\#){margin-bottom:var(--spacing-0-5)}
|
|
@@ -565,18 +534,15 @@
|
|
|
565
534
|
.xjwf9q1:not(#\#):not(#\#):not(#\#):not(#\#){min-height:24px}
|
|
566
535
|
.x1cy360x:not(#\#):not(#\#):not(#\#):not(#\#){min-height:3em}
|
|
567
536
|
.x1uogy3y:not(#\#):not(#\#):not(#\#):not(#\#){min-height:var(--size-element-md)}
|
|
568
|
-
.x175cymr:not(#\#):not(#\#):not(#\#):not(#\#){min-height:var(--spacing-2)}
|
|
569
537
|
.xu95rz8:not(#\#):not(#\#):not(#\#):not(#\#){min-height:var(--transfer-list-panel-min-block-size)}
|
|
570
538
|
.x82snj4:not(#\#):not(#\#):not(#\#):not(#\#){min-height:var(--x-minHeight)}
|
|
571
539
|
.xeuugli:not(#\#):not(#\#):not(#\#):not(#\#){min-width:0}
|
|
572
540
|
.x17s4nb9:not(#\#):not(#\#):not(#\#):not(#\#){min-width:30px}
|
|
573
541
|
.x1uz6y0c:not(#\#):not(#\#):not(#\#):not(#\#){min-width:784px}
|
|
574
|
-
.x18ki04u:not(#\#):not(#\#):not(#\#):not(#\#){min-width:var(--spacing-2)}
|
|
575
542
|
.xkj4a21:not(#\#):not(#\#):not(#\#):not(#\#){min-width:var(--x-minWidth)}
|
|
576
543
|
.xw2csxc:not(#\#):not(#\#):not(#\#):not(#\#){overflow-x:auto}
|
|
577
544
|
.x6ikm8r:not(#\#):not(#\#):not(#\#):not(#\#){overflow-x:hidden}
|
|
578
545
|
.x1odjw0f:not(#\#):not(#\#):not(#\#):not(#\#){overflow-y:auto}
|
|
579
|
-
.x1j85h84:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:1px}
|
|
580
546
|
.x1a148e8:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:env(safe-area-inset-bottom,0px)}
|
|
581
547
|
.xy143xn:not(#\#):not(#\#):not(#\#):not(#\#){padding-bottom:var(--spacing-1)}
|
|
582
548
|
.xpgmcrp:not(#\#):not(#\#):not(#\#):not(#\#){padding-top:var(--icon-block-offset)}
|
|
@@ -597,9 +563,6 @@
|
|
|
597
563
|
.x1td3qas:not(#\#):not(#\#):not(#\#):not(#\#){width:32px}
|
|
598
564
|
.x1ftt334:not(#\#):not(#\#):not(#\#):not(#\#){width:5px}
|
|
599
565
|
.x1oai4fc:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--icon-size)}
|
|
600
|
-
.xx9zwd3:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--spacing-1)}
|
|
601
|
-
.x12xnipv:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--spacing-4)}
|
|
602
|
-
.xfyiiit:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--spacing-5)}
|
|
603
566
|
.x11ymkkh:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--x-1xmrurk)}
|
|
604
567
|
.x5lhr3w:not(#\#):not(#\#):not(#\#):not(#\#){width:var(--x-width)}
|
|
605
568
|
.x14l7nz5:first-child:not(#\#):not(#\#):not(#\#):not(#\#){margin-top:0}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astryxdesign/lab",
|
|
3
|
-
"version": "0.4.7-canary.
|
|
3
|
+
"version": "0.4.7-canary.de6d448",
|
|
4
4
|
"description": "Experimental Astryx components — published to npm only under the @canary dist-tag for early testing; never released as a stable (latest) version.",
|
|
5
5
|
"author": "Meta Open Source",
|
|
6
6
|
"license": "MIT",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
47
|
"@stylexjs/stylex": ">=0.10.0",
|
|
48
|
-
"@astryxdesign/core": "0.4.7-canary.
|
|
48
|
+
"@astryxdesign/core": "0.4.7-canary.de6d448",
|
|
49
49
|
"react": ">=19.0.0",
|
|
50
50
|
"react-dom": ">=19.0.0"
|
|
51
51
|
},
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"d3-shape": "^3.2.0"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@astryxdesign/cli": "0.4.7-canary.
|
|
58
|
+
"@astryxdesign/cli": "0.4.7-canary.de6d448",
|
|
59
59
|
"@types/d3-array": "^3.2.2",
|
|
60
60
|
"@types/d3-scale": "^4.0.9",
|
|
61
61
|
"@types/d3-shape": "^3.1.8",
|
|
@@ -188,4 +188,40 @@ describe('CodeEditor', () => {
|
|
|
188
188
|
|
|
189
189
|
expect(onChange).toHaveBeenCalledWith(' a;\nb;');
|
|
190
190
|
});
|
|
191
|
+
|
|
192
|
+
it('exposes an explicit tabindex so scrollable editors count as focusable content', () => {
|
|
193
|
+
// contenteditable is not on axe's natively-focusable whitelist, and axe
|
|
194
|
+
// reads the tabindex ATTRIBUTE (not the browser's effective tabIndex),
|
|
195
|
+
// so the scrollable editorContainer only passes scrollable-region-focusable
|
|
196
|
+
// when the <code> editor materializes tabindex="0" explicitly.
|
|
197
|
+
render(
|
|
198
|
+
<CodeEditor
|
|
199
|
+
value={Array.from({length: 30}, (_, i) => `line ${i + 1};`).join('\n')}
|
|
200
|
+
onChange={() => {}}
|
|
201
|
+
language="typescript"
|
|
202
|
+
label="Edit snippet"
|
|
203
|
+
maxHeight={200}
|
|
204
|
+
/>,
|
|
205
|
+
);
|
|
206
|
+
expect(screen.getByRole('textbox', {name: 'Edit snippet'})).toHaveAttribute(
|
|
207
|
+
'tabindex',
|
|
208
|
+
'0',
|
|
209
|
+
);
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
it('keeps read-only editors keyboard-focusable, like a readonly textarea', () => {
|
|
213
|
+
render(
|
|
214
|
+
<CodeEditor
|
|
215
|
+
value="const x = 1;"
|
|
216
|
+
onChange={() => {}}
|
|
217
|
+
language="typescript"
|
|
218
|
+
label="Edit snippet"
|
|
219
|
+
isReadOnly
|
|
220
|
+
/>,
|
|
221
|
+
);
|
|
222
|
+
expect(screen.getByRole('textbox', {name: 'Edit snippet'})).toHaveAttribute(
|
|
223
|
+
'tabindex',
|
|
224
|
+
'0',
|
|
225
|
+
);
|
|
226
|
+
});
|
|
191
227
|
});
|
|
@@ -242,6 +242,9 @@ let editorInstanceCounter = 0;
|
|
|
242
242
|
* The escape is advertised to assistive technology via a visually hidden
|
|
243
243
|
* aria-describedby hint (see `escapeHint`).
|
|
244
244
|
*
|
|
245
|
+
* The editor carries an explicit tabindex="0" (including when read-only) so
|
|
246
|
+
* the scrollable container passes axe's scrollable-region-focusable check.
|
|
247
|
+
*
|
|
245
248
|
* @example
|
|
246
249
|
* ```
|
|
247
250
|
* const [code, setCode] = useState('');
|
|
@@ -575,6 +578,12 @@ export function CodeEditor({
|
|
|
575
578
|
ref={editorRef}
|
|
576
579
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
577
580
|
contentEditable={isReadOnly ? false : ('plaintext-only' as any)}
|
|
581
|
+
// Explicit tabindex: editing hosts have an effective tabIndex of 0
|
|
582
|
+
// already, but axe reads the attribute, and contenteditable is not
|
|
583
|
+
// on its natively-focusable whitelist — without it a maxHeight
|
|
584
|
+
// editor fails scrollable-region-focusable. Also keeps read-only
|
|
585
|
+
// editors keyboard-focusable, like a readonly textarea.
|
|
586
|
+
tabIndex={0}
|
|
578
587
|
role="textbox"
|
|
579
588
|
aria-multiline="true"
|
|
580
589
|
aria-label={label}
|
|
@@ -57,8 +57,16 @@ export interface ScheduleMonthlyViewOptions {
|
|
|
57
57
|
function ScheduleMonthlyView(
|
|
58
58
|
_props: ScheduleViewComponentProps<ScheduleMonthlyViewOptions>,
|
|
59
59
|
) {
|
|
60
|
-
const {
|
|
61
|
-
|
|
60
|
+
const {
|
|
61
|
+
events,
|
|
62
|
+
categories,
|
|
63
|
+
date,
|
|
64
|
+
focusDate,
|
|
65
|
+
timezoneID,
|
|
66
|
+
range,
|
|
67
|
+
isLoading,
|
|
68
|
+
headingLevel,
|
|
69
|
+
} = useScheduleContext();
|
|
62
70
|
const rangeDate = date.toPlainDate();
|
|
63
71
|
const highlightedDate = focusDate.toPlainDate();
|
|
64
72
|
const currentTime = useCurrentTime();
|
|
@@ -76,6 +84,10 @@ function ScheduleMonthlyView(
|
|
|
76
84
|
role="grid"
|
|
77
85
|
aria-label={formatMonthTitle(rangeDate, timezoneID)}
|
|
78
86
|
aria-readonly
|
|
87
|
+
// The grid scrolls horizontally at narrow viewports and contains no
|
|
88
|
+
// focusable descendants, so it must be focusable itself for keyboard
|
|
89
|
+
// scrolling (axe: scrollable-region-focusable).
|
|
90
|
+
tabIndex={0}
|
|
79
91
|
{...stylex.props(styles.monthGrid)}>
|
|
80
92
|
<div role="row" {...stylex.props(styles.weekHeader)}>
|
|
81
93
|
{days.slice(0, 7).map((day, index) => (
|
|
@@ -114,9 +114,9 @@ describe('Schedule', () => {
|
|
|
114
114
|
await waitFor(() => {
|
|
115
115
|
expect(screen.getByText('Visible sync')).toBeInTheDocument();
|
|
116
116
|
});
|
|
117
|
-
expect(
|
|
118
|
-
|
|
119
|
-
)
|
|
117
|
+
expect(screen.getAllByRole('heading', {level: 3}).length).toBeGreaterThan(
|
|
118
|
+
0,
|
|
119
|
+
);
|
|
120
120
|
});
|
|
121
121
|
|
|
122
122
|
it('renders list day headings at the configured headingLevel (default 3)', async () => {
|
|
@@ -133,9 +133,9 @@ describe('Schedule', () => {
|
|
|
133
133
|
await waitFor(() => {
|
|
134
134
|
expect(screen.getByText('Visible sync')).toBeInTheDocument();
|
|
135
135
|
});
|
|
136
|
-
expect(
|
|
137
|
-
|
|
138
|
-
)
|
|
136
|
+
expect(screen.getAllByRole('heading', {level: 3}).length).toBeGreaterThan(
|
|
137
|
+
0,
|
|
138
|
+
);
|
|
139
139
|
});
|
|
140
140
|
|
|
141
141
|
it('loads async events with Instant range boundaries', async () => {
|
|
@@ -249,6 +249,27 @@ describe('Schedule', () => {
|
|
|
249
249
|
).toBeInTheDocument();
|
|
250
250
|
});
|
|
251
251
|
|
|
252
|
+
it('makes the scrollable monthly grid keyboard-focusable', () => {
|
|
253
|
+
// The month grid is a horizontal scroll container with no focusable
|
|
254
|
+
// descendants, so it needs tabindex="0" itself for
|
|
255
|
+
// scrollable-region-focusable to pass and for keyboard scrolling.
|
|
256
|
+
render(
|
|
257
|
+
<Schedule
|
|
258
|
+
view={createScheduleMonthlyView()}
|
|
259
|
+
events={events}
|
|
260
|
+
categories={categories}
|
|
261
|
+
date={Date.UTC(2026, 4, 13)}
|
|
262
|
+
focusDate={Date.UTC(2026, 4, 13)}
|
|
263
|
+
timezoneID="UTC"
|
|
264
|
+
/>,
|
|
265
|
+
);
|
|
266
|
+
|
|
267
|
+
expect(screen.getByRole('grid', {name: 'May 2026'})).toHaveAttribute(
|
|
268
|
+
'tabindex',
|
|
269
|
+
'0',
|
|
270
|
+
);
|
|
271
|
+
});
|
|
272
|
+
|
|
252
273
|
it('exposes time grid views as ARIA grids', () => {
|
|
253
274
|
render(
|
|
254
275
|
<Schedule
|
package/src/index.ts
CHANGED
|
@@ -240,7 +240,6 @@ export {
|
|
|
240
240
|
|
|
241
241
|
// Chart v2 (config model) moved to its own package: @astryxdesign/charts.
|
|
242
242
|
// It is no longer re-exported from @astryxdesign/lab.
|
|
243
|
-
export * from './Stepper';
|
|
244
243
|
export * from './CircularProgress';
|
|
245
244
|
|
|
246
245
|
// ListInput — compact editor for short collections of simple records
|
package/dist/Stepper/Step.d.ts
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file Step.tsx
|
|
3
|
-
* @input Uses React, stylex, theme tokens, StepperContext
|
|
4
|
-
* @output Exports Step component and StepProps
|
|
5
|
-
* @position Individual step item; used inside Stepper
|
|
6
|
-
*
|
|
7
|
-
* SYNC: When modified, update these files to stay in sync:
|
|
8
|
-
* - /packages/lab/src/Stepper/Stepper.doc.mjs
|
|
9
|
-
* - /packages/lab/src/Stepper/Stepper.test.tsx
|
|
10
|
-
* - /packages/lab/src/Stepper/index.ts
|
|
11
|
-
* - /apps/storybook/stories/Stepper.stories.tsx
|
|
12
|
-
* - /packages/cli/assets/templates/blocks/components/Stepper/ (showcase blocks)
|
|
13
|
-
*/
|
|
14
|
-
import { type ReactNode } from 'react';
|
|
15
|
-
import type { BaseProps } from '@astryxdesign/core';
|
|
16
|
-
import type { StepStatus } from './StepStatus';
|
|
17
|
-
/**
|
|
18
|
-
* Built-in indicator presets. Anything other than these strings passed to
|
|
19
|
-
* `indicator` is treated as a custom ReactNode (e.g. an `<Icon />`).
|
|
20
|
-
* - 'auto': numbered badge for not-yet-reached steps, a check once completed
|
|
21
|
-
* (default)
|
|
22
|
-
* - 'number': always a numbered badge
|
|
23
|
-
* - 'none': no indicator — just the progress bar and label
|
|
24
|
-
*/
|
|
25
|
-
export type StepIndicatorPreset = 'auto' | 'number' | 'none';
|
|
26
|
-
export type StepDensity = 'compact' | 'balanced' | 'spacious';
|
|
27
|
-
export interface StepProps extends BaseProps<HTMLLIElement> {
|
|
28
|
-
/** Ref forwarded to the root element */
|
|
29
|
-
ref?: React.Ref<HTMLLIElement>;
|
|
30
|
-
/**
|
|
31
|
-
* Zero-based index of this step. Used to derive progress (completed /
|
|
32
|
-
* active / not-started) relative to the parent's `activeStep`.
|
|
33
|
-
*/
|
|
34
|
-
step: number;
|
|
35
|
-
/**
|
|
36
|
-
* Step label text.
|
|
37
|
-
*/
|
|
38
|
-
label: string;
|
|
39
|
-
/**
|
|
40
|
-
* Optional description shown below the label.
|
|
41
|
-
*/
|
|
42
|
-
description?: string;
|
|
43
|
-
/**
|
|
44
|
-
* Content rendered below the label and description. Useful in vertical
|
|
45
|
-
* steppers to show form fields or detailed content for each step.
|
|
46
|
-
*/
|
|
47
|
-
children?: ReactNode;
|
|
48
|
-
/**
|
|
49
|
-
* Custom icon rendered inside the indicator. Accepts any ReactNode (for
|
|
50
|
-
* example an `<Icon />`). Equivalent to passing the node directly to
|
|
51
|
-
* `indicator`; takes precedence over the built-in number/check.
|
|
52
|
-
*/
|
|
53
|
-
icon?: ReactNode;
|
|
54
|
-
/**
|
|
55
|
-
* Semantic status for the step, mapped to the global Astryx semantic tokens
|
|
56
|
-
* (`accent`, `success`, `warning`, `error`). In the default `auto` indicator
|
|
57
|
-
* mode it sets both the indicator color and a matching glyph: `success` shows
|
|
58
|
-
* a green check-circle, `warning`/`error` show the shared Input status icons.
|
|
59
|
-
* `accent` is color-only. The current (in-progress) step always keeps its
|
|
60
|
-
* current-step indicator regardless of `status`. Never recolors the
|
|
61
|
-
* connector/track.
|
|
62
|
-
*
|
|
63
|
-
* Because the indicator glyphs are decorative (aria-hidden), the status also
|
|
64
|
-
* reaches assistive technology as text: visually hidden "completed" /
|
|
65
|
-
* "warning" / "error" next to the label, and composed into the accessible
|
|
66
|
-
* name of clickable steps.
|
|
67
|
-
*/
|
|
68
|
-
status?: StepStatus;
|
|
69
|
-
/**
|
|
70
|
-
* Disable interaction for this step.
|
|
71
|
-
* @default false
|
|
72
|
-
*/
|
|
73
|
-
isDisabled?: boolean;
|
|
74
|
-
/**
|
|
75
|
-
* Marks the step as optional, appending an "Optional" affordance after the
|
|
76
|
-
* label.
|
|
77
|
-
* @default false
|
|
78
|
-
*/
|
|
79
|
-
isOptional?: boolean;
|
|
80
|
-
/**
|
|
81
|
-
* Trailing content rendered at the end of the label row (e.g. a timestamp
|
|
82
|
-
* or status chip).
|
|
83
|
-
*/
|
|
84
|
-
endContent?: ReactNode;
|
|
85
|
-
/**
|
|
86
|
-
* What to show as the step indicator. Accepts a preset string or any
|
|
87
|
-
* ReactNode:
|
|
88
|
-
* - 'auto': numbered badge until completed, then a check (default)
|
|
89
|
-
* - 'number': always a numbered badge
|
|
90
|
-
* - 'none': no indicator, just the bar + label
|
|
91
|
-
* - ReactNode: any custom icon or element to render as the indicator
|
|
92
|
-
* @default 'auto'
|
|
93
|
-
*/
|
|
94
|
-
indicator?: StepIndicatorPreset | ReactNode;
|
|
95
|
-
/**
|
|
96
|
-
* Controls vertical padding of the step. Falls back to the stepper-level
|
|
97
|
-
* density when unset.
|
|
98
|
-
* - 'compact': minimal padding (4px block)
|
|
99
|
-
* - 'balanced': default (8px block)
|
|
100
|
-
* - 'spacious': generous (12px block, 12px inline)
|
|
101
|
-
*/
|
|
102
|
-
density?: StepDensity;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* An individual step within an Stepper. Renders a 4px progress-bar segment,
|
|
106
|
-
* an indicator (numbered badge, check, or any custom icon), a label with
|
|
107
|
-
* optional description, and an optional content slot.
|
|
108
|
-
*
|
|
109
|
-
* Progress (completed / active / not-started) is derived from the parent's
|
|
110
|
-
* `activeStep` and this step's `step` prop. The optional `status` prop layers a
|
|
111
|
-
* semantic meaning on top: in the default `auto` indicator mode it recolors the
|
|
112
|
-
* indicator and swaps in a matching glyph (`success` → green check-circle,
|
|
113
|
-
* `warning`/`error` → the shared Input status icons). The current step always
|
|
114
|
-
* keeps its current-step ring. `status` never recolors the connector/track.
|
|
115
|
-
*
|
|
116
|
-
* @example
|
|
117
|
-
* ```
|
|
118
|
-
* <Step step={0} label="Account details" description="Enter your email" />
|
|
119
|
-
* ```
|
|
120
|
-
*
|
|
121
|
-
* @example
|
|
122
|
-
* ```
|
|
123
|
-
* <Step step={1} label="Payment" status="error" />
|
|
124
|
-
* ```
|
|
125
|
-
*/
|
|
126
|
-
export declare function Step({ step, label, description, children, icon, status, isDisabled, isOptional, endContent, indicator: indicatorProp, density: densityProp, xstyle, className, style, ref, 'data-testid': dataTestId, ...rest }: StepProps): import("react").JSX.Element;
|
|
127
|
-
export declare namespace Step {
|
|
128
|
-
var displayName: string;
|
|
129
|
-
}
|
|
130
|
-
//# sourceMappingURL=Step.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Step.d.ts","sourceRoot":"","sources":["../../src/Stepper/Step.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAarC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAOlD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAE7C;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,SAAU,SAAQ,SAAS,CAAC,aAAa,CAAC;IACzD,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC5C;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAigBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,IAAI,CAAC,EACnB,IAAI,EACJ,KAAK,EACL,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,UAAkB,EAClB,UAAkB,EAClB,UAAU,EACV,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,WAAW,EACpB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,aAAa,EAAE,UAAU,EACzB,GAAG,IAAI,EACR,EAAE,SAAS,+BA0nBX;yBA5oBe,IAAI"}
|