@starci/grammar 0.12.0 → 0.12.3

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 (122) hide show
  1. package/README.md +65 -18
  2. package/dist/.build-stamp.json +4 -4
  3. package/dist/common/components-forms.css +5 -0
  4. package/dist/common/components-navigation.css +8 -6
  5. package/dist/common/components-overlays.css +0 -10
  6. package/dist/common/registry.d.ts +6 -6
  7. package/dist/common/renderers-forms.d.ts +1 -1
  8. package/dist/common/renderers-navigation.d.ts +2 -2
  9. package/dist/common/renderers.d.ts +1 -1
  10. package/dist/common/renderers.d.ts.map +1 -1
  11. package/dist/common/renderers.js.map +1 -1
  12. package/dist/common/rule-catalog.generated.d.ts +1 -0
  13. package/dist/common/rule-catalog.generated.d.ts.map +1 -1
  14. package/dist/common/rule-catalog.generated.js +10 -1
  15. package/dist/common/rule-catalog.generated.js.map +1 -1
  16. package/dist/common/styles.css +91 -112
  17. package/dist/core/branch/DropdownMenu/index.d.ts +2 -7
  18. package/dist/core/branch/DropdownMenu/index.d.ts.map +1 -1
  19. package/dist/core/branch/DropdownMenu/index.js +2 -4
  20. package/dist/core/branch/DropdownMenu/index.js.map +1 -1
  21. package/dist/core/branch/Rail/index.d.ts.map +1 -1
  22. package/dist/core/branch/Rail/index.js +2 -4
  23. package/dist/core/branch/Rail/index.js.map +1 -1
  24. package/dist/core/branch/Select/index.js +2 -2
  25. package/dist/core/branch/SurfaceAccordionCard/classNames.d.ts +1 -1
  26. package/dist/core/branch/SurfaceAccordionCard/classNames.d.ts.map +1 -1
  27. package/dist/core/branch/SurfaceAccordionCard/classNames.js +3 -3
  28. package/dist/core/branch/SurfaceAccordionCard/classNames.js.map +1 -1
  29. package/dist/core/branch/SurfaceAccordionCard/index.d.ts +2 -2
  30. package/dist/core/branch/SurfaceAccordionCard/index.d.ts.map +1 -1
  31. package/dist/core/branch/SurfaceAccordionCard/index.js +10 -9
  32. package/dist/core/branch/SurfaceAccordionCard/index.js.map +1 -1
  33. package/dist/core/branch/SurfaceCard/classNames.d.ts +0 -4
  34. package/dist/core/branch/SurfaceCard/classNames.d.ts.map +1 -1
  35. package/dist/core/branch/SurfaceCard/classNames.js +0 -4
  36. package/dist/core/branch/SurfaceCard/classNames.js.map +1 -1
  37. package/dist/core/branch/SurfaceCard/index.d.ts +0 -3
  38. package/dist/core/branch/SurfaceCard/index.d.ts.map +1 -1
  39. package/dist/core/branch/SurfaceCard/index.js +10 -29
  40. package/dist/core/branch/SurfaceCard/index.js.map +1 -1
  41. package/dist/core/branch/Tabs/index.d.ts +3 -2
  42. package/dist/core/branch/Tabs/index.d.ts.map +1 -1
  43. package/dist/core/branch/Tabs/index.js +3 -1
  44. package/dist/core/branch/Tabs/index.js.map +1 -1
  45. package/dist/core/branch/Toast/index.js +2 -2
  46. package/dist/core/branch/Toast/index.js.map +1 -1
  47. package/dist/core/branch/Tooltip/classNames.d.ts +1 -2
  48. package/dist/core/branch/Tooltip/classNames.d.ts.map +1 -1
  49. package/dist/core/branch/Tooltip/classNames.js +1 -2
  50. package/dist/core/branch/Tooltip/classNames.js.map +1 -1
  51. package/dist/core/branch/Tooltip/index.d.ts +18 -9
  52. package/dist/core/branch/Tooltip/index.d.ts.map +1 -1
  53. package/dist/core/branch/Tooltip/index.js +12 -11
  54. package/dist/core/branch/Tooltip/index.js.map +1 -1
  55. package/dist/core/composite/AvatarButton/index.d.ts.map +1 -1
  56. package/dist/core/composite/AvatarButton/index.js +1 -1
  57. package/dist/core/composite/AvatarButton/index.js.map +1 -1
  58. package/dist/core/composite/IdentityLockup/index.d.ts +4 -2
  59. package/dist/core/composite/IdentityLockup/index.d.ts.map +1 -1
  60. package/dist/core/composite/IdentityLockup/index.js +1 -1
  61. package/dist/core/composite/IdentityLockup/index.js.map +1 -1
  62. package/dist/core/composition/NavigationFeatureNav/index.d.ts.map +1 -1
  63. package/dist/core/composition/NavigationFeatureNav/index.js +2 -1
  64. package/dist/core/composition/NavigationFeatureNav/index.js.map +1 -1
  65. package/dist/core/composition/Sidebar/index.d.ts +8 -1
  66. package/dist/core/composition/Sidebar/index.d.ts.map +1 -1
  67. package/dist/core/composition/Sidebar/index.js +49 -27
  68. package/dist/core/composition/Sidebar/index.js.map +1 -1
  69. package/dist/core/composition/TopBar/index.d.ts.map +1 -1
  70. package/dist/core/composition/TopBar/index.js +2 -1
  71. package/dist/core/composition/TopBar/index.js.map +1 -1
  72. package/dist/core/composition/WorkspaceShell/index.d.ts.map +1 -1
  73. package/dist/core/composition/WorkspaceShell/index.js +6 -4
  74. package/dist/core/composition/WorkspaceShell/index.js.map +1 -1
  75. package/dist/core/dna.d.ts +4 -0
  76. package/dist/core/dna.d.ts.map +1 -1
  77. package/dist/core/dna.js +4 -0
  78. package/dist/core/dna.js.map +1 -1
  79. package/dist/core/primitive/Button/index.d.ts +3 -2
  80. package/dist/core/primitive/Button/index.d.ts.map +1 -1
  81. package/dist/core/primitive/Button/index.js +4 -4
  82. package/dist/core/primitive/Button/index.js.map +1 -1
  83. package/dist/core/primitive/Divider/index.d.ts.map +1 -1
  84. package/dist/core/primitive/Divider/index.js +3 -4
  85. package/dist/core/primitive/Divider/index.js.map +1 -1
  86. package/dist/core/primitive/IconButton/index.d.ts +14 -10
  87. package/dist/core/primitive/IconButton/index.d.ts.map +1 -1
  88. package/dist/core/primitive/IconButton/index.js +1 -1
  89. package/dist/core/primitive/IconButton/index.js.map +1 -1
  90. package/dist/core/primitive/Input/index.d.ts +3 -1
  91. package/dist/core/primitive/Input/index.d.ts.map +1 -1
  92. package/dist/core/primitive/Input/index.js +3 -3
  93. package/dist/core/primitive/Input/index.js.map +1 -1
  94. package/dist/core/primitive/PlainPressable/index.d.ts +3 -1
  95. package/dist/core/primitive/PlainPressable/index.d.ts.map +1 -1
  96. package/dist/core/primitive/PlainPressable/index.js +1 -1
  97. package/dist/core/primitive/PlainPressable/index.js.map +1 -1
  98. package/dist/core/primitive/Progress/index.d.ts.map +1 -1
  99. package/dist/core/primitive/Progress/index.js +1 -1
  100. package/dist/core/primitive/Progress/index.js.map +1 -1
  101. package/dist/core/primitive/RelativeTime/index.d.ts +19 -6
  102. package/dist/core/primitive/RelativeTime/index.d.ts.map +1 -1
  103. package/dist/core/primitive/RelativeTime/index.js +44 -23
  104. package/dist/core/primitive/RelativeTime/index.js.map +1 -1
  105. package/dist/core/primitive/SearchField/index.d.ts +3 -1
  106. package/dist/core/primitive/SearchField/index.d.ts.map +1 -1
  107. package/dist/core/primitive/SearchField/index.js +2 -2
  108. package/dist/core/primitive/SearchField/index.js.map +1 -1
  109. package/dist/core/primitive/Text/index.d.ts +1 -0
  110. package/dist/core/primitive/Text/index.d.ts.map +1 -1
  111. package/dist/core/primitive/Text/index.js +1 -2
  112. package/dist/core/primitive/Text/index.js.map +1 -1
  113. package/dist/core/primitive/TextAction/index.d.ts +3 -3
  114. package/dist/core/primitive/TextAction/index.d.ts.map +1 -1
  115. package/dist/core/primitive/TextAction/index.js +5 -3
  116. package/dist/core/primitive/TextAction/index.js.map +1 -1
  117. package/dist/core/primitive/actionStyles.d.ts +1 -1
  118. package/dist/core/primitive/actionStyles.d.ts.map +1 -1
  119. package/dist/offset-pop/conformance.d.ts +1 -1
  120. package/dist/offset-pop/conformance.js +1 -1
  121. package/dist/offset-pop/conformance.js.map +1 -1
  122. package/package.json +5 -3
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+, `@xyflow/react` 12 (for `FlowGraph`) and `@heroui/react`
20
+ The package needs Node.js 22 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
 
