@starci/grammar 0.9.4 → 0.9.7

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 (114) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +1 -1
  3. package/dist/.build-stamp.json +4 -4
  4. package/dist/common/components-forms.css +45 -0
  5. package/dist/common/components-navigation.css +267 -0
  6. package/dist/common/components-overlays.css +9 -0
  7. package/dist/common/registry.d.ts +17 -16
  8. package/dist/common/registry.d.ts.map +1 -1
  9. package/dist/common/renderers-forms.d.ts +7 -7
  10. package/dist/common/renderers-navigation.d.ts +7 -5
  11. package/dist/common/renderers-navigation.d.ts.map +1 -1
  12. package/dist/common/renderers-navigation.js +3 -1
  13. package/dist/common/renderers-navigation.js.map +1 -1
  14. package/dist/common/renderers-overlays.d.ts +1 -1
  15. package/dist/common/renderers.d.ts +1 -1
  16. package/dist/common/renderers.d.ts.map +1 -1
  17. package/dist/common/renderers.js +1 -1
  18. package/dist/common/renderers.js.map +1 -1
  19. package/dist/common/styles.css +20 -0
  20. package/dist/core/branch/DataTable/index.d.ts +7 -2
  21. package/dist/core/branch/DataTable/index.d.ts.map +1 -1
  22. package/dist/core/branch/DataTable/index.js +9 -4
  23. package/dist/core/branch/DataTable/index.js.map +1 -1
  24. package/dist/core/branch/FlowGraph/index.d.ts +34 -0
  25. package/dist/core/branch/FlowGraph/index.d.ts.map +1 -0
  26. package/dist/core/branch/FlowGraph/index.js +83 -0
  27. package/dist/core/branch/FlowGraph/index.js.map +1 -0
  28. package/dist/core/branch/FlowGraph/layout.d.ts +17 -0
  29. package/dist/core/branch/FlowGraph/layout.d.ts.map +1 -0
  30. package/dist/core/branch/FlowGraph/layout.js +51 -0
  31. package/dist/core/branch/FlowGraph/layout.js.map +1 -0
  32. package/dist/core/branch/FlowGraph/types.d.ts +28 -0
  33. package/dist/core/branch/FlowGraph/types.d.ts.map +1 -0
  34. package/dist/core/branch/FlowGraph/types.js +2 -0
  35. package/dist/core/branch/FlowGraph/types.js.map +1 -0
  36. package/dist/core/branch/ListBox/index.d.ts +9 -1
  37. package/dist/core/branch/ListBox/index.d.ts.map +1 -1
  38. package/dist/core/branch/ListBox/index.js +8 -2
  39. package/dist/core/branch/ListBox/index.js.map +1 -1
  40. package/dist/core/branch/Select/index.d.ts +6 -1
  41. package/dist/core/branch/Select/index.d.ts.map +1 -1
  42. package/dist/core/branch/Select/index.js +5 -2
  43. package/dist/core/branch/Select/index.js.map +1 -1
  44. package/dist/core/branch/SurfaceListCard/index.d.ts +6 -0
  45. package/dist/core/branch/SurfaceListCard/index.d.ts.map +1 -1
  46. package/dist/core/branch/SurfaceListCard/index.js +10 -3
  47. package/dist/core/branch/SurfaceListCard/index.js.map +1 -1
  48. package/dist/core/composite/Breadcrumbs/index.d.ts +5 -0
  49. package/dist/core/composite/Breadcrumbs/index.d.ts.map +1 -1
  50. package/dist/core/composite/Breadcrumbs/index.js +3 -2
  51. package/dist/core/composite/Breadcrumbs/index.js.map +1 -1
  52. package/dist/core/composite/ChatBubble/index.d.ts +21 -3
  53. package/dist/core/composite/ChatBubble/index.d.ts.map +1 -1
  54. package/dist/core/composite/ChatBubble/index.js +10 -1
  55. package/dist/core/composite/ChatBubble/index.js.map +1 -1
  56. package/dist/core/composite/CheckboxGroup/index.d.ts +6 -1
  57. package/dist/core/composite/CheckboxGroup/index.d.ts.map +1 -1
  58. package/dist/core/composite/CheckboxGroup/index.js +2 -2
  59. package/dist/core/composite/CheckboxGroup/index.js.map +1 -1
  60. package/dist/core/composite/DescriptionList/index.d.ts +5 -0
  61. package/dist/core/composite/DescriptionList/index.d.ts.map +1 -1
  62. package/dist/core/composite/DescriptionList/index.js +6 -4
  63. package/dist/core/composite/DescriptionList/index.js.map +1 -1
  64. package/dist/core/composite/ListRow/index.d.ts +8 -1
  65. package/dist/core/composite/ListRow/index.d.ts.map +1 -1
  66. package/dist/core/composite/ListRow/index.js +5 -1
  67. package/dist/core/composite/ListRow/index.js.map +1 -1
  68. package/dist/core/composite/SegmentedControl/index.d.ts +6 -1
  69. package/dist/core/composite/SegmentedControl/index.d.ts.map +1 -1
  70. package/dist/core/composite/SegmentedControl/index.js +5 -2
  71. package/dist/core/composite/SegmentedControl/index.js.map +1 -1
  72. package/dist/core/composite/Stepper/index.d.ts +7 -1
  73. package/dist/core/composite/Stepper/index.d.ts.map +1 -1
  74. package/dist/core/composite/Stepper/index.js +2 -1
  75. package/dist/core/composite/Stepper/index.js.map +1 -1
  76. package/dist/core/composite/Timeline/index.d.ts +8 -1
  77. package/dist/core/composite/Timeline/index.d.ts.map +1 -1
  78. package/dist/core/composite/Timeline/index.js +2 -1
  79. package/dist/core/composite/Timeline/index.js.map +1 -1
  80. package/dist/core/primitive/Avatar/index.d.ts +6 -1
  81. package/dist/core/primitive/Avatar/index.d.ts.map +1 -1
  82. package/dist/core/primitive/Avatar/index.js +2 -1
  83. package/dist/core/primitive/Avatar/index.js.map +1 -1
  84. package/dist/core/primitive/Field/index.d.ts +24 -0
  85. package/dist/core/primitive/Field/index.d.ts.map +1 -1
  86. package/dist/core/primitive/Field/index.js +15 -1
  87. package/dist/core/primitive/Field/index.js.map +1 -1
  88. package/dist/core/primitive/Meter/index.d.ts +7 -1
  89. package/dist/core/primitive/Meter/index.d.ts.map +1 -1
  90. package/dist/core/primitive/Meter/index.js +5 -1
  91. package/dist/core/primitive/Meter/index.js.map +1 -1
  92. package/dist/core/primitive/NumberField/index.d.ts +6 -1
  93. package/dist/core/primitive/NumberField/index.d.ts.map +1 -1
  94. package/dist/core/primitive/NumberField/index.js +2 -2
  95. package/dist/core/primitive/NumberField/index.js.map +1 -1
  96. package/dist/core/primitive/SearchField/index.d.ts +6 -1
  97. package/dist/core/primitive/SearchField/index.d.ts.map +1 -1
  98. package/dist/core/primitive/SearchField/index.js +2 -2
  99. package/dist/core/primitive/SearchField/index.js.map +1 -1
  100. package/dist/core/primitive/SectionHeader/index.d.ts +8 -1
  101. package/dist/core/primitive/SectionHeader/index.d.ts.map +1 -1
  102. package/dist/core/primitive/SectionHeader/index.js +2 -1
  103. package/dist/core/primitive/SectionHeader/index.js.map +1 -1
  104. package/dist/core/primitive/Switch/index.d.ts +6 -1
  105. package/dist/core/primitive/Switch/index.d.ts.map +1 -1
  106. package/dist/core/primitive/Switch/index.js +2 -2
  107. package/dist/core/primitive/Switch/index.js.map +1 -1
  108. package/dist/core/primitive/Textarea/index.d.ts +6 -1
  109. package/dist/core/primitive/Textarea/index.d.ts.map +1 -1
  110. package/dist/core/primitive/Textarea/index.js +5 -2
  111. package/dist/core/primitive/Textarea/index.js.map +1 -1
  112. package/dist/offset-pop/components-forms.css +17 -0
  113. package/dist/offset-pop/components-navigation.css +21 -0
  114. package/package.json +6 -4
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 StarCi
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 StarCi
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -17,7 +17,7 @@ npm install @starci/grammar @heroui/react react react-dom
17
17
  npm install ./.claude/packages/grammar
