@starci/grammar 0.2.0 → 0.4.1

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 (282) hide show
  1. package/README.md +54 -30
  2. package/dist/common/conformance.d.ts +31 -0
  3. package/dist/common/conformance.d.ts.map +1 -0
  4. package/dist/common/conformance.js +33 -0
  5. package/dist/common/conformance.js.map +1 -0
  6. package/dist/common/index.d.ts +5 -73
  7. package/dist/common/index.d.ts.map +1 -1
  8. package/dist/common/index.js +5 -202
  9. package/dist/common/index.js.map +1 -1
  10. package/dist/common/registry.d.ts +79 -0
  11. package/dist/common/registry.d.ts.map +1 -0
  12. package/dist/common/registry.js +34 -0
  13. package/dist/common/registry.js.map +1 -0
  14. package/dist/common/renderers.d.ts +41 -0
  15. package/dist/common/renderers.d.ts.map +1 -0
  16. package/dist/common/renderers.js +44 -0
  17. package/dist/common/renderers.js.map +1 -0
  18. package/dist/common/rule-catalog.generated.d.ts +40 -0
  19. package/dist/common/rule-catalog.generated.d.ts.map +1 -0
  20. package/dist/common/rule-catalog.generated.js +230 -0
  21. package/dist/common/rule-catalog.generated.js.map +1 -0
  22. package/dist/common/spacing.d.ts +20 -0
  23. package/dist/common/spacing.d.ts.map +1 -0
  24. package/dist/common/spacing.js +18 -0
  25. package/dist/common/spacing.js.map +1 -0
  26. package/dist/common/state.d.ts +6 -0
  27. package/dist/common/state.d.ts.map +1 -0
  28. package/dist/common/state.js +11 -0
  29. package/dist/common/state.js.map +1 -0
  30. package/dist/common/styles.css +1566 -2
  31. package/dist/core/LeadingNumber.d.ts +12 -0
  32. package/dist/core/LeadingNumber.d.ts.map +1 -0
  33. package/dist/core/LeadingNumber.js +10 -0
  34. package/dist/core/LeadingNumber.js.map +1 -0
  35. package/dist/core/OtpInput.d.ts +12 -0
  36. package/dist/core/OtpInput.d.ts.map +1 -0
  37. package/dist/core/OtpInput.js +22 -0
  38. package/dist/core/OtpInput.js.map +1 -0
  39. package/dist/core/StateMark.d.ts +3 -5
  40. package/dist/core/StateMark.d.ts.map +1 -1
  41. package/dist/core/StateMark.js +3 -3
  42. package/dist/core/StateMark.js.map +1 -1
  43. package/dist/core/branch/MarkdownArticle/classNames.d.ts +9 -0
  44. package/dist/core/branch/MarkdownArticle/classNames.d.ts.map +1 -0
  45. package/dist/core/branch/MarkdownArticle/classNames.js +10 -0
  46. package/dist/core/branch/MarkdownArticle/classNames.js.map +1 -0
  47. package/dist/core/branch/MarkdownArticle/index.d.ts +30 -0
  48. package/dist/core/branch/MarkdownArticle/index.d.ts.map +1 -0
  49. package/dist/core/branch/MarkdownArticle/index.js +12 -0
  50. package/dist/core/branch/MarkdownArticle/index.js.map +1 -0
  51. package/dist/core/branch/Rail/classNames.d.ts +9 -0
  52. package/dist/core/branch/Rail/classNames.d.ts.map +1 -0
  53. package/dist/core/branch/Rail/classNames.js +10 -0
  54. package/dist/core/branch/Rail/classNames.js.map +1 -0
  55. package/dist/core/branch/Rail/index.d.ts +7 -6
  56. package/dist/core/branch/Rail/index.d.ts.map +1 -1
  57. package/dist/core/branch/Rail/index.js +16 -5
  58. package/dist/core/branch/Rail/index.js.map +1 -1
  59. package/dist/core/branch/Subnav/classNames.d.ts +8 -0
  60. package/dist/core/branch/Subnav/classNames.d.ts.map +1 -0
  61. package/dist/core/branch/Subnav/classNames.js +9 -0
  62. package/dist/core/branch/Subnav/classNames.js.map +1 -0
  63. package/dist/core/branch/Subnav/index.d.ts +17 -0
  64. package/dist/core/branch/Subnav/index.d.ts.map +1 -0
  65. package/dist/core/branch/Subnav/index.js +6 -0
  66. package/dist/core/branch/Subnav/index.js.map +1 -0
  67. package/dist/core/branch/SurfaceAccordionCard/classNames.d.ts +19 -0
  68. package/dist/core/branch/SurfaceAccordionCard/classNames.d.ts.map +1 -0
  69. package/dist/core/branch/SurfaceAccordionCard/classNames.js +21 -0
  70. package/dist/core/branch/SurfaceAccordionCard/classNames.js.map +1 -0
  71. package/dist/core/branch/SurfaceAccordionCard/index.d.ts +44 -0
  72. package/dist/core/branch/SurfaceAccordionCard/index.d.ts.map +1 -0
  73. package/dist/core/branch/SurfaceAccordionCard/index.js +42 -0
  74. package/dist/core/branch/SurfaceAccordionCard/index.js.map +1 -0
  75. package/dist/core/branch/SurfaceCard/classNames.d.ts +23 -0
  76. package/dist/core/branch/SurfaceCard/classNames.d.ts.map +1 -0
  77. package/dist/core/branch/SurfaceCard/classNames.js +23 -0
  78. package/dist/core/branch/SurfaceCard/classNames.js.map +1 -0
  79. package/dist/core/branch/SurfaceCard/index.d.ts +14 -7
  80. package/dist/core/branch/SurfaceCard/index.d.ts.map +1 -1
  81. package/dist/core/branch/SurfaceCard/index.js +18 -4
  82. package/dist/core/branch/SurfaceCard/index.js.map +1 -1
  83. package/dist/core/branch/SurfaceListCard/classNames.d.ts +13 -0
  84. package/dist/core/branch/SurfaceListCard/classNames.d.ts.map +1 -0
  85. package/dist/core/branch/SurfaceListCard/classNames.js +14 -0
  86. package/dist/core/branch/SurfaceListCard/classNames.js.map +1 -0
  87. package/dist/core/branch/SurfaceListCard/index.d.ts +5 -19
  88. package/dist/core/branch/SurfaceListCard/index.d.ts.map +1 -1
  89. package/dist/core/branch/SurfaceListCard/index.js +6 -8
  90. package/dist/core/branch/SurfaceListCard/index.js.map +1 -1
  91. package/dist/core/branch/Tabs/classNames.d.ts +11 -0
  92. package/dist/core/branch/Tabs/classNames.d.ts.map +1 -0
  93. package/dist/core/branch/Tabs/classNames.js +13 -0
  94. package/dist/core/branch/Tabs/classNames.js.map +1 -0
  95. package/dist/core/branch/Tabs/index.d.ts +22 -0
  96. package/dist/core/branch/Tabs/index.d.ts.map +1 -0
  97. package/dist/core/branch/Tabs/index.js +28 -0
  98. package/dist/core/branch/Tabs/index.js.map +1 -0
  99. package/dist/core/branch/Tooltip/classNames.d.ts +3 -0
  100. package/dist/core/branch/Tooltip/classNames.d.ts.map +1 -0
  101. package/dist/core/branch/Tooltip/classNames.js +4 -0
  102. package/dist/core/branch/Tooltip/classNames.js.map +1 -0
  103. package/dist/core/branch/Tooltip/index.d.ts +18 -0
  104. package/dist/core/branch/Tooltip/index.d.ts.map +1 -0
  105. package/dist/core/branch/Tooltip/index.js +14 -0
  106. package/dist/core/branch/Tooltip/index.js.map +1 -0
  107. package/dist/core/classNames.d.ts +23 -0
  108. package/dist/core/classNames.d.ts.map +1 -0
  109. package/dist/core/classNames.js +24 -0
  110. package/dist/core/classNames.js.map +1 -0
  111. package/dist/core/composite/EmptyNotice/index.d.ts +17 -0
  112. package/dist/core/composite/EmptyNotice/index.d.ts.map +1 -0
  113. package/dist/core/composite/EmptyNotice/index.js +7 -0
  114. package/dist/core/composite/EmptyNotice/index.js.map +1 -0
  115. package/dist/core/composite/HorizontalScrollRegion/index.d.ts +9 -0
  116. package/dist/core/composite/HorizontalScrollRegion/index.d.ts.map +1 -0
  117. package/dist/core/composite/HorizontalScrollRegion/index.js +10 -0
  118. package/dist/core/composite/HorizontalScrollRegion/index.js.map +1 -0
  119. package/dist/core/composite/StaticStateRow/index.d.ts +1 -5
  120. package/dist/core/composite/StaticStateRow/index.d.ts.map +1 -1
  121. package/dist/core/composite/StaticStateRow/index.js +4 -3
  122. package/dist/core/composite/StaticStateRow/index.js.map +1 -1
  123. package/dist/core/composite/VerticalScrollRegion/index.d.ts +10 -0
  124. package/dist/core/composite/VerticalScrollRegion/index.d.ts.map +1 -0
  125. package/dist/core/composite/VerticalScrollRegion/index.js +10 -0
  126. package/dist/core/composite/VerticalScrollRegion/index.js.map +1 -0
  127. package/dist/core/composition/ChatWorkspace/classNames.d.ts +30 -0
  128. package/dist/core/composition/ChatWorkspace/classNames.d.ts.map +1 -0
  129. package/dist/core/composition/ChatWorkspace/classNames.js +31 -0
  130. package/dist/core/composition/ChatWorkspace/classNames.js.map +1 -0
  131. package/dist/core/composition/ChatWorkspace/index.d.ts +48 -0
  132. package/dist/core/composition/ChatWorkspace/index.d.ts.map +1 -0
  133. package/dist/core/composition/ChatWorkspace/index.js +40 -0
  134. package/dist/core/composition/ChatWorkspace/index.js.map +1 -0
  135. package/dist/core/composition/NavigationFeatureNav/classNames.d.ts +9 -0
  136. package/dist/core/composition/NavigationFeatureNav/classNames.d.ts.map +1 -0
  137. package/dist/core/composition/NavigationFeatureNav/classNames.js +10 -0
  138. package/dist/core/composition/NavigationFeatureNav/classNames.js.map +1 -0
  139. package/dist/core/composition/NavigationFeatureNav/index.d.ts +26 -0
  140. package/dist/core/composition/NavigationFeatureNav/index.d.ts.map +1 -0
  141. package/dist/core/composition/NavigationFeatureNav/index.js +13 -0
  142. package/dist/core/composition/NavigationFeatureNav/index.js.map +1 -0
  143. package/dist/core/composition/PrimaryRailLayout/index.d.ts +14 -0
  144. package/dist/core/composition/PrimaryRailLayout/index.d.ts.map +1 -0
  145. package/dist/core/composition/PrimaryRailLayout/index.js +8 -0
  146. package/dist/core/composition/PrimaryRailLayout/index.js.map +1 -0
  147. package/dist/core/composition/Sidebar/index.d.ts +31 -0
  148. package/dist/core/composition/Sidebar/index.d.ts.map +1 -0
  149. package/dist/core/composition/Sidebar/index.js +40 -0
  150. package/dist/core/composition/Sidebar/index.js.map +1 -0
  151. package/dist/core/composition/WorkspaceShell/classNames.d.ts +11 -0
  152. package/dist/core/composition/WorkspaceShell/classNames.d.ts.map +1 -0
  153. package/dist/core/composition/WorkspaceShell/classNames.js +12 -0
  154. package/dist/core/composition/WorkspaceShell/classNames.js.map +1 -0
  155. package/dist/core/composition/WorkspaceShell/index.d.ts +67 -0
  156. package/dist/core/composition/WorkspaceShell/index.d.ts.map +1 -0
  157. package/dist/core/composition/WorkspaceShell/index.js +20 -0
  158. package/dist/core/composition/WorkspaceShell/index.js.map +1 -0
  159. package/dist/core/dna.d.ts +180 -0
  160. package/dist/core/dna.d.ts.map +1 -0
  161. package/dist/core/dna.js +175 -0
  162. package/dist/core/dna.js.map +1 -0
  163. package/dist/core/index.d.ts +59 -10
  164. package/dist/core/index.d.ts.map +1 -1
  165. package/dist/core/index.js +27 -10
  166. package/dist/core/index.js.map +1 -1
  167. package/dist/core/primitive/Badge/index.d.ts +12 -0
  168. package/dist/core/primitive/Badge/index.d.ts.map +1 -0
  169. package/dist/core/primitive/Badge/index.js +15 -0
  170. package/dist/core/primitive/Badge/index.js.map +1 -0
  171. package/dist/core/primitive/Button/index.d.ts +52 -0
  172. package/dist/core/primitive/Button/index.d.ts.map +1 -0
  173. package/dist/core/primitive/Button/index.js +26 -0
  174. package/dist/core/primitive/Button/index.js.map +1 -0
  175. package/dist/core/primitive/Divider/index.d.ts +7 -0
  176. package/dist/core/primitive/Divider/index.d.ts.map +1 -0
  177. package/dist/core/primitive/Divider/index.js +5 -0
  178. package/dist/core/primitive/Divider/index.js.map +1 -0
  179. package/dist/core/primitive/GrammarRoot/index.d.ts +10 -0
  180. package/dist/core/primitive/GrammarRoot/index.d.ts.map +1 -0
  181. package/dist/core/primitive/GrammarRoot/index.js +5 -0
  182. package/dist/core/primitive/GrammarRoot/index.js.map +1 -0
  183. package/dist/core/primitive/Heading/index.d.ts +15 -0
  184. package/dist/core/primitive/Heading/index.d.ts.map +1 -0
  185. package/dist/core/primitive/Heading/index.js +26 -0
  186. package/dist/core/primitive/Heading/index.js.map +1 -0
  187. package/dist/core/primitive/Icon/index.d.ts +31 -0
  188. package/dist/core/primitive/Icon/index.d.ts.map +1 -0
  189. package/dist/core/primitive/Icon/index.js +23 -0
  190. package/dist/core/primitive/Icon/index.js.map +1 -0
  191. package/dist/core/primitive/IconButton/index.d.ts +13 -0
  192. package/dist/core/primitive/IconButton/index.d.ts.map +1 -0
  193. package/dist/core/primitive/IconButton/index.js +9 -0
  194. package/dist/core/primitive/IconButton/index.js.map +1 -0
  195. package/dist/core/primitive/IconTile/index.d.ts +17 -0
  196. package/dist/core/primitive/IconTile/index.d.ts.map +1 -0
  197. package/dist/core/primitive/IconTile/index.js +32 -0
  198. package/dist/core/primitive/IconTile/index.js.map +1 -0
  199. package/dist/core/primitive/IncludedMark/index.d.ts +10 -0
  200. package/dist/core/primitive/IncludedMark/index.d.ts.map +1 -0
  201. package/dist/core/primitive/IncludedMark/index.js +8 -0
  202. package/dist/core/primitive/IncludedMark/index.js.map +1 -0
  203. package/dist/core/primitive/Input/index.d.ts +31 -0
  204. package/dist/core/primitive/Input/index.d.ts.map +1 -0
  205. package/dist/core/primitive/Input/index.js +27 -0
  206. package/dist/core/primitive/Input/index.js.map +1 -0
  207. package/dist/core/primitive/Label/classNames.d.ts +12 -0
  208. package/dist/core/primitive/Label/classNames.d.ts.map +1 -0
  209. package/dist/core/primitive/Label/classNames.js +13 -0
  210. package/dist/core/primitive/Label/classNames.js.map +1 -0
  211. package/dist/core/primitive/Label/index.d.ts +11 -0
  212. package/dist/core/primitive/Label/index.d.ts.map +1 -0
  213. package/dist/core/primitive/Label/index.js +14 -0
  214. package/dist/core/primitive/Label/index.js.map +1 -0
  215. package/dist/core/primitive/MediaFrame/index.d.ts +15 -0
  216. package/dist/core/primitive/MediaFrame/index.d.ts.map +1 -0
  217. package/dist/core/primitive/MediaFrame/index.js +8 -0
  218. package/dist/core/primitive/MediaFrame/index.js.map +1 -0
  219. package/dist/core/primitive/PageContainer/index.d.ts +9 -0
  220. package/dist/core/primitive/PageContainer/index.d.ts.map +1 -0
  221. package/dist/core/primitive/PageContainer/index.js +8 -0
  222. package/dist/core/primitive/PageContainer/index.js.map +1 -0
  223. package/dist/core/primitive/Progress/index.d.ts +11 -0
  224. package/dist/core/primitive/Progress/index.d.ts.map +1 -0
  225. package/dist/core/primitive/Progress/index.js +13 -0
  226. package/dist/core/primitive/Progress/index.js.map +1 -0
  227. package/dist/core/primitive/RankArtwork/index.d.ts +12 -0
  228. package/dist/core/primitive/RankArtwork/index.d.ts.map +1 -0
  229. package/dist/core/primitive/RankArtwork/index.js +14 -0
  230. package/dist/core/primitive/RankArtwork/index.js.map +1 -0
  231. package/dist/core/primitive/SectionHeader/index.d.ts +15 -0
  232. package/dist/core/primitive/SectionHeader/index.d.ts.map +1 -0
  233. package/dist/core/primitive/SectionHeader/index.js +6 -0
  234. package/dist/core/primitive/SectionHeader/index.js.map +1 -0
  235. package/dist/core/primitive/SurfaceCopyGroup/index.d.ts +7 -0
  236. package/dist/core/primitive/SurfaceCopyGroup/index.d.ts.map +1 -0
  237. package/dist/core/primitive/SurfaceCopyGroup/index.js +5 -0
  238. package/dist/core/primitive/SurfaceCopyGroup/index.js.map +1 -0
  239. package/dist/core/primitive/Text/index.d.ts +25 -0
  240. package/dist/core/primitive/Text/index.d.ts.map +1 -0
  241. package/dist/core/primitive/Text/index.js +57 -0
  242. package/dist/core/primitive/Text/index.js.map +1 -0
  243. package/dist/core/primitive/TextAction/index.d.ts +45 -0
  244. package/dist/core/primitive/TextAction/index.d.ts.map +1 -0
  245. package/dist/core/primitive/TextAction/index.js +112 -0
  246. package/dist/core/primitive/TextAction/index.js.map +1 -0
  247. package/dist/core/primitive/actionStyles.d.ts +5 -0
  248. package/dist/core/primitive/actionStyles.d.ts.map +1 -0
  249. package/dist/core/primitive/actionStyles.js +19 -0
  250. package/dist/core/primitive/actionStyles.js.map +1 -0
  251. package/dist/core/state.d.ts +4 -4
  252. package/dist/core/state.d.ts.map +1 -1
  253. package/dist/core/state.js +4 -4
  254. package/dist/core/state.js.map +1 -1
  255. package/dist/core/styles.css +152 -225
  256. package/dist/heritage/index.d.ts +27 -0
  257. package/dist/heritage/index.d.ts.map +1 -0
  258. package/dist/heritage/index.js +44 -0
  259. package/dist/heritage/index.js.map +1 -0
  260. package/dist/heritage/styles.css +165 -0
  261. package/dist/offset-pop/index.d.ts +9 -263
  262. package/dist/offset-pop/index.d.ts.map +1 -1
  263. package/dist/offset-pop/index.js +35 -63
  264. package/dist/offset-pop/index.js.map +1 -1
  265. package/dist/offset-pop/styles.css +292 -393
  266. package/package.json +78 -72
  267. package/dist/core/contracts.d.ts +0 -190
  268. package/dist/core/contracts.d.ts.map +0 -1
  269. package/dist/core/contracts.js +0 -145
  270. package/dist/core/contracts.js.map +0 -1
  271. package/dist/core/grammar.d.ts +0 -18
  272. package/dist/core/grammar.d.ts.map +0 -1
  273. package/dist/core/grammar.js +0 -27
  274. package/dist/core/grammar.js.map +0 -1
  275. package/dist/core/layout.d.ts +0 -9
  276. package/dist/core/layout.d.ts.map +0 -1
  277. package/dist/core/layout.js +0 -43
  278. package/dist/core/layout.js.map +0 -1
  279. package/dist/core/rules.d.ts +0 -63
  280. package/dist/core/rules.d.ts.map +0 -1
  281. package/dist/core/rules.js +0 -66
  282. package/dist/core/rules.js.map +0 -1
