@godxjp/ui 18.9.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.
Files changed (85) hide show
  1. package/LICENSE +202 -0
  2. package/dist/components/data-display/badge.d.ts +7 -0
  3. package/dist/components/data-display/badge.js +1 -1
  4. package/dist/components/data-display/card.d.ts +3 -27
  5. package/dist/components/data-display/card.js +1 -4
  6. package/dist/components/data-display/data-table.js +5 -4
  7. package/dist/components/data-display/index.d.ts +2 -0
  8. package/dist/components/data-display/index.js +2 -0
  9. package/dist/components/data-display/permission-matrix.d.ts +26 -0
  10. package/dist/components/data-display/permission-matrix.js +219 -0
  11. package/dist/components/data-display/table.d.ts +12 -0
  12. package/dist/components/data-entry/branch-scope-picker.d.ts +43 -0
  13. package/dist/components/data-entry/branch-scope-picker.js +200 -0
  14. package/dist/components/data-entry/command-palette.d.ts +1 -42
  15. package/dist/components/data-entry/command-palette.js +2 -31
  16. package/dist/components/data-entry/index.d.ts +2 -0
  17. package/dist/components/data-entry/index.js +2 -0
  18. package/dist/components/data-entry/input-otp.d.ts +1 -1
  19. package/dist/components/feedback/alert.d.ts +2 -20
  20. package/dist/components/feedback/alert.js +1 -11
  21. package/dist/components/feedback/banner.d.ts +21 -0
  22. package/dist/components/feedback/banner.js +15 -0
  23. package/dist/components/feedback/index.d.ts +4 -2
  24. package/dist/components/feedback/index.js +2 -2
  25. package/dist/components/general/typography.d.ts +1 -0
  26. package/dist/components/general/typography.js +32 -13
  27. package/dist/components/layout/auth-shell.d.ts +2 -2
  28. package/dist/components/layout/index.d.ts +2 -2
  29. package/dist/components/layout/index.js +2 -2
  30. package/dist/components/layout/page-container.d.ts +1 -1
  31. package/dist/components/layout/page-container.js +45 -19
  32. package/dist/components/layout/service-role-panel.d.ts +25 -0
  33. package/dist/components/layout/service-role-panel.js +206 -0
  34. package/dist/components/navigation/filter-bar.d.ts +2 -2
  35. package/dist/components/navigation/filter-bar.js +113 -34
  36. package/dist/components/navigation/index.d.ts +1 -1
  37. package/dist/components/navigation/steps.d.ts +2 -2
  38. package/dist/components/navigation/steps.js +2 -4
  39. package/dist/components/ui/avatar.d.ts +1 -1
  40. package/dist/components/ui/avatar.js +1 -2
  41. package/dist/components/ui/input-otp.d.ts +3 -15
  42. package/dist/components/ui/input-otp.js +1 -2
  43. package/dist/email/tokens.generated.d.ts +2 -2
  44. package/dist/email/tokens.generated.js +2 -2
  45. package/dist/i18n/messages/en.json +56 -4
  46. package/dist/i18n/messages/ja.json +51 -5
  47. package/dist/i18n/messages/vi.json +50 -4
  48. package/dist/props/components/data-display.prop.d.ts +66 -16
  49. package/dist/props/components/data-entry.prop.d.ts +54 -7
  50. package/dist/props/components/feedback.prop.d.ts +3 -3
  51. package/dist/props/components/general.prop.d.ts +8 -1
  52. package/dist/props/components/layout.prop.d.ts +75 -54
  53. package/dist/props/components/navigation.prop.d.ts +77 -59
  54. package/dist/props/registry.d.ts +274 -73
  55. package/dist/props/registry.js +362 -93
  56. package/dist/props/vocabulary/content.prop.d.ts +5 -0
  57. package/dist/props/vocabulary/index.d.ts +1 -1
  58. package/dist/props/vocabulary/interaction.prop.d.ts +4 -7
  59. package/dist/props/vocabulary/layout.prop.d.ts +2 -2
  60. package/dist/styles/alert-layout.css +15 -32
  61. package/dist/styles/badge-layout.css +5 -0
  62. package/dist/styles/base.css +0 -28
  63. package/dist/styles/card-layout.css +13 -49
  64. package/dist/styles/control.css +2 -12
  65. package/dist/styles/data-display-layout.css +0 -16
  66. package/dist/styles/layout.css +102 -108
  67. package/dist/styles/navigation-layout.css +3 -8
  68. package/dist/styles/shell-layout.css +17 -17
  69. package/dist/styles/table-layout.css +77 -29
  70. package/dist/styles/text-layout.css +13 -0
  71. package/dist/tokens/base.css +1 -0
  72. package/dist/tokens/components/badge.css +5 -0
  73. package/dist/tokens/components/banner.css +16 -0
  74. package/dist/tokens/components/card.css +0 -12
  75. package/dist/tokens/components/control.css +0 -16
  76. package/dist/tokens/components/data-display.css +0 -12
  77. package/dist/tokens/components/email.css +2 -8
  78. package/dist/tokens/components/feedback.css +0 -20
  79. package/dist/tokens/components/navigation.css +10 -34
  80. package/dist/tokens/components/shell.css +24 -36
  81. package/dist/tokens/components/table.css +41 -22
  82. package/dist/tokens/semantic/layout.css +5 -12
  83. package/package.json +15 -2
  84. package/dist/components/layout/page-header.d.ts +0 -22
  85. package/dist/components/layout/page-header.js +0 -89