@@ -36,6 +36,39 @@ its root from one place. Heritage does not re-export Common. It exports `heritag
36
36
 
37
37
  ## Usage
38
38
 
39
+ ### App shell
40
+
41
+ The [app-shell canon](../../knowledge/ui/composition/app-shell.yaml) owns `FE-APP-SHELL-1` through `FE-APP-SHELL-7`.
42
+ The `Compositions/App shell` stories show the fixed shell, grouped sidebar, icon rail and mobile drawer.
43
+
44
+ - `size="control"` is available on `Button`, `IconButton`, `TextAction`, `PlainPressable`, `IdentityLockup`, `Input` and `SearchField`, alongside `Switch`, `Avatar` and `AvatarButton`.
45
+ - `SidebarItem.badge`, `badgeLabel` and `badgeMax` show and announce unread counts in both sidebar presentations. `SidebarGroup.placement="end"` places settings groups after the main groups and pushes them to the bottom.
46
+ - The collapsed Sidebar uses Grammar's internal `AnchoredTooltip` on hover and focus. HeroUI Tooltip positions the annotation beside the selected collection item and portals it into the same family DOM scope, preserving HeroUI's collection anatomy. `onAction` runs for every activated destination, including the selected item, so a drawer can close consistently.
47
+ - A fixed `WorkspaceShell` frames its `compactHeader` slot as the mobile opener band; pass a client `Drawer` with an ellipsis `IconButton` trigger. The `navigationDrawer` form owns the same band when it supplies the opener.
48
+ - `AvatarButton seed` passes the stable identity id to Grammar's shared `Avatar`, which draws the deterministic local DiceBear image; an uploaded `src` takes precedence.
49
+ - `DropdownMenuItem.mark` accepts a decorative identity mark and is mutually exclusive with `iconSource`. A destructive item uses `tone="danger"`.
50
+
51
+ Compose the interactive shell in a Client Component, where its glyph functions, callbacks and
52
+ state are created. A server layout can pass its rendered children to that component. Load the
53
+ selected family stylesheet and place the family's root around the layout.
54
+
55
+ ```tsx
56
+ // components/WorkspaceFrame.tsx
57
+ "use client"
58
+
59
+ import { Sidebar, WorkspaceShell } from "@starci/grammar/core"
60
+ import { EllipsisHorizontalIcon } from "@heroicons/react/24/outline"
61
+ import type { ReactNode } from "react"
62
+
63
+ const groups = [{ id: "main", items: [{ id: "home", label: "Home" }] }]
64
+
65
+ export default function WorkspaceFrame({ children }: { children: ReactNode }) {
66
+ return <WorkspaceShell primary={children} primaryLabel="Workspace" navigation={<Sidebar label="Workspace" groups={groups} />}
67
+ navigationLabel="Workspace navigation" navigationDrawer={{ title: "Navigation", openLabel: "Open navigation",
68
+ closeLabel: "Close navigation", source: EllipsisHorizontalIcon, content: <Sidebar presentation="drawer" label="Workspace" groups={groups} /> }} />
69
+ }
70
+ ```
71
+
39
72
  ### Common (neutral structure only)
40
73
 
41
74
  ```tsx