@@ -1,242 +1,169 @@
1
- @layer starci-grammar-core {
2
- .starci-core-surface-card,
3
- .starci-core-surface-list {
4
- container-name: starci-core-surface;
5
- container-type: inline-size;
6
- display: flex;
7
- min-width: 0;
8
- width: 100%;
9
- flex-direction: column;
10
- gap: var(--starci-core-section-gap, 0.75rem);
11
- }
12
-
13
- .starci-core-surface-label {
14
- display: flex;
15
- min-width: 0;
16
- align-items: baseline;
17
- justify-content: space-between;
18
- gap: var(--starci-core-inline-gap, 0.5rem);
19
- }
20
-
21
- .starci-core-surface-label > :first-child {
22
- min-width: 0;
23
- margin: 0;
24
- }
25
-
26
- .starci-core-surface {
27
- position: relative;
28
- min-width: 0;
29
- overflow: hidden;
30
- border-radius: var(--starci-core-surface-radius, 1rem);
31
- background: var(--surface, Canvas);
32
- color: var(--surface-foreground, CanvasText);
33
- }
34
-
35
- .starci-core-surface[data-grammar-surface-depth="top"] {
36
- border: 0;
37
- box-shadow: var(--starci-core-surface-shadow, var(--shadow-surface, 0 1px 3px rgb(0 0 0 / 0.16)));
38
- }
39
-
40
- .starci-core-surface[data-grammar-surface-depth="nested"] {
41
- border: 1px solid var(--border, GrayText);
42
- box-shadow: none;
43
- }
1
+ @import "../common/styles.css";
2
+
3
+ @layer starci-grammar-core {
4
+ /*
5
+ * StarCi visual DNA is opt-in through GrammarRoot. It supplies a complete,
6
+ * portable semantic theme while keeping product/UI laws out of CSS.
7
+ */
8
+ .grammar-common-root[data-grammar-family="core"] {
9
+ color-scheme: light;
10
+
11
+ --starci-core-accent: #7547ff;
12
+ --starci-core-accent-foreground: oklch(100% 0 0);
13
+ --starci-core-focus: #7248ff;
14
+ --starci-core-canvas: oklch(97.02% 0.0015 354.13);
15
+ --starci-core-surface: oklch(100% 0.0008 354.13);
16
+ --starci-core-surface-secondary: oklch(95.24% 0.0012 354.13);
17
+ --starci-core-foreground: oklch(21.03% 0.0015 354.13);
18
+ --starci-core-muted: oklch(55.17% 0.003 354.13);
19
+ --starci-core-border: oklch(90% 0.0015 354.13);
20
+ --starci-core-separator: oklch(92% 0.0015 354.13);
21
+ --starci-core-success: oklch(73.29% 0.1941 162.85);
22
+ --starci-core-success-foreground: oklch(21.03% 0.0059 162.85);
23
+ --starci-core-warning: oklch(78.19% 0.159 84.37);
24
+ --starci-core-warning-foreground: oklch(21.03% 0.0059 84.37);
25
+ --starci-core-danger: oklch(65.32% 0.2335 37.78);
26
+ --starci-core-danger-foreground: oklch(99.11% 0 0);
27
+ --starci-core-info: oklch(72% 0.17 250);
28
+ --starci-core-info-foreground: oklch(21.03% 0.0059 250);
29
+ --starci-core-page-measure: 80rem;
30
+ --starci-core-reading-measure: 72ch;
31
+ --starci-core-page-inset: var(--grammar-page-inset);
32
+ --starci-core-region-gap: var(--grammar-region-gap);
33
+ --starci-core-section-gap: var(--grammar-section-gap);
34
+ --starci-core-inline-gap: var(--grammar-inline-gap);
35
+ --starci-core-row-gap: var(--grammar-row-gap);
36
+ --starci-core-surface-radius: 1rem;
37
+ --starci-core-control-radius: 0.75rem;
38
+ --starci-core-pill-radius: 999px;
39
+ --starci-core-surface-shadow: 0 8px 28px oklch(21.03% 0.0059 354.13 / 0.07);
40
+ --starci-core-motion-duration: 180ms;
41
+ --starci-core-motion-easing: cubic-bezier(0.2, 0, 0, 1);
42
+
43
+ /* HeroUI and existing Grammar anatomy resolve through the same DNA. */
44
+ --accent: var(--starci-core-accent);
45
+ --accent-foreground: var(--starci-core-accent-foreground);
46
+ --focus: var(--starci-core-focus);
47
+ --background: var(--starci-core-canvas);
48
+ --foreground: var(--starci-core-foreground);
49
+ --surface: var(--starci-core-surface);
50
+ --surface-foreground: var(--starci-core-foreground);
51
+ --surface-secondary: var(--starci-core-surface-secondary);
52
+ --surface-secondary-foreground: var(--starci-core-foreground);
53
+ --muted: var(--starci-core-muted);
54
+ --border: var(--starci-core-border);
55
+ --separator: var(--starci-core-separator);
56
+ --success: var(--starci-core-success);
57
+ --success-foreground: var(--starci-core-success-foreground);
58
+ --warning: var(--starci-core-warning);
59
+ --warning-foreground: var(--starci-core-warning-foreground);
60
+ --danger: var(--starci-core-danger);
61
+ --danger-foreground: var(--starci-core-danger-foreground);
62
+ --info: var(--starci-core-info);
63
+ --info-foreground: var(--starci-core-info-foreground);
64
+ --field-background: var(--starci-core-surface);
65
+ --field-border: transparent;
66
+ --field-foreground: var(--starci-core-foreground);
67
+ --field-placeholder: var(--starci-core-muted);
68
+ --radius: var(--starci-core-control-radius);
69
+ --field-radius: var(--starci-core-control-radius);
70
+ --shadow-surface: var(--starci-core-surface-shadow);
44
71
 
45
- .starci-core-surface-content {
46
72
  min-width: 0;
47
- padding: var(--starci-core-surface-inset, 1rem);
48
- }
49
-
50
- .starci-core-surface.starci-core-frameless-surface {
51
- position: relative;
52
- min-width: 0;
53
- overflow: visible;
54
- border: 0;
55
- border-radius: 0;
56
- background: transparent;
57
- box-shadow: none;
58
- color: inherit;
73
+ background: var(--starci-core-canvas);
74
+ color: var(--starci-core-foreground);
75
+ font-family: var(--starci-font-sans, ui-sans-serif, system-ui, sans-serif);
76
+ }
77
+
78
+ .grammar-common-root[data-grammar-family="core"][data-grammar-theme="dark"] {
79
+ color-scheme: dark;
80
+ --starci-core-canvas: oklch(12% 0.0015 354.13);
81
+ --starci-core-surface: oklch(21.03% 0.003 354.13);
82
+ --starci-core-surface-secondary: oklch(25.7% 0.0023 354.13);
83
+ --starci-core-foreground: oklch(99.11% 0.0015 354.13);
84
+ --starci-core-muted: oklch(70.5% 0.003 354.13);
85
+ --starci-core-border: oklch(28% 0.0015 354.13);
86
+ --starci-core-separator: oklch(25% 0.0015 354.13);
87
+ --starci-core-success: oklch(73.29% 0.1941 162.85);
88
+ --starci-core-success-foreground: oklch(21.03% 0.0059 162.85);
89
+ --starci-core-warning: oklch(82.03% 0.1392 88.38);
90
+ --starci-core-warning-foreground: oklch(21.03% 0.0059 88.38);
91
+ --starci-core-danger: oklch(59.4% 0.1973 36.67);
92
+ --starci-core-danger-foreground: oklch(99.11% 0 0);
93
+ --starci-core-info: oklch(72% 0.17 250);
94
+ --starci-core-info-foreground: oklch(21.03% 0.0059 250);
59
95
  }
60
96
 
61
- .starci-core-frameless-surface > .starci-core-surface-content {
62
- padding: 0;
63
- }
64
-
65
- [data-grammar-scroll="contained"] {
66
- max-height: var(--starci-core-contained-max-height, none);
97
+ /* StarCi labelled surfaces paint one material box around label and content. */
98
+ .grammar-common-root[data-grammar-family="core"]
99
+ .starci-core-surface-card[data-grammar-surface-labelled="true"][data-grammar-frame="bounded"] {
67
100
  overflow: hidden;
101
+ border-radius: var(--starci-core-surface-radius, 1rem);
102
+ background: var(--starci-core-surface, var(--surface, Canvas));
103
+ box-shadow: var(--starci-core-surface-shadow, var(--shadow-surface, none));
68
104
  }
69
105
 
70
- [data-grammar-scroll="contained"] > .starci-core-surface-content {
71
- min-height: 0;
72
- overflow-y: auto;
73
- overscroll-behavior: contain;
74
- }
75
-
76
- [data-grammar-whole-action] {
77
- position: absolute;
78
- z-index: 1;
79
- inset: 0;
80
- border: 0;
81
- border-radius: inherit;
82
- background: transparent;
83
- color: inherit;
84
- cursor: pointer;
85
- }
86
-
87
- [data-grammar-whole-action]:focus-visible {
88
- outline: 2px solid var(--focus, Highlight);
89
- outline-offset: -2px;
90
- }
91
-
92
- [data-grammar-whole-action][aria-disabled="true"],
93
- [data-grammar-whole-action]:disabled {
94
- cursor: not-allowed;
95
- }
96
-
97
- [data-grammar-state="unavailable"] {
98
- opacity: var(--starci-core-disabled-opacity, 0.55);
99
- }
100
-
101
- [data-grammar-state="pending"] {
102
- cursor: progress;
103
- }
104
-
105
- .starci-core-list-shell {
106
- padding: 0;
107
- }
108
-
109
- .starci-core-static-list {
110
- display: flex;
111
- margin: 0;
112
- padding: 0;
113
- flex-direction: column;
114
- list-style: none;
115
- }
116
-
117
- .starci-core-owned-collection {
118
- min-width: 0;
119
- }
120
-
121
- .starci-core-surface-footer {
122
- min-width: 0;
123
- }
124
-
125
- .starci-core-static-row,
126
- .starci-core-empty-row {
127
- display: flex;
128
- min-width: 0;
129
- margin: 0;
130
- align-items: flex-start;
131
- gap: var(--starci-core-row-gap, 0.75rem);
132
- padding: var(--starci-core-row-inset, 1rem);
133
- }
134
-
135
- .starci-core-static-row + .starci-core-static-row {
136
- border-top: 1px solid var(--separator, var(--border, GrayText));
137
- }
138
-
139
- .starci-core-static-row-copy {
140
- display: flex;
141
- min-width: 0;
142
- flex: 1;
143
- flex-direction: column;
144
- gap: var(--starci-core-copy-gap, 0.25rem);
145
- }
146
-
147
- .starci-core-static-row-copy > :last-child:not(:first-child) {
148
- color: var(--muted, GrayText);
149
- }
150
-
151
- [data-grammar-state-mark="check"] {
152
- width: 1.25rem;
153
- height: 1.25rem;
154
- flex: none;
155
- color: var(--success, #15803d);
156
- }
157
-
158
- .starci-core-rail {
159
- container-name: starci-core-rail;
160
- container-type: inline-size;
161
- width: 100%;
162
- min-width: 0;
163
- }
164
-
165
- .starci-core-rail[data-grammar-rail-width="compact"] {
166
- max-width: var(--starci-core-rail-compact, 16rem);
167
- }
168
-
169
- .starci-core-rail[data-grammar-collapse="collapsed"] {
170
- max-width: var(--starci-core-rail-collapsed, 4rem);
171
- }
172
-
173
- .starci-core-rail[data-grammar-rail-width="standard"] {
174
- max-width: var(--starci-core-rail-standard, 20rem);
175
- }
176
-
177
- .starci-core-rail[data-grammar-rail-width="wide"] {
178
- max-width: var(--starci-core-rail-wide, 24rem);
179
- }
180
-
181
- .starci-core-rail-frame {
182
- display: flex;
183
- min-width: 0;
184
- max-height: calc(100dvh - var(--starci-core-rail-offset, 5.5rem) - 1.5rem);
185
- flex-direction: column;
186
- gap: var(--starci-core-rail-gap, 1rem);
187
- }
188
-
189
- .starci-core-rail[data-grammar-rail-mode="sticky"] .starci-core-rail-frame {
190
- position: sticky;
191
- top: var(--starci-core-rail-offset, 5.5rem);
192
- }
193
-
194
- .starci-core-rail-body {
195
- min-height: 0;
196
- overflow-y: auto;
197
- overscroll-behavior: contain;
198
- }
199
-
200
- .starci-core-rail-footer {
201
- flex: none;
106
+ .grammar-common-root[data-grammar-family="core"]
107
+ .starci-core-surface-card[data-grammar-surface-labelled="true"][data-grammar-frame="bounded"]
108
+ > [data-grammar-surface-label] {
109
+ padding: var(--starci-core-surface-inset, 1rem) var(--starci-core-surface-inset, 1rem) 0;
202
110
  }
203
111
 
204
- .starci-core-rail :where(button, [role="button"]) {
205
- min-inline-size: 44px;
206
- min-block-size: 44px;
112
+ .grammar-common-root[data-grammar-family="core"]
113
+ .starci-core-surface-card[data-grammar-surface-labelled="true"][data-grammar-frame="bounded"]
114
+ > [data-grammar-frame="bounded"],
115
+ .grammar-common-root[data-grammar-family="core"]
116
+ .starci-core-surface-card[data-grammar-surface-labelled="true"][data-grammar-frame="bounded"]
117
+ > [data-grammar-highlight="true"]
118
+ > [data-grammar-frame="bounded"] {
119
+ border: 0;
120
+ border-radius: 0;
121
+ background: transparent;
122
+ box-shadow: none;
207
123
  }
208
124
 
209
- @container starci-core-surface (max-width: 28rem) {
210
- .starci-core-surface-label {
211
- align-items: flex-start;
212
- flex-direction: column;
213
- }
214
-
215
- .starci-core-static-row {
216
- gap: var(--starci-core-row-gap-compact, 0.5rem);
125
+ @media (prefers-color-scheme: dark) {
126
+ .grammar-common-root[data-grammar-family="core"][data-grammar-theme="system"] {
127
+ color-scheme: dark;
128
+ --starci-core-canvas: oklch(12% 0.0015 354.13);
129
+ --starci-core-surface: oklch(21.03% 0.003 354.13);
130
+ --starci-core-surface-secondary: oklch(25.7% 0.0023 354.13);
131
+ --starci-core-foreground: oklch(99.11% 0.0015 354.13);
132
+ --starci-core-muted: oklch(70.5% 0.003 354.13);
133
+ --starci-core-border: oklch(28% 0.0015 354.13);
134
+ --starci-core-separator: oklch(25% 0.0015 354.13);
135
+ --starci-core-success: oklch(73.29% 0.1941 162.85);
136
+ --starci-core-success-foreground: oklch(21.03% 0.0059 162.85);
137
+ --starci-core-warning: oklch(82.03% 0.1392 88.38);
138
+ --starci-core-warning-foreground: oklch(21.03% 0.0059 88.38);
139
+ --starci-core-danger: oklch(59.4% 0.1973 36.67);
140
+ --starci-core-danger-foreground: oklch(99.11% 0 0);
141
+ --starci-core-info: oklch(72% 0.17 250);
142
+ --starci-core-info-foreground: oklch(21.03% 0.0059 250);
217
143
  }
218
144
  }
219
145
 
220
- @container starci-core-rail (max-width: 18rem) {
221
- .starci-core-rail-frame {
222
- gap: var(--starci-core-rail-gap-compact, 0.75rem);
146
+ @media (forced-colors: active) {
147
+ .grammar-common-root[data-grammar-family="core"] {
148
+ --starci-core-accent: Highlight;
149
+ --starci-core-focus: Highlight;
150
+ --starci-core-canvas: Canvas;
151
+ --starci-core-surface: Canvas;
152
+ --starci-core-surface-secondary: Canvas;
153
+ --starci-core-foreground: CanvasText;
154
+ --starci-core-muted: GrayText;
155
+ --starci-core-border: CanvasText;
156
+ --starci-core-separator: CanvasText;
157
+ --starci-core-success: CanvasText;
158
+ --starci-core-success-foreground: Canvas;
159
+ --starci-core-warning: CanvasText;
160
+ --starci-core-warning-foreground: Canvas;
161
+ --starci-core-danger: CanvasText;
162
+ --starci-core-danger-foreground: Canvas;
163
+ --starci-core-info: CanvasText;
164
+ --starci-core-info-foreground: Canvas;
165
+ --starci-core-surface-shadow: none;
223
166
  }
224
167
  }
168
+ }
225
169
 
226
- @media (max-width: 47.999rem) {
227
- .starci-core-rail[data-grammar-rail-mode="sticky"] .starci-core-rail-frame {
228
- position: static;
229
- max-height: none;
230
- }
231
-
232
- .starci-core-rail-body {
233
- overflow-y: visible;
234
- }
235
- }
236
-
237
- @media (prefers-reduced-motion: reduce) {
238
- [data-grammar-motion="animated"] {
239
- scroll-behavior: auto;
240
- }
241
- }
242
- }
@@ -0,0 +1,27 @@
1
+ import { type GrammarRootProps } from "../common/index.js";
2
+ /** Resolved institutional identity; destination behavior remains with the consumer. */
3
+ export type HeritageBrandProps = {
4
+ readonly name: string;
5
+ readonly descriptor: string;
6
+ readonly logo: {
7
+ readonly src: string;
8
+ readonly width: number;
9
+ readonly height: number;
10
+ };
11
+ };
12
+ /** Official product-neutral Heritage family contract. */
13
+ export declare const heritageGrammar: import("../common/registry.js").GrammarFamilyContract<"heritage", {
14
+ readonly Brand: import("react").FunctionComponent<HeritageBrandProps>;
15
+ }>;
16
+ export declare const heritageRuleConformance: Readonly<{
17
+ familyId: string;
18
+ inheritedCommonRules: readonly string[];
19
+ familyEvidence: Readonly<{
20
+ [x: string]: readonly string[];
21
+ }>;
22
+ }>;
23
+ export declare const HeritageGrammarRoot: ({ className, theme, ...props }: GrammarRootProps) => import("react").JSX.Element;
24
+ export declare const HeritageButton: (props: import("../common/renderers.js").ButtonProps) => import("react").JSX.Element;
25
+ export declare const HeritageHeading: ({ children, level, scale, isSkeleton, isVisuallyHidden, }: import("../common/renderers.js").HeadingProps) => import("react").JSX.Element;
26
+ export declare const HeritageBrand: import("react").FunctionComponent<HeritageBrandProps>;
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/heritage/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAMH,KAAK,gBAAgB,EACxB,MAAM,oBAAoB,CAAA;AAG3B,uFAAuF;AACvF,MAAM,MAAM,kBAAkB,GAAG;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE;QACX,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAC1B,CAAA;CACJ,CAAA;AAoBD,yDAAyD;AACzD,eAAO,MAAM,eAAe;;EAc1B,CAAA;AAWF,eAAO,MAAM,uBAAuB;;;;;;EAIlC,CAAA;AAEF,eAAO,MAAM,mBAAmB,mFAAyC,CAAA;AACzE,eAAO,MAAM,cAAc,sFAAoC,CAAA;AAC/D,eAAO,MAAM,eAAe,2IAAqC,CAAA;AACjE,eAAO,MAAM,aAAa,uDAAmC,CAAA"}
@@ -0,0 +1,44 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { COMMON_GRAMMAR_COMPONENTS, COMMON_UI_RULE_IDS, defineGrammarFamily, defineGrammarRuleConformance, } from "../common/index.js";
4
+ import { createElement } from "react";
5
+ const HeritageGrammarRootRenderer = (props) => {
6
+ const CommonGrammarRoot = COMMON_GRAMMAR_COMPONENTS.GrammarRoot;
7
+ return createElement(CommonGrammarRoot, { ...props, "data-grammar-family": "heritage" });
8
+ };
9
+ /** Family extension for non-interactive brand content inside a consumer-owned destination. */
10
+ const HeritageBrandRenderer = ({ name, descriptor, logo }) => (_jsxs("span", { "data-family-component": "Brand", children: [_jsx("span", { "data-family-part": "brand-mark", "aria-hidden": "true", children: _jsx("img", { src: logo.src, alt: "", width: logo.width, height: logo.height }) }), _jsxs("span", { "data-family-part": "brand-copy", children: [_jsx("strong", { children: name }), _jsx("span", { children: descriptor })] })] }));
11
+ /** Official product-neutral Heritage family contract. */
12
+ export const heritageGrammar = defineGrammarFamily({
13
+ id: "heritage",
14
+ styles: {
15
+ entrypoint: "@starci/grammar/heritage/styles.css",
16
+ scope: { attribute: "data-grammar-family", value: "heritage" },
17
+ },
18
+ components: {
19
+ replacements: {
20
+ GrammarRoot: HeritageGrammarRootRenderer,
21
+ },
22
+ extensions: {
23
+ Brand: HeritageBrandRenderer,
24
+ },
25
+ },
26
+ });
27
+ const HERITAGE_FAMILY_EVIDENCE = {
28
+ "A11Y-4": ["Brand is non-interactive and its supplied image is decorative."],
29
+ "BOUNDARY-1": ["Heritage surfaces bind material only through emitted Common surface hooks."],
30
+ "COLOR-5": ["Heritage owns scoped light, dark, system, and forced-color variables."],
31
+ "FOCUS-1": ["Heritage binds the shared visible focus variable without replacing focus ownership."],
32
+ "GAP-2": ["Brand anatomy uses the invariant Common spacing tokens."],
33
+ "MEDIA-6": ["Brand receives approved logo identity; asset generation remains outside Grammar."],
34
+ };
35
+ export const heritageRuleConformance = defineGrammarRuleConformance({
36
+ familyId: "heritage",
37
+ inheritedCommonRules: COMMON_UI_RULE_IDS.filter((rule) => !(rule in HERITAGE_FAMILY_EVIDENCE)),
38
+ familyEvidence: HERITAGE_FAMILY_EVIDENCE,
39
+ });
40
+ export const HeritageGrammarRoot = heritageGrammar.components.GrammarRoot;
41
+ export const HeritageButton = heritageGrammar.components.Button;
42
+ export const HeritageHeading = heritageGrammar.components.Heading;
43
+ export const HeritageBrand = heritageGrammar.components.Brand;
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/heritage/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EACH,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,4BAA4B,GAG/B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAarC,MAAM,2BAA2B,GAA+C,CAAC,KAAK,EAAE,EAAE;IACtF,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,WAAW,CAAA;IAC/D,OAAO,aAAa,CAAC,iBAAiB,EAAE,EAAE,GAAG,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,CAAC,CAAA;AAC5F,CAAC,CAAA;AAED,8FAA8F;AAC9F,MAAM,qBAAqB,GAAiD,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CACxG,yCAA4B,OAAO,aAC/B,mCAAuB,YAAY,iBAAa,MAAM,YAClD,cAAK,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAC,EAAE,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,GAAI,GAClE,EACP,oCAAuB,YAAY,aAC/B,2BAAS,IAAI,GAAU,EACvB,yBAAO,UAAU,GAAQ,IACtB,IACJ,CACV,CAAA;AAED,yDAAyD;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC;IAC/C,EAAE,EAAE,UAAU;IACd,MAAM,EAAE;QACJ,UAAU,EAAE,qCAAqC;QACjD,KAAK,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,KAAK,EAAE,UAAU,EAAE;KACjE;IACD,UAAU,EAAE;QACR,YAAY,EAAE;YACV,WAAW,EAAE,2BAA2B;SAC3C;QACD,UAAU,EAAE;YACR,KAAK,EAAE,qBAAqB;SAC/B;KACJ;CACJ,CAAC,CAAA;AAEF,MAAM,wBAAwB,GAAG;IAC7B,QAAQ,EAAE,CAAC,gEAAgE,CAAC;IAC5E,YAAY,EAAE,CAAC,4EAA4E,CAAC;IAC5F,SAAS,EAAE,CAAC,uEAAuE,CAAC;IACpF,SAAS,EAAE,CAAC,qFAAqF,CAAC;IAClG,OAAO,EAAE,CAAC,yDAAyD,CAAC;IACpE,SAAS,EAAE,CAAC,kFAAkF,CAAC;CACzF,CAAA;AAEV,MAAM,CAAC,MAAM,uBAAuB,GAAG,4BAA4B,CAAC;IAChE,QAAQ,EAAE,UAAU;IACpB,oBAAoB,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,wBAAwB,CAAC,CAAC;IAC9F,cAAc,EAAE,wBAAwB;CAC3C,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC,UAAU,CAAC,WAAW,CAAA;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,CAAA;AAC/D,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC,UAAU,CAAC,OAAO,CAAA;AACjE,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC,UAAU,CAAC,KAAK,CAAA"}
@@ -0,0 +1,165 @@
1
+ @import "../common/styles.css";
2
+
3
+ @layer starci-grammar-heritage {
4
+ .grammar-common-root[data-grammar-family="heritage"] {
5
+ color-scheme: light;
6
+
7
+ --heritage-green-900: oklch(29% 0.085 147);
8
+ --heritage-green-700: oklch(42% 0.12 147);
9
+ --heritage-ink: oklch(18% 0.018 145);
10
+ --heritage-muted: oklch(49% 0.018 145);
11
+ --heritage-ivory: oklch(97.5% 0.014 96);
12
+ --heritage-paper: oklch(99.3% 0.005 96);
13
+ --heritage-line: oklch(88% 0.012 110);
14
+ --heritage-display: Georgia, "Times New Roman", serif;
15
+ --heritage-sans: "Segoe UI", Arial, ui-sans-serif, system-ui, sans-serif;
16
+
17
+ --accent: var(--heritage-green-700);
18
+ --accent-foreground: white;
19
+ --focus: var(--heritage-green-700);
20
+ --background: var(--heritage-ivory);
21
+ --foreground: var(--heritage-ink);
22
+ --surface: var(--heritage-paper);
23
+ --surface-foreground: var(--heritage-ink);
24
+ --surface-secondary: var(--heritage-ivory);
25
+ --surface-secondary-foreground: var(--heritage-ink);
26
+ --muted: var(--heritage-muted);
27
+ --border: var(--heritage-line);
28
+ --separator: var(--heritage-line);
29
+ --success: var(--heritage-green-700);
30
+ --success-foreground: white;
31
+ --warning: oklch(76% 0.13 82);
32
+ --warning-foreground: var(--heritage-ink);
33
+ --danger: oklch(55% 0.18 28);
34
+ --danger-foreground: white;
35
+ --info: oklch(70% 0.09 235);
36
+ --info-foreground: var(--heritage-ink);
37
+ --field-background: var(--heritage-paper);
38
+ --field-border: var(--heritage-line);
39
+ --field-foreground: var(--heritage-ink);
40
+ --field-placeholder: var(--heritage-muted);
41
+ --radius: 0;
42
+ --field-radius: 0;
43
+ --shadow-surface: 0 1.5rem 4rem rgb(16 68 37 / 12%);
44
+
45
+ color: var(--foreground);
46
+ background: var(--background);
47
+ font-family: var(--heritage-sans);
48
+ }
49
+
50
+ .grammar-common-root[data-grammar-family="heritage"][data-grammar-theme="dark"] {
51
+ color-scheme: dark;
52
+
53
+ --heritage-green-900: oklch(88% 0.08 147);
54
+ --heritage-green-700: oklch(74% 0.12 147);
55
+ --heritage-ink: oklch(96% 0.01 96);
56
+ --heritage-muted: oklch(75% 0.018 110);
57
+ --heritage-ivory: oklch(16% 0.018 145);
58
+ --heritage-paper: oklch(21% 0.018 145);
59
+ --heritage-line: oklch(38% 0.025 145);
60
+ }
61
+
62
+ .grammar-common-root[data-grammar-family="heritage"] [data-grammar-surface-card][data-slot="card"] {
63
+ border: 0;
64
+ background: transparent;
65
+ box-shadow: none;
66
+ }
67
+
68
+ .grammar-common-root[data-grammar-family="heritage"] [data-grammar-surface-card][data-slot="card"] [data-grammar-frame="bounded"][data-slot="card-content"],
69
+ .grammar-common-root[data-grammar-family="heritage"] [data-grammar-surface] {
70
+ border: 1px solid var(--border);
71
+ border-radius: var(--radius);
72
+ background: var(--surface);
73
+ box-shadow: var(--shadow-surface);
74
+ color: var(--surface-foreground);
75
+ }
76
+
77
+ .grammar-common-root[data-grammar-family="heritage"] [data-grammar-surface-card][data-slot="card"] [data-grammar-frame="bounded"][data-slot="card-content"][data-grammar-surface-depth="nested"],
78
+ .grammar-common-root[data-grammar-family="heritage"] [data-grammar-surface][data-grammar-surface-depth="nested"] {
79
+ background: var(--surface-secondary);
80
+ box-shadow: none;
81
+ }
82
+
83
+ .grammar-common-root[data-grammar-family="heritage"] [data-grammar-surface-label] {
84
+ color: var(--heritage-green-900);
85
+ font-family: var(--heritage-display);
86
+ }
87
+
88
+ .grammar-common-root[data-grammar-family="heritage"] [data-family-component="Brand"] {
89
+ display: inline-flex;
90
+ min-height: 3.5rem;
91
+ align-items: center;
92
+ gap: var(--grammar-row-gap);
93
+ text-align: start;
94
+ }
95
+
96
+ .grammar-common-root[data-grammar-family="heritage"] [data-family-part="brand-mark"] {
97
+ display: grid;
98
+ inline-size: 3.5rem;
99
+ block-size: 3.5rem;
100
+ overflow: hidden;
101
+ flex: 0 0 auto;
102
+ place-items: center;
103
+ border-radius: 50%;
104
+ background: white;
105
+ }
106
+
107
+ .grammar-common-root[data-grammar-family="heritage"] [data-family-part="brand-mark"] img {
108
+ inline-size: 100%;
109
+ block-size: 100%;
110
+ object-fit: cover;
111
+ }
112
+
113
+ .grammar-common-root[data-grammar-family="heritage"] [data-family-part="brand-copy"] {
114
+ display: grid;
115
+ gap: 0.125rem;
116
+ }
117
+
118
+ .grammar-common-root[data-grammar-family="heritage"] [data-family-part="brand-copy"] strong {
119
+ color: var(--heritage-green-900);
120
+ font-family: var(--heritage-display);
121
+ font-size: 1rem;
122
+ font-weight: 800;
123
+ letter-spacing: .125em;
124
+ }
125
+
126
+ .grammar-common-root[data-grammar-family="heritage"] [data-family-part="brand-copy"] span {
127
+ color: var(--heritage-muted);
128
+ font-size: .75rem;
129
+ font-weight: 650;
130
+ letter-spacing: .0625em;
131
+ text-transform: uppercase;
132
+ }
133
+
134
+ @media (prefers-color-scheme: dark) {
135
+ .grammar-common-root[data-grammar-family="heritage"][data-grammar-theme="system"] {
136
+ color-scheme: dark;
137
+
138
+ --heritage-green-900: oklch(88% 0.08 147);
139
+ --heritage-green-700: oklch(74% 0.12 147);
140
+ --heritage-ink: oklch(96% 0.01 96);
141
+ --heritage-muted: oklch(75% 0.018 110);
142
+ --heritage-ivory: oklch(16% 0.018 145);
143
+ --heritage-paper: oklch(21% 0.018 145);
144
+ --heritage-line: oklch(38% 0.025 145);
145
+ }
146
+ }
147
+
148
+ @media (forced-colors: active) {
149
+ .grammar-common-root[data-grammar-family="heritage"] {
150
+ --heritage-green-900: CanvasText;
151
+ --heritage-green-700: Highlight;
152
+ --heritage-ink: CanvasText;
153
+ --heritage-muted: GrayText;
154
+ --heritage-ivory: Canvas;
155
+ --heritage-paper: Canvas;
156
+ --heritage-line: CanvasText;
157
+ --shadow-surface: none;
158
+ }
159
+
160
+ .grammar-common-root[data-grammar-family="heritage"] [data-family-part="brand-mark"] {
161
+ border: 1px solid CanvasText;
162
+ background: Canvas;
163
+ }
164
+ }
165
+ }