18
18
  ```
19
19
 
20
- The package needs Node.js 20 or newer. Its peer dependencies are React 18+ and `@heroui/react`
20
+ The package needs Node.js 20 or newer. Its peer dependencies are React 18+, `@xyflow/react` 12 (for `FlowGraph`) and `@heroui/react`
21
21
  3.2+. Load the HeroUI stylesheet once in the app, as HeroUI's own setup describes. Then import
22
22
  exactly one Grammar family stylesheet. Each family sheet already imports Common anatomy first.
23
23
 
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "schema": "starci/grammar-build-stamp@1",
3
3
  "package": "@starci/grammar",
4
- "version": "0.9.4",
4
+ "version": "0.9.7",
5
5
  "algorithm": "starci/grammar-source-digest@1",
6
- "sourceDigest": "sha256:107f77fffb6cc78fdfdfe649c5f7d40575d3e4a967b1f81f046de65e417e2df6",
7
- "distDigest": "sha256:af11ab7bf48c7cd73ba5784e7a9f523ccdfb31a929f3df63dbfed027daa472c3",
8
- "builtAt": "2026-10-11T11:58:36.353Z"
6
+ "sourceDigest": "sha256:bb9c8631d0a38a0dbfe4d8b373455913ab764f56713536d73d08d75b0a4977c9",
7
+ "distDigest": "sha256:f54058f586f5dcdf2bc83a84c989e76eeb7cf3ed9c8d700ba28e42ff4ff895e2",
8
+ "builtAt": "2026-10-11T22:41:22.989Z"
9
9
  }
@@ -124,6 +124,51 @@
124
124
  resize: vertical;
125
125
  }
126
126
 
127
+ /*
128
+ * Loading field (knowledge STATE-8, Select and Textarea `isSkeleton`): the label stays real, the control is one
129
+ * Skeleton block of the loaded control's height (the select trigger 2.5rem, with the touch floor below; the textarea
130
+ * `rows` at 1.25rem a line plus its padding, never under the 5rem field minimum). Not focusable: no control exists.
131
+ */
132
+ .starci-core-field-skeleton-control { display: block; min-width: 0; }
133
+
134
+ .starci-core-field-skeleton-control > .starci-core-skeleton {
135
+ block-size: 100%;
136
+ aspect-ratio: auto;
137
+ border-radius: var(--field-radius, calc(var(--radius, 0.5rem) * 1.5));
138
+ }
139
+
140
+ .starci-core-field-skeleton-control:is([data-grammar-field-skeleton="select"], [data-grammar-field-skeleton="input"]) { block-size: 2.5rem; }
141
+
142
+ /* Joined segments: one block, a segment-width (5rem) per option, never wider than the field; `fill` takes the whole row. */
143
+ .starci-core-field-skeleton-control[data-grammar-field-skeleton="segmented"] {
144
+ block-size: 2.5rem;
145
+ inline-size: min(100%, calc(var(--starci-core-skeleton-segments, 2) * 5rem));
146
+ }
147
+
148
+ .starci-core-field-skeleton-control[data-grammar-field-skeleton="segmented"][data-width="fill"] { inline-size: 100%; }
149
+
150
+ /* A checkbox box and a switch track beside their real labels. */
151
+ .starci-core-field-skeleton-control[data-grammar-field-skeleton="choice"] { flex: none; block-size: 1rem; inline-size: 1rem; }
152
+ .starci-core-field-skeleton-control[data-grammar-field-skeleton="choice"] > .starci-core-skeleton { border-radius: 0.25rem; }
153
+ .starci-core-field-skeleton-control[data-grammar-field-skeleton="switch"] { flex: none; block-size: 1.25rem; inline-size: 2rem; }
154
+ .starci-core-field-skeleton-control[data-grammar-field-skeleton="switch"] > .starci-core-skeleton { border-radius: 999px; }
155
+
156
+ .starci-core-field-skeleton-choice-label {
157
+ color: var(--foreground, CanvasText);
158
+ font-size: 0.875rem;
159
+ line-height: 1.25;
160
+ }
161
+
162
+ .starci-core-field-skeleton-control[data-grammar-field-skeleton="textarea"] {
163
+ block-size: max(5rem, calc(var(--starci-core-skeleton-rows, 4) * 1.25rem + 1rem));
164
+ }
165
+
166
+ @media (pointer: coarse), (max-width: 40rem) {
167
+ .starci-core-field-skeleton-control:is([data-grammar-field-skeleton="select"], [data-grammar-field-skeleton="input"], [data-grammar-field-skeleton="segmented"]) {
168
+ min-block-size: var(--starci-core-control-min-size, 2.75rem);
169
+ }
170
+ }
171
+
127
172
  .starci-core-select-trigger,
128
173
  .starci-core-combo-box-group,
129
174
  .starci-core-search-field-group,
@@ -122,6 +122,11 @@
122
122
  font-weight: 600;
123
123
  }
124
124
 
125
+ /* A crumb whose label is not known yet (knowledge STATE-8): a short Skeleton text line of the label's size. */
126
+ .starci-core-breadcrumb-skeleton { display: inline-block; inline-size: 6rem; }
127
+ .starci-core-breadcrumb-skeleton > .starci-core-skeleton-group { gap: 0; }
128
+ .starci-core-breadcrumb-skeleton .starci-core-skeleton { block-size: 0.875rem; }
129
+
125
130
  @media (max-width: 30rem) {
126
131
  .starci-core-breadcrumb-label {
127
132
  max-width: 8rem;
@@ -289,6 +294,12 @@
289
294
  color: var(--danger, CanvasText);
290
295
  }
291
296
 
297
+ /* Loading stepper (knowledge STATE-8): a static Skeleton circle for the mark, labels stay real. */
298
+ .starci-core-step-skeleton-marker { border: 0; background: transparent; }
299
+ .starci-core-step-skeleton-label { display: block; inline-size: 5rem; }
300
+ .starci-core-step-skeleton-label > .starci-core-skeleton-group { gap: 0; }
301
+ .starci-core-step-skeleton-label .starci-core-skeleton { block-size: 0.875rem; }
302
+
292
303
  .starci-core-step-copy {
293
304
  display: flex;
294
305
  min-width: 0;
@@ -641,6 +652,9 @@
641
652
  flex: 0 0 auto;
642
653
  }
643
654
 
655
+ /* A loading avatar (knowledge STATE-8): the Skeleton circle at the avatar's size. */
656
+ .starci-core-avatar-skeleton { display: inline-flex; }
657
+
644
658
  .starci-core-avatar[data-grammar-current="true"] {
645
659
  box-shadow: 0 0 0 2px var(--background, Canvas), 0 0 0 4px var(--accent, Highlight);
646
660
  }
@@ -685,6 +699,42 @@
685
699
  color: var(--accent-soft-foreground, HighlightText);
686
700
  }
687
701
 
702
+ /*
703
+ * Selectable chips (0.9.6, selectionMode single or multiple): a group of choices reads as secondary
704
+ * buttons with a border. Unselected = the secondary-button face (--default, hover --default-hover,
705
+ * the same tokens `.button--secondary` uses) with a 1px inset --border and the default foreground;
706
+ * selected = the accent-soft fill plus a 1px inset accent border. Static groups (selectionMode
707
+ * "none") and off chips are not matched and keep their look. The vendor `.tag--default` paint lives
708
+ * in the later `components` layer, which beats any earlier layer, so only the background takes
709
+ * `!important` (the same documented approach as the off chip); a family restyles it through
710
+ * `--starci-core-tag-bg` and `--starci-core-tag-bg-hover`, never by out-ranking this rule.
711
+ */
712
+ .starci-core-tag-group:is([data-grammar-tag-selection="single"], [data-grammar-tag-selection="multiple"]) .starci-core-tag:not([data-grammar-tag-state="off"]) {
713
+ box-shadow: inset 0 0 0 1px var(--starci-core-tag-ring, var(--border, GrayText));
714
+ }
715
+
716
+ .starci-core-tag-group:is([data-grammar-tag-selection="single"], [data-grammar-tag-selection="multiple"]) .starci-core-tag:not([data-grammar-tag-state="off"]):not([data-selected="true"]):not(:has(> [data-grammar-selected="true"])) {
717
+ background: var(--starci-core-tag-bg, var(--default, ButtonFace)) !important;
718
+ color: var(--default-foreground, var(--foreground, ButtonText));
719
+ }
720
+
721
+ @media (hover: hover) {
722
+ .starci-core-tag-group:is([data-grammar-tag-selection="single"], [data-grammar-tag-selection="multiple"]) .starci-core-tag:not([data-grammar-tag-state="off"]):not([data-selected="true"]):not([data-disabled="true"]):not(:has(> [data-grammar-selected="true"])):is(:hover, [data-hovered="true"]) {
723
+ background: var(--starci-core-tag-bg-hover, var(--default-hover, ButtonFace)) !important;
724
+ }
725
+ }
726
+
727
+ .starci-core-tag-group:is([data-grammar-tag-selection="single"], [data-grammar-tag-selection="multiple"]) .starci-core-tag:not([data-grammar-tag-state="off"]):is([data-selected="true"], :has(> [data-grammar-selected="true"])) {
728
+ --starci-core-tag-ring: var(--accent, Highlight);
729
+ }
730
+
731
+ @media (forced-colors: active) {
732
+ .starci-core-tag-group:is([data-grammar-tag-selection="single"], [data-grammar-tag-selection="multiple"]) .starci-core-tag:not([data-grammar-tag-state="off"]):not([data-selected="true"]):not(:has(> [data-grammar-selected="true"])):not([data-focus-visible="true"]) {
733
+ outline: 1px solid ButtonText;
734
+ outline-offset: -1px;
735
+ }
736
+ }
737
+
688
738
  /*
689
739
  * An off chip (0.6.0, `TagGroupItem.isOff`): HeroUI's tertiary chip - a transparent ground - with a
690
740
  * 1px --border outline and the muted foreground, so it reads as present-but-off beside its filled
@@ -970,6 +1020,22 @@
970
1020
  flex: 0 0 auto;
971
1021
  }
972
1022
 
1023
+ /* Loading options (knowledge STATE-8): a label line and a description line, at the loaded option's height. */
1024
+ .starci-core-list-box-skeleton-option {
1025
+ display: flex;
1026
+ align-items: center;
1027
+ padding-inline: 0.75rem;
1028
+ padding-block: 0.375rem;
1029
+ pointer-events: none;
1030
+ }
1031
+
1032
+ .starci-core-list-box-skeleton-option .starci-core-list-box-label,
1033
+ .starci-core-list-box-skeleton-option .starci-core-list-box-description { display: block; }
1034
+ .starci-core-list-box-skeleton-option .starci-core-list-box-label > .starci-core-skeleton-group { inline-size: 55%; }
1035
+ .starci-core-list-box-skeleton-option .starci-core-list-box-description > .starci-core-skeleton-group { inline-size: 80%; }
1036
+ .starci-core-list-box-skeleton-option .starci-core-skeleton { block-size: 0.75rem; }
1037
+ .starci-core-list-box-skeleton-option .starci-core-skeleton-group { gap: 0; margin-block: 0.125rem; }
1038
+
973
1039
  .starci-core-list-box-empty {
974
1040
  padding: var(--grammar-section-gap, 1rem);
975
1041
  color: var(--muted, GrayText);
@@ -1200,6 +1266,15 @@
1200
1266
  background: currentColor;
1201
1267
  }
1202
1268
 
1269
+ /* Loading timeline (knowledge STATE-8): static mark and connector tint, three Skeleton lines of the entry's rhythm. */
1270
+ .starci-core-timeline-skeleton-marker > .starci-core-skeleton { inline-size: 1rem; block-size: 1rem; }
1271
+ .starci-core-timeline[data-loading="true"] .starci-core-timeline-item:not(:last-child)::before { background: color-mix(in srgb, var(--foreground, CanvasText) 9%, transparent); }
1272
+ .starci-core-timeline-item[data-grammar-skeleton="true"] .starci-core-timeline-title > .starci-core-skeleton-group { inline-size: 50%; }
1273
+ .starci-core-timeline-item[data-grammar-skeleton="true"] .starci-core-timeline-time > .starci-core-skeleton-group { inline-size: 25%; }
1274
+ .starci-core-timeline-item[data-grammar-skeleton="true"] .starci-core-timeline-description > .starci-core-skeleton-group { inline-size: 80%; }
1275
+ .starci-core-timeline-item[data-grammar-skeleton="true"] .starci-core-skeleton-group { gap: 0; }
1276
+ .starci-core-timeline-item[data-grammar-skeleton="true"] .starci-core-skeleton { block-size: 0.8125rem; }
1277
+
1203
1278
  .starci-core-timeline-copy {
1204
1279
  display: flex;
1205
1280
  min-width: 0;
@@ -1274,4 +1349,196 @@
1274
1349
  forced-color-adjust: none;
1275
1350
  }
1276
1351
  }
1352
+
1353
+ /* ---------- FlowGraph ----------
1354
+ * The structural base rules of React Flow, scoped to the graph so a host needs no @xyflow/react stylesheet import.
1355
+ * Its colours (edges, background, nodes) are replaced by grammar tokens below. */
1356
+ .starci-core-flow-graph {
1357
+ display: block;
1358
+ position: relative;
1359
+ min-width: 0;
1360
+ margin: 0;
1361
+ overflow: hidden;
1362
+ border: 1px solid var(--separator, CanvasText);
1363
+ border-radius: var(--starci-core-surface-radius, 1rem);
1364
+ background: var(--surface, Canvas);
1365
+ color: var(--foreground, CanvasText);
1366
+ }
1367
+
1368
+ .starci-core-flow-graph-canvas {
1369
+ position: relative;
1370
+ inline-size: 100%;
1371
+ block-size: 24rem;
1372
+ }
1373
+
1374
+ .starci-core-flow-graph[data-grammar-flow-height="sm"] .starci-core-flow-graph-canvas { block-size: 16rem; }
1375
+ .starci-core-flow-graph[data-grammar-flow-height="lg"] .starci-core-flow-graph-canvas { block-size: 32rem; }
1376
+
1377
+ .starci-core-flow-graph-loading > .starci-core-skeleton { block-size: 100%; aspect-ratio: auto; border-radius: 0; }
1378
+
1379
+ .starci-core-flow-graph-empty {
1380
+ display: flex;
1381
+ align-items: center;
1382
+ justify-content: center;
1383
+ min-block-size: 8rem;
1384
+ margin: 0;
1385
+ padding: 1.5rem;
1386
+ color: var(--muted, GrayText);
1387
+ text-align: center;
1388
+ }
1389
+
1390
+ .starci-core-flow-graph .react-flow {
1391
+ direction: ltr;
1392
+ --xy-edge-stroke: var(--separator, CanvasText);
1393
+ --xy-edge-stroke-width: 1.5;
1394
+ --xy-edge-stroke-selected: var(--separator, CanvasText);
1395
+ --xy-background-color: transparent;
1396
+ background: transparent;
1397
+ }
1398
+
1399
+ .starci-core-flow-graph .react-flow__container { position: absolute; inline-size: 100%; block-size: 100%; inset-block-start: 0; inset-inline-start: 0; }
1400
+ .starci-core-flow-graph .react-flow__pane { z-index: 1; touch-action: none; }
1401
+ .starci-core-flow-graph[data-grammar-flow-interactive="true"] .react-flow__pane.draggable { cursor: grab; }
1402
+ .starci-core-flow-graph[data-grammar-flow-interactive="true"] .react-flow__pane.dragging { cursor: grabbing; }
1403
+ .starci-core-flow-graph .react-flow__viewport { transform-origin: 0 0; z-index: 2; pointer-events: none; }
1404
+ .starci-core-flow-graph .react-flow__renderer { z-index: 4; }
1405
+ .starci-core-flow-graph .react-flow__background { pointer-events: none; z-index: -1; }
1406
+ .starci-core-flow-graph .react-flow__edges { position: absolute; }
1407
+ .starci-core-flow-graph .react-flow__edges svg { position: absolute; overflow: visible; pointer-events: none; }
1408
+ .starci-core-flow-graph .react-flow__edge-path { fill: none; stroke: var(--xy-edge-stroke); stroke-width: var(--xy-edge-stroke-width); stroke-linecap: round; }
1409
+ .starci-core-flow-graph .starci-core-flow-graph-edge-placeholder .react-flow__edge-path { stroke-dasharray: 4 5; }
1410
+ .starci-core-flow-graph .react-flow__nodes { pointer-events: none; transform-origin: 0 0; }
1411
+ .starci-core-flow-graph .react-flow__node {
1412
+ position: absolute;
1413
+ box-sizing: border-box;
1414
+ transform-origin: 0 0;
1415
+ pointer-events: all;
1416
+ user-select: none;
1417
+ cursor: default;
1418
+ outline: none;
1419
+ }
1420
+ .starci-core-flow-graph .react-flow__node.selectable { cursor: pointer; }
1421
+ .starci-core-flow-graph .react-flow__panel { position: absolute; z-index: 5; margin: 0.75rem; }
1422
+ .starci-core-flow-graph .react-flow__panel.bottom { inset-block-end: 0; }
1423
+ .starci-core-flow-graph .react-flow__panel.left { inset-inline-start: 0; }
1424
+ .starci-core-flow-graph .react-flow__panel.right { inset-inline-end: 0; }
1425
+ .starci-core-flow-graph .react-flow__panel.top { inset-block-start: 0; }
1426
+
1427
+ /* The edge ends meet at the node centre: the handle is a hidden point in the middle of the card. */
1428
+ .starci-core-flow-graph .starci-core-flow-graph-handle {
1429
+ position: absolute;
1430
+ inset-block-start: 50%;
1431
+ inset-inline-start: 50%;
1432
+ min-inline-size: 1px;
1433
+ min-block-size: 1px;
1434
+ inline-size: 1px;
1435
+ block-size: 1px;
1436
+ border: 0;
1437
+ opacity: 0;
1438
+ pointer-events: none;
1439
+ transform: none;
1440
+ background: transparent;
1441
+ }
1442
+
1443
+ .starci-core-flow-graph-node {
1444
+ --starci-flow-tint: var(--default-soft, transparent);
1445
+ --starci-flow-ink: var(--foreground, CanvasText);
1446
+ position: relative;
1447
+ display: inline-flex;
1448
+ align-items: center;
1449
+ gap: 0.5rem;
1450
+ max-inline-size: 14rem;
1451
+ padding: 0.375rem 0.875rem;
1452
+ border: 1px solid var(--separator, CanvasText);
1453
+ border-radius: 999px;
1454
+ background-color: var(--surface, Canvas);
1455
+ background-image: linear-gradient(var(--starci-flow-tint), var(--starci-flow-tint));
1456
+ color: var(--starci-flow-ink);
1457
+ font-size: 0.875rem;
1458
+ line-height: 1.25;
1459
+ }
1460
+
1461
+ .starci-core-flow-graph-node[data-size="sm"] { padding: 0.25rem 0.625rem; font-size: 0.75rem; }
1462
+ .starci-core-flow-graph-node[data-size="lg"] { padding: 0.625rem 1.25rem; font-size: 1rem; font-weight: 600; }
1463
+ .starci-core-flow-graph-node[data-tone="accent"] { --starci-flow-tint: var(--accent-soft, transparent); --starci-flow-ink: var(--accent-soft-foreground, CanvasText); }
1464
+ .starci-core-flow-graph-node[data-tone="success"] { --starci-flow-tint: var(--success-soft, transparent); --starci-flow-ink: var(--success-soft-foreground, CanvasText); }
1465
+ .starci-core-flow-graph-node[data-tone="warning"] { --starci-flow-tint: var(--warning-soft, transparent); --starci-flow-ink: var(--warning-soft-foreground, CanvasText); }
1466
+ .starci-core-flow-graph-node[data-tone="danger"] { --starci-flow-tint: var(--danger-soft, transparent); --starci-flow-ink: var(--danger-soft-foreground, CanvasText); }
1467
+ .starci-core-flow-graph-node[data-tone="muted"] { --starci-flow-tint: transparent; --starci-flow-ink: var(--muted, GrayText); }
1468
+ .starci-core-flow-graph-node[data-placeholder="true"] { border-style: dashed; }
1469
+
1470
+ .starci-core-flow-graph-copy {
1471
+ display: flex;
1472
+ min-width: 0;
1473
+ flex-direction: column;
1474
+ }
1475
+
1476
+ .starci-core-flow-graph-label {
1477
+ overflow: hidden;
1478
+ text-overflow: ellipsis;
1479
+ white-space: nowrap;
1480
+ }
1481
+
1482
+ .starci-core-flow-graph-description {
1483
+ overflow: hidden;
1484
+ color: var(--muted, GrayText);
1485
+ font-size: 0.75rem;
1486
+ text-overflow: ellipsis;
1487
+ white-space: nowrap;
1488
+ }
1489
+
1490
+ .starci-core-flow-graph-count {
1491
+ flex: 0 0 auto;
1492
+ min-inline-size: 1.25rem;
1493
+ padding: 0 0.375rem;
1494
+ border-radius: 999px;
1495
+ background: var(--surface, Canvas);
1496
+ color: var(--foreground, CanvasText);
1497
+ font-size: 0.6875rem;
1498
+ font-variant-numeric: tabular-nums;
1499
+ line-height: 1.25rem;
1500
+ text-align: center;
1501
+ }
1502
+
1503
+ /* Selection and keyboard focus draw the package focus ring on the card, not on the React Flow wrapper. */
1504
+ .starci-core-flow-graph-node[data-grammar-selected="true"],
1505
+ .starci-core-flow-graph .react-flow__node:focus-visible > .starci-core-flow-graph-node {
1506
+ outline: 2px solid var(--focus, var(--starci-core-focus, Highlight));
1507
+ outline-offset: 2px;
1508
+ }
1509
+
1510
+ .starci-core-flow-graph-controls {
1511
+ display: flex;
1512
+ flex-direction: column;
1513
+ overflow: hidden;
1514
+ border: 1px solid var(--separator, CanvasText);
1515
+ border-radius: 0.75rem;
1516
+ background: var(--surface, Canvas);
1517
+ }
1518
+
1519
+ .starci-core-flow-graph-controls .react-flow__controls-button {
1520
+ display: flex;
1521
+ align-items: center;
1522
+ justify-content: center;
1523
+ inline-size: 2rem;
1524
+ block-size: 2rem;
1525
+ padding: 0.375rem;
1526
+ border: 0;
1527
+ background: transparent;
1528
+ color: var(--foreground, CanvasText);
1529
+ cursor: pointer;
1530
+ }
1531
+
1532
+ .starci-core-flow-graph-controls .react-flow__controls-button + .react-flow__controls-button { border-block-start: 1px solid var(--separator, CanvasText); }
1533
+ .starci-core-flow-graph-controls .react-flow__controls-button svg { inline-size: 100%; max-inline-size: 0.75rem; max-block-size: 0.75rem; fill: currentColor; }
1534
+ .starci-core-flow-graph-controls .react-flow__controls-button:focus-visible { outline: 2px solid var(--focus, var(--starci-core-focus, Highlight)); outline-offset: -2px; }
1535
+ .starci-core-flow-graph-controls .react-flow__controls-button:disabled { opacity: 0.4; cursor: default; }
1536
+
1537
+ @media (prefers-reduced-motion: reduce) {
1538
+ .starci-core-flow-graph .react-flow__edge.animated path { animation: none; }
1539
+ }
1540
+
1541
+ @media (forced-colors: active) {
1542
+ .starci-core-flow-graph-node[data-grammar-selected="true"] { outline-color: Highlight; forced-color-adjust: none; }
1543
+ }
1277
1544
  }
@@ -915,6 +915,15 @@
915
915
  transition: width var(--starci-core-motion-duration, 180ms) var(--starci-core-motion-easing, cubic-bezier(0.2, 0, 0, 1));
916
916
  }
917
917
 
918
+ /* Loading meter (knowledge STATE-8, `isSkeleton`): the label stays real, the bar is a static Skeleton bar of the track height. */
919
+ .starci-core-meter-skeleton-bar { display: block; block-size: 0.5rem; overflow: hidden; border-radius: 999px; }
920
+
921
+ .starci-core-meter-skeleton-bar > .starci-core-skeleton {
922
+ block-size: 100%;
923
+ aspect-ratio: auto;
924
+ border-radius: inherit;
925
+ }
926
+
918
927
  /*
919
928
  * Segmented meter (owner ruling 2026-09-27): the track spans the full width of its container,
920
929
  * like a Progress track, at HeroUI's h-1 (0.25rem, 4px) - thinner than the plain meter's h-2 -
@@ -9,23 +9,24 @@ type ExtensionWithoutCommonCollisions<Common extends GrammarRendererRegistry, Ex
9
9
  };
10
10
  export declare const COMMON_GRAMMAR_COMPONENTS: Readonly<{
11
11
  readonly Accordion: ({ label, items, expandedIds, defaultExpandedIds, onExpandedChange, allowsMultipleExpanded, headingLevel, className, }: import("./renderers-navigation.js").AccordionProps) => import("react").JSX.Element;
12
- readonly Avatar: ({ name, src, fallback, size, isDecorative, isCurrent, className }: import("./renderers-navigation.js").AvatarProps) => import("react").JSX.Element;
12
+ readonly Avatar: ({ name, src, fallback, size, isDecorative, isCurrent, className, isSkeleton }: import("./renderers-navigation.js").AvatarProps) => import("react").JSX.Element;
13
13
  readonly AvatarGroup: ({ label, items, max, size, overflowLabel, className }: import("./renderers-navigation.js").AvatarGroupProps) => import("react").JSX.Element;
14
14
  readonly BottomNav: ({ label, items, currentId, onSelect, position, visibility, className }: import("./renderers-navigation.js").BottomNavProps) => import("react").JSX.Element;
15
15
  readonly Breadcrumbs: ({ label, items, separator, onAction, className }: import("./renderers-navigation.js").BreadcrumbsProps) => import("react").JSX.Element;
16
16
  readonly Calendar: ({ label, value, defaultValue, onChange, minValue, maxValue, isDateUnavailable, isDisabled, isReadOnly, previousLabel, nextLabel, className, }: import("./renderers-navigation.js").CalendarProps) => import("react").JSX.Element;
17
- readonly DataTable: <Row extends import("./renderers-navigation.js").DataTableRow>({ label, columns, rows, renderCell, sort, onSortChange, selectionMode, selectedIds, defaultSelectedIds, onSelectionChange, selectAllLabel, selectRowLabel, isLoading, loadingContent, emptyContent, stickyHeader, maxBlockSize, onRowAction, className, }: import("./renderers-navigation.js").DataTableProps<Row>) => import("react").JSX.Element;
17
+ readonly DataTable: <Row extends import("./renderers-navigation.js").DataTableRow>({ label, columns, rows, renderCell, sort, onSortChange, selectionMode, selectedIds, defaultSelectedIds, onSelectionChange, selectAllLabel, selectRowLabel, isLoading, loadingContent, loadingRows, emptyContent, stickyHeader, maxBlockSize, onRowAction, className, }: import("./renderers-navigation.js").DataTableProps<Row>) => import("react").JSX.Element;
18
18
  readonly DescriptionList: (props: import("./renderers-navigation.js").DescriptionListProps) => import("react").JSX.Element;
19
19
  readonly Disclosure: ({ title, children, isExpanded, defaultExpanded, onExpandedChange, isDisabled, headingLevel, className, }: import("./renderers-navigation.js").DisclosureProps) => import("react").JSX.Element;
20
+ readonly FlowGraph: ({ label, nodes, edges, selectedId, onSelect, height, isInteractive, showControls, layout, emptyLabel, isLoading, className, }: import("./renderers-navigation.js").FlowGraphProps) => import("react").JSX.Element;
20
21
  readonly Footer: ({ label, brand, groups, legal, externalHint, children, className }: import("./renderers-navigation.js").FooterProps) => import("react").JSX.Element;
21
22
  readonly Image: ({ src, alt, aspect, fit, fallback, loading, srcSet, sizes, width, height, onLoadStateChange, plate, className, ...assetSlot }: import("./renderers-navigation.js").ImageProps) => import("react").JSX.Element;
22
23
  readonly Link: ({ children, href, kind, isCurrent, visited, externalHint, externalIcon, isDisabled, onFollow, className, }: import("./renderers-navigation.js").LinkProps) => import("react").JSX.Element;
23
- readonly ListBox: ({ label, items, selectionMode, selectedIds, defaultSelectedIds, onSelectionChange, onAction, emptyContent, className, }: import("./renderers-navigation.js").ListBoxProps) => import("react").JSX.Element;
24
+ readonly ListBox: ({ label, items, selectionMode, selectedIds, defaultSelectedIds, onSelectionChange, onAction, emptyContent, isLoading, loadingRows, className, }: import("./renderers-navigation.js").ListBoxProps) => import("react").JSX.Element;
24
25
  readonly Pagination: ({ label, page, pageCount, onPageChange, siblingCount, previousLabel, nextLabel, pageLabel, summary, className, }: import("./renderers-navigation.js").PaginationProps) => import("react").JSX.Element;
25
26
  readonly Rating: ({ label, value, defaultValue, onChange, max, isReadOnly, isDisabled, valueLabel, icon, name, className, }: import("./renderers-navigation.js").RatingProps) => import("react").JSX.Element;
26
- readonly Stepper: ({ label, steps, currentStepId, orientation, onStepSelect, stateLabel, renderMarker, className, }: import("./renderers-navigation.js").StepperProps) => import("react").JSX.Element;
27
+ readonly Stepper: ({ label, steps, currentStepId, orientation, onStepSelect, stateLabel, renderMarker, className, isLoading, }: import("./renderers-navigation.js").StepperProps) => import("react").JSX.Element;
27
28
  readonly TagGroup: ({ label, items, selectionMode, selectedIds, defaultSelectedIds, onSelectionChange, onRemove, removeLabel, emptyContent, size, className, }: import("./renderers-navigation.js").TagGroupProps) => import("react").JSX.Element;
28
- readonly Timeline: ({ label, items, className }: import("./renderers-navigation.js").TimelineProps) => import("react").JSX.Element;
29
+ readonly Timeline: ({ label, items, className, isLoading, loadingRows }: import("./renderers-navigation.js").TimelineProps) => import("react").JSX.Element;
29
30
  readonly TopBar: ({ brand, navigation, actions, menu, position, className, ...headerProps }: import("./renderers-navigation.js").TopBarProps) => import("react").JSX.Element;
30
31
  readonly Alert: (props: import("./renderers-overlays.js").AlertProps) => import("react").JSX.Element | null;
31
32
  readonly AlertDialog: ({ title, description, children, tone, confirmLabel, cancelLabel, onConfirm, onCancel, isConfirmPending, trigger, isKeyboardDismissDisabled, ...openState }: import("./renderers-overlays.js").AlertDialogProps) => import("react").JSX.Element;
@@ -34,7 +35,7 @@ export declare const COMMON_GRAMMAR_COMPONENTS: Readonly<{
34
35
  readonly Drawer: ({ title, description, children, footer, trigger, closeLabel, placement, showHandle, isDismissable, isKeyboardDismissDisabled, ...openState }: import("./renderers-overlays.js").DrawerProps) => import("react").JSX.Element;
35
36
  readonly DropdownMenu: ({ trigger, entries, onAction, placement, ...openState }: import("./renderers-overlays.js").DropdownMenuProps) => import("react").JSX.Element;
36
37
  readonly Kbd: ({ keys }: import("./renderers-overlays.js").KbdProps) => import("react").JSX.Element;
37
- readonly Meter: ({ label, value, minValue, maxValue, valueLabel, tone, isLabelHidden, segments, }: import("./renderers-overlays.js").MeterProps) => import("react").JSX.Element;
38
+ readonly Meter: ({ label, value, minValue, maxValue, valueLabel, tone, isLabelHidden, segments, isSkeleton, }: import("./renderers-overlays.js").MeterProps) => import("react").JSX.Element;
38
39
  readonly Popover: ({ trigger, children, placement, showArrow, title, label, ...openState }: import("./renderers-overlays.js").PopoverProps) => import("react").JSX.Element;
39
40
  readonly ProgressCircle: ({ label, value, isIndeterminate, size }: import("./renderers-overlays.js").ProgressCircleProps) => import("react").JSX.Element;
40
41
  readonly Skeleton: ({ shape, lines, ratio, size }: import("./renderers-overlays.js").SkeletonProps) => import("react").JSX.Element;
@@ -43,7 +44,7 @@ export declare const COMMON_GRAMMAR_COMPONENTS: Readonly<{
43
44
  readonly Toaster: ({ label, dismissLabel, queue, placement, maxVisible }: import("./renderers-overlays.js").ToasterProps) => import("react").JSX.Element;
44
45
  readonly ButtonGroup: ({ label, children, orientation, isDisabled, width }: import("./renderers-forms.js").ButtonGroupProps) => import("react").JSX.Element;
45
46
  readonly Checkbox: ({ value, isSelected, defaultSelected, onSelectedChange, isIndeterminate, variant, ...field }: import("./renderers-forms.js").CheckboxProps) => import("react").JSX.Element;
46
- readonly CheckboxGroup: ({ options, value, defaultValue, onValueChange, orientation, variant, ...field }: import("./renderers-forms.js").CheckboxGroupProps) => import("react").JSX.Element;
47
+ readonly CheckboxGroup: ({ options, value, defaultValue, onValueChange, orientation, variant, isSkeleton, ...field }: import("./renderers-forms.js").CheckboxGroupProps) => import("react").JSX.Element;
47
48
  readonly ComboBox: ({ id, options, placeholder, value, defaultValue, onValueChange, inputValue, defaultInputValue, onInputChange, allowsCustomValue, emptyState, isPending, menuTrigger, variant, ...field }: import("./renderers-forms.js").ComboBoxProps) => import("react").JSX.Element;
48
49
  readonly DateField: ({ value, defaultValue, onValueChange, minValue, maxValue, granularity, variant, ...field }: import("./renderers-forms.js").DateFieldProps) => import("react").JSX.Element;
49
50
  readonly DatePicker: ({ value, defaultValue, onValueChange, minValue, maxValue, isDateUnavailable, granularity, variant, ...field }: import("./renderers-forms.js").DatePickerProps) => import("react").JSX.Element;
@@ -52,18 +53,18 @@ export declare const COMMON_GRAMMAR_COMPONENTS: Readonly<{
52
53
  readonly Fieldset: ({ legend, isLegendHidden, description, errorMessage, children, actions, isDisabled }: import("./renderers-forms.js").FieldsetProps) => import("react").JSX.Element;
53
54
  readonly FileDropzone: ({ id: idProp, accept, multiple, onFilesChange, prompt, icon, hideFileList, label, isLabelHidden, description, errorMessage, isInvalid, isRequired, isDisabled, isReadOnly, name, }: import("./renderers-forms.js").FileDropzoneProps) => import("react").JSX.Element;
54
55
  readonly Form: ({ children, label, id, onSubmit, onReset, action, method, validationErrors, validationBehavior, isPending, }: import("./renderers-forms.js").FormProps) => import("react").JSX.Element;
55
- readonly NumberField: ({ id, placeholder, value, defaultValue, onValueChange, minValue, maxValue, step, formatOptions, hideSteppers, variant, ...field }: import("./renderers-forms.js").NumberFieldProps) => import("react").JSX.Element;
56
+ readonly NumberField: ({ id, placeholder, value, defaultValue, onValueChange, minValue, maxValue, step, formatOptions, hideSteppers, variant, isSkeleton, ...field }: import("./renderers-forms.js").NumberFieldProps) => import("react").JSX.Element;
56
57
  readonly RadioGroup: ({ options, value, defaultValue, onValueChange, orientation, variant, ...field }: import("./renderers-forms.js").RadioGroupProps) => import("react").JSX.Element;
57
- readonly SearchField: ({ id, placeholder, value, defaultValue, onValueChange, onSubmit, onClear, isPending, clearLabel, variant, ...field }: import("./renderers-forms.js").SearchFieldProps) => import("react").JSX.Element;
58
- readonly SegmentedControl: ({ options, value, defaultValue, onValueChange, width, label, isLabelHidden, description, errorMessage, isInvalid, isRequired, isDisabled, isReadOnly, name, }: import("./renderers-forms.js").SegmentedControlProps) => import("react").JSX.Element;
59
- readonly Select: ({ options, placeholder, value, defaultValue, onValueChange, isPending, variant, ...field }: import("./renderers-forms.js").SelectProps) => import("react").JSX.Element;
58
+ readonly SearchField: ({ id, placeholder, value, defaultValue, onValueChange, onSubmit, onClear, isPending, clearLabel, variant, isSkeleton, ...field }: import("./renderers-forms.js").SearchFieldProps) => import("react").JSX.Element;
59
+ readonly SegmentedControl: ({ options, value, defaultValue, onValueChange, width, label, isLabelHidden, description, errorMessage, isInvalid, isRequired, isDisabled, isReadOnly, name, isSkeleton, }: import("./renderers-forms.js").SegmentedControlProps) => import("react").JSX.Element;
60
+ readonly Select: ({ options, placeholder, value, defaultValue, onValueChange, isPending, isSkeleton, variant, ...field }: import("./renderers-forms.js").SelectProps) => import("react").JSX.Element;
60
61
  readonly Slider: ({ value, defaultValue, onValueChange, onValueCommit, minValue, maxValue, step, formatOptions, thumbLabels, orientation, label, isLabelHidden, description, errorMessage, isInvalid, isRequired, isDisabled, isReadOnly, name, }: import("./renderers-forms.js").SliderProps) => import("react").JSX.Element;
61
- readonly Switch: ({ value, isSelected, defaultSelected, onSelectedChange, ...field }: import("./renderers-forms.js").SwitchProps) => import("react").JSX.Element;
62
- readonly Textarea: ({ id, placeholder, value, defaultValue, rows, maxLength, minLength, onValueChange, variant, onSubmitShortcut, mentions, ...field }: import("./renderers-forms.js").TextareaProps) => import("react").JSX.Element;
62
+ readonly Switch: ({ value, isSelected, defaultSelected, onSelectedChange, isSkeleton, ...field }: import("./renderers-forms.js").SwitchProps) => import("react").JSX.Element;
63
+ readonly Textarea: ({ id, placeholder, value, defaultValue, rows, isSkeleton, maxLength, minLength, onValueChange, variant, onSubmitShortcut, mentions, ...field }: import("./renderers-forms.js").TextareaProps) => import("react").JSX.Element;
63
64
  readonly TimeField: ({ value, defaultValue, onValueChange, minValue, maxValue, granularity, hourCycle, variant, ...field }: import("./renderers-forms.js").TimeFieldProps) => import("react").JSX.Element;
64
65
  readonly Badge: ({ children, startContent, tone, isDot, isSkeleton }: import("./renderers.js").BadgeProps) => import("react").JSX.Element;
65
66
  readonly Button: (props: import("./renderers.js").ButtonProps) => import("react").JSX.Element;
66
- readonly ChatBubble: ({ children, side, author, avatar, meta, status, actions, footer, isHighlight, id, }: import("./renderers.js").ChatBubbleProps) => import("react").JSX.Element;
67
+ readonly ChatBubble: ({ children, side, author, avatar, meta, status, actions, footer, isHighlight, id, isSkeleton, }: import("./renderers.js").ChatBubbleProps) => import("react").JSX.Element;
67
68
  readonly ChatWorkspace: (props: import("./renderers.js").ChatWorkspaceProps) => import("react").JSX.Element;
68
69
  readonly Divider: (props: import("./renderers.js").DividerProps) => import("react").JSX.Element;
69
70
  readonly EmptyNotice: ({ message, description, iconSource, actionLabel, actionStartContent, actionVariant, isActionPending, onAction, }: import("./renderers.js").EmptyNoticeProps) => import("react").JSX.Element;
@@ -89,7 +90,7 @@ export declare const COMMON_GRAMMAR_COMPONENTS: Readonly<{
89
90
  readonly LeadingNumber: (props: import("./renderers.js").LeadingNumberProps) => import("react").JSX.Element;
90
91
  readonly List: (props: import("./renderers.js").ListProps) => import("react").JSX.Element;
91
92
  readonly ListItem: (props: import("./renderers.js").ListItemProps) => import("react").JSX.Element;
92
- readonly ListRow: ({ title, description, leading, badges, actions, children, state, verdict }: import("./renderers.js").ListRowProps) => import("react").JSX.Element;
93
+ readonly ListRow: ({ title, description, leading, badges, actions, children, state, verdict, isSkeleton }: import("./renderers.js").ListRowProps) => import("react").JSX.Element;
93
94
  readonly MarkdownArticle: (props: import("./renderers.js").MarkdownArticleProps) => import("react").JSX.Element;
94
95
  readonly MarkdownTableFrame: (props: import("./renderers.js").MarkdownTableFrameProps) => import("react").JSX.Element;
95
96
  readonly MediaFrame: ({ children, caption, aspect, fit, treatment, className, ...assetSlot }: import("./renderers.js").MediaFrameProps) => import("react").JSX.Element;
@@ -104,7 +105,7 @@ export declare const COMMON_GRAMMAR_COMPONENTS: Readonly<{
104
105
  readonly Rail: (props: import("./renderers.js").RailProps) => import("react").JSX.Element;
105
106
  readonly RankArtwork: ({ className, kind, label, ...props }: import("./renderers.js").RankArtworkProps) => import("react").JSX.Element;
106
107
  readonly Region: (props: import("./renderers.js").RegionProps) => import("react").JSX.Element;
107
- readonly SectionHeader: ({ title, description, eyebrow, action, count, meta, level, className, id, composition, }: import("./renderers.js").SectionHeaderProps) => import("react").JSX.Element;
108
+ readonly SectionHeader: ({ title, description, eyebrow, action, count, meta, level, className, id, composition, isSkeleton, }: import("./renderers.js").SectionHeaderProps) => import("react").JSX.Element;
108
109
  readonly Sidebar: ({ label, groups, selectedKey, presentation, isCollapsed, collapseLabel, expandLabel, toggleSource, header, footer, onAction, onCollapsedChange, }: import("./renderers.js").SidebarProps) => import("react").JSX.Element;
109
110
  readonly StateMark: (props: import("./renderers.js").StateMarkProps) => import("react").JSX.Element | null;
110
111
  readonly StaticStateRow: (props: import("./renderers.js").StaticStateRowProps) => import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/common/registry.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAEvE,MAAM,MAAM,wBAAwB,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,CAAA;AAClE,KAAK,uBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;AACpE,KAAK,sBAAsB,CAAC,MAAM,SAAS,uBAAuB,IAAI;IAClE,QAAQ,EAAE,IAAI,IAAI,MAAM,MAAM,CAAC,CAAC,EAAE,wBAAwB,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;CAC3F,CAAA;AACD,KAAK,gCAAgC,CAAC,MAAM,SAAS,uBAAuB,EAAE,UAAU,SAAS,uBAAuB,IACpH,UAAU,GAAG;IAAE,QAAQ,EAAE,IAAI,IAAI,OAAO,CAAC,MAAM,UAAU,EAAE,MAAM,MAAM,CAAC,GAAG,KAAK;CAAE,CAAA;AAEtF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW3B,CAAA;AACX,MAAM,MAAM,0BAA0B,GAAG,MAAM,OAAO,yBAAyB,CAAA;AAE/E,MAAM,MAAM,mBAAmB,CAAC,QAAQ,SAAS,MAAM,IAAI;IACvD,QAAQ,CAAC,UAAU,EAAE,mBAAmB,MAAM,aAAa,CAAA;IAC3D,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;KAAE,CAAA;CAC1F,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,QAAQ,SAAS,MAAM,EAAE,UAAU,SAAS,uBAAuB,IAAI;IACrG,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC9C,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,yBAAyB,GAAG,UAAU,CAAC,CAAA;IAC5E,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;QAAE,qBAAqB,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAA;CACrE,CAAA;AAED,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,GAC5B,KAAK,CAAC,QAAQ,SAAS,MAAM,EAC7B,KAAK,CAAC,YAAY,SAAS,sBAAsB,CAAC,OAAO,yBAAyB,CAAC,EACnF,KAAK,CAAC,UAAU,SAAS,uBAAuB,EAClD,YAAY;IACV,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC9C,QAAQ,CAAC,UAAU,EAAE;QACjB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;QACnC,QAAQ,CAAC,UAAU,EAAE,gCAAgC,CAAC,OAAO,yBAAyB,EAAE,UAAU,CAAC,CAAA;KACtG,CAAA;CACJ,KAAG,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAuB7C,CAAA"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/common/registry.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAEvE,MAAM,MAAM,wBAAwB,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,CAAA;AAClE,KAAK,uBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;AACpE,KAAK,sBAAsB,CAAC,MAAM,SAAS,uBAAuB,IAAI;IAClE,QAAQ,EAAE,IAAI,IAAI,MAAM,MAAM,CAAC,CAAC,EAAE,wBAAwB,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;CAC3F,CAAA;AACD,KAAK,gCAAgC,CAAC,MAAM,SAAS,uBAAuB,EAAE,UAAU,SAAS,uBAAuB,IACpH,UAAU,GAAG;IAAE,QAAQ,EAAE,IAAI,IAAI,OAAO,CAAC,MAAM,UAAU,EAAE,MAAM,MAAM,CAAC,GAAG,KAAK;CAAE,CAAA;AAEtF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW3B,CAAA;AACX,MAAM,MAAM,0BAA0B,GAAG,MAAM,OAAO,yBAAyB,CAAA;AAE/E,MAAM,MAAM,mBAAmB,CAAC,QAAQ,SAAS,MAAM,IAAI;IACvD,QAAQ,CAAC,UAAU,EAAE,mBAAmB,MAAM,aAAa,CAAA;IAC3D,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;KAAE,CAAA;CAC1F,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,QAAQ,SAAS,MAAM,EAAE,UAAU,SAAS,uBAAuB,IAAI;IACrG,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC9C,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,yBAAyB,GAAG,UAAU,CAAC,CAAA;IAC5E,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;QAAE,qBAAqB,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAA;CACrE,CAAA;AAED,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,GAC5B,KAAK,CAAC,QAAQ,SAAS,MAAM,EAC7B,KAAK,CAAC,YAAY,SAAS,sBAAsB,CAAC,OAAO,yBAAyB,CAAC,EACnF,KAAK,CAAC,UAAU,SAAS,uBAAuB,EAClD,YAAY;IACV,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC9C,QAAQ,CAAC,UAAU,EAAE;QACjB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;QACnC,QAAQ,CAAC,UAAU,EAAE,gCAAgC,CAAC,OAAO,yBAAyB,EAAE,UAAU,CAAC,CAAA;KACtG,CAAA;CACJ,KAAG,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAuB7C,CAAA"}
@@ -22,7 +22,7 @@ export { DateRangePicker, type DateRangePickerProps, type DateRangeValue } from
22
22
  export declare const COMMON_FORMS_COMPONENTS: Readonly<{
23
23
  readonly ButtonGroup: ({ label, children, orientation, isDisabled, width }: import("./renderers-forms.js").ButtonGroupProps) => import("react").JSX.Element;
24
24
  readonly Checkbox: ({ value, isSelected, defaultSelected, onSelectedChange, isIndeterminate, variant, ...field }: import("./renderers-forms.js").CheckboxProps) => import("react").JSX.Element;
25
- readonly CheckboxGroup: ({ options, value, defaultValue, onValueChange, orientation, variant, ...field }: import("./renderers-forms.js").CheckboxGroupProps) => import("react").JSX.Element;
25
+ readonly CheckboxGroup: ({ options, value, defaultValue, onValueChange, orientation, variant, isSkeleton, ...field }: import("./renderers-forms.js").CheckboxGroupProps) => import("react").JSX.Element;
26
26
  readonly ComboBox: ({ id, options, placeholder, value, defaultValue, onValueChange, inputValue, defaultInputValue, onInputChange, allowsCustomValue, emptyState, isPending, menuTrigger, variant, ...field }: import("./renderers-forms.js").ComboBoxProps) => import("react").JSX.Element;
27
27
  readonly DateField: ({ value, defaultValue, onValueChange, minValue, maxValue, granularity, variant, ...field }: import("./renderers-forms.js").DateFieldProps) => import("react").JSX.Element;
28
28
  readonly DatePicker: ({ value, defaultValue, onValueChange, minValue, maxValue, isDateUnavailable, granularity, variant, ...field }: import("./renderers-forms.js").DatePickerProps) => import("react").JSX.Element;
@@ -31,14 +31,14 @@ export declare const COMMON_FORMS_COMPONENTS: Readonly<{
31
31
  readonly Fieldset: ({ legend, isLegendHidden, description, errorMessage, children, actions, isDisabled }: import("./renderers-forms.js").FieldsetProps) => import("react").JSX.Element;
32
32
  readonly FileDropzone: ({ id: idProp, accept, multiple, onFilesChange, prompt, icon, hideFileList, label, isLabelHidden, description, errorMessage, isInvalid, isRequired, isDisabled, isReadOnly, name, }: import("./renderers-forms.js").FileDropzoneProps) => import("react").JSX.Element;
33
33
  readonly Form: ({ children, label, id, onSubmit, onReset, action, method, validationErrors, validationBehavior, isPending, }: import("./renderers-forms.js").FormProps) => import("react").JSX.Element;
34
- readonly NumberField: ({ id, placeholder, value, defaultValue, onValueChange, minValue, maxValue, step, formatOptions, hideSteppers, variant, ...field }: import("./renderers-forms.js").NumberFieldProps) => import("react").JSX.Element;
34
+ readonly NumberField: ({ id, placeholder, value, defaultValue, onValueChange, minValue, maxValue, step, formatOptions, hideSteppers, variant, isSkeleton, ...field }: import("./renderers-forms.js").NumberFieldProps) => import("react").JSX.Element;
35
35
  readonly RadioGroup: ({ options, value, defaultValue, onValueChange, orientation, variant, ...field }: import("./renderers-forms.js").RadioGroupProps) => import("react").JSX.Element;
36
- readonly SearchField: ({ id, placeholder, value, defaultValue, onValueChange, onSubmit, onClear, isPending, clearLabel, variant, ...field }: import("./renderers-forms.js").SearchFieldProps) => import("react").JSX.Element;
37
- readonly SegmentedControl: ({ options, value, defaultValue, onValueChange, width, label, isLabelHidden, description, errorMessage, isInvalid, isRequired, isDisabled, isReadOnly, name, }: import("./renderers-forms.js").SegmentedControlProps) => import("react").JSX.Element;
38
- readonly Select: ({ options, placeholder, value, defaultValue, onValueChange, isPending, variant, ...field }: import("./renderers-forms.js").SelectProps) => import("react").JSX.Element;
36
+ readonly SearchField: ({ id, placeholder, value, defaultValue, onValueChange, onSubmit, onClear, isPending, clearLabel, variant, isSkeleton, ...field }: import("./renderers-forms.js").SearchFieldProps) => import("react").JSX.Element;
37
+ readonly SegmentedControl: ({ options, value, defaultValue, onValueChange, width, label, isLabelHidden, description, errorMessage, isInvalid, isRequired, isDisabled, isReadOnly, name, isSkeleton, }: import("./renderers-forms.js").SegmentedControlProps) => import("react").JSX.Element;
38
+ readonly Select: ({ options, placeholder, value, defaultValue, onValueChange, isPending, isSkeleton, variant, ...field }: import("./renderers-forms.js").SelectProps) => import("react").JSX.Element;
39
39
  readonly Slider: ({ value, defaultValue, onValueChange, onValueCommit, minValue, maxValue, step, formatOptions, thumbLabels, orientation, label, isLabelHidden, description, errorMessage, isInvalid, isRequired, isDisabled, isReadOnly, name, }: import("./renderers-forms.js").SliderProps) => import("react").JSX.Element;
40
- readonly Switch: ({ value, isSelected, defaultSelected, onSelectedChange, ...field }: import("./renderers-forms.js").SwitchProps) => import("react").JSX.Element;
41
- readonly Textarea: ({ id, placeholder, value, defaultValue, rows, maxLength, minLength, onValueChange, variant, onSubmitShortcut, mentions, ...field }: import("./renderers-forms.js").TextareaProps) => import("react").JSX.Element;
40
+ readonly Switch: ({ value, isSelected, defaultSelected, onSelectedChange, isSkeleton, ...field }: import("./renderers-forms.js").SwitchProps) => import("react").JSX.Element;
41
+ readonly Textarea: ({ id, placeholder, value, defaultValue, rows, isSkeleton, maxLength, minLength, onValueChange, variant, onSubmitShortcut, mentions, ...field }: import("./renderers-forms.js").TextareaProps) => import("react").JSX.Element;
42
42
  readonly TimeField: ({ value, defaultValue, onValueChange, minValue, maxValue, granularity, hourCycle, variant, ...field }: import("./renderers-forms.js").TimeFieldProps) => import("react").JSX.Element;
43
43
  }>;
44
44
  //# sourceMappingURL=renderers-forms.d.ts.map