@@ -72,6 +105,8 @@ export const ProductSurface = () => (
72
105
  `STARCI_CORE_DNA` exposes the immutable design values. `STARCI_CORE_SPACING_SCALE` exposes the
73
106
  4px spacing steps. `STARCI_CORE_TOKEN_NAMES` lists the CSS variables, and
74
107
  `STARCI_CORE_TOKEN_DEFAULTS` / `STARCI_CORE_DARK_TOKEN_DEFAULTS` hold their exact packaged values.
108
+ Core's DNA declares a shadow without a border at top surface depth, and a border without a shadow
109
+ at nested depth.
75
110
 
76
111
  ### Heritage
77
112
 
@@ -161,20 +196,26 @@ same alignment and icon-size rule. Keep the visible item label as its accessible
161
196
  the mark without visual slot CSS.
162
197
 
163
198
  `RelativeTime` renders `<time dateTime>` for live relative copy such as "5 minutes ago" and a
164
- countdown such as "in 5 minutes". Pass `dateTime` as a timezone-qualified ISO string and `locale`
165
- as the active BCP 47 locale. `mode="relative"` is the default; `mode="countdown"` reduces the time
166
- remaining and settles at the locale's "now" when the target expires. `size` (`xs`, `sm`, `md`) and
167
- `tone` (`default`, `muted`, `accent`) use Common's text presentation.
199
+ countdown such as "in 5 minutes". Pass `dateTime` as a timezone-qualified RFC 3339 string and `locale`
200
+ as the active BCP 47 locale. Fractional seconds and numeric offsets such as `+0000` are accepted.
201
+ `mode="relative"` is the default. `mode="countdown"` rounds up the remaining seconds, chooses a unit,
202
+ then shows its completed count: 25 hours shows "in 1 day", and an expired countdown shows
203
+ "in 0 seconds" in English. `format="digital"` shows `m:ss` or `h:mm:ss`; `template` is serializable
204
+ copy containing `{time}`, and `expiredLabel` replaces that complete copy after expiry.
205
+ `size` (`xs`, `sm`, `md`) and `tone` (`default`, `muted`, `accent`) use Common's text presentation.
168
206
 
169
207
  ```tsx
170
208
  <RelativeTime dateTime="2026-10-25T09:00:00Z" locale="en" />
171
209
  <RelativeTime dateTime="2026-10-25T10:00:00+01:00" locale="en" mode="countdown" />
210
+ <RelativeTime dateTime="2026-10-25T10:00:00+0000" locale="en" mode="countdown"
211
+ format="digital" template="Offer ends in {time}" expiredLabel="Offer ended" fallback="Loading" />
172
212
  ```
173
213
 
174
214
  The server and initial hydration render show `fallback`, or the canonical ISO instant when it is
175
215
  omitted. After hydration, every instance reads the same shared ticker. The first subscriber starts
176
216
  it and the last unsubscribe stops it; leaves own no clock or refresh interval. Supply translated
177
- `fallback` copy when an ISO instant is unsuitable. Time changes are not a live announcement, so a
217
+ `fallback` copy when an ISO instant is unsuitable. Invalid timestamps render the fallback and warn
218
+ in development. Time changes are not a live announcement, so a
178
219
  page of timestamps does not repeatedly interrupt assistive technology. Grammar owns native
179
220
  `Intl.RelativeTimeFormat` for this primitive; other application date display follows FE-DATE.
180
221
 
@@ -184,9 +225,9 @@ className and no size. An item takes `id`, `label`, `description`, `shortcut`, `
184
225
  - `iconSource`: a glyph component (the app's Heroicons). Grammar draws it in HeroUI's leading position at the canon icon size,
185
226
  20px (`size-5`, `Icon` `leading`; the Heroicons rule R93 / FE-ICON). HeroUI's own docs example draws its sample glyph at
186
227
  `size-4`, which is example content and not a component default, so 20px is StarCi's icon rule and not a vendor override.
187
- - `leading`: a node instead of a glyph, e.g. an identity mark (`<Avatar size="sm" shape="rounded" isDecorative />`).
228
+ - `mark`: a decorative node instead of `iconSource`, e.g. an identity mark (`<Avatar size="sm" shape="rounded" isDecorative />`). The public type rejects both props together.
188
229
  - `tone: "danger"`: HeroUI's `danger` variant, which colours the label and the glyph. Sign out, delete, remove, leave workspace
189
- and revoke are destructive; the lint rule `starci-fe/destructive-menu-entry-needs-danger-tone` refuses such an entry without it.
230
+ and revoke are destructive; the lint rule `starci-grammar/destructive-menu-entry-needs-danger-tone` of `@starci/eslint-grammar-starci` refuses such an entry without it.
190
231
 
191
232
  A section takes `label` and optionally `selection` (`mode: "single" | "multiple"`, `selectedIds`, `onChange`). Between two
192
233
  adjacent entries, when either is a section, Grammar always inserts HeroUI's own `Separator`: the app cannot forget one. The selection
@@ -199,7 +240,7 @@ an item with a submenu).
199
240
  placement="bottom end"
200
241
  entries={[
201
242
  { kind: "section", id: "workspace", label: "Workspace", selection: { mode: "single", selectedIds, onChange },
202
- items: [{ id: "hakuen", label: "Hakuen", description: "Owner", leading: <Avatar name="Hakuen" size="sm" shape="rounded" isDecorative /> }] },
243
+ items: [{ id: "hakuen", label: "Hakuen", description: "Owner", mark: <Avatar name="Hakuen" size="sm" shape="rounded" isDecorative /> }] },
203
244
  { kind: "section", id: "account", items: [{ id: "profile", label: "Profile", description: "Name and photo", iconSource: UserIcon }] },
204
245
  { kind: "section", id: "session", items: [{ id: "sign-out", label: "Sign out", tone: "danger", iconSource: ArrowRightStartOnRectangleIcon }] },
205
246
  ]}
@@ -264,7 +305,7 @@ dismissal and focus return.
264
305
  shape in any state, no hover effect, a zoom-out on press, a focus ring, and no zoom under
265
306
  `prefers-reduced-motion`. `AvatarButton` is a circle-only avatar built on it (an account-menu
266
307
  trigger) and `IdentityLockup` a mark beside a title and a muted subtitle with no caret (a workspace
267
- switcher trigger). All three work as the `trigger` of `DropdownMenu` and `Popover`. `IdentityLockup`'s mark is a transparent, uncropped square by default (`markShape="rounded"` opts in to a
308
+ switcher trigger). All three work as the `trigger` of `DropdownMenu` and `Popover`. `IdentityLockup`'s mark and monogram fallback are transparent, with foreground-colored initials; the mark is an uncropped square by default (`markShape="rounded"` opts in to a
268
309
  corner) and `Avatar` takes `shape="square" | "rounded"`.
269
310
 
270
311
  Personal avatars are circles. Pass the user or identity id as `seed` on `Avatar`, `AvatarButton`
@@ -288,9 +329,8 @@ MarkdownTableFrame, MediaFrame, Rail, SectionHeader, StaticStateRow, SurfaceAcco
288
329
  SurfaceCard, SurfaceCopyGroup, SurfaceListCard, VerticalScrollRegion.
289
330
 
290
331
  **Compositions (9).** BottomNav, ChatWorkspace, Footer, NavigationFeatureNav, PageContainer,
291
- PrimaryRailLayout, Sidebar, TopBar, WorkspaceShell. Storybook also pins three page recipes to
292
- each family: a settings form, a data list with a filter drawer and pagination, and a mobile home
293
- with TopBar, BottomNav and a Toast.
332
+ PrimaryRailLayout, Sidebar, TopBar, WorkspaceShell. Storybook pins settings and data-list content
333
+ recipes to each family; the mobile app recipes reuse the fixed App shell with its left navigation drawer.
294
334
 
295
335
  `COMMON_GRAMMAR_COMPONENTS` is the frozen registry of the published renderers.
296
336
  `COMMON_FORMS_COMPONENTS`, `COMMON_OVERLAYS_COMPONENTS` and `COMMON_NAVIGATION_COMPONENTS` are the
@@ -299,13 +339,19 @@ renderers with prop-compatible versions and add extensions whose names don't col
299
339
 
300
340
  ### Surface controls, panel lists and group identity
301
341
 
302
- SurfaceCard (including `frame="frameless"`), SurfaceListCard, SurfaceAccordionCard, Rail, Sidebar
303
- and the content of Drawer, Dialog, AlertDialog and Popover supply the nesting context of ANATOMY-2.
342
+ SurfaceCard, SurfaceListCard, painted SurfaceAccordionCard, Sidebar and the content of Drawer,
343
+ Dialog, AlertDialog and Popover supply the nesting context of ANATOMY-2. SurfaceCard always paints
344
+ a surface: the top layer is raised and a nested layer is subordinate; never raise both layers.
345
+ Each family's DNA owns the paint. SurfaceCard and bounded
346
+ SurfaceAccordionCard derive their depth from the parent context. SurfaceAccordionCard defaults to
347
+ `frame="bounded"`; `frame="unpainted"` and Rail pass the parent's context through.
304
348
  Omit a field's `variant`: Input, SearchField, Textarea, NumberField, DateField, TimeField, Select,
305
349
  ComboBox, DatePicker, DateRangePicker, Checkbox, CheckboxGroup, RadioGroup, PressableField and OtpInput use `secondary`
306
350
  inside these surfaces and `primary` outside. Overlay triggers keep their surrounding context.
307
- The FE canon's `FE_NESTED_VARIANT` rejects an explicit primary field inside a surface and raw
308
- `bg-surface` paint in application classNames.
351
+ Tabs also default to `secondary` inside a surface and `primary` on the page background. The FE
352
+ canon's `FE_NESTED_VARIANT` rejects static field variants throughout app code and explicit primary
353
+ Tabs inside a painted surface. `FE_GRAMMAR_LAYOUT_ONLY` rejects application paint utilities,
354
+ arbitrary paint properties and inline style paint; application CSS carries layout only.
309
355
 
310
356
  ListBox defaults to `inset="panel"` inside the same context. The list container extends into the
311
357
  panel gutter so row content, loading content and section captions align with the header and search
@@ -313,7 +359,8 @@ field without padding wrappers (PADDING-0). Items keep HeroUI's default padding
313
359
  space; row backgrounds extend into the gutter. Outside a surface, the vendor list inset stays;
314
360
  `inset="panel"` also selects the alignment explicitly. Pass flat `items` or named `sections`
315
361
  (`ListBoxSection`), with unique item ids across the whole list. `FE_LIST_PANEL_PADDING` rejects
316
- horizontal padding wrappers around a list or its section caption. Sidebar's expanded and collapsed
362
+ horizontal padding wrappers around a list or its section caption within the nearest painted Grammar surface.
363
+ Sidebar's expanded and collapsed
317
364
  rows also retain HeroUI item padding.
318
365
 
319
366
  ```tsx
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "schema": "starci/grammar-build-stamp@1",
3
3
  "package": "@starci/grammar",
4
- "version": "0.12.0",
4
+ "version": "0.12.3",
5
5
  "algorithm": "starci/grammar-source-digest@1",
6
- "sourceDigest": "sha256:fd2b712405d87230cd1736101068d562483cd3c0b8b4ef4d629bb9944354842f",
7
- "distDigest": "sha256:1a7c5eb6dcb25a1ef5bfba338d3c374fce07a3d1f534fe8f830b66e2ca1893b3",
8
- "builtAt": "2026-10-25T11:48:36.769Z"
6
+ "sourceDigest": "sha256:3aa873b44e3dde843d9ed4dee490afca7a32cefbaba6f9b023943b9b5e7b5ad5",
7
+ "distDigest": "sha256:a0b7ed5f0ebeb59cc7e048c5fde00debef3c1bc496a70f823274dd20d079ded7",
8
+ "builtAt": "2026-10-25T16:22:28.270Z"
9
9
  }
