@godxjp/ui 18.8.0 → 18.10.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/LICENSE +202 -0
- package/dist/components/data-display/badge.d.ts +7 -0
- package/dist/components/data-display/badge.js +1 -1
- package/dist/components/data-display/card.d.ts +3 -27
- package/dist/components/data-display/card.js +1 -4
- package/dist/components/data-display/data-table.js +2 -2
- package/dist/components/data-display/index.d.ts +2 -0
- package/dist/components/data-display/index.js +2 -0
- package/dist/components/data-display/permission-matrix.d.ts +26 -0
- package/dist/components/data-display/permission-matrix.js +219 -0
- package/dist/components/data-display/table.d.ts +12 -0
- package/dist/components/data-entry/branch-scope-picker.d.ts +43 -0
- package/dist/components/data-entry/branch-scope-picker.js +200 -0
- package/dist/components/data-entry/command-palette.js +8 -1
- package/dist/components/data-entry/index.d.ts +2 -0
- package/dist/components/data-entry/index.js +2 -0
- package/dist/components/data-entry/input-otp.d.ts +1 -1
- package/dist/components/feedback/alert.d.ts +2 -20
- package/dist/components/feedback/alert.js +1 -11
- package/dist/components/feedback/banner.d.ts +21 -0
- package/dist/components/feedback/banner.js +15 -0
- package/dist/components/feedback/index.d.ts +4 -2
- package/dist/components/feedback/index.js +2 -2
- package/dist/components/general/typography.d.ts +1 -0
- package/dist/components/general/typography.js +32 -13
- package/dist/components/layout/auth-shell.d.ts +2 -2
- package/dist/components/layout/index.d.ts +2 -2
- package/dist/components/layout/index.js +2 -2
- package/dist/components/layout/page-container.d.ts +1 -1
- package/dist/components/layout/page-container.js +45 -19
- package/dist/components/layout/service-role-panel.d.ts +25 -0
- package/dist/components/layout/service-role-panel.js +206 -0
- package/dist/components/navigation/filter-bar.d.ts +2 -2
- package/dist/components/navigation/filter-bar.js +113 -34
- package/dist/components/navigation/index.d.ts +1 -1
- package/dist/components/navigation/steps.d.ts +2 -2
- package/dist/components/navigation/steps.js +2 -4
- package/dist/components/ui/avatar.d.ts +1 -1
- package/dist/components/ui/avatar.js +1 -2
- package/dist/components/ui/input-otp.d.ts +3 -15
- package/dist/components/ui/input-otp.js +1 -2
- package/dist/email/tokens.generated.d.ts +2 -2
- package/dist/email/tokens.generated.js +2 -2
- package/dist/i18n/messages/en.json +56 -4
- package/dist/i18n/messages/ja.json +51 -5
- package/dist/i18n/messages/vi.json +50 -4
- package/dist/props/components/data-display.prop.d.ts +66 -16
- package/dist/props/components/data-entry.prop.d.ts +54 -7
- package/dist/props/components/feedback.prop.d.ts +3 -3
- package/dist/props/components/general.prop.d.ts +8 -1
- package/dist/props/components/layout.prop.d.ts +75 -54
- package/dist/props/components/navigation.prop.d.ts +77 -59
- package/dist/props/registry.d.ts +273 -72
- package/dist/props/registry.js +361 -92
- package/dist/props/vocabulary/content.prop.d.ts +5 -0
- package/dist/props/vocabulary/index.d.ts +1 -1
- package/dist/props/vocabulary/interaction.prop.d.ts +4 -7
- package/dist/props/vocabulary/layout.prop.d.ts +2 -2
- package/dist/styles/alert-layout.css +15 -32
- package/dist/styles/badge-layout.css +5 -0
- package/dist/styles/card-layout.css +13 -49
- package/dist/styles/control.css +2 -12
- package/dist/styles/data-display-layout.css +0 -16
- package/dist/styles/layout.css +102 -108
- package/dist/styles/navigation-layout.css +3 -8
- package/dist/styles/shell-layout.css +17 -17
- package/dist/styles/table-layout.css +77 -2
- package/dist/styles/text-layout.css +13 -0
- package/dist/tokens/base.css +1 -0
- package/dist/tokens/components/badge.css +5 -0
- package/dist/tokens/components/banner.css +16 -0
- package/dist/tokens/components/card.css +0 -12
- package/dist/tokens/components/control.css +0 -16
- package/dist/tokens/components/data-display.css +0 -12
- package/dist/tokens/components/email.css +2 -8
- package/dist/tokens/components/feedback.css +0 -20
- package/dist/tokens/components/navigation.css +10 -34
- package/dist/tokens/components/shell.css +24 -36
- package/dist/tokens/components/table.css +41 -1
- package/dist/tokens/semantic/layout.css +5 -12
- package/package.json +15 -2
- package/dist/components/layout/page-header.d.ts +0 -22
- package/dist/components/layout/page-header.js +0 -89
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** Navigation component prop types — @see docs/COMPONENTS.md#navigation */
|
|
2
2
|
import type * as React from "react";
|
|
3
|
-
import type { ChildrenProp, ClassNameProp, DisabledProp, HasActiveFiltersProp, IdProp, LabelProp, OnClearFiltersProp, StickyProp } from "../vocabulary/index.js";
|
|
3
|
+
import type { ActionsProp, ChildrenProp, ClassNameProp, DisabledProp, ErrorProp, HasActiveFiltersProp, IdProp, LabelProp, OnClearFiltersProp, PendingProp, PlaceholderProp, StickyProp } from "../vocabulary/index.js";
|
|
4
|
+
import type { SearchSelectOptionProp } from "./data-entry.prop.js";
|
|
4
5
|
/**
|
|
5
6
|
* How a {@link ToolbarProp} strip resolves more filters than fit one row (#216).
|
|
6
7
|
* `wrap` (default) stacks on narrow viewports then wraps onto extra rows; `scroll` keeps ONE
|
|
@@ -8,61 +9,60 @@ import type { ChildrenProp, ClassNameProp, DisabledProp, HasActiveFiltersProp, I
|
|
|
8
9
|
*/
|
|
9
10
|
export type FilterBarOverflowProp = "wrap" | "scroll";
|
|
10
11
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
* Typed search slot of the FilterBar model (gh#258). Renders the canonical SearchInput as the
|
|
13
|
+
* FIRST control of the strip, with a token-owned consistent width (`--filter-bar-search-width`,
|
|
14
|
+
* full-width below 640px). Controlled by consumer data via the `value`/`defaultValue`/
|
|
15
|
+
* `onValueChange` triad; `onSearch` mirrors SearchInput's debounced-term callback.
|
|
16
|
+
*/
|
|
17
|
+
export type FilterBarSearchProp = {
|
|
18
|
+
value?: string;
|
|
19
|
+
defaultValue?: string;
|
|
20
|
+
/** Fires on EVERY keystroke — required to keep a controlled `value` responsive. */
|
|
21
|
+
onValueChange?: (query: string) => void;
|
|
22
|
+
/** Fires with the DEBOUNCED term. Omit it when filtering is driven off `onValueChange`. */
|
|
23
|
+
onSearch?: (query: string) => void;
|
|
24
|
+
placeholder?: string;
|
|
25
|
+
/** Visible label above the search field. Omit for the placeholder-only compact form. */
|
|
26
|
+
label?: React.ReactNode;
|
|
27
|
+
/** Accessible name when no visible `label` is given (defaults to the localized "Search"). */
|
|
28
|
+
ariaLabel?: string;
|
|
29
|
+
id?: IdProp;
|
|
30
|
+
disabled?: DisabledProp;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* One typed filter of the FilterBar model (gh#258): a labelled, domain-neutral Select whose
|
|
34
|
+
* options and selection are consumer data. `value` is the filter's stable identity (never shown);
|
|
35
|
+
* the visible `label` is rendered as the control's real `<label htmlFor>` (WCAG 2.5.3 / 1.3.1).
|
|
36
|
+
* Selection is controlled via `selected`/`defaultSelected`/`onSelectedChange` — the standard
|
|
37
|
+
* triad, renamed so the filter's own identity `value` stays unambiguous.
|
|
38
|
+
*/
|
|
39
|
+
export type FilterBarFilterProp = {
|
|
40
|
+
/** Stable filter identity (drives the control id + React key). */
|
|
41
|
+
value: string;
|
|
42
|
+
label: LabelProp;
|
|
43
|
+
options: SearchSelectOptionProp[];
|
|
44
|
+
selected?: string;
|
|
45
|
+
defaultSelected?: string;
|
|
46
|
+
onSelectedChange?: (selected: string) => void;
|
|
47
|
+
placeholder?: PlaceholderProp;
|
|
48
|
+
disabled?: DisabledProp;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* One applied-filter chip of the FilterBar model (gh#258). Chips are pure consumer data — the
|
|
52
|
+
* lifecycle is: ADD by including the chip in `chips`, REMOVE via `onChipRemove(value)` (the ×
|
|
53
|
+
* button), CLEAR-ALL via the bar's `onClear`. `label` should be a string when possible so the
|
|
54
|
+
* remove button's accessible name can quote it; otherwise `value` is quoted instead.
|
|
17
55
|
*/
|
|
18
56
|
export type FilterBarChipProp = {
|
|
19
|
-
/** Stable identity
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Per-chip removal. Omit for a chip the user cannot lift; the bar then renders no remove control
|
|
25
|
-
* rather than a disabled one, so nothing focusable is dead.
|
|
26
|
-
*/
|
|
27
|
-
onRemove?: () => void;
|
|
57
|
+
/** Stable chip identity, passed to `onChipRemove`. */
|
|
58
|
+
value: string;
|
|
59
|
+
label: React.ReactNode;
|
|
60
|
+
disabled?: DisabledProp;
|
|
28
61
|
};
|
|
29
62
|
/** @see Toolbar */
|
|
30
63
|
export type ToolbarProp = {
|
|
31
64
|
onClear?: OnClearFiltersProp;
|
|
32
65
|
hasActiveFilters?: HasActiveFiltersProp;
|
|
33
|
-
/**
|
|
34
|
-
* The search control (#258). A slot, not a rendered input: the bar owns its MEASURE
|
|
35
|
-
* (`--filter-bar-search-width`) and its position at the START of the row, while the caller
|
|
36
|
-
* still chooses the real primitive (`SearchInput`, or a `Select showSearch` for scoped search)
|
|
37
|
-
* and owns its debounce and value. Passing the control as a child instead is what produced the
|
|
38
|
-
* inconsistent search widths the issue was filed against.
|
|
39
|
-
*/
|
|
40
|
-
search?: ChildrenProp;
|
|
41
|
-
/**
|
|
42
|
-
* Applied filters as removable chips (#258). The bar owns the CHIP LIFECYCLE — chips render
|
|
43
|
-
* below the control row, each with an accessible remove control, and the row disappears entirely
|
|
44
|
-
* when the array is empty (never an empty reserved strip). It owns no state: removing a chip
|
|
45
|
-
* calls back and the caller re-renders the array.
|
|
46
|
-
*/
|
|
47
|
-
chips?: readonly FilterBarChipProp[];
|
|
48
|
-
/**
|
|
49
|
-
* Called with the chip's `id` when its remove control is activated. Fires in addition to that
|
|
50
|
-
* chip's own `onRemove`, so a caller may handle removal per chip, centrally, or both.
|
|
51
|
-
*/
|
|
52
|
-
onChipRemove?: (id: string) => void;
|
|
53
|
-
/**
|
|
54
|
-
* Number of records the current filters resolve to (#258). Rendered in a POLITE LIVE REGION and
|
|
55
|
-
* formatted with `Intl.NumberFormat` + CLDR plurals for the active locale — which is the point:
|
|
56
|
-
* a sighted user sees the table change, and this is what tells everyone else that filtering
|
|
57
|
-
* happened. Omit when the count is unknown or still loading.
|
|
58
|
-
*/
|
|
59
|
-
resultCount?: number;
|
|
60
|
-
/**
|
|
61
|
-
* Trailing action region (#258) — export, column settings, a saved-view menu. Rendered AFTER the
|
|
62
|
-
* reset control, so "clear filters" never sits at the end of the row beside an unrelated primary
|
|
63
|
-
* action. The bar owns the ordering; the caller owns the controls.
|
|
64
|
-
*/
|
|
65
|
-
actions?: ChildrenProp;
|
|
66
66
|
/**
|
|
67
67
|
* Pin the strip to the top of its scroll container while the list scrolls beneath it
|
|
68
68
|
* (list-page filter bars, #197). Opt-in — default `false` keeps the toolbar quiet. Tune
|
|
@@ -76,8 +76,35 @@ export type ToolbarProp = {
|
|
|
76
76
|
* Tune the scrollbar gutter with the `--filter-bar-scroll-padding-y` theme knob.
|
|
77
77
|
*/
|
|
78
78
|
overflow?: FilterBarOverflowProp;
|
|
79
|
+
/**
|
|
80
|
+
* Typed model (gh#258) — search slot. When ANY model prop (`search`/`filters`/`chips`/
|
|
81
|
+
* `onChipRemove`/`actions`/`resultCount`/`loading`/`disabled`/`error`) is present the bar renders
|
|
82
|
+
* the canonical model layout: strip (search → filters → children → reset → actions) → chips row →
|
|
83
|
+
* result-count/error line, with token-owned widths and stacking. Without any of them the bar
|
|
84
|
+
* stays the plain children-composition toolbar — existing markup is unchanged.
|
|
85
|
+
*/
|
|
86
|
+
search?: FilterBarSearchProp;
|
|
87
|
+
/** Typed model — labelled Select filters rendered after the search slot, in array order. */
|
|
88
|
+
filters?: FilterBarFilterProp[];
|
|
89
|
+
/** Typed model — applied-filter chips (consumer data; add = include, remove = `onChipRemove`). */
|
|
90
|
+
chips?: FilterBarChipProp[];
|
|
91
|
+
/** Remove ONE chip by its `value`. Required for chips to render their × remove button. */
|
|
92
|
+
onChipRemove?: (value: string) => void;
|
|
93
|
+
/** Typed model — trailing action slot (e.g. a primary "Add" Button), parked at the inline end. */
|
|
94
|
+
actions?: ActionsProp;
|
|
95
|
+
/**
|
|
96
|
+
* Typed model — localized, pluralized result count ("{count} results") announced politely via a
|
|
97
|
+
* `role="status"` line under the strip. `0` is the rendered empty state, not "hidden".
|
|
98
|
+
*/
|
|
99
|
+
resultCount?: number;
|
|
100
|
+
/** Typed model — marks the strip `aria-busy` while results are being (re)fetched. */
|
|
101
|
+
loading?: PendingProp;
|
|
102
|
+
/** Typed model — disables every model-rendered control (search, filters, reset, chip removes). */
|
|
103
|
+
disabled?: DisabledProp;
|
|
104
|
+
/** Typed model — consumer error content, announced via `role="alert"` in place of the count. */
|
|
105
|
+
error?: ErrorProp;
|
|
79
106
|
className?: ClassNameProp;
|
|
80
|
-
children
|
|
107
|
+
children?: ChildrenProp;
|
|
81
108
|
};
|
|
82
109
|
/** @see ToolbarGroup */
|
|
83
110
|
export type ToolbarGroupProp = {
|
|
@@ -144,18 +171,9 @@ export type StepsProp = {
|
|
|
144
171
|
type?: "default" | "dot" | "inline";
|
|
145
172
|
size?: "md" | "sm";
|
|
146
173
|
titlePlacement?: "horizontal" | "vertical";
|
|
147
|
-
/**
|
|
148
|
-
* The glyph between inline steps (`type="inline"` only). `chevron` (default, `›`) is the
|
|
149
|
-
* breadcrumb-flavoured original. `arrow` (`→`) is the canonical hosted-identity progression
|
|
150
|
-
* marker: a chevron reads as "drill into", an arrow reads as "then" — which is what a step row
|
|
151
|
-
* means. Ignored by every other `type`.
|
|
152
|
-
*/
|
|
153
|
-
separator?: StepsSeparatorProp;
|
|
154
174
|
onValueChange?: (value: number) => void;
|
|
155
175
|
className?: ClassNameProp;
|
|
156
176
|
};
|
|
157
|
-
/** @see Steps — inline separator glyph. */
|
|
158
|
-
export type StepsSeparatorProp = "chevron" | "arrow";
|
|
159
177
|
/** Tab pane — Ant Design `items` entry. */
|
|
160
178
|
export type TabItemProp = {
|
|
161
179
|
value: string;
|
package/dist/props/registry.d.ts
CHANGED
|
@@ -124,6 +124,11 @@ export declare const VOCABULARY_REGISTRY: {
|
|
|
124
124
|
readonly category: "content";
|
|
125
125
|
readonly description: "Secondary line under title";
|
|
126
126
|
};
|
|
127
|
+
readonly StatusProp: {
|
|
128
|
+
readonly file: "vocabulary/content.prop.ts";
|
|
129
|
+
readonly category: "content";
|
|
130
|
+
readonly description: "Status/meta band beside a title (StatusBadge, meta text)";
|
|
131
|
+
};
|
|
127
132
|
readonly DescriptionProp: {
|
|
128
133
|
readonly file: "vocabulary/content.prop.ts";
|
|
129
134
|
readonly category: "content";
|
|
@@ -222,7 +227,7 @@ export declare const VOCABULARY_REGISTRY: {
|
|
|
222
227
|
readonly AuthShellPresetProp: {
|
|
223
228
|
readonly file: "vocabulary/layout.prop.ts";
|
|
224
229
|
readonly category: "layout";
|
|
225
|
-
readonly description: "AuthShell named flow geometry — default | login (stable SCR-001 identity/card/footer anchor) | device-authorization (380px card, 5px mobile gutter) | context-selection (25rem card, edge-to-edge mobile) | account-recovery (432px SCR-008 recovery/MFA panel, 15px mobile gutter)";
|
|
230
|
+
readonly description: "AuthShell named flow geometry — default | login (stable SCR-001 identity/card/footer anchor) | registration (360px SCR-002 sign-up measure, start-aligned long-form scroll, own footer clearance, 15px mobile gutter) | device-authorization (380px card, 5px mobile gutter) | context-selection (25rem card, edge-to-edge mobile) | account-recovery (432px SCR-008 recovery/MFA panel, 15px mobile gutter)";
|
|
226
231
|
};
|
|
227
232
|
readonly GapProp: {
|
|
228
233
|
readonly file: "vocabulary/layout.prop.ts";
|
|
@@ -322,7 +327,7 @@ export declare const VOCABULARY_REGISTRY: {
|
|
|
322
327
|
readonly AlertVariantProp: {
|
|
323
328
|
readonly file: "vocabulary/interaction.prop.ts";
|
|
324
329
|
readonly category: "interaction";
|
|
325
|
-
readonly description: "
|
|
330
|
+
readonly description: "Alert structural axis: default inline card | banner full-bleed strip";
|
|
326
331
|
};
|
|
327
332
|
readonly SortDirectionProp: {
|
|
328
333
|
readonly file: "vocabulary/interaction.prop.ts";
|
|
@@ -461,35 +466,10 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
461
466
|
readonly file: "components/layout.prop.ts";
|
|
462
467
|
readonly vocabulary: readonly [];
|
|
463
468
|
};
|
|
464
|
-
readonly PageHeaderProp: {
|
|
465
|
-
readonly group: "layout";
|
|
466
|
-
readonly file: "components/layout.prop.ts";
|
|
467
|
-
readonly vocabulary: readonly ["TitleProp", "SubtitleProp", "ExtraProp", "BreadcrumbProp", {
|
|
468
|
-
readonly field: "meta";
|
|
469
|
-
readonly local: true;
|
|
470
|
-
readonly reason: "Status/meta band rendered inline with the `<h1>` (a Badge tone, a record id, a timestamp). A free ReactNode slot, not a controlled value — the header never interprets what it holds.";
|
|
471
|
-
}, {
|
|
472
|
-
readonly field: "layout";
|
|
473
|
-
readonly local: true;
|
|
474
|
-
readonly reason: "Header ARRANGEMENT of the title band vs the extra slot below the 640px step (stack | responsive-inline) — the standalone spelling of PageContainer's `headerLayout`.";
|
|
475
|
-
}, {
|
|
476
|
-
readonly field: "loading";
|
|
477
|
-
readonly local: true;
|
|
478
|
-
readonly reason: "Pending state of the TITLE BAND only (skeleton title/subtitle + aria-busy), distinct from a page-wide DataState: breadcrumbs and actions come from the route and stay live while the record resolves.";
|
|
479
|
-
}];
|
|
480
|
-
};
|
|
481
469
|
readonly PageContainerProp: {
|
|
482
470
|
readonly group: "layout";
|
|
483
471
|
readonly file: "components/layout.prop.ts";
|
|
484
|
-
readonly vocabulary: readonly ["TitleProp", "SubtitleProp", "ExtraProp", "FooterProp", "BreadcrumbProp", "DensityProp", "PageContainerVariantProp", {
|
|
485
|
-
readonly field: "meta";
|
|
486
|
-
readonly local: true;
|
|
487
|
-
readonly reason: "Forwarded verbatim to PageHeader's `meta` slot — see PageHeaderProp.";
|
|
488
|
-
}, {
|
|
489
|
-
readonly field: "headerLoading";
|
|
490
|
-
readonly local: true;
|
|
491
|
-
readonly reason: "Forwarded to PageHeader's `loading`. Named for the BAND it skeletonises, so it can never be read as a page-wide loading flag (that is DataState's job).";
|
|
492
|
-
}, {
|
|
472
|
+
readonly vocabulary: readonly ["TitleProp", "SubtitleProp", "StatusProp", "ExtraProp", "FooterProp", "BreadcrumbProp", "DensityProp", "PageContainerVariantProp", {
|
|
493
473
|
readonly field: "headerLayout";
|
|
494
474
|
readonly local: true;
|
|
495
475
|
readonly reason: "Header ARRANGEMENT of the title band vs the extra slot below the 640px step (stack | responsive-inline) — orthogonal to PageContainerVariantProp, which selects the page shell layout.";
|
|
@@ -1063,11 +1043,6 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
1063
1043
|
readonly file: "components/data-display.prop.ts";
|
|
1064
1044
|
readonly vocabulary: readonly ["AvatarShapeProp", "ChildrenProp", "ClassNameProp"];
|
|
1065
1045
|
};
|
|
1066
|
-
readonly AvatarAppearanceProp: {
|
|
1067
|
-
readonly group: "data-display";
|
|
1068
|
-
readonly file: "components/data-display.prop.ts";
|
|
1069
|
-
readonly vocabulary: readonly [];
|
|
1070
|
-
};
|
|
1071
1046
|
readonly BadgeProp: {
|
|
1072
1047
|
readonly group: "data-display";
|
|
1073
1048
|
readonly file: "components/data-display.prop.ts";
|
|
@@ -1418,41 +1393,27 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
1418
1393
|
readonly ToolbarProp: {
|
|
1419
1394
|
readonly group: "navigation";
|
|
1420
1395
|
readonly file: "components/navigation.prop.ts";
|
|
1421
|
-
readonly vocabulary: readonly ["OnClearFiltersProp", "HasActiveFiltersProp", "StickyProp", "ClassNameProp", "ChildrenProp"
|
|
1422
|
-
readonly field: "search";
|
|
1423
|
-
readonly local: true;
|
|
1424
|
-
readonly reason: "SLOT for the caller's own search control, positioned at the start of the row and measured by --filter-bar-search-width. Not a value/onValueChange pair: the bar owns the search's PLACE and WIDTH, never its state (gh#258).";
|
|
1425
|
-
}, {
|
|
1426
|
-
readonly field: "chips";
|
|
1427
|
-
readonly local: true;
|
|
1428
|
-
readonly reason: "APPLIED filters as removable chips — the visible record of filters already in effect, distinct from the controls that set them. A bar-specific shape (id/label/onRemove), not a shared vocabulary type (gh#258).";
|
|
1429
|
-
}, {
|
|
1430
|
-
readonly field: "onChipRemove";
|
|
1431
|
-
readonly local: true;
|
|
1432
|
-
readonly reason: "Chip-removal callback keyed by chip id. Not `onValueChange`: it reports ONE lifted filter rather than the bar's whole value, which the bar deliberately does not hold (gh#258).";
|
|
1433
|
-
}, {
|
|
1434
|
-
readonly field: "resultCount";
|
|
1435
|
-
readonly local: true;
|
|
1436
|
-
readonly reason: "Number of records the current filters resolve to, announced in a polite live region and formatted via Intl.NumberFormat + CLDR plurals. Presentational output, not a controlled value (gh#258).";
|
|
1437
|
-
}, {
|
|
1438
|
-
readonly field: "actions";
|
|
1439
|
-
readonly local: true;
|
|
1440
|
-
readonly reason: "Trailing action SLOT (export, column settings, saved views), ordered AFTER the reset control by the bar so `clear filters` never sits beside an unrelated primary action (gh#258).";
|
|
1441
|
-
}];
|
|
1396
|
+
readonly vocabulary: readonly ["OnClearFiltersProp", "HasActiveFiltersProp", "StickyProp", "ActionsProp", "PendingProp", "DisabledProp", "ErrorProp", "ClassNameProp", "ChildrenProp"];
|
|
1442
1397
|
};
|
|
1443
|
-
readonly
|
|
1398
|
+
readonly FilterBarOverflowProp: {
|
|
1444
1399
|
readonly group: "navigation";
|
|
1445
1400
|
readonly file: "components/navigation.prop.ts";
|
|
1446
|
-
readonly vocabulary: readonly [
|
|
1447
|
-
readonly field: "onRemove";
|
|
1448
|
-
readonly local: true;
|
|
1449
|
-
readonly reason: "Per-chip removal. Omitting it is meaningful — the chip renders with NO remove control (a filter the user may not lift), rather than a disabled button that is a dead tab stop (gh#258).";
|
|
1450
|
-
}];
|
|
1401
|
+
readonly vocabulary: readonly [];
|
|
1451
1402
|
};
|
|
1452
|
-
readonly
|
|
1403
|
+
readonly FilterBarSearchProp: {
|
|
1453
1404
|
readonly group: "navigation";
|
|
1454
1405
|
readonly file: "components/navigation.prop.ts";
|
|
1455
|
-
readonly vocabulary: readonly [];
|
|
1406
|
+
readonly vocabulary: readonly ["PlaceholderProp", "IdProp", "DisabledProp"];
|
|
1407
|
+
};
|
|
1408
|
+
readonly FilterBarFilterProp: {
|
|
1409
|
+
readonly group: "navigation";
|
|
1410
|
+
readonly file: "components/navigation.prop.ts";
|
|
1411
|
+
readonly vocabulary: readonly ["LabelProp", "PlaceholderProp", "DisabledProp"];
|
|
1412
|
+
};
|
|
1413
|
+
readonly FilterBarChipProp: {
|
|
1414
|
+
readonly group: "navigation";
|
|
1415
|
+
readonly file: "components/navigation.prop.ts";
|
|
1416
|
+
readonly vocabulary: readonly ["DisabledProp"];
|
|
1456
1417
|
};
|
|
1457
1418
|
readonly ToolbarGroupProp: {
|
|
1458
1419
|
readonly group: "navigation";
|
|
@@ -1479,11 +1440,6 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
1479
1440
|
readonly file: "components/data-entry.prop.ts";
|
|
1480
1441
|
readonly vocabulary: readonly [];
|
|
1481
1442
|
};
|
|
1482
|
-
readonly InputOTPAlignProp: {
|
|
1483
|
-
readonly group: "data-entry";
|
|
1484
|
-
readonly file: "components/data-entry.prop.ts";
|
|
1485
|
-
readonly vocabulary: readonly [];
|
|
1486
|
-
};
|
|
1487
1443
|
readonly StepItemProp: {
|
|
1488
1444
|
readonly group: "navigation";
|
|
1489
1445
|
readonly file: "components/navigation.prop.ts";
|
|
@@ -1494,11 +1450,6 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
1494
1450
|
readonly file: "components/navigation.prop.ts";
|
|
1495
1451
|
readonly vocabulary: readonly [];
|
|
1496
1452
|
};
|
|
1497
|
-
readonly StepsSeparatorProp: {
|
|
1498
|
-
readonly group: "navigation";
|
|
1499
|
-
readonly file: "components/navigation.prop.ts";
|
|
1500
|
-
readonly vocabulary: readonly [];
|
|
1501
|
-
};
|
|
1502
1453
|
readonly TabsProp: {
|
|
1503
1454
|
readonly group: "navigation";
|
|
1504
1455
|
readonly file: "components/navigation.prop.ts";
|
|
@@ -1664,6 +1615,256 @@ export declare const COMPONENT_PROP_REGISTRY: {
|
|
|
1664
1615
|
readonly file: "components/layout/split-pane.tsx";
|
|
1665
1616
|
readonly vocabulary: readonly ["ClassNameProp", "ChildrenProp"];
|
|
1666
1617
|
};
|
|
1618
|
+
readonly PermissionMatrixRoleProp: {
|
|
1619
|
+
readonly group: "data-display";
|
|
1620
|
+
readonly file: "components/data-display.prop.ts";
|
|
1621
|
+
readonly vocabulary: readonly ["IdProp", {
|
|
1622
|
+
readonly field: "name";
|
|
1623
|
+
readonly local: true;
|
|
1624
|
+
readonly reason: "Consumer-supplied role display name; a plain string so it can label cells for AT.";
|
|
1625
|
+
}, {
|
|
1626
|
+
readonly field: "description";
|
|
1627
|
+
readonly local: true;
|
|
1628
|
+
readonly reason: "Secondary caption under the role column header.";
|
|
1629
|
+
}, {
|
|
1630
|
+
readonly field: "locked";
|
|
1631
|
+
readonly local: true;
|
|
1632
|
+
readonly reason: "Per-role read-only flag — a locked role keeps ✓/— cells in an editable matrix.";
|
|
1633
|
+
}];
|
|
1634
|
+
};
|
|
1635
|
+
readonly PermissionMatrixPermissionProp: {
|
|
1636
|
+
readonly group: "data-display";
|
|
1637
|
+
readonly file: "components/data-display.prop.ts";
|
|
1638
|
+
readonly vocabulary: readonly ["IdProp", {
|
|
1639
|
+
readonly field: "name";
|
|
1640
|
+
readonly local: true;
|
|
1641
|
+
readonly reason: "Consumer-supplied permission display name; plain string for accessible labels.";
|
|
1642
|
+
}, {
|
|
1643
|
+
readonly field: "description";
|
|
1644
|
+
readonly local: true;
|
|
1645
|
+
readonly reason: "Secondary line under the permission name.";
|
|
1646
|
+
}, {
|
|
1647
|
+
readonly field: "group";
|
|
1648
|
+
readonly local: true;
|
|
1649
|
+
readonly reason: "Optional category caption for the permission row.";
|
|
1650
|
+
}];
|
|
1651
|
+
};
|
|
1652
|
+
readonly PermissionMatrixGrantsProp: {
|
|
1653
|
+
readonly group: "data-display";
|
|
1654
|
+
readonly file: "components/data-display.prop.ts";
|
|
1655
|
+
readonly vocabulary: readonly [{
|
|
1656
|
+
readonly field: "grants";
|
|
1657
|
+
readonly local: true;
|
|
1658
|
+
readonly reason: "The role×permission grant relation — the grantKey Set from lib/permission-grid or a pair array normalized through the same encoding.";
|
|
1659
|
+
}];
|
|
1660
|
+
};
|
|
1661
|
+
readonly PermissionMatrixProp: {
|
|
1662
|
+
readonly group: "data-display";
|
|
1663
|
+
readonly file: "components/data-display.prop.ts";
|
|
1664
|
+
readonly vocabulary: readonly ["LabelProp", "HandlerProp", "ClassNameProp", "IdProp", {
|
|
1665
|
+
readonly field: "roles";
|
|
1666
|
+
readonly local: true;
|
|
1667
|
+
readonly reason: "Consumer-supplied role columns (see PermissionMatrixRoleProp).";
|
|
1668
|
+
}, {
|
|
1669
|
+
readonly field: "permissions";
|
|
1670
|
+
readonly local: true;
|
|
1671
|
+
readonly reason: "Consumer-supplied permission rows (see PermissionMatrixPermissionProp).";
|
|
1672
|
+
}, {
|
|
1673
|
+
readonly field: "grants";
|
|
1674
|
+
readonly local: true;
|
|
1675
|
+
readonly reason: "The grant relation (see PermissionMatrixGrantsProp).";
|
|
1676
|
+
}, {
|
|
1677
|
+
readonly field: "onGrantChange";
|
|
1678
|
+
readonly local: true;
|
|
1679
|
+
readonly reason: "Cell toggle handler carrying the (roleId, permissionId, granted) triple; its presence switches the grid from read-only ✓/— to editable checkboxes.";
|
|
1680
|
+
}, {
|
|
1681
|
+
readonly field: "readOnly";
|
|
1682
|
+
readonly local: true;
|
|
1683
|
+
readonly reason: "Forces the read-only grid even when onGrantChange is present (viewer permission).";
|
|
1684
|
+
}, {
|
|
1685
|
+
readonly field: "compare";
|
|
1686
|
+
readonly local: true;
|
|
1687
|
+
readonly reason: "Two role ids compared side by side — the lib/permission-grid ComparePair.";
|
|
1688
|
+
}, {
|
|
1689
|
+
readonly field: "diffOnly";
|
|
1690
|
+
readonly local: true;
|
|
1691
|
+
readonly reason: "差分のみ filter: with compare set, keep only the rows where the two roles differ.";
|
|
1692
|
+
}, {
|
|
1693
|
+
readonly field: "loading";
|
|
1694
|
+
readonly local: true;
|
|
1695
|
+
readonly reason: "Read-lifecycle skeleton state mirroring DataTable #216 (precedence loading → denied → error → empty).";
|
|
1696
|
+
}, {
|
|
1697
|
+
readonly field: "empty";
|
|
1698
|
+
readonly local: true;
|
|
1699
|
+
readonly reason: "Custom empty content override, mirroring DataTable's empty slot.";
|
|
1700
|
+
}, {
|
|
1701
|
+
readonly field: "error";
|
|
1702
|
+
readonly local: true;
|
|
1703
|
+
readonly reason: "Read-failure state mirroring DataTable #216 (true = built-in localized message).";
|
|
1704
|
+
}, {
|
|
1705
|
+
readonly field: "denied";
|
|
1706
|
+
readonly local: true;
|
|
1707
|
+
readonly reason: "Permission-denied read state mirroring DataTable #216 — refused, not failed.";
|
|
1708
|
+
}, {
|
|
1709
|
+
readonly field: "onRetry";
|
|
1710
|
+
readonly local: true;
|
|
1711
|
+
readonly reason: "Retry affordance for the built-in error state, mirroring DataTable #216.";
|
|
1712
|
+
}];
|
|
1713
|
+
};
|
|
1714
|
+
readonly BranchScopeModeProp: {
|
|
1715
|
+
readonly group: "data-entry";
|
|
1716
|
+
readonly file: "components/data-entry.prop.ts";
|
|
1717
|
+
readonly vocabulary: readonly [{
|
|
1718
|
+
readonly field: "mode";
|
|
1719
|
+
readonly local: true;
|
|
1720
|
+
readonly reason: "Closed scope vocabulary: all branches vs an explicit subset.";
|
|
1721
|
+
}];
|
|
1722
|
+
};
|
|
1723
|
+
readonly BranchScopeValueProp: {
|
|
1724
|
+
readonly group: "data-entry";
|
|
1725
|
+
readonly file: "components/data-entry.prop.ts";
|
|
1726
|
+
readonly vocabulary: readonly [{
|
|
1727
|
+
readonly field: "mode";
|
|
1728
|
+
readonly local: true;
|
|
1729
|
+
readonly reason: "The selected scope mode (see BranchScopeModeProp).";
|
|
1730
|
+
}, {
|
|
1731
|
+
readonly field: "branchIds";
|
|
1732
|
+
readonly local: true;
|
|
1733
|
+
readonly reason: "Checked branch ids, meaningful only when mode = selected.";
|
|
1734
|
+
}];
|
|
1735
|
+
};
|
|
1736
|
+
readonly BranchScopeOptionProp: {
|
|
1737
|
+
readonly group: "data-entry";
|
|
1738
|
+
readonly file: "components/data-entry.prop.ts";
|
|
1739
|
+
readonly vocabulary: readonly ["IdProp", "DisabledProp", {
|
|
1740
|
+
readonly field: "name";
|
|
1741
|
+
readonly local: true;
|
|
1742
|
+
readonly reason: "Consumer-supplied branch display name; plain string so it is searchable.";
|
|
1743
|
+
}, {
|
|
1744
|
+
readonly field: "description";
|
|
1745
|
+
readonly local: true;
|
|
1746
|
+
readonly reason: "Secondary line under the branch name.";
|
|
1747
|
+
}];
|
|
1748
|
+
};
|
|
1749
|
+
readonly BranchScopePickerProp: {
|
|
1750
|
+
readonly group: "data-entry";
|
|
1751
|
+
readonly file: "components/data-entry.prop.ts";
|
|
1752
|
+
readonly vocabulary: readonly ["ValueProp", "DefaultValueProp", "OnValueChangeProp", "DisabledProp", "ErrorProp", "NameProp", "IdProp", "ClassNameProp", {
|
|
1753
|
+
readonly field: "branches";
|
|
1754
|
+
readonly local: true;
|
|
1755
|
+
readonly reason: "Consumer-supplied selectable branches (see BranchScopeOptionProp).";
|
|
1756
|
+
}, {
|
|
1757
|
+
readonly field: "readOnly";
|
|
1758
|
+
readonly local: true;
|
|
1759
|
+
readonly reason: "Locked view: render the current scope without editable affordances.";
|
|
1760
|
+
}, {
|
|
1761
|
+
readonly field: "searchable";
|
|
1762
|
+
readonly local: true;
|
|
1763
|
+
readonly reason: "Toggle for the built-in branch SearchInput above the checkbox list.";
|
|
1764
|
+
}, {
|
|
1765
|
+
readonly field: "loading";
|
|
1766
|
+
readonly local: true;
|
|
1767
|
+
readonly reason: "Read-lifecycle skeleton state (precedence loading → denied → listError → empty).";
|
|
1768
|
+
}, {
|
|
1769
|
+
readonly field: "empty";
|
|
1770
|
+
readonly local: true;
|
|
1771
|
+
readonly reason: "Custom empty content when there are no branches.";
|
|
1772
|
+
}, {
|
|
1773
|
+
readonly field: "listError";
|
|
1774
|
+
readonly local: true;
|
|
1775
|
+
readonly reason: "Branch-collection READ failure — deliberately distinct from ErrorProp `error`, which stays field validation.";
|
|
1776
|
+
}, {
|
|
1777
|
+
readonly field: "denied";
|
|
1778
|
+
readonly local: true;
|
|
1779
|
+
readonly reason: "Permission-denied read state — the branch collection was refused, not failed.";
|
|
1780
|
+
}, {
|
|
1781
|
+
readonly field: "allLabel";
|
|
1782
|
+
readonly local: true;
|
|
1783
|
+
readonly reason: "Override for the localized all-branches radio label.";
|
|
1784
|
+
}, {
|
|
1785
|
+
readonly field: "selectedLabel";
|
|
1786
|
+
readonly local: true;
|
|
1787
|
+
readonly reason: "Override for the localized selected-branches radio label.";
|
|
1788
|
+
}];
|
|
1789
|
+
};
|
|
1790
|
+
readonly ServiceRoleItemProp: {
|
|
1791
|
+
readonly group: "layout";
|
|
1792
|
+
readonly file: "components/layout.prop.ts";
|
|
1793
|
+
readonly vocabulary: readonly ["IdProp", {
|
|
1794
|
+
readonly field: "name";
|
|
1795
|
+
readonly local: true;
|
|
1796
|
+
readonly reason: "Consumer-supplied role display name; plain string for accessible labels.";
|
|
1797
|
+
}, {
|
|
1798
|
+
readonly field: "description";
|
|
1799
|
+
readonly local: true;
|
|
1800
|
+
readonly reason: "Secondary line under the role name in the master rail.";
|
|
1801
|
+
}, {
|
|
1802
|
+
readonly field: "memberCount";
|
|
1803
|
+
readonly local: true;
|
|
1804
|
+
readonly reason: "Member count caption, pluralized via CLDR categories.";
|
|
1805
|
+
}, {
|
|
1806
|
+
readonly field: "locked";
|
|
1807
|
+
readonly local: true;
|
|
1808
|
+
readonly reason: "System-role flag: lock badge, no delete affordance ever.";
|
|
1809
|
+
}];
|
|
1810
|
+
};
|
|
1811
|
+
readonly ServiceRolePanelProp: {
|
|
1812
|
+
readonly group: "layout";
|
|
1813
|
+
readonly file: "components/layout.prop.ts";
|
|
1814
|
+
readonly vocabulary: readonly ["ValueProp", "DefaultValueProp", "OnValueChangeProp", "ChildrenProp", "BreakpointProp", "IdProp", "ClassNameProp", {
|
|
1815
|
+
readonly field: "roles";
|
|
1816
|
+
readonly local: true;
|
|
1817
|
+
readonly reason: "Consumer-supplied role collection (see ServiceRoleItemProp).";
|
|
1818
|
+
}, {
|
|
1819
|
+
readonly field: "onDeleteRole";
|
|
1820
|
+
readonly local: true;
|
|
1821
|
+
readonly reason: "Confirmed-deletion handler; its presence arms the built-in destructive AlertDialog per non-locked role.";
|
|
1822
|
+
}, {
|
|
1823
|
+
readonly field: "readOnly";
|
|
1824
|
+
readonly local: true;
|
|
1825
|
+
readonly reason: "Locked view: hides every mutating affordance.";
|
|
1826
|
+
}, {
|
|
1827
|
+
readonly field: "loading";
|
|
1828
|
+
readonly local: true;
|
|
1829
|
+
readonly reason: "Read-lifecycle skeleton state (precedence loading → denied → error → empty).";
|
|
1830
|
+
}, {
|
|
1831
|
+
readonly field: "empty";
|
|
1832
|
+
readonly local: true;
|
|
1833
|
+
readonly reason: "Custom empty content when there are no roles.";
|
|
1834
|
+
}, {
|
|
1835
|
+
readonly field: "error";
|
|
1836
|
+
readonly local: true;
|
|
1837
|
+
readonly reason: "Read-failure state (true = built-in localized message, node replaces it).";
|
|
1838
|
+
}, {
|
|
1839
|
+
readonly field: "denied";
|
|
1840
|
+
readonly local: true;
|
|
1841
|
+
readonly reason: "Permission-denied read state — refused, not failed.";
|
|
1842
|
+
}, {
|
|
1843
|
+
readonly field: "onRetry";
|
|
1844
|
+
readonly local: true;
|
|
1845
|
+
readonly reason: "Retry affordance for the built-in error state.";
|
|
1846
|
+
}, {
|
|
1847
|
+
readonly field: "masterLabel";
|
|
1848
|
+
readonly local: true;
|
|
1849
|
+
readonly reason: "Accessible name override for the roles region (localized default otherwise).";
|
|
1850
|
+
}, {
|
|
1851
|
+
readonly field: "detailLabel";
|
|
1852
|
+
readonly local: true;
|
|
1853
|
+
readonly reason: "Accessible name override for the detail region (localized default otherwise).";
|
|
1854
|
+
}, {
|
|
1855
|
+
readonly field: "railWidth";
|
|
1856
|
+
readonly local: true;
|
|
1857
|
+
readonly reason: "Forwarded MasterDetail rail geometry preset.";
|
|
1858
|
+
}, {
|
|
1859
|
+
readonly field: "masterViewport";
|
|
1860
|
+
readonly local: true;
|
|
1861
|
+
readonly reason: "Forwarded MasterDetail bounded-collection preset.";
|
|
1862
|
+
}, {
|
|
1863
|
+
readonly field: "collapseBelow";
|
|
1864
|
+
readonly local: true;
|
|
1865
|
+
readonly reason: "Forwarded MasterDetail stacking threshold override.";
|
|
1866
|
+
}];
|
|
1867
|
+
};
|
|
1667
1868
|
};
|
|
1668
1869
|
export type ComponentPropName = keyof typeof COMPONENT_PROP_REGISTRY;
|
|
1669
1870
|
/** Forbidden duplicate concepts — use the canonical name on the left. */
|