@starci/grammar 0.9.2 → 0.9.4

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.
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "schema": "starci/grammar-build-stamp@1",
3
3
  "package": "@starci/grammar",
4
- "version": "0.9.2",
4
+ "version": "0.9.4",
5
5
  "algorithm": "starci/grammar-source-digest@1",
6
- "sourceDigest": "sha256:18fa864667fdf8a8a91050c775d5534aef6660e5336134fda97858bb35337afa",
7
- "distDigest": "sha256:1c4a8e61743f472a2f4ab2d973ceb9cf4724e4c893048273f435dcdda8eaedf6",
8
- "builtAt": "2026-10-11T04:03:50.365Z"
6
+ "sourceDigest": "sha256:107f77fffb6cc78fdfdfe649c5f7d40575d3e4a967b1f81f046de65e417e2df6",
7
+ "distDigest": "sha256:af11ab7bf48c7cd73ba5784e7a9f523ccdfb31a929f3df63dbfed027daa472c3",
8
+ "builtAt": "2026-10-11T11:58:36.353Z"
9
9
  }
@@ -118,12 +118,19 @@
118
118
  outline: none;
119
119
  }
120
120
 
121
+ /* The vendor header is `flex flex-col`; the title group and the close action share one row, the action at the end. */
121
122
  .starci-core-overlay-header {
122
- display: flex;
123
+ display: flex !important;
123
124
  min-width: 0;
124
- align-items: flex-start;
125
- justify-content: space-between;
126
- gap: var(--grammar-row-gap, 0.75rem);
125
+ flex-direction: row !important;
126
+ align-items: flex-start !important;
127
+ justify-content: space-between !important;
128
+ gap: var(--grammar-row-gap, 0.75rem) !important;
129
+ }
130
+
131
+ .starci-core-overlay-header > .starci-core-close-button {
132
+ flex: none;
133
+ margin-inline-start: auto;
127
134
  }
128
135
 