@@ -214,6 +214,11 @@
214
214
  border-radius: var(--field-radius, calc(var(--radius, 0.5rem) * 1.5));
215
215
  }
216
216
 
217
+ /* Owner 2026-10-25: Select has the same 2.5rem field height as Input. */
218
+ .starci-core-select-trigger {
219
+ min-block-size: var(--starci-core-field-min-height, 2.5rem);
220
+ }
221
+
217
222
  /*
218
223
  * ONE FOCUS RING PER FIELD (0.9.14, owner ruling 2026-10-12, FOCUS-1). The ring is drawn once, on the field frame:
219
224
  * the group of SearchField, NumberField, ComboBox and the date fields, the trigger of Select, the control itself
@@ -341,9 +341,11 @@
341
341
 
342
342
  /* ---------- TopBar ---------- */
343
343
  .starci-core-top-bar {
344
+ box-sizing: border-box;
344
345
  display: flex;
345
346
  min-width: 0;
346
- min-block-size: 3.5rem;
347
+ block-size: 4rem;
348
+ min-block-size: 4rem;
347
349
  align-items: center;
348
350
  gap: var(--grammar-row-gap, 0.75rem);
349
351
  padding-block: 0.5rem;
@@ -351,7 +353,7 @@
351
353
  padding-inline-start: max(var(--grammar-page-inset, 1rem), env(safe-area-inset-left));
352
354
  padding-inline-end: max(var(--grammar-page-inset, 1rem), env(safe-area-inset-right));
353
355
  border-block-end: 1px solid var(--separator, var(--border, CanvasText));
354
- background: var(--background, Canvas);
356
+ background: var(--surface, Canvas);
355
357
  color: var(--foreground, CanvasText);
356
358
  }