@@ -1,7 +1,7 @@
1
1
  /** Layout component prop types — @see docs/COMPONENTS.md#layout */
2
2
  import type * as React from "react";
3
3
  import type { ComponentType, ReactNode, SVGProps } from "react";
4
- import type { BreadcrumbProp, TitleProp, SubtitleProp, ExtraProp, FooterProp, PageDensityProp, PageContainerVariantProp, CenteredShellWidthProp, CenteredShellAlignProp, CenteredShellPresetProp, ErrorSurfaceModeProp, ErrorSurfaceStatusProp, AuthShellPresetProp, BreakpointProp, GapProp, ClassNameProp, ChildrenProp, IdProp, DisabledProp, DescriptionProp, ActionProp, IconProp, HeadingLevelProp } from "../vocabulary/index.js";
4
+ import type { BreadcrumbProp, TitleProp, SubtitleProp, StatusProp, ExtraProp, FooterProp, PageDensityProp, PageContainerVariantProp, CenteredShellWidthProp, CenteredShellAlignProp, CenteredShellPresetProp, ErrorSurfaceModeProp, ErrorSurfaceStatusProp, AuthShellPresetProp, BreakpointProp, GapProp, ClassNameProp, ChildrenProp, IdProp, DisabledProp, DescriptionProp, ActionProp, IconProp, HeadingLevelProp } from "../vocabulary/index.js";
5
5
  import type { EmptyStateToneProp } from "./data-display.prop.js";
6
6
  /**
7
7
  * Arrangement of the page header's title band and its `extra` slot below the 640px step.
@@ -24,55 +24,20 @@ export type PageContainerPresetProp = "default" | "admin-collection";
24
24
  * fluid at the compact gutter.
25
25
  */
26
26
  export type PageContainerMeasureProp = "default" | "narrow" | "medium";
27
- /**
28
- * @see PageHeader — the canonical page title band, extracted from PageContainer so a consumer can
29
- * mount the SAME token-owned geometry outside a full page shell (a Sheet detail, a MasterDetail
30
- * pane, a tab body) instead of re-authoring `.ui-page-header` CSS locally (gh#255).
31
- */
32
- export type PageHeaderProp = {
33
- title: TitleProp;
34
- subtitle?: SubtitleProp;
35
- /**
36
- * Status / meta band rendered INLINE with the title (a `Badge` tone, an ID, a timestamp).
37
- * Omitted → the title band emits its historical single-`<h1>` DOM, so no existing page moves.
38
- */
39
- meta?: ReactNode;
40
- /** Trailing action region — buttons, a search field, an overflow menu. */
41
- extra?: ExtraProp;
42
- breadcrumb?: BreadcrumbProp;
43
- /**
44
- * Override the breadcrumb `<nav>` landmark's accessible name. Defaults to a localized
45
- * "Breadcrumb". Needed when more than one header (each with its own `breadcrumb`) renders on the
46
- * same page/view — two `<nav>` landmarks sharing one name/role fail axe's `landmark-unique`
47
- * (WCAG 2.4.1 / 1.3.1).
48
- */
49
- breadcrumbLabel?: string;
50
- /** Kebab/DOM-style alias of `breadcrumbLabel` (same landmark-unique override). */
51
- breadcrumbAriaLabel?: string;
52
- linkComponent?: React.ElementType;
53
- /**
54
- * How the title band and `extra` share the header row below the 640px step. Defaults to
55
- * `stack`. @see PageContainerHeaderLayoutProp
56
- */
57
- layout?: PageContainerHeaderLayoutProp;
58
- /**
59
- * Pending state for the title band while the page's own data resolves. Renders the title/subtitle
60
- * /meta as `Skeleton` placeholders and marks the header `aria-busy`, keeping the `<h1>` in the
61
- * document with an accessible name (an empty heading is an axe violation) so the page's heading
62
- * outline never disappears mid-load. Breadcrumbs and `extra` are NOT skeletonised — they come
63
- * from the route, not the record.
64
- */
65
- loading?: boolean;
66
- className?: ClassNameProp;
67
- };
68
27
  /** @see PageContainer */
