@oods/components-react 0.3.2 → 0.4.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.
- package/README.md +1 -1
- package/dist/chunk-2VEQWKGK.js +1 -0
- package/dist/{chunk-A4T7OOIY.js → chunk-OFTMKX3W.js} +202 -37
- package/dist/{chunk-YCI5AEWL.js → chunk-XEX22E24.js} +4 -3
- package/dist/index.cjs +332 -495
- package/dist/index.d.cts +5 -3
- package/dist/index.d.ts +5 -3
- package/dist/index.js +9 -9
- package/dist/ported.cjs +207 -373
- package/dist/ported.js +2 -2
- package/dist/status.cjs +22 -342
- package/dist/status.d.cts +1 -35
- package/dist/status.d.ts +1 -35
- package/dist/status.js +1 -1
- package/dist/table.cjs +6 -304
- package/dist/table.js +2 -2
- package/dist/types.d.cts +52 -3
- package/dist/types.d.ts +52 -3
- package/evidence/react-readiness.v1.json +147 -1
- package/package.json +3 -3
- package/dist/chunk-G74PKSW3.js +0 -338
package/dist/table.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
|
+
var componentContracts = require('@oods/component-contracts');
|
|
4
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
6
|
|
|
6
7
|
function _interopNamespace(e) {
|
|
@@ -24,306 +25,6 @@ function _interopNamespace(e) {
|
|
|
24
25
|
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
25
26
|
|
|
26
27
|
// src/table.tsx
|
|
27
|
-
|
|
28
|
-
// src/status-map.json
|
|
29
|
-
var status_map_default = {
|
|
30
|
-
domains: {
|
|
31
|
-
subscription: {
|
|
32
|
-
future: {
|
|
33
|
-
description: "Subscription is scheduled but not yet active.",
|
|
34
|
-
chip: {
|
|
35
|
-
foreground: "color.text.info",
|
|
36
|
-
background: "color.background.info.subtle",
|
|
37
|
-
border: "color.border.info",
|
|
38
|
-
icon: "icon.status.scheduled"
|
|
39
|
-
},
|
|
40
|
-
banner: {
|
|
41
|
-
foreground: "color.text.info",
|
|
42
|
-
background: "color.background.surface.default",
|
|
43
|
-
border: "color.border.info",
|
|
44
|
-
icon: "icon.status.scheduled"
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
trialing: {
|
|
48
|
-
description: "Subscription is in a trial period before billing begins.",
|
|
49
|
-
chip: {
|
|
50
|
-
foreground: "color.text.accent",
|
|
51
|
-
background: "color.background.accent.subtle",
|
|
52
|
-
border: "color.border.accent",
|
|
53
|
-
icon: "icon.status.trial"
|
|
54
|
-
},
|
|
55
|
-
banner: {
|
|
56
|
-
foreground: "color.text.accent",
|
|
57
|
-
background: "color.background.surface.default",
|
|
58
|
-
border: "color.border.accent",
|
|
59
|
-
icon: "icon.status.trial"
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
active: {
|
|
63
|
-
description: "Subscription is paid and service is provisioned.",
|
|
64
|
-
chip: {
|
|
65
|
-
foreground: "color.text.positive",
|
|
66
|
-
background: "color.background.positive.subtle",
|
|
67
|
-
border: "color.border.positive",
|
|
68
|
-
icon: "icon.status.success"
|
|
69
|
-
},
|
|
70
|
-
banner: {
|
|
71
|
-
foreground: "color.text.positive",
|
|
72
|
-
background: "color.background.surface.default",
|
|
73
|
-
border: "color.border.positive",
|
|
74
|
-
icon: "icon.status.success"
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
paused: {
|
|
78
|
-
description: "Billing paused temporarily by finance or customer request.",
|
|
79
|
-
chip: {
|
|
80
|
-
foreground: "color.text.neutral",
|
|
81
|
-
background: "color.background.neutral.subtle",
|
|
82
|
-
border: "color.border.neutral",
|
|
83
|
-
icon: "icon.status.paused"
|
|
84
|
-
},
|
|
85
|
-
banner: {
|
|
86
|
-
foreground: "color.text.neutral",
|
|
87
|
-
background: "color.background.surface.muted",
|
|
88
|
-
border: "color.border.neutral",
|
|
89
|
-
icon: "icon.status.paused"
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
pending_cancellation: {
|
|
93
|
-
description: "Subscription will cancel at period end but remains active now.",
|
|
94
|
-
chip: {
|
|
95
|
-
foreground: "color.text.info",
|
|
96
|
-
background: "color.background.info.subtle",
|
|
97
|
-
border: "color.border.info",
|
|
98
|
-
icon: "icon.status.pending"
|
|
99
|
-
},
|
|
100
|
-
banner: {
|
|
101
|
-
foreground: "color.text.info",
|
|
102
|
-
background: "color.background.surface.default",
|
|
103
|
-
border: "color.border.info",
|
|
104
|
-
icon: "icon.status.pending"
|
|
105
|
-
}
|
|
106
|
-
},
|
|
107
|
-
past_due: {
|
|
108
|
-
description: "Renewal payment failed; smart retries ongoing and access retained during the grace window.",
|
|
109
|
-
chip: {
|
|
110
|
-
foreground: "color.text.danger",
|
|
111
|
-
background: "color.background.danger.subtle",
|
|
112
|
-
border: "color.border.danger",
|
|
113
|
-
icon: "icon.status.warning"
|
|
114
|
-
},
|
|
115
|
-
banner: {
|
|
116
|
-
foreground: "color.text.onbold",
|
|
117
|
-
background: "color.background.danger.bold",
|
|
118
|
-
border: "color.border.danger",
|
|
119
|
-
icon: "icon.status.warning"
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
unpaid: {
|
|
123
|
-
description: "Payment retries exhausted; service access revoked.",
|
|
124
|
-
chip: {
|
|
125
|
-
foreground: "color.text.danger",
|
|
126
|
-
background: "color.background.danger.subtle",
|
|
127
|
-
border: "color.border.danger",
|
|
128
|
-
icon: "icon.status.error"
|
|
129
|
-
},
|
|
130
|
-
banner: {
|
|
131
|
-
foreground: "color.text.onbold",
|
|
132
|
-
background: "color.background.danger.bold",
|
|
133
|
-
border: "color.border.danger",
|
|
134
|
-
icon: "icon.status.error"
|
|
135
|
-
}
|
|
136
|
-
},
|
|
137
|
-
terminated: {
|
|
138
|
-
description: "Subscription ended; service access revoked and billing stopped.",
|
|
139
|
-
chip: {
|
|
140
|
-
foreground: "color.text.disabled",
|
|
141
|
-
background: "color.background.disabled",
|
|
142
|
-
border: "color.border.disabled",
|
|
143
|
-
icon: "icon.status.canceled"
|
|
144
|
-
},
|
|
145
|
-
banner: {
|
|
146
|
-
foreground: "color.text.neutral",
|
|
147
|
-
background: "color.background.neutral.subtle",
|
|
148
|
-
border: "color.border.neutral",
|
|
149
|
-
icon: "icon.status.canceled"
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
},
|
|
153
|
-
invoice: {
|
|
154
|
-
draft: {
|
|
155
|
-
description: "Invoice is editable and not yet finalized.",
|
|
156
|
-
chip: {
|
|
157
|
-
foreground: "color.text.neutral",
|
|
158
|
-
background: "color.background.neutral.subtle",
|
|
159
|
-
border: "color.border.neutral",
|
|
160
|
-
icon: "icon.status.draft"
|
|
161
|
-
},
|
|
162
|
-
banner: {
|
|
163
|
-
foreground: "color.text.neutral",
|
|
164
|
-
background: "color.background.surface.muted",
|
|
165
|
-
border: "color.border.neutral",
|
|
166
|
-
icon: "icon.status.draft"
|
|
167
|
-
}
|
|
168
|
-
},
|
|
169
|
-
posted: {
|
|
170
|
-
description: "Invoice finalized with terms before collection.",
|
|
171
|
-
chip: {
|
|
172
|
-
foreground: "color.text.info",
|
|
173
|
-
background: "color.background.info.subtle",
|
|
174
|
-
border: "color.border.info",
|
|
175
|
-
icon: "icon.status.pending"
|
|
176
|
-
},
|
|
177
|
-
banner: {
|
|
178
|
-
foreground: "color.text.info",
|
|
179
|
-
background: "color.background.surface.default",
|
|
180
|
-
border: "color.border.info",
|
|
181
|
-
icon: "icon.status.pending"
|
|
182
|
-
}
|
|
183
|
-
},
|
|
184
|
-
paid: {
|
|
185
|
-
description: "Invoice collected successfully in full.",
|
|
186
|
-
chip: {
|
|
187
|
-
foreground: "color.text.positive",
|
|
188
|
-
background: "color.background.positive.subtle",
|
|
189
|
-
border: "color.border.positive",
|
|
190
|
-
icon: "icon.status.success"
|
|
191
|
-
},
|
|
192
|
-
banner: {
|
|
193
|
-
foreground: "color.text.positive",
|
|
194
|
-
background: "color.background.surface.default",
|
|
195
|
-
border: "color.border.positive",
|
|
196
|
-
icon: "icon.status.success"
|
|
197
|
-
}
|
|
198
|
-
},
|
|
199
|
-
past_due: {
|
|
200
|
-
description: "Invoice is unpaid past its due date.",
|
|
201
|
-
chip: {
|
|
202
|
-
foreground: "color.text.danger",
|
|
203
|
-
background: "color.background.danger.subtle",
|
|
204
|
-
border: "color.border.danger",
|
|
205
|
-
icon: "icon.status.error"
|
|
206
|
-
},
|
|
207
|
-
banner: {
|
|
208
|
-
foreground: "color.text.onbold",
|
|
209
|
-
background: "color.background.danger.bold",
|
|
210
|
-
border: "color.border.danger",
|
|
211
|
-
icon: "icon.status.error"
|
|
212
|
-
}
|
|
213
|
-
},
|
|
214
|
-
void: {
|
|
215
|
-
description: "Invoice canceled and no longer payable.",
|
|
216
|
-
chip: {
|
|
217
|
-
foreground: "color.text.disabled",
|
|
218
|
-
background: "color.background.disabled",
|
|
219
|
-
border: "color.border.disabled",
|
|
220
|
-
icon: "icon.status.void"
|
|
221
|
-
},
|
|
222
|
-
banner: {
|
|
223
|
-
foreground: "color.text.neutral",
|
|
224
|
-
background: "color.background.neutral.subtle",
|
|
225
|
-
border: "color.border.neutral",
|
|
226
|
-
icon: "icon.status.void"
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
};
|
|
232
|
-
|
|
233
|
-
// src/status.ts
|
|
234
|
-
var TONE_ALIASES = {
|
|
235
|
-
info: "info",
|
|
236
|
-
informational: "info",
|
|
237
|
-
accent: "accent",
|
|
238
|
-
highlight: "accent",
|
|
239
|
-
positive: "success",
|
|
240
|
-
success: "success",
|
|
241
|
-
ok: "success",
|
|
242
|
-
warning: "warning",
|
|
243
|
-
caution: "warning",
|
|
244
|
-
danger: "critical",
|
|
245
|
-
critical: "critical",
|
|
246
|
-
error: "critical",
|
|
247
|
-
negative: "critical",
|
|
248
|
-
neutral: "neutral",
|
|
249
|
-
pending: "info"
|
|
250
|
-
};
|
|
251
|
-
var toLabel = (status) => status.split(/[_-]/).filter(Boolean).map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1)).join(" ");
|
|
252
|
-
var inferTone = (entry) => {
|
|
253
|
-
if (!entry) return "neutral";
|
|
254
|
-
for (const reference of [entry.foreground, entry.background, entry.border]) {
|
|
255
|
-
const segments = reference.replace(/^\{|\}$/g, "").split(/[\s./_-]+/).reverse();
|
|
256
|
-
for (const segment of segments) {
|
|
257
|
-
const tone = TONE_ALIASES[segment.toLowerCase()];
|
|
258
|
-
if (tone) return tone;
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
return "neutral";
|
|
262
|
-
};
|
|
263
|
-
var componentTokenSet = (tone) => {
|
|
264
|
-
const normalized = tone === "positive" ? "success" : tone === "danger" ? "critical" : tone;
|
|
265
|
-
return {
|
|
266
|
-
background: `var(--sys-status-${normalized}-surface)`,
|
|
267
|
-
border: `var(--sys-status-${normalized}-border)`,
|
|
268
|
-
foreground: `var(--sys-status-${normalized}-text)`
|
|
269
|
-
};
|
|
270
|
-
};
|
|
271
|
-
var rawTokenSet = (entry) => {
|
|
272
|
-
const tone = inferTone(entry);
|
|
273
|
-
return componentTokenSet(tone);
|
|
274
|
-
};
|
|
275
|
-
var bannerFallback = (tone) => tone === "neutral" ? {
|
|
276
|
-
background: "var(--cmp-banner-background)",
|
|
277
|
-
border: "var(--cmp-banner-border)",
|
|
278
|
-
foreground: "var(--cmp-banner-text)"
|
|
279
|
-
} : componentTokenSet(tone);
|
|
280
|
-
var fallback = (domain, status, tone = "neutral") => ({
|
|
281
|
-
domain,
|
|
282
|
-
status,
|
|
283
|
-
label: toLabel(status || "Unknown"),
|
|
284
|
-
description: "Status not found in registry; falling back to the requested token set.",
|
|
285
|
-
tone,
|
|
286
|
-
badge: { subtle: componentTokenSet(tone), solid: componentTokenSet(tone) },
|
|
287
|
-
banner: { subtle: bannerFallback(tone), solid: componentTokenSet(tone) }
|
|
288
|
-
});
|
|
289
|
-
var registry = /* @__PURE__ */ new Map();
|
|
290
|
-
for (const [domain, entries] of Object.entries(status_map_default.domains)) {
|
|
291
|
-
const domainEntries = /* @__PURE__ */ new Map();
|
|
292
|
-
for (const [status, entry] of Object.entries(entries)) {
|
|
293
|
-
const tone = inferTone(entry.chip);
|
|
294
|
-
domainEntries.set(status.toLowerCase(), {
|
|
295
|
-
domain,
|
|
296
|
-
status,
|
|
297
|
-
label: toLabel(status),
|
|
298
|
-
description: entry.description,
|
|
299
|
-
tone,
|
|
300
|
-
iconName: entry.chip.icon ?? entry.banner?.icon,
|
|
301
|
-
badge: { subtle: rawTokenSet(entry.chip), solid: componentTokenSet(tone) },
|
|
302
|
-
banner: {
|
|
303
|
-
subtle: entry.banner ? rawTokenSet(entry.banner) : bannerFallback(tone),
|
|
304
|
-
solid: componentTokenSet(tone)
|
|
305
|
-
}
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
|
-
registry.set(domain, domainEntries);
|
|
309
|
-
}
|
|
310
|
-
var LEGACY_STATUS_ALIASES = {
|
|
311
|
-
subscription: { delinquent: "unpaid" }
|
|
312
|
-
};
|
|
313
|
-
Object.freeze([...registry.keys()]);
|
|
314
|
-
function getStatusPresentation(domain, status) {
|
|
315
|
-
const entries = registry.get(domain);
|
|
316
|
-
if (!entries) return fallback(domain, status);
|
|
317
|
-
const normalized = status.toLowerCase();
|
|
318
|
-
const direct = entries.get(normalized);
|
|
319
|
-
if (direct) return direct;
|
|
320
|
-
const alias = LEGACY_STATUS_ALIASES[domain]?.[normalized];
|
|
321
|
-
const aliased = alias ? entries.get(alias) : void 0;
|
|
322
|
-
return aliased ? { ...aliased, status, label: toLabel(status) } : fallback(domain, status);
|
|
323
|
-
}
|
|
324
|
-
function getToneTokenSet(tone) {
|
|
325
|
-
return componentTokenSet(tone);
|
|
326
|
-
}
|
|
327
28
|
var classes = (...values) => values.filter(Boolean).join(" ");
|
|
328
29
|
var TableHead = React__namespace.forwardRef(
|
|
329
30
|
({ className, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx("thead", { ref, className: classes("oods-table__header", className), ...rest })
|
|
@@ -406,9 +107,9 @@ var TableCell = React__namespace.forwardRef(
|
|
|
406
107
|
title,
|
|
407
108
|
...rest
|
|
408
109
|
}, ref) => {
|
|
409
|
-
const presentation = status ? getStatusPresentation(statusDomain, status) : void 0;
|
|
110
|
+
const presentation = status ? componentContracts.getStatusPresentation(statusDomain, status) : void 0;
|
|
410
111
|
const tone = toneOverride ?? presentation?.tone;
|
|
411
|
-
const tokens = tone ? getToneTokenSet(tone) : void 0;
|
|
112
|
+
const tokens = tone ? componentContracts.getToneTokenSet(tone) : void 0;
|
|
412
113
|
const statusStyle = tokens ? statusEmphasis === "text" ? { "--table-cell-status-foreground": tokens.foreground } : {
|
|
413
114
|
"--table-cell-status-background": tokens.background,
|
|
414
115
|
"--table-cell-status-border": tokens.border,
|
|
@@ -442,6 +143,7 @@ TableCell.displayName = "OODS.Table.Cell";
|
|
|
442
143
|
var TableRoot = React__namespace.forwardRef(
|
|
443
144
|
({
|
|
444
145
|
caption,
|
|
146
|
+
showCaption = true,
|
|
445
147
|
columns,
|
|
446
148
|
rows,
|
|
447
149
|
density = "comfortable",
|
|
@@ -467,8 +169,8 @@ var TableRoot = React__namespace.forwardRef(
|
|
|
467
169
|
"data-density": density,
|
|
468
170
|
...rest,
|
|
469
171
|
children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
470
|
-
caption ? /* @__PURE__ */ jsxRuntime.jsx(TableCaption, { children: caption }) : null,
|
|
471
|
-
/* @__PURE__ */ jsxRuntime.jsx(TableHead, { children: /* @__PURE__ */ jsxRuntime.jsx("tr", { children: columns?.map((column) => /* @__PURE__ */ jsxRuntime.jsx(TableHeaderCell, { numeric: column.numeric, children: column.label }, column.key)) }) }),
|
|
172
|
+
caption ? /* @__PURE__ */ jsxRuntime.jsx(TableCaption, { "data-visually-hidden": showCaption ? void 0 : "true", children: caption }) : null,
|
|
173
|
+
/* @__PURE__ */ jsxRuntime.jsx(TableHead, { children: /* @__PURE__ */ jsxRuntime.jsx("tr", { className: "oods-table__row", children: columns?.map((column) => /* @__PURE__ */ jsxRuntime.jsx(TableHeaderCell, { numeric: column.numeric, children: column.label }, column.key)) }) }),
|
|
472
174
|
/* @__PURE__ */ jsxRuntime.jsx(TableBody, { children: (rows?.length ?? 0) === 0 ? /* @__PURE__ */ jsxRuntime.jsx("tr", { className: "oods-table__row", children: /* @__PURE__ */ jsxRuntime.jsx(TableCell, { colSpan: Math.max(columns?.length ?? 0, 1), children: "No rows available." }) }) : rows?.map((row) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
473
175
|
"tr",
|
|
474
176
|
{
|
package/dist/table.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { Table, TableBody, TableCaption, TableCell, TableHead, TableHeaderCell, TableRow } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { Table, TableBody, TableCaption, TableCell, TableHead, TableHeaderCell, TableRow } from './chunk-XEX22E24.js';
|
|
2
|
+
import './chunk-2VEQWKGK.js';
|
package/dist/types.d.cts
CHANGED
|
@@ -3,6 +3,8 @@ import * as React from 'react';
|
|
|
3
3
|
type ComponentTone = 'neutral' | 'info' | 'accent' | 'positive' | 'success' | 'warning' | 'critical' | 'danger';
|
|
4
4
|
type ComponentEmphasis = 'subtle' | 'solid';
|
|
5
5
|
type ComponentSize = 'sm' | 'md' | 'lg';
|
|
6
|
+
type ButtonSize = 'xs' | ComponentSize;
|
|
7
|
+
type ButtonIntent = 'neutral' | 'primary' | 'secondary' | 'outline' | 'ghost' | 'link' | 'destructive' | 'success' | 'warning' | 'danger';
|
|
6
8
|
type FieldDensity = 'compact' | 'comfortable';
|
|
7
9
|
type FieldValidation = {
|
|
8
10
|
readonly state: 'error' | 'warning' | 'success' | 'info';
|
|
@@ -39,10 +41,29 @@ interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>
|
|
|
39
41
|
readonly content?: React.ReactNode;
|
|
40
42
|
readonly children?: React.ReactNode;
|
|
41
43
|
readonly asChild?: boolean;
|
|
42
|
-
readonly intent?:
|
|
43
|
-
readonly size?:
|
|
44
|
+
readonly intent?: ButtonIntent;
|
|
45
|
+
readonly size?: ButtonSize;
|
|
44
46
|
readonly onActivate?: React.MouseEventHandler<HTMLElement>;
|
|
45
47
|
}
|
|
48
|
+
type NativeDialogProps = Omit<React.DialogHTMLAttributes<HTMLDialogElement>, 'open' | 'title' | 'children' | 'className' | 'style' | 'onClose' | 'onCancel'>;
|
|
49
|
+
/**
|
|
50
|
+
* s222-m02 (#2502 ruling 11): a native dialog whose consumer owns open. onClose reports the close control, Escape or a
|
|
51
|
+
* browser close request; modal (default true) opens it with showModal(), and modal false shows it in place.
|
|
52
|
+
*/
|
|
53
|
+
interface DialogProps extends NativeDialogProps {
|
|
54
|
+
readonly id?: string;
|
|
55
|
+
readonly open?: boolean;
|
|
56
|
+
readonly modal?: boolean;
|
|
57
|
+
readonly title: React.ReactNode;
|
|
58
|
+
readonly description?: React.ReactNode;
|
|
59
|
+
readonly dismissLabel?: string;
|
|
60
|
+
readonly size?: 'sm' | 'md' | 'lg';
|
|
61
|
+
readonly actions?: React.ReactNode;
|
|
62
|
+
readonly children?: React.ReactNode;
|
|
63
|
+
readonly className?: string;
|
|
64
|
+
readonly style?: React.CSSProperties;
|
|
65
|
+
readonly onClose?: () => void;
|
|
66
|
+
}
|
|
46
67
|
type SafeContainerElement = 'div' | 'section' | 'article' | 'aside' | 'main';
|
|
47
68
|
interface CardProps extends React.HTMLAttributes<HTMLElement> {
|
|
48
69
|
readonly elevated?: boolean;
|
|
@@ -98,6 +119,17 @@ interface VizAreaPreviewProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
98
119
|
readonly svgNarrow?: string;
|
|
99
120
|
/** The same chart rendered at the wide size; the figure shows it instead of svg when its own inline size is at least 900px. */
|
|
100
121
|
readonly svgWide?: string;
|
|
122
|
+
/**
|
|
123
|
+
* s222-m02 (F7): the same chart rendered in the dark and high-contrast themes, at the design, narrow and wide sizes. With
|
|
124
|
+
* any of them, svg, svgNarrow and svgWide are the light renders, and the figure shows the renders of the theme the
|
|
125
|
+
* nearest [data-theme] names.
|
|
126
|
+
*/
|
|
127
|
+
readonly svgDark?: string;
|
|
128
|
+
readonly svgDarkNarrow?: string;
|
|
129
|
+
readonly svgDarkWide?: string;
|
|
130
|
+
readonly svgHc?: string;
|
|
131
|
+
readonly svgHcNarrow?: string;
|
|
132
|
+
readonly svgHcWide?: string;
|
|
101
133
|
readonly description?: string;
|
|
102
134
|
readonly width?: number;
|
|
103
135
|
readonly height?: number;
|
|
@@ -342,6 +374,22 @@ interface CheckboxProps extends NativeCheckboxProps, CommonFieldProps {
|
|
|
342
374
|
readonly onCheckedChange?: (checked: boolean) => void;
|
|
343
375
|
readonly onUpdate?: (checked: boolean) => void;
|
|
344
376
|
}
|
|
377
|
+
type NativeSwitchProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'id' | 'type' | 'role' | 'value' | 'children' | 'className' | 'style' | 'onChange'>;
|
|
378
|
+
/** s222-m02 (#2502 ruling 11): Checkbox's field API on a button with role switch; native button props reach the button. */
|
|
379
|
+
interface SwitchProps extends NativeSwitchProps {
|
|
380
|
+
readonly id: string;
|
|
381
|
+
readonly label: React.ReactNode;
|
|
382
|
+
readonly checked?: boolean;
|
|
383
|
+
readonly defaultChecked?: boolean;
|
|
384
|
+
readonly required?: boolean;
|
|
385
|
+
readonly help?: React.ReactNode;
|
|
386
|
+
readonly validation?: FieldValidation;
|
|
387
|
+
readonly size?: 'sm' | 'md';
|
|
388
|
+
readonly className?: string;
|
|
389
|
+
readonly style?: React.CSSProperties;
|
|
390
|
+
readonly onCheckedChange?: (checked: boolean) => void;
|
|
391
|
+
readonly onUpdate?: (checked: boolean) => void;
|
|
392
|
+
}
|
|
345
393
|
type SelectOption = {
|
|
346
394
|
readonly value: string;
|
|
347
395
|
readonly label: React.ReactNode;
|
|
@@ -390,6 +438,7 @@ type TableColumn<Row extends TableRowData = TableRowData> = {
|
|
|
390
438
|
};
|
|
391
439
|
interface TableProps<Row extends TableRowData = TableRowData> extends Omit<React.TableHTMLAttributes<HTMLTableElement>, 'children'> {
|
|
392
440
|
readonly caption?: React.ReactNode;
|
|
441
|
+
readonly showCaption?: boolean;
|
|
393
442
|
readonly columns?: readonly TableColumn<Row>[];
|
|
394
443
|
readonly rows?: readonly Row[];
|
|
395
444
|
readonly density?: FieldDensity;
|
|
@@ -577,4 +626,4 @@ interface PriceCardMetaProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
577
626
|
readonly billingInterval?: string;
|
|
578
627
|
}
|
|
579
628
|
|
|
580
|
-
export type { AddressCollectionPanelProps, AddressEditorProps, AddressEditorValue, AddressSummaryBadgeProps, AddressValidationTimelineProps, ArchivePillProps, ArchiveSummaryProps, AuditEventProps, BadgeProps, BannerProps, ButtonProps, CancellationBadgeProps, CancellationFormProps, CardHeaderProps, CardProps, CheckboxProps, ClassificationBadgeProps, ClassificationEditorProps, ClassificationPanelProps, ColorSwatchProps, ColorizedBadgeProps, CommonFieldProps, ComponentEmphasis, ComponentSize, ComponentTone, DatePickerProps, DetailHeaderProps, FieldDensity, FieldValidation, FilterDescriptor, FilterPanelProps, FormLabelGroupProps, GridProps, HeaderElement, HeaderLevel, InlineLabelProps, InputProps, LabelCellProps, LayoutGap, MembershipAuditTimelineProps, MembershipPanelProps, MessageEventTimelineProps, MessageStatusBadgeProps, OwnerBadgeProps, OwnershipMetaProps, OwnershipSummaryProps, PanelSectionProps, PreferenceEditorProps, PreferencePanelProps, PreferenceSummaryBadgeProps, PreferenceTimelineProps, PriceCardMetaProps, PriceSummaryProps, RoleAssignmentFormProps, RoleBadgeListProps, SafeContainerElement, SafeTextElement, SelectOption, SelectProps, StackProps, StatusSelectorProps, TabItem, TableBodyProps, TableCaptionProps, TableCellProps, TableColumn, TableCompound, TableHeadProps, TableHeaderCellProps, TableProps, TableRowData, TableRowProps, TabsProps, TagInputProps, TagManagerProps, TagPillsProps, TagSummaryProps, TemplatePickerProps, TextProps, TextareaProps, VizAreaPreviewProps };
|
|
629
|
+
export type { AddressCollectionPanelProps, AddressEditorProps, AddressEditorValue, AddressSummaryBadgeProps, AddressValidationTimelineProps, ArchivePillProps, ArchiveSummaryProps, AuditEventProps, BadgeProps, BannerProps, ButtonIntent, ButtonProps, ButtonSize, CancellationBadgeProps, CancellationFormProps, CardHeaderProps, CardProps, CheckboxProps, ClassificationBadgeProps, ClassificationEditorProps, ClassificationPanelProps, ColorSwatchProps, ColorizedBadgeProps, CommonFieldProps, ComponentEmphasis, ComponentSize, ComponentTone, DatePickerProps, DetailHeaderProps, DialogProps, FieldDensity, FieldValidation, FilterDescriptor, FilterPanelProps, FormLabelGroupProps, GridProps, HeaderElement, HeaderLevel, InlineLabelProps, InputProps, LabelCellProps, LayoutGap, MembershipAuditTimelineProps, MembershipPanelProps, MessageEventTimelineProps, MessageStatusBadgeProps, OwnerBadgeProps, OwnershipMetaProps, OwnershipSummaryProps, PanelSectionProps, PreferenceEditorProps, PreferencePanelProps, PreferenceSummaryBadgeProps, PreferenceTimelineProps, PriceCardMetaProps, PriceSummaryProps, RoleAssignmentFormProps, RoleBadgeListProps, SafeContainerElement, SafeTextElement, SelectOption, SelectProps, StackProps, StatusSelectorProps, SwitchProps, TabItem, TableBodyProps, TableCaptionProps, TableCellProps, TableColumn, TableCompound, TableHeadProps, TableHeaderCellProps, TableProps, TableRowData, TableRowProps, TabsProps, TagInputProps, TagManagerProps, TagPillsProps, TagSummaryProps, TemplatePickerProps, TextProps, TextareaProps, VizAreaPreviewProps };
|
package/dist/types.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ import * as React from 'react';
|
|
|
3
3
|
type ComponentTone = 'neutral' | 'info' | 'accent' | 'positive' | 'success' | 'warning' | 'critical' | 'danger';
|
|
4
4
|
type ComponentEmphasis = 'subtle' | 'solid';
|
|
5
5
|
type ComponentSize = 'sm' | 'md' | 'lg';
|
|
6
|
+
type ButtonSize = 'xs' | ComponentSize;
|
|
7
|
+
type ButtonIntent = 'neutral' | 'primary' | 'secondary' | 'outline' | 'ghost' | 'link' | 'destructive' | 'success' | 'warning' | 'danger';
|
|
6
8
|
type FieldDensity = 'compact' | 'comfortable';
|
|
7
9
|
type FieldValidation = {
|
|
8
10
|
readonly state: 'error' | 'warning' | 'success' | 'info';
|
|
@@ -39,10 +41,29 @@ interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>
|
|
|
39
41
|
readonly content?: React.ReactNode;
|
|
40
42
|
readonly children?: React.ReactNode;
|
|
41
43
|
readonly asChild?: boolean;
|
|
42
|
-
readonly intent?:
|
|
43
|
-
readonly size?:
|
|
44
|
+
readonly intent?: ButtonIntent;
|
|
45
|
+
readonly size?: ButtonSize;
|
|
44
46
|
readonly onActivate?: React.MouseEventHandler<HTMLElement>;
|
|
45
47
|
}
|
|
48
|
+
type NativeDialogProps = Omit<React.DialogHTMLAttributes<HTMLDialogElement>, 'open' | 'title' | 'children' | 'className' | 'style' | 'onClose' | 'onCancel'>;
|
|
49
|
+
/**
|
|
50
|
+
* s222-m02 (#2502 ruling 11): a native dialog whose consumer owns open. onClose reports the close control, Escape or a
|
|
51
|
+
* browser close request; modal (default true) opens it with showModal(), and modal false shows it in place.
|
|
52
|
+
*/
|
|
53
|
+
interface DialogProps extends NativeDialogProps {
|
|
54
|
+
readonly id?: string;
|
|
55
|
+
readonly open?: boolean;
|
|
56
|
+
readonly modal?: boolean;
|
|
57
|
+
readonly title: React.ReactNode;
|
|
58
|
+
readonly description?: React.ReactNode;
|
|
59
|
+
readonly dismissLabel?: string;
|
|
60
|
+
readonly size?: 'sm' | 'md' | 'lg';
|
|
61
|
+
readonly actions?: React.ReactNode;
|
|
62
|
+
readonly children?: React.ReactNode;
|
|
63
|
+
readonly className?: string;
|
|
64
|
+
readonly style?: React.CSSProperties;
|
|
65
|
+
readonly onClose?: () => void;
|
|
66
|
+
}
|
|
46
67
|
type SafeContainerElement = 'div' | 'section' | 'article' | 'aside' | 'main';
|
|
47
68
|
interface CardProps extends React.HTMLAttributes<HTMLElement> {
|
|
48
69
|
readonly elevated?: boolean;
|
|
@@ -98,6 +119,17 @@ interface VizAreaPreviewProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
98
119
|
readonly svgNarrow?: string;
|
|
99
120
|
/** The same chart rendered at the wide size; the figure shows it instead of svg when its own inline size is at least 900px. */
|
|
100
121
|
readonly svgWide?: string;
|
|
122
|
+
/**
|
|
123
|
+
* s222-m02 (F7): the same chart rendered in the dark and high-contrast themes, at the design, narrow and wide sizes. With
|
|
124
|
+
* any of them, svg, svgNarrow and svgWide are the light renders, and the figure shows the renders of the theme the
|
|
125
|
+
* nearest [data-theme] names.
|
|
126
|
+
*/
|
|
127
|
+
readonly svgDark?: string;
|
|
128
|
+
readonly svgDarkNarrow?: string;
|
|
129
|
+
readonly svgDarkWide?: string;
|
|
130
|
+
readonly svgHc?: string;
|
|
131
|
+
readonly svgHcNarrow?: string;
|
|
132
|
+
readonly svgHcWide?: string;
|
|
101
133
|
readonly description?: string;
|
|
102
134
|
readonly width?: number;
|
|
103
135
|
readonly height?: number;
|
|
@@ -342,6 +374,22 @@ interface CheckboxProps extends NativeCheckboxProps, CommonFieldProps {
|
|
|
342
374
|
readonly onCheckedChange?: (checked: boolean) => void;
|
|
343
375
|
readonly onUpdate?: (checked: boolean) => void;
|
|
344
376
|
}
|
|
377
|
+
type NativeSwitchProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'id' | 'type' | 'role' | 'value' | 'children' | 'className' | 'style' | 'onChange'>;
|
|
378
|
+
/** s222-m02 (#2502 ruling 11): Checkbox's field API on a button with role switch; native button props reach the button. */
|
|
379
|
+
interface SwitchProps extends NativeSwitchProps {
|
|
380
|
+
readonly id: string;
|
|
381
|
+
readonly label: React.ReactNode;
|
|
382
|
+
readonly checked?: boolean;
|
|
383
|
+
readonly defaultChecked?: boolean;
|
|
384
|
+
readonly required?: boolean;
|
|
385
|
+
readonly help?: React.ReactNode;
|
|
386
|
+
readonly validation?: FieldValidation;
|
|
387
|
+
readonly size?: 'sm' | 'md';
|
|
388
|
+
readonly className?: string;
|
|
389
|
+
readonly style?: React.CSSProperties;
|
|
390
|
+
readonly onCheckedChange?: (checked: boolean) => void;
|
|
391
|
+
readonly onUpdate?: (checked: boolean) => void;
|
|
392
|
+
}
|
|
345
393
|
type SelectOption = {
|
|
346
394
|
readonly value: string;
|
|
347
395
|
readonly label: React.ReactNode;
|
|
@@ -390,6 +438,7 @@ type TableColumn<Row extends TableRowData = TableRowData> = {
|
|
|
390
438
|
};
|
|
391
439
|
interface TableProps<Row extends TableRowData = TableRowData> extends Omit<React.TableHTMLAttributes<HTMLTableElement>, 'children'> {
|
|
392
440
|
readonly caption?: React.ReactNode;
|
|
441
|
+
readonly showCaption?: boolean;
|
|
393
442
|
readonly columns?: readonly TableColumn<Row>[];
|
|
394
443
|
readonly rows?: readonly Row[];
|
|
395
444
|
readonly density?: FieldDensity;
|
|
@@ -577,4 +626,4 @@ interface PriceCardMetaProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
577
626
|
readonly billingInterval?: string;
|
|
578
627
|
}
|
|
579
628
|
|
|
580
|
-
export type { AddressCollectionPanelProps, AddressEditorProps, AddressEditorValue, AddressSummaryBadgeProps, AddressValidationTimelineProps, ArchivePillProps, ArchiveSummaryProps, AuditEventProps, BadgeProps, BannerProps, ButtonProps, CancellationBadgeProps, CancellationFormProps, CardHeaderProps, CardProps, CheckboxProps, ClassificationBadgeProps, ClassificationEditorProps, ClassificationPanelProps, ColorSwatchProps, ColorizedBadgeProps, CommonFieldProps, ComponentEmphasis, ComponentSize, ComponentTone, DatePickerProps, DetailHeaderProps, FieldDensity, FieldValidation, FilterDescriptor, FilterPanelProps, FormLabelGroupProps, GridProps, HeaderElement, HeaderLevel, InlineLabelProps, InputProps, LabelCellProps, LayoutGap, MembershipAuditTimelineProps, MembershipPanelProps, MessageEventTimelineProps, MessageStatusBadgeProps, OwnerBadgeProps, OwnershipMetaProps, OwnershipSummaryProps, PanelSectionProps, PreferenceEditorProps, PreferencePanelProps, PreferenceSummaryBadgeProps, PreferenceTimelineProps, PriceCardMetaProps, PriceSummaryProps, RoleAssignmentFormProps, RoleBadgeListProps, SafeContainerElement, SafeTextElement, SelectOption, SelectProps, StackProps, StatusSelectorProps, TabItem, TableBodyProps, TableCaptionProps, TableCellProps, TableColumn, TableCompound, TableHeadProps, TableHeaderCellProps, TableProps, TableRowData, TableRowProps, TabsProps, TagInputProps, TagManagerProps, TagPillsProps, TagSummaryProps, TemplatePickerProps, TextProps, TextareaProps, VizAreaPreviewProps };
|
|
629
|
+
export type { AddressCollectionPanelProps, AddressEditorProps, AddressEditorValue, AddressSummaryBadgeProps, AddressValidationTimelineProps, ArchivePillProps, ArchiveSummaryProps, AuditEventProps, BadgeProps, BannerProps, ButtonIntent, ButtonProps, ButtonSize, CancellationBadgeProps, CancellationFormProps, CardHeaderProps, CardProps, CheckboxProps, ClassificationBadgeProps, ClassificationEditorProps, ClassificationPanelProps, ColorSwatchProps, ColorizedBadgeProps, CommonFieldProps, ComponentEmphasis, ComponentSize, ComponentTone, DatePickerProps, DetailHeaderProps, DialogProps, FieldDensity, FieldValidation, FilterDescriptor, FilterPanelProps, FormLabelGroupProps, GridProps, HeaderElement, HeaderLevel, InlineLabelProps, InputProps, LabelCellProps, LayoutGap, MembershipAuditTimelineProps, MembershipPanelProps, MessageEventTimelineProps, MessageStatusBadgeProps, OwnerBadgeProps, OwnershipMetaProps, OwnershipSummaryProps, PanelSectionProps, PreferenceEditorProps, PreferencePanelProps, PreferenceSummaryBadgeProps, PreferenceTimelineProps, PriceCardMetaProps, PriceSummaryProps, RoleAssignmentFormProps, RoleBadgeListProps, SafeContainerElement, SafeTextElement, SelectOption, SelectProps, StackProps, StatusSelectorProps, SwitchProps, TabItem, TableBodyProps, TableCaptionProps, TableCellProps, TableColumn, TableCompound, TableHeadProps, TableHeaderCellProps, TableProps, TableRowData, TableRowProps, TabsProps, TagInputProps, TagManagerProps, TagPillsProps, TagSummaryProps, TemplatePickerProps, TextProps, TextareaProps, VizAreaPreviewProps };
|