357
359
 
@@ -673,7 +675,7 @@
673
675
 
674
676
  /*
675
677
  * A square brand mark (Avatar shape="square"): a transparent box with no corner and no clipping; the image is contained, so a round,
676
- * square or wide logo shows whole in its own shape. The monogram fallback keeps its tint (see the lockup) so initials stay legible.
678
+ * square or wide logo shows whole in its own shape.
677
679
  */
678
680
  .starci-core-avatar[data-grammar-avatar-shape="square"] {
679
681
  overflow: visible !important;
@@ -794,10 +796,10 @@
794
796
  white-space: nowrap;
795
797
  }
796
798
 
797
- /* A monogram sits on an accent tint. */
799
+ /* The workspace monogram shares the mark's transparent box and uses the foreground text color. */
798
800
  .starci-core-identity-lockup [data-grammar-avatar-fallback] {
799
- background-color: var(--accent-soft, Canvas) !important;
800
- color: var(--accent-soft-foreground, CanvasText);
801
+ background-color: transparent !important;
802
+ color: var(--foreground, CanvasText) !important;
801
803
  font-weight: 600;
802
804
  }
803
805
 
@@ -415,16 +415,6 @@
415
415
  justify-content: center;
416
416
  }
417
417
 
418
- /* A leading node (an identity mark) sits in a box at least as big as the 20px a glyph gets (the canon icon rule, `Icon` `leading`), centred. */
419
- [data-grammar-menu-leading] {
420
- display: inline-flex;
421
- flex: none;
422
- min-inline-size: 1.25rem;
423
- min-block-size: 1.25rem;
424
- align-items: center;
425
- justify-content: center;
426
- }
427
-
428
418
  [data-grammar-menu-mark] > * {
429
419
  width: 100%;
430
420
  height: 100%;
@@ -21,12 +21,12 @@ export declare const COMMON_GRAMMAR_COMPONENTS: Readonly<{
21
21
  readonly DragItem: ({ children, isDisabled, onDragStart, onDragEnd, isSelected, isInvalid, isDashed, leadingColor }: import("./renderers-navigation.js").DragItemProps) => import("react").JSX.Element;
22
22
  readonly FlowGraph: ({ label, nodes, edges, selectedId, onSelect, height, isInteractive, showControls, layout, emptyLabel, isLoading, className, }: import("./renderers-navigation.js").FlowGraphProps) => import("react").JSX.Element;
23
23
  readonly Footer: ({ label, brand, groups, legal, externalHint, children, className }: import("./renderers-navigation.js").FooterProps) => import("react").JSX.Element;
24
- readonly IdentityLockup: ({ title, subtitle, logoSrc, markShape, onPress, isDisabled }: import("./renderers-navigation.js").IdentityLockupProps) => import("react").JSX.Element;
24
+ readonly IdentityLockup: ({ title, subtitle, logoSrc, markShape, size, onPress, isDisabled }: import("./renderers-navigation.js").IdentityLockupProps) => import("react").JSX.Element;
25
25
  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;
26
26
  readonly Link: ({ children, href, kind, isCurrent, visited, externalHint, externalIcon, isDisabled, onFollow, className, }: import("./renderers-navigation.js").LinkProps) => import("react").JSX.Element;
27
27
  readonly ListBox: ({ label, items, sections, inset, selectionMode, selectedIds, defaultSelectedIds, onSelectionChange, onAction, emptyContent, isLoading, loadingRows, className, }: import("./renderers-navigation.js").ListBoxProps) => import("react").JSX.Element;
28
28
  readonly Pagination: ({ label, page, pageCount, onPageChange, siblingCount, previousLabel, nextLabel, pageLabel, summary, className, }: import("./renderers-navigation.js").PaginationProps) => import("react").JSX.Element;
29
- readonly PlainPressable: ({ children, "aria-label": ariaLabel, onPress, isDisabled, shape, className }: import("./renderers-navigation.js").PlainPressableProps) => import("react").JSX.Element;
29
+ readonly PlainPressable: ({ children, "aria-label": ariaLabel, onPress, isDisabled, shape, size, className }: import("./renderers-navigation.js").PlainPressableProps) => import("react").JSX.Element;
30
30
  readonly Rating: ({ label, value, defaultValue, onChange, max, isReadOnly, isDisabled, valueLabel, icon, name, className, }: import("./renderers-navigation.js").RatingProps) => import("react").JSX.Element;
31
31
  readonly Stepper: ({ label, steps, currentStepId, orientation, onStepSelect, stateLabel, renderMarker, className, isLoading, }: import("./renderers-navigation.js").StepperProps) => import("react").JSX.Element;
32
32
  readonly TagGroup: ({ label, items, selectionMode, selectedIds, defaultSelectedIds, onSelectionChange, onRemove, removeLabel, emptyContent, size, className, }: import("./renderers-navigation.js").TagGroupProps) => import("react").JSX.Element;
@@ -60,7 +60,7 @@ export declare const COMMON_GRAMMAR_COMPONENTS: Readonly<{
60
60
  readonly Form: ({ children, label, id, onSubmit, onReset, action, method, validationErrors, validationBehavior, isPending, }: import("./renderers-forms.js").FormProps) => import("react").JSX.Element;
61
61
  readonly NumberField: ({ id, placeholder, value, defaultValue, onValueChange, minValue, maxValue, step, formatOptions, hideSteppers, variant: requestedVariant, isSkeleton, ...field }: import("./renderers-forms.js").NumberFieldProps) => import("react").JSX.Element;
62
62
  readonly RadioGroup: ({ options, value, defaultValue, onValueChange, orientation, variant: requestedVariant, ...field }: import("./renderers-forms.js").RadioGroupProps) => import("react").JSX.Element;
63
- readonly SearchField: ({ id, placeholder, value, defaultValue, onValueChange, onSubmit, onClear, isPending, clearLabel, variant: requestedVariant, isSkeleton, onBlur, onPaste, autoFocus, ...field }: import("./renderers-forms.js").SearchFieldProps) => import("react").JSX.Element;
63
+ readonly SearchField: ({ id, placeholder, value, defaultValue, onValueChange, onSubmit, onClear, isPending, clearLabel, variant: requestedVariant, size, isSkeleton, onBlur, onPaste, autoFocus, ...field }: import("./renderers-forms.js").SearchFieldProps) => import("react").JSX.Element;
64
64
  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;
65
65
  readonly Select: ({ options, placeholder, value, defaultValue, onValueChange, isPending, isSkeleton, variant: requestedVariant, ...field }: import("./renderers-forms.js").SelectProps) => import("react").JSX.Element;
66
66
  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;
@@ -82,7 +82,7 @@ export declare const COMMON_GRAMMAR_COMPONENTS: Readonly<{
82
82
  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;
83
83
  readonly IconTile: ({ source, artwork, ariaLabel, tone, size, isSkeleton, }: import("./renderers.js").IconTileProps) => import("react").JSX.Element;
84
84
  readonly IncludedMark: ({ className, label, ...props }: import("./renderers.js").IncludedMarkProps) => import("react").JSX.Element;
85
- readonly Input: ({ id, name, label, isLabelHidden, kind: kindName, variant: requestedVariant, 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, onBlur, onPaste, autoFocus, }: import("./renderers.js").InputProps) => import("react").JSX.Element;
85
+ readonly Input: ({ id, name, label, isLabelHidden, kind: kindName, variant: requestedVariant, size, 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, onBlur, onPaste, autoFocus, }: import("./renderers.js").InputProps) => import("react").JSX.Element;
86
86
  readonly Label: ({ id, children, depth, as }: import("./renderers.js").LabelProps) => import("react").DetailedReactHTMLElement<{
87
87
  readonly id: string | undefined;
88
88
  readonly className: string;
@@ -110,7 +110,7 @@ export declare const COMMON_GRAMMAR_COMPONENTS: Readonly<{
110
110
  readonly Rail: (props: import("./renderers.js").RailProps) => import("react").JSX.Element;
111
111
  readonly RankArtwork: ({ className, kind, label, ...props }: import("./renderers.js").RankArtworkProps) => import("react").JSX.Element;
112
112
  readonly Region: (props: import("./renderers.js").RegionProps) => import("react").JSX.Element;
113
- readonly RelativeTime: ({ dateTime, locale, mode, fallback, id, size, tone }: import("./renderers.js").RelativeTimeProps) => import("react").JSX.Element;
113
+ readonly RelativeTime: ({ dateTime, locale, mode, format, expiredLabel, template, fallback, id, size, tone }: import("./renderers.js").RelativeTimeProps) => import("react").JSX.Element;
114
114
  readonly SectionHeader: ({ title, description, eyebrow, action, count, meta, level, className, id, composition, isSkeleton, }: import("./renderers.js").SectionHeaderProps) => import("react").JSX.Element;
115
115
  readonly Sidebar: ({ label, groups, selectedKey, presentation, isCollapsed, collapseLabel, expandLabel, toggleSource, header, footer, onAction, onCollapsedChange, }: import("./renderers.js").SidebarProps) => import("react").JSX.Element;
116
116
  readonly StateMark: (props: import("./renderers.js").StateMarkProps) => import("react").JSX.Element | null;
@@ -123,7 +123,7 @@ export declare const COMMON_GRAMMAR_COMPONENTS: Readonly<{
123
123
  readonly Tabs: (props: import("./renderers.js").TabsProps) => import("react").JSX.Element;
124
124
  readonly Text: ({ as: Element, id, children, startContent, size, tone, weight, live, overflow, isSkeleton, isSuperseded, parentEmphasis, }: import("./renderers.js").TextProps) => import("react").JSX.Element;
125
125
  readonly TextAction: (props: import("./renderers.js").TextActionProps) => import("react").JSX.Element;
126
- readonly Tooltip: ({ content, children, placement, }: import("./renderers.js").TooltipProps) => import("react").JSX.Element;
126
+ readonly Tooltip: ({ content, children, placement }: import("./renderers.js").TooltipProps) => import("react").JSX.Element;
127
127
  readonly VerticalScrollRegion: (props: import("./renderers.js").VerticalScrollRegionProps) => import("react").JSX.Element;
128
128
  readonly WorkspaceShell: (props: import("./renderers.js").WorkspaceShellProps) => import("react").JSX.Element;
129
129
  }>;
@@ -33,7 +33,7 @@ export declare const COMMON_FORMS_COMPONENTS: Readonly<{
33
33
  readonly Form: ({ children, label, id, onSubmit, onReset, action, method, validationErrors, validationBehavior, isPending, }: import("./renderers-forms.js").FormProps) => import("react").JSX.Element;
34
34
  readonly NumberField: ({ id, placeholder, value, defaultValue, onValueChange, minValue, maxValue, step, formatOptions, hideSteppers, variant: requestedVariant, isSkeleton, ...field }: import("./renderers-forms.js").NumberFieldProps) => import("react").JSX.Element;
35
35
  readonly RadioGroup: ({ options, value, defaultValue, onValueChange, orientation, variant: requestedVariant, ...field }: import("./renderers-forms.js").RadioGroupProps) => import("react").JSX.Element;
36
- readonly SearchField: ({ id, placeholder, value, defaultValue, onValueChange, onSubmit, onClear, isPending, clearLabel, variant: requestedVariant, isSkeleton, onBlur, onPaste, autoFocus, ...field }: import("./renderers-forms.js").SearchFieldProps) => import("react").JSX.Element;
36
+ readonly SearchField: ({ id, placeholder, value, defaultValue, onValueChange, onSubmit, onClear, isPending, clearLabel, variant: requestedVariant, size, isSkeleton, onBlur, onPaste, autoFocus, ...field }: import("./renderers-forms.js").SearchFieldProps) => import("react").JSX.Element;
37
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
38
  readonly Select: ({ options, placeholder, value, defaultValue, onValueChange, isPending, isSkeleton, variant: requestedVariant, ...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;
@@ -38,12 +38,12 @@ export declare const COMMON_NAVIGATION_COMPONENTS: Readonly<{
38
38
  readonly DragItem: ({ children, isDisabled, onDragStart, onDragEnd, isSelected, isInvalid, isDashed, leadingColor }: import("./renderers-navigation.js").DragItemProps) => import("react").JSX.Element;
39
39
  readonly FlowGraph: ({ label, nodes, edges, selectedId, onSelect, height, isInteractive, showControls, layout, emptyLabel, isLoading, className, }: import("./renderers-navigation.js").FlowGraphProps) => import("react").JSX.Element;
40
40
  readonly Footer: ({ label, brand, groups, legal, externalHint, children, className }: import("./renderers-navigation.js").FooterProps) => import("react").JSX.Element;
41
- readonly IdentityLockup: ({ title, subtitle, logoSrc, markShape, onPress, isDisabled }: import("./renderers-navigation.js").IdentityLockupProps) => import("react").JSX.Element;
41
+ readonly IdentityLockup: ({ title, subtitle, logoSrc, markShape, size, onPress, isDisabled }: import("./renderers-navigation.js").IdentityLockupProps) => import("react").JSX.Element;
42
42
  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;
43
43
  readonly Link: ({ children, href, kind, isCurrent, visited, externalHint, externalIcon, isDisabled, onFollow, className, }: import("./renderers-navigation.js").LinkProps) => import("react").JSX.Element;
44
44
  readonly ListBox: ({ label, items, sections, inset, selectionMode, selectedIds, defaultSelectedIds, onSelectionChange, onAction, emptyContent, isLoading, loadingRows, className, }: import("./renderers-navigation.js").ListBoxProps) => import("react").JSX.Element;
45
45
  readonly Pagination: ({ label, page, pageCount, onPageChange, siblingCount, previousLabel, nextLabel, pageLabel, summary, className, }: import("./renderers-navigation.js").PaginationProps) => import("react").JSX.Element;
46
- readonly PlainPressable: ({ children, "aria-label": ariaLabel, onPress, isDisabled, shape, className }: import("./renderers-navigation.js").PlainPressableProps) => import("react").JSX.Element;
46
+ readonly PlainPressable: ({ children, "aria-label": ariaLabel, onPress, isDisabled, shape, size, className }: import("./renderers-navigation.js").PlainPressableProps) => import("react").JSX.Element;
47
47
  readonly Rating: ({ label, value, defaultValue, onChange, max, isReadOnly, isDisabled, valueLabel, icon, name, className, }: import("./renderers-navigation.js").RatingProps) => import("react").JSX.Element;
48
48
  readonly Stepper: ({ label, steps, currentStepId, orientation, onStepSelect, stateLabel, renderMarker, className, isLoading, }: import("./renderers-navigation.js").StepperProps) => import("react").JSX.Element;
49
49
  readonly TagGroup: ({ label, items, selectionMode, selectedIds, defaultSelectedIds, onSelectionChange, onRemove, removeLabel, emptyContent, size, className, }: import("./renderers-navigation.js").TagGroupProps) => import("react").JSX.Element;
@@ -16,7 +16,7 @@ export { Input, type InputKind, type InputProps, type InputVariant } from "../co
16
16
  export { PressableField, type PressableFieldProps } from "../core/primitive/PressableField/index.js";
17
17
  export { Progress, type ProgressProps } from "../core/primitive/Progress/index.js";
18
18
  export { Text, type TextAs, type TextLive, type TextProps, type TextSize, type TextTone, type TextWeight } from "../core/primitive/Text/index.js";
19
- export { RelativeTime, type RelativeTimeMode, type RelativeTimeProps } from "../core/primitive/RelativeTime/index.js";
19
+ export { RelativeTime, type RelativeTimeFormat, type RelativeTimeMode, type RelativeTimeProps } from "../core/primitive/RelativeTime/index.js";
20
20
  export { TextAction, type TextActionAppearance, type TextActionProps, type TextActionSize } from "../core/primitive/TextAction/index.js";
21
21
  export { SectionHeader, type SectionHeaderProps } from "../core/primitive/SectionHeader/index.js";
22
22
  export { MediaFrame, type MediaFrameProps } from "../core/primitive/MediaFrame/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../src/common/renderers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../src/common/renderers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../src/common/renderers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../src/common/renderers.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export declare const RULE_FAMILY_COUNTS: Readonly<{
12
12
  readonly COVERAGE: 1;
13
13
  readonly CTA: 5;
14
14
  readonly DISCIPLINE: 3;
15
+ readonly "FE-APP-SHELL": 7;
15
16
  readonly FEEDBACK: 3;
16
17
  readonly FLOW: 5;
17
18
  readonly FOCUS: 6;
@@ -1 +1 @@
1
- {"version":3,"file":"rule-catalog.generated.d.ts","sourceRoot":"","sources":["../../src/common/rule-catalog.generated.ts"],"names":[],"mappings":"AAQA,qFAAqF;AACrF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCpB,CAAA;AAEX,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,MAAM,CA4MnD,CAAA"}
1
+ {"version":3,"file":"rule-catalog.generated.d.ts","sourceRoot":"","sources":["../../src/common/rule-catalog.generated.ts"],"names":[],"mappings":"AAQA,qFAAqF;AACrF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCpB,CAAA;AAEX,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,MAAM,CAoNnD,CAAA"}
@@ -3,7 +3,7 @@
3
3
  * Regenerate with node packages/grammar/scripts/generate-rule-catalog.mjs [knowledgeDir].
4
4
  * Canonical declarations are rules[].id in the YAML knowledge topics.
5
5
  * References, scale rows, cases and closed addresses contribute no additional rules.
6
- * 32 families, 171 rules.
6
+ * 33 families, 178 rules.
7
7
  */
8
8
  /** The number of declared rule ids in each family, never expanded into addresses. */
9
9
  export const RULE_FAMILY_COUNTS = Object.freeze({
@@ -19,6 +19,7 @@ export const RULE_FAMILY_COUNTS = Object.freeze({
19
19
  "COVERAGE": 1, // ui/composition/coverage.yaml
20
20
  "CTA": 5, // ui/composition/cta.yaml
21
21
  "DISCIPLINE": 3, // ui/composition/taste.yaml
22
+ "FE-APP-SHELL": 7, // ui/composition/app-shell.yaml
22
23
  "FEEDBACK": 3, // ui/composition/feedback.yaml
23
24
  "FLOW": 5, // ui/presentation/text-flow.yaml
24
25
  "FOCUS": 6, // ui/proof/focus.yaml
@@ -97,6 +98,14 @@ export const CANONICAL_RULE_IDS = Object.freeze([
97
98
  "DISCIPLINE-1",
98
99
  "DISCIPLINE-2",
99
100
  "DISCIPLINE-3",
101
+ // FE-APP-SHELL
102
+ "FE-APP-SHELL-1",
103
+ "FE-APP-SHELL-2",
104
+ "FE-APP-SHELL-3",
105
+ "FE-APP-SHELL-4",
106
+ "FE-APP-SHELL-5",
107
+ "FE-APP-SHELL-6",
108
+ "FE-APP-SHELL-7",
100
109
  // FEEDBACK
101
110
  "FEEDBACK-1",
102
111
  "FEEDBACK-2",
@@ -1 +1 @@
1
- {"version":3,"file":"rule-catalog.generated.js","sourceRoot":"","sources":["../../src/common/rule-catalog.generated.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rule-catalog.generated.js","sourceRoot":"","sources":["../../src/common/rule-catalog.generated.ts"],"names":[],"mappings":"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"}