69
28
  export type PageContainerProp = {
70
29
  title: TitleProp;
71
30
  subtitle?: SubtitleProp;
72
- /** Status / meta band rendered inline with the title. @see PageHeaderProp.meta */
73
- meta?: ReactNode;
74
- /** Skeletonise the title band while the page record loads. @see PageHeaderProp.loading */
75
- headerLoading?: boolean;
31
+ /**
32
+ * Status/meta band rendered beside the title inside the heading — StatusBadge, environment
33
+ * tag, "updated …" meta text. Geometry is token-owned (`--page-header-status-gap`): the band
34
+ * sits on the title line and WRAPS under it on compact viewports, so a consumer never
35
+ * hand-lays a badge next to an `<h1>`. Part of the canonical page-header contract
36
+ * (godxjp-ui#255): PageContainer's embedded header IS the DXS `PageHeader` — breadcrumbs
37
+ * (`breadcrumb`), title, subtitle, status/meta (this), actions (`extra`) and responsive
38
+ * overflow (`headerLayout` / `measure`) all live on this one renderer.
39
+ */
40
+ status?: StatusProp;
76
41
  extra?: ExtraProp;
77
42
  footer?: FooterProp;
78
43
  breadcrumb?: BreadcrumbProp;
@@ -276,8 +241,8 @@ export type AuthShellProp = {
276
241
  /**
277
242
  * Named flow MEASURE — the page geometry contract for one canonical hosted-identity flow: the
278
243
  * auth card's max-width plus the desktop and mobile page gutters, all owned by component tokens
279
- * (`--auth-shell-{login,device,context,recovery}-*`). Selecting a preset replaces every
280
- * consumer-side geometry override.
244
+ * (`--auth-shell-{login,registration,device,context,recovery}-*`). Selecting a preset replaces
245
+ * every consumer-side geometry override.
281
246
  *
282
247
  * - `"default"` (default) — the shell's own measure; nothing changes.
283
248
  * - `"login"` — SCR-001's 360px card at x=540/332/15 and y=363/363/353 for the canonical
@@ -286,13 +251,14 @@ export type AuthShellProp = {
286
251
  * position without truncating or inventing requester data. Pass AuthIdentity, Card and
287
252
  * AuthFooter as direct children (an anchor may wrap AuthIdentity).
288
253
  * - `"registration"` — the 360px sign-up measure with a 15px inline gutter at 390px (the same
289
- * page rhythm as `"login"`, so sign-in → sign-up never jumps on a phone). The ONLY preset whose
290
- * column is START-aligned: a registration card is the tallest surface in the hosted-identity
291
- * set (name · email · password · confirm · strength · consent · submit · providers), and a
254
+ * page rhythm as `"login"`, so sign-in → sign-up never jumps on a phone). START-aligned like
255
+ * login, because a registration card is the tallest surface in the hosted-identity set
256
+ * (name · email · password · confirm · strength · consent · submit · providers) and a
292
257
  * vertically centred tall card overflows ABOVE the scroll origin on a short viewport, putting
293
- * its first field out of reach. It is also the only preset with a footer-clearance knob of its
294
- * own, so the legal/consent footer never sits flush against the submit button. Carries the full
295
- * password form and the pending-email confirmation state with no consumer geometry CSS.
258
+ * its first field out of reach start-aligned, a long form simply scrolls. It is also the
259
+ * only preset with a footer-clearance knob of its own, so the legal/consent footer never sits
260
+ * flush against the submit button. Carries the full password form and the pending-email
261
+ * confirmation state with no consumer geometry CSS.
296
262
  * - `"device-authorization"` — 380px card measure with a 5px inline page gutter at a 390px
297
263
  * viewport (canonical device-grant artboard).
298
264
  * - `"context-selection"` — 25rem card measure on desktop/tablet, edge-to-edge on mobile, and a
@@ -814,3 +780,58 @@ export type LegalDocumentShellProp = {
814
780
  id?: IdProp;
815
781
  className?: ClassNameProp;
816
782
  };
783
+ /** @see ServiceRolePanel — one role in the master rail. Domain data is consumer-supplied. */
784
+ export type ServiceRoleItemProp = {
785
+ /** Stable role id (the selection value). */
786
+ id: string;
787
+ /** Human role name (also used in accessible labels, so a plain string). */
788
+ name: string;
789
+ /** Secondary line under the role name. */
790
+ description?: string;
791
+ /** Member count caption, pluralized via CLDR. */
792
+ memberCount?: number;
793
+ /** A locked (system) role shows a lock badge and never offers deletion. */
794
+ locked?: boolean;
795
+ };
796
+ /** @see ServiceRolePanel */
797
+ export type ServiceRolePanelProp = {
798
+ /** The roles in the master collection, in render order. */
799
+ roles: readonly ServiceRoleItemProp[];
800
+ /** Controlled selected role id. */
801
+ value?: string;
802
+ /** Uncontrolled initial selected role id. Defaults to the first role. */
803
+ defaultValue?: string;
804
+ /** Selection change handler. */
805
+ onValueChange?: (roleId: string) => void;
806
+ /**
807
+ * Detail surface for the current selection. A render function receives the selected role
808
+ * (or `undefined` when nothing is selected); a plain node is rendered as-is.
809
+ */
810
+ children?: ReactNode | ((role: ServiceRoleItemProp | undefined) => ReactNode);
811
+ /**
812
+ * Confirmed-deletion handler. Its PRESENCE adds a delete affordance per non-locked role behind
813
+ * the built-in destructive `AlertDialog`; the handler fires only AFTER the user confirms.
814
+ */
815
+ onDeleteRole?: (roleId: string) => void;
816
+ /** Hide every mutating affordance (locked view). */
817
+ readOnly?: boolean;
818
+ /** Show the loading skeleton instead of the panel. Precedence: loading → denied → error → empty. */
819
+ loading?: boolean;
820
+ /** Custom empty content when `roles` is empty; defaults to a localized EmptyState. */
821
+ empty?: ReactNode;
822
+ /** Failure state: `true` = built-in localized message, any other node replaces it. */
823
+ error?: ReactNode;
824
+ /** Permission-denied state — refused, not failed. Takes precedence over `error`. */
825
+ denied?: ReactNode;
826
+ /** Retry handler for the built-in `error` state; omit to hide the retry action. */
827
+ onRetry?: () => void;
828
+ /** Accessible names for the two regions (localized defaults otherwise). */
829
+ masterLabel?: string;
830
+ detailLabel?: string;
831
+ /** Forwarded MasterDetail geometry. */
832
+ railWidth?: MasterDetailRailWidthProp;
833
+ masterViewport?: MasterDetailMasterViewportProp;
834
+ collapseBelow?: BreakpointProp | false;
835
+ id?: IdProp;
836
+ className?: ClassNameProp;
837
+ };
@@ -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
- * One APPLIED filter, rendered as a removable chip under the control row (#258).
12
- *
13
- * The chip is the visible record of a filter that is already in effect — it is NOT the control that
14
- * sets it. `label` is caller-localized text (the bar never interprets or formats domain values);
15
- * omit `onRemove` for a chip the user may not lift (a scope locked by the route or by permission),
16
- * and the chip renders as a static token with no dead button.
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 — also the argument passed back to {@link ToolbarProp.onChipRemove}. */
20
- id: string;
21
- /** Already-localized chip text, e.g. "状態: 未払い". */
22
- label: string;
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: ChildrenProp;
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;