129
136
  .starci-core-overlay-heading-group {
@@ -73,7 +73,7 @@ export declare const COMMON_GRAMMAR_COMPONENTS: Readonly<{
73
73
  readonly Heading: ({ children, level, scale, isSkeleton, isVisuallyHidden, }: import("./renderers.js").HeadingProps) => import("react").JSX.Element;
74
74
  readonly HorizontalScrollRegion: import("react").ForwardRefExoticComponent<Omit<import("./renderers.js").HorizontalScrollRegionProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
75
75
  readonly Icon: ({ source: Source, usage, ariaLabel, isSkeleton }: import("./renderers.js").IconProps) => import("react").JSX.Element;
76
- readonly IconButton: ({ source, label, variant, isActive, isDisabled, isSkeleton, onPress, "aria-controls": controls, "aria-expanded": expanded, badge, badgeLabel, badgeMax, }: import("./renderers.js").IconButtonProps) => import("react").JSX.Element;
76
+ readonly IconButton: ({ source, label, variant, size, isFloating, isActive, isDisabled, isSkeleton, onPress, "aria-controls": controls, "aria-expanded": expanded, badge, badgeLabel, badgeMax, }: import("./renderers.js").IconButtonProps) => import("react").JSX.Element;
77
77
  readonly IconTile: ({ source, artwork, ariaLabel, tone, size, isSkeleton, }: import("./renderers.js").IconTileProps) => import("react").JSX.Element;
78
78
  readonly IncludedMark: ({ className, label, ...props }: import("./renderers.js").IncludedMarkProps) => import("react").JSX.Element;
79
79
  readonly Input: ({ id, name, label, kind: kindName, variant, placeholder, defaultValue, value, hint, errorMessage, isError, isDisabled, isRequired, isSkeleton, isReadOnly, isCopyable, copyLabel, copiedLabel, copyIcon: CopyIcon, copiedIcon: CopiedIcon, onCopy, revealLabel, hideLabel, revealIcon: RevealIcon, hideIcon: HideIcon, onValueChange, }: import("./renderers.js").InputProps) => import("react").JSX.Element;
@@ -100,7 +100,7 @@ export declare const COMMON_GRAMMAR_COMPONENTS: Readonly<{
100
100
  readonly PinnedActionBar: ({ children, label, visibility }: import("./renderers.js").PinnedActionBarProps) => import("react").JSX.Element;
101
101
  readonly PressableField: ({ label, placeholder, source, shortcut, isDisabled, onPress }: import("./renderers.js").PressableFieldProps) => import("react").JSX.Element;
102
102
  readonly PrimaryRailLayout: ({ primary, rail, railWidth, align, collapsedOrder, railPosition, className, }: import("./renderers.js").PrimaryRailLayoutProps) => import("react").JSX.Element;
103
- readonly Progress: ({ label, value, isSkeleton }: import("./renderers.js").ProgressProps) => import("react").JSX.Element;
103
+ readonly Progress: ({ label, value, isSkeleton, steps, valueText }: import("./renderers.js").ProgressProps) => import("react").JSX.Element;
104
104
  readonly Rail: (props: import("./renderers.js").RailProps) => import("react").JSX.Element;
105
105
  readonly RankArtwork: ({ className, kind, label, ...props }: import("./renderers.js").RankArtworkProps) => import("react").JSX.Element;
106
106
  readonly Region: (props: import("./renderers.js").RegionProps) => import("react").JSX.Element;
@@ -704,6 +704,8 @@
704
704
  .starci-core-label {
705
705
  min-width: 0;
706
706
  margin: 0;
707
+ /* A label names what follows it: full foreground, never the muted tone a vendor body passes down (TONE). */
708
+ color: var(--foreground, CanvasText);
707
709
  font-size: 0.875rem;
708
710
  font-weight: 600;
709
711
  line-height: 1.25rem;
@@ -1273,7 +1275,8 @@
1273
1275
  .starci-core-list-row-copy {
1274
1276
  display: flex;
1275
1277
  min-width: 0;
1276
- flex: 1 1 0%;
1278
+ /* Collapsed (flex) row: the copy keeps at least 12rem before the actions wrap under it (0.9.4). */
1279
+ flex: 1 1 12rem;
1277
1280
  flex-direction: column;
1278
1281
  gap: var(--starci-core-copy-gap, 0.25rem);
1279
1282
  }
@@ -1309,7 +1312,8 @@
1309
1312
 
1310
1313
  .starci-core-list-row-actions {
1311
1314
  display: flex;
1312
- flex: 1 1 100%;
1315
+ /* Stays at the end of the copy line while leading + 12rem copy + actions fit; wraps only when they do not (0.9.4). */
1316
+ flex: 0 1 auto;
1313
1317
  flex-wrap: wrap;
1314
1318
  align-items: center;
1315
1319
  gap: var(--grammar-inline-gap, 0.5rem);
@@ -2738,11 +2742,6 @@
2738
2742
  }
2739
2743
 
2740
2744
  /* Region, List, ListItem: semantic page structure that draws nothing of its own. */
2741
- .starci-core-region {
2742
- display: block;
2743
- min-width: 0;
2744
- }
2745
-
2746
2745
  .starci-core-region[data-grammar-region-spacing="spaced"] {
2747
2746
  padding-block-end: 2rem;
2748
2747
  }
@@ -2763,22 +2762,6 @@
2763
2762
  overflow-x: auto;
2764
2763
  }
2765
2764
 
2766
- .starci-core-semantic-list {
2767
- display: flex;
2768
- flex-direction: column;
2769
- gap: 0;
2770
- margin: 0;
2771
- padding: 0;
2772
- list-style: none;
2773
- }
2774
-
2775
- .starci-core-semantic-list-item {
2776
- display: block;
2777
- min-width: 0;
2778
- margin: 0;
2779
- padding: 0;
2780
- }
2781
-
2782
2765
  /* The unlabelled hairline (0.6.0): BOUNDARY-1, one pixel of --separator across its container, no margin. */
2783
2766
  .starci-core-divider-bare {
2784
2767
  display: block;
@@ -2849,6 +2832,21 @@
2849
2832
  border-radius: var(--starci-core-pill-radius, 999px) !important;
2850
2833
  }
2851
2834
 
2835
+ .starci-core-icon-button[data-size="lg"] {
2836
+ width: 3.5rem !important;
2837
+ height: 3.5rem !important;
2838
+ min-width: 3.5rem !important;
2839
+ }
2840
+
2841
+ .starci-core-icon-button[data-size="lg"] > :is(svg, [data-slot="icon"]) {
2842
+ width: 1.5rem;
2843
+ height: 1.5rem;
2844
+ }
2845
+
2846
+ .starci-core-icon-button[data-floating="true"] {
2847
+ box-shadow: var(--overlay-shadow, 0 8px 24px rgb(0 0 0 / 0.16)) !important;
2848
+ }
2849
+
2852
2850
  /* A count pinned to the glyph's top end corner; the plate never clips because the button keeps overflow visible. */
2853
2851
  .starci-core-icon-button[data-grammar-icon-button-badge="present"] {
2854
2852
  position: relative;
@@ -2924,6 +2922,32 @@
2924
2922
  }
2925
2923
 
2926
2924
  /* --- Progress: a HeroUI `ProgressBar`, and a resting bar of the same measure. --- */
2925
+ /* Step mode: one segment per step at the small bar's height (the vendor sm track, 0.25rem), filled up to the current step. */
2926
+ .starci-core-progress-steps {
2927
+ display: grid;
2928
+ width: 100%;
2929
+ gap: 0.25rem;
2930
+ }
2931
+
2932
+ .starci-core-progress-step {
2933
+ display: block;
2934
+ height: 0.25rem;
2935
+ border-radius: var(--radius-xs, 0.125rem);
2936
+ background: var(--default, var(--surface-secondary, GrayText));
2937
+ transition: background-color var(--starci-core-motion-duration, 150ms) cubic-bezier(0.4, 0, 0.2, 1);
2938
+ }
2939
+
2940
+ .starci-core-progress-step[data-grammar-progress-step="done"] { background: var(--accent, Highlight); }
2941
+
2942
+ @media (prefers-reduced-motion: reduce) {
2943
+ .starci-core-progress-step { transition: none; }
2944
+ }
2945
+
2946
+ @media (forced-colors: active) {
2947
+ .starci-core-progress-step { border: 1px solid CanvasText; }
2948
+ .starci-core-progress-step[data-grammar-progress-step="done"] { background: CanvasText; }
2949
+ }
2950
+
2927
2951
  .starci-core-progress {
2928
2952
  width: 100% !important;
2929
2953
  }
@@ -3414,7 +3438,12 @@
3414
3438
  outline-offset: 2px;
3415
3439
  }
3416
3440
 
3417
- .starci-core-chat-bubble-footer { min-width: 0; max-width: 100%; }
3441
+ /*
3442
+ * A footer (an approval card, an attachment) takes the stack's full width; the stack of a message with a footer has a
3443
+ * definite width, so percentage widths inside the footer resolve instead of collapsing in a shrink-to-fit loop.
3444
+ */
3445
+ .starci-core-chat-bubble[data-grammar-bubble-footer="true"] .starci-core-chat-bubble-stack { width: min(40rem, 85%); }
3446
+ .starci-core-chat-bubble-footer { align-self: stretch; width: 100%; min-width: 0; max-width: 100%; }
3418
3447
 
3419
3448
  .starci-core-chat-bubble-actions {
3420
3449
  display: flex;
@@ -3488,3 +3517,30 @@
3488
3517
  .starci-core-mention-description { font-size: 0.75rem; color: var(--muted, GrayText); }
3489
3518
  }
3490
3519
 
3520
+ /*
3521
+ * Element resets of the semantic structure primitives (0.9.4). They live in Tailwind's `base` layer, which a host declares before
3522
+ * `utilities`, so a className the app passes for layout (`flex`, `gap-3`, `py-3`, `grid`) wins over them; without one, the default
3523
+ * shape is unchanged. A host without Tailwind simply gets a `base` layer.
3524
+ */
3525
+ @layer base {
3526
+ .starci-core-semantic-list {
3527
+ display: flex;
3528
+ flex-direction: column;
3529
+ gap: 0;
3530
+ margin: 0;
3531
+ padding: 0;
3532
+ list-style: none;
3533
+ }
3534
+
3535
+ .starci-core-semantic-list-item {
3536
+ display: block;
3537
+ min-width: 0;
3538
+ margin: 0;
3539
+ padding: 0;
3540
+ }
3541
+
3542
+ .starci-core-region {
3543
+ display: block;
3544
+ min-width: 0;
3545
+ }
3546
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/composite/ChatBubble/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,wIAAwI;AACxI,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,UAAU,CAAA;AAEpD,MAAM,MAAM,eAAe,GAAG;IAC1B,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,CAAA;IAC9B,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;IAC3B,mHAAmH;IACnH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;IACzB,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;IAC3B,2GAA2G;IAC3G,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAA;IAC5B,oHAAoH;IACpH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;IAC3B,sFAAsF;IACtF,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,qFAWxB,eAAe,gCA2BjB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/composite/ChatBubble/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,wIAAwI;AACxI,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,UAAU,CAAA;AAEpD,MAAM,MAAM,eAAe,GAAG;IAC1B,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,CAAA;IAC9B,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;IAC3B,mHAAmH;IACnH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;IACzB,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;IAC3B,2GAA2G;IAC3G,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAA;IAC5B,oHAAoH;IACpH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAA;IAC3B,sFAAsF;IACtF,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,qFAWxB,eAAe,gCA4BjB,CAAA"}
@@ -7,6 +7,6 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
7
  */
8
8
  export const ChatBubble = ({ children, side = "incoming", author, avatar, meta, status, actions, footer, isHighlight = false, id, }) => {
9
9
  const hasHead = author != null || meta != null || status != null;
10
- return (_jsxs("div", { ...(id === undefined ? {} : { id }), className: "starci-core-chat-bubble", "data-component": "ChatBubble", "data-tier": "composite", "data-contract": "SURFACE-3 SURFACE-4 RADIUS-6", "data-grammar-bubble-side": side, "data-grammar-bubble-highlight": isHighlight ? "true" : "false", children: [avatar == null ? null : _jsx("div", { className: "starci-core-chat-bubble-avatar", children: avatar }), _jsxs("div", { className: "starci-core-chat-bubble-stack", children: [hasHead ? (_jsxs("div", { className: "starci-core-chat-bubble-head", children: [author == null ? null : _jsx("span", { className: "starci-core-chat-bubble-author", children: author }), status, meta == null ? null : _jsx("span", { className: "starci-core-chat-bubble-meta", children: meta })] })) : null, _jsx("div", { className: "starci-core-chat-bubble-body", children: children }), footer == null ? null : _jsx("div", { className: "starci-core-chat-bubble-footer", children: footer }), actions == null ? null : _jsx("div", { className: "starci-core-chat-bubble-actions", children: actions })] })] }));
10
+ return (_jsxs("div", { ...(id === undefined ? {} : { id }), className: "starci-core-chat-bubble", "data-component": "ChatBubble", "data-tier": "composite", "data-contract": "SURFACE-3 SURFACE-4 RADIUS-6", "data-grammar-bubble-side": side, "data-grammar-bubble-highlight": isHighlight ? "true" : "false", "data-grammar-bubble-footer": footer == null ? "false" : "true", children: [avatar == null ? null : _jsx("div", { className: "starci-core-chat-bubble-avatar", children: avatar }), _jsxs("div", { className: "starci-core-chat-bubble-stack", children: [hasHead ? (_jsxs("div", { className: "starci-core-chat-bubble-head", children: [author == null ? null : _jsx("span", { className: "starci-core-chat-bubble-author", children: author }), status, meta == null ? null : _jsx("span", { className: "starci-core-chat-bubble-meta", children: meta })] })) : null, _jsx("div", { className: "starci-core-chat-bubble-body", children: children }), footer == null ? null : _jsx("div", { className: "starci-core-chat-bubble-footer", children: footer }), actions == null ? null : _jsx("div", { className: "starci-core-chat-bubble-actions", children: actions })] })] }));
11
11
  };
12
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composite/ChatBubble/index.tsx"],"names":[],"mappings":";AA2BA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACvB,QAAQ,EACR,IAAI,GAAG,UAAU,EACjB,MAAM,EACN,MAAM,EACN,IAAI,EACJ,MAAM,EACN,OAAO,EACP,MAAM,EACN,WAAW,GAAG,KAAK,EACnB,EAAE,GACY,EAAE,EAAE;IAClB,MAAM,OAAO,GAAG,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAA;IAChE,OAAO,CACH,kBACQ,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EACpC,SAAS,EAAC,yBAAyB,oBACpB,YAAY,eACjB,WAAW,mBACP,8BAA8B,8BAClB,IAAI,mCACC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,aAE5D,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,gCAAgC,YAAE,MAAM,GAAO,EACvF,eAAK,SAAS,EAAC,+BAA+B,aACzC,OAAO,CAAC,CAAC,CAAC,CACP,eAAK,SAAS,EAAC,8BAA8B,aACxC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,gCAAgC,YAAE,MAAM,GAAQ,EACxF,MAAM,EACN,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,8BAA8B,YAAE,IAAI,GAAQ,IACjF,CACT,CAAC,CAAC,CAAC,IAAI,EACR,cAAK,SAAS,EAAC,8BAA8B,YAAE,QAAQ,GAAO,EAC7D,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,gCAAgC,YAAE,MAAM,GAAO,EACtF,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,iCAAiC,YAAE,OAAO,GAAO,IACxF,IACJ,CACT,CAAA;AACL,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composite/ChatBubble/index.tsx"],"names":[],"mappings":";AA2BA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACvB,QAAQ,EACR,IAAI,GAAG,UAAU,EACjB,MAAM,EACN,MAAM,EACN,IAAI,EACJ,MAAM,EACN,OAAO,EACP,MAAM,EACN,WAAW,GAAG,KAAK,EACnB,EAAE,GACY,EAAE,EAAE;IAClB,MAAM,OAAO,GAAG,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAAA;IAChE,OAAO,CACH,kBACQ,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EACpC,SAAS,EAAC,yBAAyB,oBACpB,YAAY,eACjB,WAAW,mBACP,8BAA8B,8BAClB,IAAI,mCACC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,gCACjC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,aAE5D,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,gCAAgC,YAAE,MAAM,GAAO,EACvF,eAAK,SAAS,EAAC,+BAA+B,aACzC,OAAO,CAAC,CAAC,CAAC,CACP,eAAK,SAAS,EAAC,8BAA8B,aACxC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,gCAAgC,YAAE,MAAM,GAAQ,EACxF,MAAM,EACN,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,8BAA8B,YAAE,IAAI,GAAQ,IACjF,CACT,CAAC,CAAC,CAAC,IAAI,EACR,cAAK,SAAS,EAAC,8BAA8B,YAAE,QAAQ,GAAO,EAC7D,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,gCAAgC,YAAE,MAAM,GAAO,EACtF,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,iCAAiC,YAAE,OAAO,GAAO,IACxF,IACJ,CACT,CAAA;AACL,CAAC,CAAA"}
@@ -2,14 +2,19 @@ import { type IconSource } from "../Icon/index.js";
2
2
  /**
3
3
  * HeroUI Button variants an icon-only action wears: `tertiary` (default) is the filled round plate;
4
4
  * `ghost` is the quiet bare glyph with no fill at rest (HeroUI's ghost: a fill only on hover/press) -
5
- * for an overflow "..." menu or a secondary glyph action beside a card title.
5
+ * for an overflow "..." menu or a secondary glyph action beside a card title. `primary` is the accent-filled plate for the
6
+ * one glyph action that must stand out (a floating assistant or compose button); one per view, like a primary Button.
6
7
  */
7
- export type IconButtonVariant = "tertiary" | "ghost";
8
+ export type IconButtonVariant = "tertiary" | "ghost" | "primary";
8
9
  export type IconButtonProps = {
9
10
  readonly source: IconSource;
10
11
  /** Required accessible name for the glyph-only action. */
11
12
  readonly label: string;
12
13
  readonly variant?: IconButtonVariant;
14
+ /** `md` (default, 2.25rem) or `lg` (3.5rem), the size of a floating action. */
15
+ readonly size?: "md" | "lg";
16
+ /** Lifts the button with the overlay elevation, for an action floating over content (it owns no position). */
17
+ readonly isFloating?: boolean;
13
18
  readonly isActive?: boolean;
14
19
  readonly isDisabled?: boolean;
15
20
  readonly isSkeleton?: boolean;
@@ -31,5 +36,5 @@ export type IconButtonProps = {
31
36
  /** What the badge plate prints: nothing for 0 / empty, the capped number, or the given text. */
32
37
  export declare const iconButtonBadgeText: (badge: number | string | undefined, max?: number) => string | null;
33
38
  /** Circular glyph-only action with a mandatory accessible name (A11Y-2, ICON-5). */
34
- export declare const IconButton: ({ source, label, variant, isActive, isDisabled, isSkeleton, onPress, "aria-controls": controls, "aria-expanded": expanded, badge, badgeLabel, badgeMax, }: IconButtonProps) => import("react").JSX.Element;
39
+ export declare const IconButton: ({ source, label, variant, size, isFloating, isActive, isDisabled, isSkeleton, onPress, "aria-controls": controls, "aria-expanded": expanded, badge, badgeLabel, badgeMax, }: IconButtonProps) => import("react").JSX.Element;
35
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/IconButton/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAExD;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,OAAO,CAAA;AAEpD,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAA;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IAC7B,sFAAsF;IACtF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,qEAAqE;IACrE,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAChC,iHAAiH;IACjH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED,gGAAgG;AAChG,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,YAAQ,KAAG,MAAM,GAAG,IAI3F,CAAA;AAQD,oFAAoF;AACpF,eAAO,MAAM,UAAU,GAAI,2JAaxB,eAAe,gCAyBjB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/IconButton/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAExD;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAA;AAEhE,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAA;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAC3B,8GAA8G;IAC9G,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IAC7B,sFAAsF;IACtF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,qEAAqE;IACrE,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAChC,iHAAiH;IACjH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED,gGAAgG;AAChG,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,YAAQ,KAAG,MAAM,GAAG,IAI3F,CAAA;AAQD,oFAAoF;AACpF,eAAO,MAAM,UAAU,GAAI,6KAexB,eAAe,gCA2BjB,CAAA"}
@@ -15,8 +15,8 @@ export const iconButtonBadgeText = (badge, max = 99) => {
15
15
  */
16
16
  const SKELETON_CLASS_NAME = skeletonVariants({ animationType: "shimmer" }).base();
17
17
  /** Circular glyph-only action with a mandatory accessible name (A11Y-2, ICON-5). */
18
- export const IconButton = ({ source, label, variant = "tertiary", isActive = false, isDisabled = false, isSkeleton = false, onPress, "aria-controls": controls, "aria-expanded": expanded, badge, badgeLabel, badgeMax = 99, }) => {
18
+ export const IconButton = ({ source, label, variant = "tertiary", size = "md", isFloating = false, isActive = false, isDisabled = false, isSkeleton = false, onPress, "aria-controls": controls, "aria-expanded": expanded, badge, badgeLabel, badgeMax = 99, }) => {
19
19
  const badgeText = isSkeleton ? null : iconButtonBadgeText(badge, badgeMax);
20
- return (_jsxs(HeroButton, { "data-tier": "atom", "data-component": "IconButton", "data-contract": "A11Y-2 ICON-5", "data-active": isActive ? "true" : "false", "data-variant": variant, "data-loading": isSkeleton ? "true" : "false", type: "button", variant: variant, className: cn("starci-core-icon-button", isSkeleton ? SKELETON_CLASS_NAME : undefined) ?? "starci-core-icon-button", isIconOnly: true, isDisabled: isDisabled || isSkeleton, "aria-label": badgeText !== null && badgeLabel !== undefined ? `${label}, ${badgeLabel}` : label, "data-grammar-icon-button-badge": badgeText === null ? "none" : "present", ...(controls === undefined ? {} : { "aria-controls": controls }), ...(expanded === undefined ? {} : { "aria-expanded": expanded }), ...(isDisabled || isSkeleton || onPress === undefined ? {} : { onPress }), children: [isSkeleton ? null : _jsx(Icon, { source: source, usage: "leading" }), badgeText === null ? null : _jsx("span", { "aria-hidden": true, className: "starci-core-icon-button-badge", "data-contract": "TONE-2", children: badgeText })] }));
20
+ return (_jsxs(HeroButton, { "data-tier": "atom", "data-component": "IconButton", "data-contract": "A11Y-2 ICON-5", "data-active": isActive ? "true" : "false", "data-variant": variant, "data-size": size, "data-floating": isFloating ? "true" : "false", "data-loading": isSkeleton ? "true" : "false", type: "button", variant: variant, className: cn("starci-core-icon-button", isSkeleton ? SKELETON_CLASS_NAME : undefined) ?? "starci-core-icon-button", isIconOnly: true, isDisabled: isDisabled || isSkeleton, "aria-label": badgeText !== null && badgeLabel !== undefined ? `${label}, ${badgeLabel}` : label, "data-grammar-icon-button-badge": badgeText === null ? "none" : "present", ...(controls === undefined ? {} : { "aria-controls": controls }), ...(expanded === undefined ? {} : { "aria-expanded": expanded }), ...(isDisabled || isSkeleton || onPress === undefined ? {} : { onPress }), children: [isSkeleton ? null : _jsx(Icon, { source: source, usage: "leading" }), badgeText === null ? null : _jsx("span", { "aria-hidden": true, className: "starci-core-icon-button-badge", "data-contract": "TONE-2", children: badgeText })] }));
21
21
  };
22
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/IconButton/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC1E,OAAO,EAAE,IAAI,EAAmB,MAAM,kBAAkB,CAAA;AAiCxD,gGAAgG;AAChG,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAkC,EAAE,GAAG,GAAG,EAAE,EAAiB,EAAE;IAC/F,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACnE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC7E,OAAO,KAAK,CAAA;AAChB,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;AAEjF,oFAAoF;AACpF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACvB,MAAM,EACN,KAAK,EACL,OAAO,GAAG,UAAU,EACpB,QAAQ,GAAG,KAAK,EAChB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,OAAO,EACP,eAAe,EAAE,QAAQ,EACzB,eAAe,EAAE,QAAQ,EACzB,KAAK,EACL,UAAU,EACV,QAAQ,GAAG,EAAE,GACC,EAAE,EAAE;IAClB,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC1E,OAAO,CACP,MAAC,UAAU,iBACG,MAAM,oBACD,YAAY,mBACb,eAAe,iBAChB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,kBAC1B,OAAO,kBACP,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAC3C,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,yBAAyB,EACnH,UAAU,QACV,UAAU,EAAE,UAAU,IAAI,UAAU,gBACxB,SAAS,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK,oCAC9D,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,KACnE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,KAC7D,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,KAC7D,CAAC,UAAU,IAAI,UAAU,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,aAEzE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAC,SAAS,GAAG,EAC5D,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oCAAkB,SAAS,EAAC,+BAA+B,mBAAe,QAAQ,YAAE,SAAS,GAAQ,IACzH,CACZ,CAAA;AACL,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/IconButton/index.tsx"],"names":[],"mappings":"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"}
@@ -5,7 +5,17 @@ export type ProgressProps = {
5
5
  readonly value?: number;
6
6
  /** Initial unresolved-content geometry, not a zero-valued measurement. */
7
7
  readonly isSkeleton?: boolean;
8
+ /**
9
+ * Step mode for a wizard: one segment per step at the bar's own height, the finished and current steps filled.
10
+ * `completed` counts filled segments (current step included); `value` is ignored in this mode.
11
+ */
12
+ readonly steps?: {
13
+ readonly total: number;
14
+ readonly completed: number;
15
+ };
16
+ /** Spoken value in step mode, e.g. "Step 3 of 5"; defaults to "completed / total". */
17
+ readonly valueText?: string;
8
18
  };
9
19
  /** Accessible, full-width completion bar with an inert initial-loading shape. */
10
- export declare const Progress: ({ label, value, isSkeleton }: ProgressProps) => import("react").JSX.Element;
20
+ export declare const Progress: ({ label, value, isSkeleton, steps, valueText }: ProgressProps) => import("react").JSX.Element;
11
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Progress/index.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG;IACxB,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,mFAAmF;IACnF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAUD,iFAAiF;AACjF,eAAO,MAAM,QAAQ,GAAI,8BAA0C,aAAa,gCAoC/E,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Progress/index.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG;IACxB,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,mFAAmF;IACnF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IACvE,sFAAsF;IACtF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC9B,CAAA;AAUD,iFAAiF;AACjF,eAAO,MAAM,QAAQ,GAAI,gDAA4D,aAAa,gCA6DjG,CAAA"}
@@ -8,7 +8,12 @@ const SKELETON_CLASS_NAME = skeletonVariants({ animationType: "shimmer" }).base(
8
8
  className: "starci-core-progress",
9
9
  });
10
10
  /** Accessible, full-width completion bar with an inert initial-loading shape. */
11
- export const Progress = ({ label, value = 0, isSkeleton = false }) => {
11
+ export const Progress = ({ label, value = 0, isSkeleton = false, steps, valueText }) => {
12
+ if (steps !== undefined && !isSkeleton) {
13
+ const total = Math.max(1, Math.round(steps.total));
14
+ const completed = Math.min(total, Math.max(0, Math.round(steps.completed)));
15
+ return (_jsx("div", { role: "progressbar", "aria-label": label, "aria-valuemin": 0, "aria-valuemax": total, "aria-valuenow": completed, "aria-valuetext": valueText ?? `${completed} / ${total}`, "data-tier": "atom", "data-component": "Progress", "data-loading": "false", "data-grammar-progress-mode": "steps", "data-contract": "MEASURE-2", className: "starci-core-progress starci-core-progress-steps", style: { gridTemplateColumns: `repeat(${total}, minmax(0, 1fr))` }, children: Array.from({ length: total }, (_, index) => (_jsx("span", { "aria-hidden": true, className: "starci-core-progress-step", "data-grammar-progress-step": index < completed ? "done" : "todo" }, index))) }));
16
+ }
12
17
  if (isSkeleton) {
13
18
  return (_jsx("span", { "data-tier": "atom", "data-component": "Progress", "data-loading": "true", "aria-hidden": true, "data-contract": "MEASURE-2", className: SKELETON_CLASS_NAME }));
14
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Progress/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAW7D;;;GAGG;AACH,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC;IAC5E,SAAS,EAAE,sBAAsB;CACpC,CAAC,CAAA;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,UAAU,GAAG,KAAK,EAAiB,EAAE,EAAE;IAChF,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,CACH,4BACc,MAAM,oBACD,UAAU,kBACZ,MAAM,wCAIL,WAAW,EACzB,SAAS,EAAE,mBAAmB,GAChC,CACL,CAAA;IACL,CAAC;IAED,OAAO,CACH,KAAC,WAAW,iBACE,MAAM,oBACD,UAAU,kBACZ,OAAO,gBACR,KAAK,EACjB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,GAAG,EACb,KAAK,EAAC,QAAQ,EACd,IAAI,EAAC,IAAI,mBAEK,WAAW,EACzB,SAAS,EAAC,sBAAsB,YAEhC,KAAC,WAAW,CAAC,KAAK,cACd,KAAC,WAAW,CAAC,IAAI,KAAG,GACJ,GACV,CACjB,CAAA;AACL,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Progress/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAkB7D;;;GAGG;AACH,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC;IAC5E,SAAS,EAAE,sBAAsB;CACpC,CAAC,CAAA;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,UAAU,GAAG,KAAK,EAAE,KAAK,EAAE,SAAS,EAAiB,EAAE,EAAE;IAClG,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAC3E,OAAO,CACH,cACI,IAAI,EAAC,aAAa,gBACN,KAAK,mBACF,CAAC,mBACD,KAAK,mBACL,SAAS,oBACR,SAAS,IAAI,GAAG,SAAS,MAAM,KAAK,EAAE,eAC5C,MAAM,oBACD,UAAU,kBACZ,OAAO,gCACO,OAAO,mBACpB,WAAW,EACzB,SAAS,EAAC,iDAAiD,EAC3D,KAAK,EAAE,EAAE,mBAAmB,EAAE,UAAU,KAAK,mBAAmB,EAAE,YAEjE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CACzC,oCAA8B,SAAS,EAAC,2BAA2B,gCAA6B,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAxH,KAAK,CAAuH,CAC1I,CAAC,GACA,CACT,CAAA;IACL,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,CACH,4BACc,MAAM,oBACD,UAAU,kBACZ,MAAM,wCAIL,WAAW,EACzB,SAAS,EAAE,mBAAmB,GAChC,CACL,CAAA;IACL,CAAC;IAED,OAAO,CACH,KAAC,WAAW,iBACE,MAAM,oBACD,UAAU,kBACZ,OAAO,gBACR,KAAK,EACjB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,GAAG,EACb,KAAK,EAAC,QAAQ,EACd,IAAI,EAAC,IAAI,mBAEK,WAAW,EACzB,SAAS,EAAC,sBAAsB,YAEhC,KAAC,WAAW,CAAC,KAAK,cACd,KAAC,WAAW,CAAC,IAAI,KAAG,GACJ,GACV,CACjB,CAAA;AACL,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starci/grammar",
3
- "version": "0.9.2",
3
+ "version": "0.9.4",
4
4
  "description": "Reusable StarCi React components, compositions, and packaged visual DNA.",
5
5
  "keywords": [
6
6
  "starci",
@@ -59,7 +59,7 @@
59
59
  "scripts": {
60
60
  "build": "node scripts/clean.mjs && tsc -p tsconfig.build.json && node scripts/copy-css.mjs && node scripts/build-stamp.mjs",
61
61
  "typecheck": "tsc -p tsconfig.build.json --noEmit && tsc -p tsconfig.stories.json",
62
- "test": "npm run build && node --test src/common/index.spec.mjs src/core/index.spec.mjs src/offset-pop/index.spec.mjs src/package-boundary.spec.mjs && vitest run --config vitest.config.ts src/shipped-geometry.spec.ts src/core/shipped-claims.spec.tsx src/common/conformance.spec.ts src/common/styles.spec.ts src/core/family.spec.tsx src/core/styles.spec.ts src/core/surface-card-family.spec.tsx src/core/scrollable-surfaces.spec.tsx src/core/primitive/Badge/index.spec.tsx src/core/primitive/Button/index.spec.tsx src/core/primitive/Divider/index.spec.tsx src/core/primitive/Region/index.spec.tsx src/core/primitive/NavLandmark/index.spec.tsx src/core/primitive/List/index.spec.tsx src/core/primitive/Heading/index.spec.tsx src/core/primitive/Icon/index.spec.tsx src/core/primitive/IconButton/index.spec.tsx src/core/primitive/IconTile/index.spec.tsx src/core/primitive/Input/index.spec.tsx src/core/primitive/Input/copyable.spec.tsx src/core/composite/ChatBubble/index.spec.tsx src/core/composite/FillViewport/index.spec.tsx src/core/primitive/IconButton/badge.spec.tsx src/core/primitive/Textarea/mentions.spec.tsx src/core/v090.spec.tsx src/core/primitive/PressableField/index.spec.tsx src/core/primitive/Progress/index.spec.tsx src/core/primitive/Text/index.spec.tsx src/core/primitive/TextAction/index.spec.tsx src/core/primitive/Label/index.spec.tsx src/core/primitive/RankArtwork/index.spec.tsx src/core/composite/EmptyNotice/index.spec.tsx src/core/composite/ListRow/index.spec.tsx src/core/branch/Tabs/index.spec.tsx src/core/branch/Subnav/index.spec.tsx src/core/branch/Subnav/styles.spec.ts src/core/branch/Tooltip/index.spec.tsx src/core/composition/NavigationFeatureNav/index.spec.tsx src/core/composition/NavigationFeatureNav/styles.spec.ts src/core/composition/Sidebar/index.spec.tsx src/core/composition/Sidebar/styles.spec.ts src/core/composition/collapse.spec.tsx src/core/composition/WorkspaceShell/index.spec.tsx src/core/composition/ChatWorkspace/index.spec.tsx src/heritage/index.spec.tsx src/heritage/styles.spec.ts src/offset-pop/index.spec.tsx src/offset-pop/render.spec.tsx src/offset-pop/styles.spec.ts src/offset-pop/family.spec.tsx src/offset-pop/shipped-claims.spec.tsx src/offset-pop/surface-card-family.spec.tsx src/offset-pop/scrollable-surfaces.spec.tsx src/offset-pop/conformance.spec.ts src/core/branch/Accordion/index.spec.tsx src/core/branch/AlertDialog/index.spec.tsx src/core/branch/Calendar/index.spec.tsx src/core/branch/ComboBox/index.spec.tsx src/core/branch/DataTable/index.spec.tsx src/core/branch/DatePicker/index.spec.tsx src/core/branch/DateRangePicker/index.spec.tsx src/core/branch/Dialog/index.spec.tsx src/core/branch/Disclosure/index.spec.tsx src/core/branch/Drawer/index.spec.tsx src/core/branch/DropdownMenu/index.spec.tsx src/core/branch/ListBox/index.spec.tsx src/core/branch/Popover/index.spec.tsx src/core/branch/Select/index.spec.tsx src/core/branch/Toast/index.spec.tsx src/core/composite/Alert/index.spec.tsx src/core/composite/AvatarGroup/index.spec.tsx src/core/composite/Breadcrumbs/index.spec.tsx src/core/composite/ButtonGroup/index.spec.tsx src/core/composite/CheckboxGroup/index.spec.tsx src/core/composite/DescriptionList/index.spec.tsx src/core/composite/Fieldset/index.spec.tsx src/core/composite/Form/index.spec.tsx src/core/composite/Pagination/index.spec.tsx src/core/composite/RadioGroup/index.spec.tsx src/core/composite/SegmentedControl/index.spec.tsx src/core/composite/Stepper/index.spec.tsx src/core/composite/TagGroup/index.spec.tsx src/core/composite/Timeline/index.spec.tsx src/core/composition/BottomNav/index.spec.tsx src/core/composition/Footer/index.spec.tsx src/core/composition/TopBar/index.spec.tsx src/core/primitive/Avatar/index.spec.tsx src/core/primitive/Checkbox/index.spec.tsx src/core/primitive/CloseButton/index.spec.tsx src/core/primitive/DateField/index.spec.tsx src/core/primitive/Field/index.spec.tsx src/core/primitive/FileDropzone/index.spec.tsx src/core/primitive/Image/index.spec.tsx src/core/primitive/Kbd/index.spec.tsx src/core/primitive/Link/index.spec.tsx src/core/primitive/Meter/index.spec.tsx src/core/primitive/NumberField/index.spec.tsx src/core/primitive/ProgressCircle/index.spec.tsx src/core/primitive/Rating/index.spec.tsx src/core/primitive/SearchField/index.spec.tsx src/core/primitive/Skeleton/index.spec.tsx src/core/primitive/Slider/index.spec.tsx src/core/primitive/Spinner/index.spec.tsx src/core/primitive/Switch/index.spec.tsx src/core/primitive/Textarea/index.spec.tsx src/core/primitive/TimeField/index.spec.tsx src/offset-pop/components-forms.spec.ts src/offset-pop/components-navigation.spec.ts src/offset-pop/components-overlays.spec.ts src/core/branch/SurfaceCard/index.spec.tsx src/core/branch/SurfaceListCard/index.spec.tsx src/core/branch/SurfaceAccordionCard/index.spec.tsx src/core/branch/Rail/index.spec.tsx src/core/branch/MarkdownArticle/index.spec.tsx src/core/composite/VerticalScrollRegion/index.spec.tsx src/core/primitive/SectionHeader/index.spec.tsx src/core/primitive/PinnedActionBar/index.spec.tsx src/core/branch/SurfaceCard/ink.spec.ts src/core/data-component.spec.tsx src/core/OtpInput.spec.tsx src/core/field-variant.spec.tsx src/stories/catalog.spec.ts",
62
+ "test": "npm run build && node --test src/common/index.spec.mjs src/core/index.spec.mjs src/offset-pop/index.spec.mjs src/package-boundary.spec.mjs && vitest run --config vitest.config.ts src/shipped-geometry.spec.ts src/core/shipped-claims.spec.tsx src/common/conformance.spec.ts src/common/styles.spec.ts src/core/family.spec.tsx src/core/styles.spec.ts src/core/surface-card-family.spec.tsx src/core/scrollable-surfaces.spec.tsx src/core/primitive/Badge/index.spec.tsx src/core/primitive/Button/index.spec.tsx src/core/primitive/Divider/index.spec.tsx src/core/primitive/Region/index.spec.tsx src/core/primitive/NavLandmark/index.spec.tsx src/core/primitive/List/index.spec.tsx src/core/primitive/Heading/index.spec.tsx src/core/primitive/Icon/index.spec.tsx src/core/primitive/IconButton/index.spec.tsx src/core/primitive/IconTile/index.spec.tsx src/core/primitive/Input/index.spec.tsx src/core/primitive/Input/copyable.spec.tsx src/core/composite/ChatBubble/index.spec.tsx src/core/composite/FillViewport/index.spec.tsx src/core/primitive/IconButton/badge.spec.tsx src/core/primitive/Textarea/mentions.spec.tsx src/core/v090.spec.tsx src/core/v093.spec.tsx src/core/v094.spec.tsx src/core/primitive/PressableField/index.spec.tsx src/core/primitive/Progress/index.spec.tsx src/core/primitive/Text/index.spec.tsx src/core/primitive/TextAction/index.spec.tsx src/core/primitive/Label/index.spec.tsx src/core/primitive/RankArtwork/index.spec.tsx src/core/composite/EmptyNotice/index.spec.tsx src/core/composite/ListRow/index.spec.tsx src/core/branch/Tabs/index.spec.tsx src/core/branch/Subnav/index.spec.tsx src/core/branch/Subnav/styles.spec.ts src/core/branch/Tooltip/index.spec.tsx src/core/composition/NavigationFeatureNav/index.spec.tsx src/core/composition/NavigationFeatureNav/styles.spec.ts src/core/composition/Sidebar/index.spec.tsx src/core/composition/Sidebar/styles.spec.ts src/core/composition/collapse.spec.tsx src/core/composition/WorkspaceShell/index.spec.tsx src/core/composition/ChatWorkspace/index.spec.tsx src/heritage/index.spec.tsx src/heritage/styles.spec.ts src/offset-pop/index.spec.tsx src/offset-pop/render.spec.tsx src/offset-pop/styles.spec.ts src/offset-pop/family.spec.tsx src/offset-pop/shipped-claims.spec.tsx src/offset-pop/surface-card-family.spec.tsx src/offset-pop/scrollable-surfaces.spec.tsx src/offset-pop/conformance.spec.ts src/core/branch/Accordion/index.spec.tsx src/core/branch/AlertDialog/index.spec.tsx src/core/branch/Calendar/index.spec.tsx src/core/branch/ComboBox/index.spec.tsx src/core/branch/DataTable/index.spec.tsx src/core/branch/DatePicker/index.spec.tsx src/core/branch/DateRangePicker/index.spec.tsx src/core/branch/Dialog/index.spec.tsx src/core/branch/Disclosure/index.spec.tsx src/core/branch/Drawer/index.spec.tsx src/core/branch/DropdownMenu/index.spec.tsx src/core/branch/ListBox/index.spec.tsx src/core/branch/Popover/index.spec.tsx src/core/branch/Select/index.spec.tsx src/core/branch/Toast/index.spec.tsx src/core/composite/Alert/index.spec.tsx src/core/composite/AvatarGroup/index.spec.tsx src/core/composite/Breadcrumbs/index.spec.tsx src/core/composite/ButtonGroup/index.spec.tsx src/core/composite/CheckboxGroup/index.spec.tsx src/core/composite/DescriptionList/index.spec.tsx src/core/composite/Fieldset/index.spec.tsx src/core/composite/Form/index.spec.tsx src/core/composite/Pagination/index.spec.tsx src/core/composite/RadioGroup/index.spec.tsx src/core/composite/SegmentedControl/index.spec.tsx src/core/composite/Stepper/index.spec.tsx src/core/composite/TagGroup/index.spec.tsx src/core/composite/Timeline/index.spec.tsx src/core/composition/BottomNav/index.spec.tsx src/core/composition/Footer/index.spec.tsx src/core/composition/TopBar/index.spec.tsx src/core/primitive/Avatar/index.spec.tsx src/core/primitive/Checkbox/index.spec.tsx src/core/primitive/CloseButton/index.spec.tsx src/core/primitive/DateField/index.spec.tsx src/core/primitive/Field/index.spec.tsx src/core/primitive/FileDropzone/index.spec.tsx src/core/primitive/Image/index.spec.tsx src/core/primitive/Kbd/index.spec.tsx src/core/primitive/Link/index.spec.tsx src/core/primitive/Meter/index.spec.tsx src/core/primitive/NumberField/index.spec.tsx src/core/primitive/ProgressCircle/index.spec.tsx src/core/primitive/Rating/index.spec.tsx src/core/primitive/SearchField/index.spec.tsx src/core/primitive/Skeleton/index.spec.tsx src/core/primitive/Slider/index.spec.tsx src/core/primitive/Spinner/index.spec.tsx src/core/primitive/Switch/index.spec.tsx src/core/primitive/Textarea/index.spec.tsx src/core/primitive/TimeField/index.spec.tsx src/offset-pop/components-forms.spec.ts src/offset-pop/components-navigation.spec.ts src/offset-pop/components-overlays.spec.ts src/core/branch/SurfaceCard/index.spec.tsx src/core/branch/SurfaceListCard/index.spec.tsx src/core/branch/SurfaceAccordionCard/index.spec.tsx src/core/branch/Rail/index.spec.tsx src/core/branch/MarkdownArticle/index.spec.tsx src/core/composite/VerticalScrollRegion/index.spec.tsx src/core/primitive/SectionHeader/index.spec.tsx src/core/primitive/PinnedActionBar/index.spec.tsx src/core/branch/SurfaceCard/ink.spec.ts src/core/data-component.spec.tsx src/core/OtpInput.spec.tsx src/core/field-variant.spec.tsx src/stories/catalog.spec.ts",
63
63
  "test:a11y": "vitest run --config vitest.a11y.config.ts",
64
64
  "pack:check": "npm run build && node --test src/package-boundary.spec.mjs",
65
65
  "prepack": "npm run typecheck && npm test",