@starci/grammar 0.4.12 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +269 -47
  3. package/dist/.build-stamp.json +9 -0
  4. package/dist/common/components-forms.css +435 -0
  5. package/dist/common/components-navigation.css +1163 -0
  6. package/dist/common/components-overlays.css +939 -0
  7. package/dist/common/registry.d.ts +60 -1
  8. package/dist/common/registry.d.ts.map +1 -1
  9. package/dist/common/registry.js +6 -0
  10. package/dist/common/registry.js.map +1 -1
  11. package/dist/common/renderers-forms.d.ts +44 -0
  12. package/dist/common/renderers-forms.d.ts.map +1 -0
  13. package/dist/common/renderers-forms.js +49 -0
  14. package/dist/common/renderers-forms.js.map +1 -0
  15. package/dist/common/renderers-navigation.d.ts +42 -0
  16. package/dist/common/renderers-navigation.d.ts.map +1 -0
  17. package/dist/common/renderers-navigation.js +46 -0
  18. package/dist/common/renderers-navigation.js.map +1 -0
  19. package/dist/common/renderers-overlays.d.ts +32 -0
  20. package/dist/common/renderers-overlays.d.ts.map +1 -0
  21. package/dist/common/renderers-overlays.js +36 -0
  22. package/dist/common/renderers-overlays.js.map +1 -0
  23. package/dist/common/renderers.d.ts +5 -2
  24. package/dist/common/renderers.d.ts.map +1 -1
  25. package/dist/common/renderers.js +3 -0
  26. package/dist/common/renderers.js.map +1 -1
  27. package/dist/common/styles.css +282 -1
  28. package/dist/core/LeadingNumber.d.ts.map +1 -1
  29. package/dist/core/LeadingNumber.js +1 -1
  30. package/dist/core/LeadingNumber.js.map +1 -1
  31. package/dist/core/OtpInput.d.ts +17 -1
  32. package/dist/core/OtpInput.d.ts.map +1 -1
  33. package/dist/core/OtpInput.js +17 -5
  34. package/dist/core/OtpInput.js.map +1 -1
  35. package/dist/core/StateMark.d.ts +6 -1
  36. package/dist/core/StateMark.d.ts.map +1 -1
  37. package/dist/core/StateMark.js +7 -2
  38. package/dist/core/StateMark.js.map +1 -1
  39. package/dist/core/branch/Accordion/index.d.ts +28 -0
  40. package/dist/core/branch/Accordion/index.d.ts.map +1 -0
  41. package/dist/core/branch/Accordion/index.js +30 -0
  42. package/dist/core/branch/Accordion/index.js.map +1 -0
  43. package/dist/core/branch/AlertDialog/index.d.ts +40 -0
  44. package/dist/core/branch/AlertDialog/index.d.ts.map +1 -0
  45. package/dist/core/branch/AlertDialog/index.js +59 -0
  46. package/dist/core/branch/AlertDialog/index.js.map +1 -0
  47. package/dist/core/branch/Calendar/index.d.ts +26 -0
  48. package/dist/core/branch/Calendar/index.d.ts.map +1 -0
  49. package/dist/core/branch/Calendar/index.js +17 -0
  50. package/dist/core/branch/Calendar/index.js.map +1 -0
  51. package/dist/core/branch/ComboBox/index.d.ts +32 -0
  52. package/dist/core/branch/ComboBox/index.d.ts.map +1 -0
  53. package/dist/core/branch/ComboBox/index.js +28 -0
  54. package/dist/core/branch/ComboBox/index.js.map +1 -0
  55. package/dist/core/branch/DataTable/index.d.ts +52 -0
  56. package/dist/core/branch/DataTable/index.d.ts.map +1 -0
  57. package/dist/core/branch/DataTable/index.js +46 -0
  58. package/dist/core/branch/DataTable/index.js.map +1 -0
  59. package/dist/core/branch/DatePicker/index.d.ts +23 -0
  60. package/dist/core/branch/DatePicker/index.d.ts.map +1 -0
  61. package/dist/core/branch/DatePicker/index.js +29 -0
  62. package/dist/core/branch/DatePicker/index.js.map +1 -0
  63. package/dist/core/branch/DateRangePicker/index.d.ts +21 -0
  64. package/dist/core/branch/DateRangePicker/index.d.ts.map +1 -0
  65. package/dist/core/branch/DateRangePicker/index.js +22 -0
  66. package/dist/core/branch/DateRangePicker/index.js.map +1 -0
  67. package/dist/core/branch/Dialog/index.d.ts +36 -0
  68. package/dist/core/branch/Dialog/index.d.ts.map +1 -0
  69. package/dist/core/branch/Dialog/index.js +20 -0
  70. package/dist/core/branch/Dialog/index.js.map +1 -0
  71. package/dist/core/branch/Disclosure/index.d.ts +22 -0
  72. package/dist/core/branch/Disclosure/index.d.ts.map +1 -0
  73. package/dist/core/branch/Disclosure/index.js +26 -0
  74. package/dist/core/branch/Disclosure/index.js.map +1 -0
  75. package/dist/core/branch/Drawer/index.d.ts +35 -0
  76. package/dist/core/branch/Drawer/index.d.ts.map +1 -0
  77. package/dist/core/branch/Drawer/index.js +20 -0
  78. package/dist/core/branch/Drawer/index.js.map +1 -0
  79. package/dist/core/branch/DropdownMenu/index.d.ts +61 -0
  80. package/dist/core/branch/DropdownMenu/index.d.ts.map +1 -0
  81. package/dist/core/branch/DropdownMenu/index.js +59 -0
  82. package/dist/core/branch/DropdownMenu/index.js.map +1 -0
  83. package/dist/core/branch/ListBox/index.d.ts +30 -0
  84. package/dist/core/branch/ListBox/index.d.ts.map +1 -0
  85. package/dist/core/branch/ListBox/index.js +14 -0
  86. package/dist/core/branch/ListBox/index.js.map +1 -0
  87. package/dist/core/branch/MarkdownArticle/index.d.ts +8 -0
  88. package/dist/core/branch/MarkdownArticle/index.d.ts.map +1 -1
  89. package/dist/core/branch/MarkdownArticle/index.js +7 -2
  90. package/dist/core/branch/MarkdownArticle/index.js.map +1 -1
  91. package/dist/core/branch/Popover/index.d.ts +33 -0
  92. package/dist/core/branch/Popover/index.d.ts.map +1 -0
  93. package/dist/core/branch/Popover/index.js +16 -0
  94. package/dist/core/branch/Popover/index.js.map +1 -0
  95. package/dist/core/branch/Rail/index.d.ts +2 -0
  96. package/dist/core/branch/Rail/index.d.ts.map +1 -1
  97. package/dist/core/branch/Rail/index.js +10 -3
  98. package/dist/core/branch/Rail/index.js.map +1 -1
  99. package/dist/core/branch/Select/index.d.ts +31 -0
  100. package/dist/core/branch/Select/index.d.ts.map +1 -0
  101. package/dist/core/branch/Select/index.js +41 -0
  102. package/dist/core/branch/Select/index.js.map +1 -0
  103. package/dist/core/branch/SurfaceAccordionCard/index.d.ts +6 -0
  104. package/dist/core/branch/SurfaceAccordionCard/index.d.ts.map +1 -1
  105. package/dist/core/branch/SurfaceAccordionCard/index.js +6 -6
  106. package/dist/core/branch/SurfaceAccordionCard/index.js.map +1 -1
  107. package/dist/core/branch/SurfaceCard/classNames.d.ts +7 -2
  108. package/dist/core/branch/SurfaceCard/classNames.d.ts.map +1 -1
  109. package/dist/core/branch/SurfaceCard/classNames.js +7 -2
  110. package/dist/core/branch/SurfaceCard/classNames.js.map +1 -1
  111. package/dist/core/branch/SurfaceCard/index.d.ts +6 -0
  112. package/dist/core/branch/SurfaceCard/index.d.ts.map +1 -1
  113. package/dist/core/branch/SurfaceCard/index.js +4 -4
  114. package/dist/core/branch/SurfaceCard/index.js.map +1 -1
  115. package/dist/core/branch/SurfaceListCard/index.d.ts +17 -1
  116. package/dist/core/branch/SurfaceListCard/index.d.ts.map +1 -1
  117. package/dist/core/branch/SurfaceListCard/index.js +10 -4
  118. package/dist/core/branch/SurfaceListCard/index.js.map +1 -1
  119. package/dist/core/branch/Tabs/index.js +1 -1
  120. package/dist/core/branch/Tabs/index.js.map +1 -1
  121. package/dist/core/branch/Toast/index.d.ts +75 -0
  122. package/dist/core/branch/Toast/index.d.ts.map +1 -0
  123. package/dist/core/branch/Toast/index.js +145 -0
  124. package/dist/core/branch/Toast/index.js.map +1 -0
  125. package/dist/core/composite/Alert/index.d.ts +40 -0
  126. package/dist/core/composite/Alert/index.d.ts.map +1 -0
  127. package/dist/core/composite/Alert/index.js +27 -0
  128. package/dist/core/composite/Alert/index.js.map +1 -0
  129. package/dist/core/composite/AvatarGroup/index.d.ts +23 -0
  130. package/dist/core/composite/AvatarGroup/index.d.ts.map +1 -0
  131. package/dist/core/composite/AvatarGroup/index.js +15 -0
  132. package/dist/core/composite/AvatarGroup/index.js.map +1 -0
  133. package/dist/core/composite/Breadcrumbs/index.d.ts +27 -0
  134. package/dist/core/composite/Breadcrumbs/index.d.ts.map +1 -0
  135. package/dist/core/composite/Breadcrumbs/index.js +16 -0
  136. package/dist/core/composite/Breadcrumbs/index.js.map +1 -0
  137. package/dist/core/composite/ButtonGroup/index.d.ts +14 -0
  138. package/dist/core/composite/ButtonGroup/index.d.ts.map +1 -0
  139. package/dist/core/composite/ButtonGroup/index.js +17 -0
  140. package/dist/core/composite/ButtonGroup/index.js.map +1 -0
  141. package/dist/core/composite/CheckboxGroup/index.d.ts +23 -0
  142. package/dist/core/composite/CheckboxGroup/index.d.ts.map +1 -0
  143. package/dist/core/composite/CheckboxGroup/index.js +21 -0
  144. package/dist/core/composite/CheckboxGroup/index.js.map +1 -0
  145. package/dist/core/composite/DescriptionList/index.d.ts +23 -0
  146. package/dist/core/composite/DescriptionList/index.d.ts.map +1 -0
  147. package/dist/core/composite/DescriptionList/index.js +8 -0
  148. package/dist/core/composite/DescriptionList/index.js.map +1 -0
  149. package/dist/core/composite/Fieldset/index.d.ts +17 -0
  150. package/dist/core/composite/Fieldset/index.d.ts.map +1 -0
  151. package/dist/core/composite/Fieldset/index.js +14 -0
  152. package/dist/core/composite/Fieldset/index.js.map +1 -0
  153. package/dist/core/composite/Form/index.d.ts +32 -0
  154. package/dist/core/composite/Form/index.d.ts.map +1 -0
  155. package/dist/core/composite/Form/index.js +25 -0
  156. package/dist/core/composite/Form/index.js.map +1 -0
  157. package/dist/core/composite/HorizontalScrollRegion/index.d.ts +5 -0
  158. package/dist/core/composite/HorizontalScrollRegion/index.d.ts.map +1 -1
  159. package/dist/core/composite/HorizontalScrollRegion/index.js +3 -2
  160. package/dist/core/composite/HorizontalScrollRegion/index.js.map +1 -1
  161. package/dist/core/composite/Pagination/index.d.ts +31 -0
  162. package/dist/core/composite/Pagination/index.d.ts.map +1 -0
  163. package/dist/core/composite/Pagination/index.js +42 -0
  164. package/dist/core/composite/Pagination/index.js.map +1 -0
  165. package/dist/core/composite/RadioGroup/index.d.ts +15 -0
  166. package/dist/core/composite/RadioGroup/index.d.ts.map +1 -0
  167. package/dist/core/composite/RadioGroup/index.js +20 -0
  168. package/dist/core/composite/RadioGroup/index.js.map +1 -0
  169. package/dist/core/composite/SegmentedControl/index.d.ts +24 -0
  170. package/dist/core/composite/SegmentedControl/index.d.ts.map +1 -0
  171. package/dist/core/composite/SegmentedControl/index.js +33 -0
  172. package/dist/core/composite/SegmentedControl/index.js.map +1 -0
  173. package/dist/core/composite/StaticStateRow/index.d.ts +6 -1
  174. package/dist/core/composite/StaticStateRow/index.d.ts.map +1 -1
  175. package/dist/core/composite/StaticStateRow/index.js +6 -1
  176. package/dist/core/composite/StaticStateRow/index.js.map +1 -1
  177. package/dist/core/composite/Stepper/index.d.ts +34 -0
  178. package/dist/core/composite/Stepper/index.d.ts.map +1 -0
  179. package/dist/core/composite/Stepper/index.js +27 -0
  180. package/dist/core/composite/Stepper/index.js.map +1 -0
  181. package/dist/core/composite/TagGroup/index.d.ts +41 -0
  182. package/dist/core/composite/TagGroup/index.d.ts.map +1 -0
  183. package/dist/core/composite/TagGroup/index.js +17 -0
  184. package/dist/core/composite/TagGroup/index.js.map +1 -0
  185. package/dist/core/composite/Timeline/index.d.ts +28 -0
  186. package/dist/core/composite/Timeline/index.d.ts.map +1 -0
  187. package/dist/core/composite/Timeline/index.js +14 -0
  188. package/dist/core/composite/Timeline/index.js.map +1 -0
  189. package/dist/core/composite/VerticalScrollRegion/index.d.ts +31 -1
  190. package/dist/core/composite/VerticalScrollRegion/index.d.ts.map +1 -1
  191. package/dist/core/composite/VerticalScrollRegion/index.js +16 -3
  192. package/dist/core/composite/VerticalScrollRegion/index.js.map +1 -1
  193. package/dist/core/composition/BottomNav/index.d.ts +33 -0
  194. package/dist/core/composition/BottomNav/index.d.ts.map +1 -0
  195. package/dist/core/composition/BottomNav/index.js +22 -0
  196. package/dist/core/composition/BottomNav/index.js.map +1 -0
  197. package/dist/core/composition/Footer/index.d.ts +35 -0
  198. package/dist/core/composition/Footer/index.d.ts.map +1 -0
  199. package/dist/core/composition/Footer/index.js +19 -0
  200. package/dist/core/composition/Footer/index.js.map +1 -0
  201. package/dist/core/composition/NavigationFeatureNav/index.d.ts +3 -0
  202. package/dist/core/composition/NavigationFeatureNav/index.d.ts.map +1 -1
  203. package/dist/core/composition/NavigationFeatureNav/index.js +3 -0
  204. package/dist/core/composition/NavigationFeatureNav/index.js.map +1 -1
  205. package/dist/core/composition/TopBar/index.d.ts +34 -0
  206. package/dist/core/composition/TopBar/index.d.ts.map +1 -0
  207. package/dist/core/composition/TopBar/index.js +15 -0
  208. package/dist/core/composition/TopBar/index.js.map +1 -0
  209. package/dist/core/composition/WorkspaceShell/index.d.ts +18 -1
  210. package/dist/core/composition/WorkspaceShell/index.d.ts.map +1 -1
  211. package/dist/core/composition/WorkspaceShell/index.js +10 -1
  212. package/dist/core/composition/WorkspaceShell/index.js.map +1 -1
  213. package/dist/core/dna.d.ts +26 -8
  214. package/dist/core/dna.d.ts.map +1 -1
  215. package/dist/core/dna.js +22 -4
  216. package/dist/core/dna.js.map +1 -1
  217. package/dist/core/index.d.ts +60 -1
  218. package/dist/core/index.d.ts.map +1 -1
  219. package/dist/core/navigationClassNames.d.ts +3 -0
  220. package/dist/core/navigationClassNames.d.ts.map +1 -0
  221. package/dist/core/navigationClassNames.js +4 -0
  222. package/dist/core/navigationClassNames.js.map +1 -0
  223. package/dist/core/navigationKeys.d.ts +11 -0
  224. package/dist/core/navigationKeys.d.ts.map +1 -0
  225. package/dist/core/navigationKeys.js +44 -0
  226. package/dist/core/navigationKeys.js.map +1 -0
  227. package/dist/core/overlayScope.d.ts +42 -0
  228. package/dist/core/overlayScope.d.ts.map +1 -0
  229. package/dist/core/overlayScope.js +54 -0
  230. package/dist/core/overlayScope.js.map +1 -0
  231. package/dist/core/primitive/Avatar/index.d.ts +34 -0
  232. package/dist/core/primitive/Avatar/index.d.ts.map +1 -0
  233. package/dist/core/primitive/Avatar/index.js +24 -0
  234. package/dist/core/primitive/Avatar/index.js.map +1 -0
  235. package/dist/core/primitive/Badge/index.d.ts +6 -1
  236. package/dist/core/primitive/Badge/index.d.ts.map +1 -1
  237. package/dist/core/primitive/Badge/index.js +7 -2
  238. package/dist/core/primitive/Badge/index.js.map +1 -1
  239. package/dist/core/primitive/Checkbox/index.d.ts +25 -0
  240. package/dist/core/primitive/Checkbox/index.d.ts.map +1 -0
  241. package/dist/core/primitive/Checkbox/index.js +17 -0
  242. package/dist/core/primitive/Checkbox/index.js.map +1 -0
  243. package/dist/core/primitive/CloseButton/index.d.ts +17 -0
  244. package/dist/core/primitive/CloseButton/index.d.ts.map +1 -0
  245. package/dist/core/primitive/CloseButton/index.js +11 -0
  246. package/dist/core/primitive/CloseButton/index.js.map +1 -0
  247. package/dist/core/primitive/DateField/index.d.ts +33 -0
  248. package/dist/core/primitive/DateField/index.d.ts.map +1 -0
  249. package/dist/core/primitive/DateField/index.js +33 -0
  250. package/dist/core/primitive/DateField/index.js.map +1 -0
  251. package/dist/core/primitive/Field/index.d.ts +127 -0
  252. package/dist/core/primitive/Field/index.d.ts.map +1 -0
  253. package/dist/core/primitive/Field/index.js +100 -0
  254. package/dist/core/primitive/Field/index.js.map +1 -0
  255. package/dist/core/primitive/FileDropzone/index.d.ts +25 -0
  256. package/dist/core/primitive/FileDropzone/index.d.ts.map +1 -0
  257. package/dist/core/primitive/FileDropzone/index.js +35 -0
  258. package/dist/core/primitive/FileDropzone/index.js.map +1 -0
  259. package/dist/core/primitive/GrammarRoot/index.d.ts +6 -1
  260. package/dist/core/primitive/GrammarRoot/index.d.ts.map +1 -1
  261. package/dist/core/primitive/GrammarRoot/index.js +7 -2
  262. package/dist/core/primitive/GrammarRoot/index.js.map +1 -1
  263. package/dist/core/primitive/Icon/index.d.ts +7 -1
  264. package/dist/core/primitive/Icon/index.d.ts.map +1 -1
  265. package/dist/core/primitive/Icon/index.js +7 -2
  266. package/dist/core/primitive/Icon/index.js.map +1 -1
  267. package/dist/core/primitive/IconButton/index.d.ts +1 -1
  268. package/dist/core/primitive/IconButton/index.d.ts.map +1 -1
  269. package/dist/core/primitive/IconButton/index.js +2 -2
  270. package/dist/core/primitive/IconButton/index.js.map +1 -1
  271. package/dist/core/primitive/Image/index.d.ts +30 -0
  272. package/dist/core/primitive/Image/index.d.ts.map +1 -0
  273. package/dist/core/primitive/Image/index.js +29 -0
  274. package/dist/core/primitive/Image/index.js.map +1 -0
  275. package/dist/core/primitive/IncludedMark/index.d.ts +2 -1
  276. package/dist/core/primitive/IncludedMark/index.d.ts.map +1 -1
  277. package/dist/core/primitive/IncludedMark/index.js +3 -2
  278. package/dist/core/primitive/IncludedMark/index.js.map +1 -1
  279. package/dist/core/primitive/Kbd/index.d.ts +13 -0
  280. package/dist/core/primitive/Kbd/index.d.ts.map +1 -0
  281. package/dist/core/primitive/Kbd/index.js +14 -0
  282. package/dist/core/primitive/Kbd/index.js.map +1 -0
  283. package/dist/core/primitive/Label/index.d.ts +18 -4
  284. package/dist/core/primitive/Label/index.d.ts.map +1 -1
  285. package/dist/core/primitive/Label/index.js +4 -2
  286. package/dist/core/primitive/Label/index.js.map +1 -1
  287. package/dist/core/primitive/Link/index.d.ts +30 -0
  288. package/dist/core/primitive/Link/index.d.ts.map +1 -0
  289. package/dist/core/primitive/Link/index.js +17 -0
  290. package/dist/core/primitive/Link/index.js.map +1 -0
  291. package/dist/core/primitive/Meter/index.d.ts +16 -0
  292. package/dist/core/primitive/Meter/index.d.ts.map +1 -0
  293. package/dist/core/primitive/Meter/index.js +20 -0
  294. package/dist/core/primitive/Meter/index.js.map +1 -0
  295. package/dist/core/primitive/NumberField/index.d.ts +21 -0
  296. package/dist/core/primitive/NumberField/index.d.ts.map +1 -0
  297. package/dist/core/primitive/NumberField/index.js +15 -0
  298. package/dist/core/primitive/NumberField/index.js.map +1 -0
  299. package/dist/core/primitive/ProgressCircle/index.d.ts +13 -0
  300. package/dist/core/primitive/ProgressCircle/index.d.ts.map +1 -0
  301. package/dist/core/primitive/ProgressCircle/index.js +5 -0
  302. package/dist/core/primitive/ProgressCircle/index.js.map +1 -0
  303. package/dist/core/primitive/RankArtwork/index.d.ts +2 -1
  304. package/dist/core/primitive/RankArtwork/index.d.ts.map +1 -1
  305. package/dist/core/primitive/RankArtwork/index.js +3 -2
  306. package/dist/core/primitive/RankArtwork/index.js.map +1 -1
  307. package/dist/core/primitive/Rating/index.d.ts +26 -0
  308. package/dist/core/primitive/Rating/index.d.ts.map +1 -0
  309. package/dist/core/primitive/Rating/index.js +37 -0
  310. package/dist/core/primitive/Rating/index.js.map +1 -0
  311. package/dist/core/primitive/SearchField/index.d.ts +22 -0
  312. package/dist/core/primitive/SearchField/index.d.ts.map +1 -0
  313. package/dist/core/primitive/SearchField/index.js +15 -0
  314. package/dist/core/primitive/SearchField/index.js.map +1 -0
  315. package/dist/core/primitive/SectionHeader/index.d.ts +9 -2
  316. package/dist/core/primitive/SectionHeader/index.d.ts.map +1 -1
  317. package/dist/core/primitive/SectionHeader/index.js +8 -2
  318. package/dist/core/primitive/SectionHeader/index.js.map +1 -1
  319. package/dist/core/primitive/Skeleton/index.d.ts +21 -0
  320. package/dist/core/primitive/Skeleton/index.d.ts.map +1 -0
  321. package/dist/core/primitive/Skeleton/index.js +18 -0
  322. package/dist/core/primitive/Skeleton/index.js.map +1 -0
  323. package/dist/core/primitive/Slider/index.d.ts +26 -0
  324. package/dist/core/primitive/Slider/index.d.ts.map +1 -0
  325. package/dist/core/primitive/Slider/index.js +37 -0
  326. package/dist/core/primitive/Slider/index.js.map +1 -0
  327. package/dist/core/primitive/Spinner/index.d.ts +18 -0
  328. package/dist/core/primitive/Spinner/index.d.ts.map +1 -0
  329. package/dist/core/primitive/Spinner/index.js +11 -0
  330. package/dist/core/primitive/Spinner/index.js.map +1 -0
  331. package/dist/core/primitive/Switch/index.d.ts +13 -0
  332. package/dist/core/primitive/Switch/index.d.ts.map +1 -0
  333. package/dist/core/primitive/Switch/index.js +15 -0
  334. package/dist/core/primitive/Switch/index.js.map +1 -0
  335. package/dist/core/primitive/Textarea/index.d.ts +16 -0
  336. package/dist/core/primitive/Textarea/index.d.ts.map +1 -0
  337. package/dist/core/primitive/Textarea/index.js +20 -0
  338. package/dist/core/primitive/Textarea/index.js.map +1 -0
  339. package/dist/core/primitive/TimeField/index.d.ts +15 -0
  340. package/dist/core/primitive/TimeField/index.d.ts.map +1 -0
  341. package/dist/core/primitive/TimeField/index.js +13 -0
  342. package/dist/core/primitive/TimeField/index.js.map +1 -0
  343. package/dist/core/styles.css +32 -6
  344. package/dist/heritage/styles.css +21 -6
  345. package/dist/offset-pop/components-forms.css +405 -0
  346. package/dist/offset-pop/components-navigation.css +394 -0
  347. package/dist/offset-pop/components-overlays.css +253 -0
  348. package/dist/offset-pop/conformance.d.ts +64 -0
  349. package/dist/offset-pop/conformance.d.ts.map +1 -0
  350. package/dist/offset-pop/conformance.js +63 -0
  351. package/dist/offset-pop/conformance.js.map +1 -0
  352. package/dist/offset-pop/dna.d.ts +282 -0
  353. package/dist/offset-pop/dna.d.ts.map +1 -0
  354. package/dist/offset-pop/dna.js +276 -0
  355. package/dist/offset-pop/dna.js.map +1 -0
  356. package/dist/offset-pop/index.d.ts +4 -8
  357. package/dist/offset-pop/index.d.ts.map +1 -1
  358. package/dist/offset-pop/index.js +7 -18
  359. package/dist/offset-pop/index.js.map +1 -1
  360. package/dist/offset-pop/styles.css +203 -62
  361. package/package.json +33 -9
@@ -1,10 +1,40 @@
1
- import type { ComponentProps, ReactNode } from "react";
1
+ import { type ComponentProps, type ReactNode } from "react";
2
+ /**
3
+ * Which overflow answer this region gives for its one axis.
4
+ *
5
+ * `always` is the region standing on its own: the block axis scrolls, full stop (OVERFLOW-3).
6
+ * `needed` is that same one axis scrolling only where the content actually overflows (OVERFLOW-4).
7
+ * The region is the node that carries the stamp, so the owner has to be able to say which of the two
8
+ * it is; a `data-contract` passed in was, and still is, silently replaced by this element's own.
9
+ */
10
+ export type VerticalScrollRegionOverflow = "always" | "needed";
2
11
  export type VerticalScrollRegionProps = Omit<ComponentProps<"div">, "children"> & {
3
12
  readonly children: ReactNode;
4
13
  readonly isScrollable: boolean;
14
+ /**
15
+ * The element the region renders when it is NOT scrollable. A list owner passes `ul`/`ol` so its
16
+ * `<li>` rows have a real list parent; when scrollable the region is HeroUI's ScrollShadow `div`,
17
+ * and the owner gives it `role="list"` instead.
18
+ */
19
+ readonly as?: "div" | "ul" | "ol";
20
+ /**
21
+ * Keyboard reachability of a scrolling region (WCAG 2.1.1, axe `scrollable-region-focusable`).
22
+ * Default `true`: a scrollable region joins the Tab order (`tabIndex=0`) so its content can be
23
+ * scrolled without a pointer, and a region named by `aria-label`/`aria-labelledby` is exposed as
24
+ * `role="region"` unless the owner passes its own role. Pass `false` only when every scrolled
25
+ * item is itself focusable (a tab strip, an input group), so the region adds no empty stop.
26
+ */
27
+ readonly isFocusable?: boolean;
5
28
  /** Hide scrollbar chrome by default while retaining wheel, touch and keyboard scrolling. */
6
29
  readonly hideScrollBar?: boolean;
30
+ /** The region's own overflow answer; the stamp and the render both follow it. */
31
+ readonly overflow?: VerticalScrollRegionOverflow;
7
32
  };
33
+ /**
34
+ * The attributes that make a scrolling region keyboard-reachable and, when named, a navigable
35
+ * region. Shared by every Common scroll owner so the rule is stated once.
36
+ */
37
+ export declare const scrollRegionFocusProps: (props: Pick<ComponentProps<"div">, "aria-label" | "aria-labelledby" | "role" | "tabIndex">, isFocusable: boolean) => Pick<ComponentProps<"div">, "role" | "tabIndex">;
8
38
  /** Use HeroUI's Vertical ScrollShadow without making consumers own its DOM contract. */
9
39
  export declare const VerticalScrollRegion: (props: VerticalScrollRegionProps) => import("react").JSX.Element;
10
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/composite/VerticalScrollRegion/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtD,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG;IAC9E,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,4FAA4F;IAC5F,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CACnC,CAAA;AAED,wFAAwF;AACxF,eAAO,MAAM,oBAAoB,GAAI,OAAO,yBAAyB,gCAKpE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/composite/VerticalScrollRegion/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAG1E;;;;;;;GAOG;AACH,MAAM,MAAM,4BAA4B,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAE9D,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG;IAC9E,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,CAAA;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,4FAA4F;IAC5F,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,iFAAiF;IACjF,QAAQ,CAAC,QAAQ,CAAC,EAAE,4BAA4B,CAAA;CACnD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,YAAY,GAAG,iBAAiB,GAAG,MAAM,GAAG,UAAU,CAAC,EAC1F,aAAa,OAAO,KACrB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,CAKjD,CAAA;AAED,wFAAwF;AACxF,eAAO,MAAM,oBAAoB,GAAI,OAAO,yBAAyB,gCAMpE,CAAA"}
@@ -1,10 +1,23 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createElement } from "react";
2
3
  import { ScrollShadow } from "@heroui/react";
4
+ /**
5
+ * The attributes that make a scrolling region keyboard-reachable and, when named, a navigable
6
+ * region. Shared by every Common scroll owner so the rule is stated once.
7
+ */
8
+ export const scrollRegionFocusProps = (props, isFocusable) => {
9
+ if (!isFocusable)
10
+ return {};
11
+ const isNamed = props["aria-label"] !== undefined || props["aria-labelledby"] !== undefined;
12
+ const role = props.role ?? (isNamed ? "region" : undefined);
13
+ return { tabIndex: props.tabIndex ?? 0, ...(role === undefined ? {} : { role }) };
14
+ };
3
15
  /** Use HeroUI's Vertical ScrollShadow without making consumers own its DOM contract. */
4
16
  export const VerticalScrollRegion = (props) => {
5
- const { children, isScrollable, hideScrollBar = true, ...regionProps } = props;
17
+ const { children, isScrollable, as: Element = "div", isFocusable = true, hideScrollBar = true, overflow = "always", ...regionProps } = props;
18
+ const contract = overflow === "needed" ? "MEASURE-7 OVERFLOW-4" : "MEASURE-7 OVERFLOW-3";
6
19
  return isScrollable
7
- ? _jsx(ScrollShadow, { ...regionProps, "data-contract": "MEASURE-7 OVERFLOW-3", hideScrollBar: hideScrollBar, orientation: "vertical", children: children })
8
- : _jsx("div", { ...regionProps, children: children });
20
+ ? _jsx(ScrollShadow, { ...regionProps, ...scrollRegionFocusProps(regionProps, isFocusable), "data-contract": contract, "data-grammar-overflow": overflow, "data-grammar-scroll-region": "vertical", hideScrollBar: hideScrollBar, orientation: "vertical", children: children })
21
+ : createElement(Element, regionProps, children);
9
22
  };
10
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composite/VerticalScrollRegion/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAS5C,wFAAwF;AACxF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAgC,EAAE,EAAE;IACrE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,GAAG,IAAI,EAAE,GAAG,WAAW,EAAE,GAAG,KAAK,CAAA;IAC9E,OAAO,YAAY;QACf,CAAC,CAAC,KAAC,YAAY,OAAK,WAAW,mBAAgB,sBAAsB,EAAC,aAAa,EAAE,aAAa,EAAE,WAAW,EAAC,UAAU,YAAE,QAAQ,GAAgB;QACpJ,CAAC,CAAC,iBAAS,WAAW,YAAG,QAAQ,GAAO,CAAA;AAChD,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composite/VerticalScrollRegion/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAuC,MAAM,OAAO,CAAA;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAmC5C;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAClC,KAA0F,EAC1F,WAAoB,EAC4B,EAAE;IAClD,IAAI,CAAC,WAAW;QAAE,OAAO,EAAE,CAAA;IAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,iBAAiB,CAAC,KAAK,SAAS,CAAA;IAC3F,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC3D,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;AACrF,CAAC,CAAA;AAED,wFAAwF;AACxF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAgC,EAAE,EAAE;IACrE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,GAAG,KAAK,EAAE,WAAW,GAAG,IAAI,EAAE,aAAa,GAAG,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,WAAW,EAAE,GAAG,KAAK,CAAA;IAC5I,MAAM,QAAQ,GAAG,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAA;IACxF,OAAO,YAAY;QACf,CAAC,CAAC,KAAC,YAAY,OAAK,WAAW,KAAM,sBAAsB,CAAC,WAAW,EAAE,WAAW,CAAC,mBAAiB,QAAQ,2BAAyB,QAAQ,gCAA6B,UAAU,EAAC,aAAa,EAAE,aAAa,EAAE,WAAW,EAAC,UAAU,YAAE,QAAQ,GAAgB;QACrQ,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;AACvD,CAAC,CAAA"}
@@ -0,0 +1,33 @@
1
+ import type { ReactNode } from "react";
2
+ export type BottomNavItem = {
3
+ readonly id: string;
4
+ readonly label: string;
5
+ /** App-owned glyph; decorative, the label names the destination. */
6
+ readonly icon: ReactNode;
7
+ /** A real destination. Without it the item is a same-document button driven by `onSelect`. */
8
+ readonly href?: string;
9
+ /** Small count or dot; pass `badgeLabel` so it is announced. */
10
+ readonly badge?: ReactNode;
11
+ readonly badgeLabel?: string;
12
+ readonly isDisabled?: boolean;
13
+ };
14
+ export type BottomNavProps = {
15
+ /** Names the landmark, e.g. "Primary". */
16
+ readonly label: string;
17
+ readonly items: ReadonlyArray<BottomNavItem>;
18
+ readonly currentId: string;
19
+ readonly onSelect?: (id: string) => void;
20
+ /** `fixed` pins the bar to the viewport bottom above the device safe area. */
21
+ readonly position?: "fixed" | "static";
22
+ /** `compact` hides the bar from 48rem up, where a sidebar or top bar takes over. */
23
+ readonly visibility?: "compact" | "always";
24
+ readonly className?: string;
25
+ };
26
+ /**
27
+ * The mobile tab bar: 3-5 primary destinations with icon + label, a 44px minimum target, the
28
+ * device safe-area inset, and `aria-current="page"` plus `data-grammar-current` on the current
29
+ * destination. Left/Right/Home/End move between items; every item also stays in the Tab order.
30
+ * Contract: nav LAYOUT-4 (fixed bar), list FOCUS-2, item FOCUS-1 ACTION-3 (anchor vs button), icon ICON-6.
31
+ */
32
+ export declare const BottomNav: ({ label, items, currentId, onSelect, position, visibility, className }: BottomNavProps) => import("react").JSX.Element;
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/composition/BottomNav/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAA;AAIrD,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,8FAA8F;IAC9F,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,gEAAgE;IAChE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IACtC,oFAAoF;IACpF,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,wEAA8F,cAAc,gCAwCrI,CAAA"}
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { moveFocusBetweenPeers } from "../../navigationKeys.js";
4
+ import { navigationClassName } from "../../navigationClassNames.js";
5
+ /**
6
+ * The mobile tab bar: 3-5 primary destinations with icon + label, a 44px minimum target, the
7
+ * device safe-area inset, and `aria-current="page"` plus `data-grammar-current` on the current
8
+ * destination. Left/Right/Home/End move between items; every item also stays in the Tab order.
9
+ * Contract: nav LAYOUT-4 (fixed bar), list FOCUS-2, item FOCUS-1 ACTION-3 (anchor vs button), icon ICON-6.
10
+ */
11
+ export const BottomNav = ({ label, items, currentId, onSelect, position = "fixed", visibility = "compact", className }) => (_jsx("nav", { "aria-label": label, className: navigationClassName("starci-core-bottom-nav", className), "data-component": "BottomNav", "data-contract": "LAYOUT-4", "data-tier": "composition", "data-grammar-bottom-nav-position": position, "data-grammar-bottom-nav-visibility": visibility, style: { "--starci-core-bottom-nav-count": String(Math.max(1, items.length)) }, children: _jsx("ul", { className: "starci-core-bottom-nav-list", "data-contract": "FOCUS-2", onKeyDown: (event) => { moveFocusBetweenPeers(event, "[data-grammar-bottom-nav-item]", "horizontal"); }, children: items.map((item) => {
12
+ const isCurrent = item.id === currentId;
13
+ const shared = {
14
+ "aria-current": isCurrent ? "page" : undefined,
15
+ className: "starci-core-bottom-nav-item",
16
+ "data-grammar-bottom-nav-item": "true",
17
+ "data-grammar-current": isCurrent ? "true" : "false",
18
+ };
19
+ const content = _jsxs(_Fragment, { children: [_jsxs("span", { "aria-hidden": "true", className: "starci-core-bottom-nav-icon", "data-contract": "ICON-6", children: [item.icon, item.badge === undefined ? null : _jsx("span", { className: "starci-core-bottom-nav-badge", "data-grammar-bottom-nav-badge": "true", children: item.badge })] }), _jsx("span", { className: "starci-core-bottom-nav-label", children: item.label }), item.badgeLabel === undefined ? null : _jsx("span", { className: "starci-core-nav-visually-hidden", children: `, ${item.badgeLabel}` })] });
20
+ return (_jsx("li", { className: "starci-core-bottom-nav-slot", children: item.href !== undefined && item.isDisabled !== true ? (_jsx("a", { ...shared, "data-contract": "FOCUS-1 ACTION-3", href: item.href, onClick: () => onSelect?.(item.id), children: content })) : (_jsx("button", { ...shared, "data-contract": "FOCUS-1 ACTION-3", disabled: item.isDisabled === true, onClick: () => onSelect?.(item.id), type: "button", children: content })) }, item.id));
21
+ }) }) }));
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composition/BottomNav/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAGZ,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AA4BnE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,EAAE,UAAU,GAAG,SAAS,EAAE,SAAS,EAAkB,EAAE,EAAE,CAAC,CACvI,4BACgB,KAAK,EACjB,SAAS,EAAE,mBAAmB,CAAC,wBAAwB,EAAE,SAAS,CAAC,oBACpD,WAAW,mBACZ,UAAU,eACd,aAAa,sCACW,QAAQ,wCACN,UAAU,EAC9C,KAAK,EAAE,EAAE,gCAAgC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAmB,YAE/F,aAAI,SAAS,EAAC,6BAA6B,mBAAe,SAAS,EAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,qBAAqB,CAAC,KAAK,EAAE,gCAAgC,EAAE,YAAY,CAAC,CAAA,CAAC,CAAC,YACrK,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAChB,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,KAAK,SAAS,CAAA;YACvC,MAAM,MAAM,GAAG;gBACX,cAAc,EAAE,SAAS,CAAC,CAAC,CAAE,MAAgB,CAAC,CAAC,CAAC,SAAS;gBACzD,SAAS,EAAE,6BAA6B;gBACxC,8BAA8B,EAAE,MAAM;gBACtC,sBAAsB,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;aACvD,CAAA;YACD,MAAM,OAAO,GAAG,8BACZ,+BAAkB,MAAM,EAAC,SAAS,EAAC,6BAA6B,mBAAe,QAAQ,aAClF,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,8BAA8B,mCAA+B,MAAM,YAAE,IAAI,CAAC,KAAK,GAAQ,IACvI,EACP,eAAM,SAAS,EAAC,8BAA8B,YAAE,IAAI,CAAC,KAAK,GAAQ,EACjE,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,iCAAiC,YAAE,KAAK,IAAI,CAAC,UAAU,EAAE,GAAQ,IAC1H,CAAA;YACH,OAAO,CACH,aAAkB,SAAS,EAAC,6BAA6B,YACpD,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,CACnD,eAAO,MAAM,mBAAgB,kBAAkB,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,YAAG,OAAO,GAAK,CACrH,CAAC,CAAC,CAAC,CACA,oBAAY,MAAM,mBAAgB,kBAAkB,EAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAC,QAAQ,YAAE,OAAO,GAAU,CAChK,IALI,IAAI,CAAC,EAAE,CAMX,CACR,CAAA;QACL,CAAC,CAAC,GACD,GACH,CACT,CAAA"}
@@ -0,0 +1,35 @@
1
+ import { type ReactNode } from "react";
2
+ import { type LinkKind } from "../../primitive/Link/index.js";
3
+ export type FooterLink = {
4
+ readonly id: string;
5
+ readonly label: string;
6
+ readonly href: string;
7
+ readonly kind?: LinkKind;
8
+ readonly isCurrent?: boolean;
9
+ };
10
+ export type FooterLinkGroup = {
11
+ readonly id: string;
12
+ readonly label: string;
13
+ readonly links: ReadonlyArray<FooterLink>;
14
+ };
15
+ export type FooterProps = {
16
+ /** Names the footer's link landmark, e.g. "Footer". Required when `groups` are present. */
17
+ readonly label?: string;
18
+ /** App-owned identity and short statement. */
19
+ readonly brand?: ReactNode;
20
+ readonly groups?: ReadonlyArray<FooterLinkGroup>;
21
+ /** Legal line, copyright, locale switcher: the closing row. */
22
+ readonly legal?: ReactNode;
23
+ /** App-owned assistive hint for external links, e.g. that they open a new tab. */
24
+ readonly externalHint?: string;
25
+ readonly children?: ReactNode;
26
+ readonly className?: string;
27
+ };
28
+ /**
29
+ * The page footer (`<footer>`, the contentinfo landmark at page level): brand, grouped link
30
+ * directories that reflow from columns to one column at narrow widths, free content and a legal
31
+ * row. Links are Common `Link`s, so the current page keeps `aria-current="page"`.
32
+ * Contract: directory HIERARCHY-3 (reflow keeps source order), link list A11Y-4 CTA-2 (named list of destinations).
33
+ */
34
+ export declare const Footer: ({ label, brand, groups, legal, externalHint, children, className }: FooterProps) => import("react").JSX.Element;
35
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/composition/Footer/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAC7C,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAGnE,MAAM,MAAM,UAAU,GAAG;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;CAC5C,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACtB,2FAA2F;IAC3F,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAA;IAChD,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;IAC1B,kFAAkF;IAClF,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GAAI,oEAAyE,WAAW,gCA4C1G,CAAA"}
@@ -0,0 +1,19 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useId } from "react";
4
+ import { Link } from "../../primitive/Link/index.js";
5
+ import { navigationClassName } from "../../navigationClassNames.js";
6
+ /**
7
+ * The page footer (`<footer>`, the contentinfo landmark at page level): brand, grouped link
8
+ * directories that reflow from columns to one column at narrow widths, free content and a legal
9
+ * row. Links are Common `Link`s, so the current page keeps `aria-current="page"`.
10
+ * Contract: directory HIERARCHY-3 (reflow keeps source order), link list A11Y-4 CTA-2 (named list of destinations).
11
+ */
12
+ export const Footer = ({ label, brand, groups = [], legal, externalHint, children, className }) => {
13
+ const idPrefix = useId();
14
+ return (_jsxs("footer", { className: navigationClassName("starci-core-footer", className), "data-component": "Footer", "data-tier": "composition", children: [brand === undefined && groups.length === 0 && children === undefined ? null : (_jsxs("div", { className: "starci-core-footer-main", children: [brand === undefined ? null : _jsx("div", { className: "starci-core-footer-brand", "data-grammar-footer-brand": "true", children: brand }), groups.length === 0 ? null : (_jsx("nav", { "aria-label": label, className: "starci-core-footer-directory", "data-contract": "HIERARCHY-3", "data-grammar-footer-directory": "true", children: groups.map((group) => {
15
+ const headingId = `${idPrefix}-${group.id}`;
16
+ return (_jsxs("div", { className: "starci-core-footer-group", "data-grammar-footer-group": "true", children: [_jsx("p", { className: "starci-core-footer-group-label", id: headingId, children: group.label }), _jsx("ul", { "aria-labelledby": headingId, className: "starci-core-footer-links", "data-contract": "A11Y-4 CTA-2", children: group.links.map((link) => (_jsx("li", { children: _jsx(Link, { href: link.href, isCurrent: link.isCurrent === true, kind: link.kind ?? "internal", visited: "uniform", ...(externalHint === undefined ? {} : { externalHint }), children: link.label }) }, link.id))) })] }, group.id));
17
+ }) })), children] })), legal === undefined ? null : _jsx("div", { className: "starci-core-footer-legal", "data-grammar-footer-legal": "true", children: legal })] }));
18
+ };
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composition/Footer/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,KAAK,EAAkB,MAAM,OAAO,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAiB,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AA8BnE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAe,EAAE,EAAE;IAC3G,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAA;IACxB,OAAO,CACH,kBACI,SAAS,EAAE,mBAAmB,CAAC,oBAAoB,EAAE,SAAS,CAAC,oBAChD,QAAQ,eACb,aAAa,aAEtB,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC3E,eAAK,SAAS,EAAC,yBAAyB,aACnC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,0BAA0B,+BAA2B,MAAM,YAAE,KAAK,GAAO,EACrH,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC1B,4BAAiB,KAAK,EAAE,SAAS,EAAC,8BAA8B,mBAAe,aAAa,mCAA+B,MAAM,YAC5H,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;4BAClB,MAAM,SAAS,GAAG,GAAG,QAAQ,IAAI,KAAK,CAAC,EAAE,EAAE,CAAA;4BAC3C,OAAO,CACH,eAAoB,SAAS,EAAC,0BAA0B,+BAA2B,MAAM,aACrF,YAAG,SAAS,EAAC,gCAAgC,EAAC,EAAE,EAAE,SAAS,YAAG,KAAK,CAAC,KAAK,GAAK,EAC9E,gCAAqB,SAAS,EAAE,SAAS,EAAC,0BAA0B,mBAAe,cAAc,YAC5F,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACvB,uBACI,KAAC,IAAI,IACD,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,SAAS,EAAE,IAAI,CAAC,SAAS,KAAK,IAAI,EAClC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,UAAU,EAC7B,OAAO,EAAC,SAAS,KACb,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,YAEvD,IAAI,CAAC,KAAK,GACR,IATF,IAAI,CAAC,EAAE,CAUX,CACR,CAAC,GACD,KAhBC,KAAK,CAAC,EAAE,CAiBZ,CACT,CAAA;wBACL,CAAC,CAAC,GACA,CACT,EACA,QAAQ,IACP,CACT,EACA,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,0BAA0B,+BAA2B,MAAM,YAAE,KAAK,GAAO,IACjH,CACZ,CAAA;AACL,CAAC,CAAA"}
@@ -34,6 +34,9 @@ export type NavigationFeatureNavProps = Omit<ComponentPropsWithoutRef<"header">,
34
34
  * The composition owns the single outer separator: the primary and feature
35
35
  * layers are intentionally continuous. Deeper responsive navigation belongs
36
36
  * to the independent Subnav branch instead of becoming a third navbar layer.
37
+ *
38
+ * Landmark rule: this `<header>` is the page's one banner. In `WorkspaceShell`'s `header` slot the
39
+ * shell yields its own `<header>` for a plain `div`, so the banner is never nested or duplicated.
37
40
  */
38
41
  export declare const NavigationFeatureNav: ({ identity, navigation, navigationLabel, compactNavigationTrigger, compactNavigationTriggerLabel, actions, actionsLabel, featureNavigation, featureNavigationLabel, measure, position, className, ...headerProps }: NavigationFeatureNavProps) => import("react").JSX.Element;
39
42
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/composition/NavigationFeatureNav/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAChE,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAW/F;;;;;;GAMG;AACH,KAAK,cAAc,GAAG;IAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAA;AAC1F,KAAK,iBAAiB,GAAG;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,CAAA;CAAE,CAAA;AAE9F,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,cAAc,GAAG,iBAAiB,CAAC,GAAG;IAClI,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,gGAAgG;IAChG,QAAQ,CAAC,wBAAwB,EAAE,SAAS,CAAA;IAC5C,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAA;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,qGAAqG;IACrG,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,CAAA;IACtC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAA;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC1C,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,oNAclC,yBAAyB,gCA8C3B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/composition/NavigationFeatureNav/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAChE,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAW/F;;;;;;GAMG;AACH,KAAK,cAAc,GAAG;IAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAA;AAC1F,KAAK,iBAAiB,GAAG;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,CAAA;CAAE,CAAA;AAE9F,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,cAAc,GAAG,iBAAiB,CAAC,GAAG;IAClI,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,gGAAgG;IAChG,QAAQ,CAAC,wBAAwB,EAAE,SAAS,CAAA;IAC5C,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAA;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,qGAAqG;IACrG,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,CAAA;IACtC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAA;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC1C,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,GAAI,oNAclC,yBAAyB,gCA8C3B,CAAA"}
@@ -8,6 +8,9 @@ import { navigationFeatureNavActionsClassName, navigationFeatureNavClassName, na
8
8
  * The composition owns the single outer separator: the primary and feature
9
9
  * layers are intentionally continuous. Deeper responsive navigation belongs
10
10
  * to the independent Subnav branch instead of becoming a third navbar layer.
11
+ *
12
+ * Landmark rule: this `<header>` is the page's one banner. In `WorkspaceShell`'s `header` slot the
13
+ * shell yields its own `<header>` for a plain `div`, so the banner is never nested or duplicated.
11
14
  */
12
15
  export const NavigationFeatureNav = ({ identity, navigation, navigationLabel, compactNavigationTrigger, compactNavigationTriggerLabel, actions, actionsLabel, featureNavigation, featureNavigationLabel, measure = "full", position = "sticky", className, ...headerProps }) => (_jsxs("header", { ...headerProps, className: cn(navigationFeatureNavClassName, className), "data-contract": "MEASURE-2 BOUNDARY-1", "data-grammar-navigation-feature-nav": "true", "data-grammar-navigation-feature-nav-destinations": navigation === undefined ? "absent" : "present", "data-grammar-navigation-feature-nav-layers": featureNavigation === undefined ? "one" : "two", "data-grammar-navigation-feature-nav-position": position, children: [_jsxs(PageContainer, { className: navigationFeatureNavPrimaryClassName, "data-contract": "GAP-3 PADDING-3", "data-grammar-navigation-feature-nav-primary": "true", measure: measure, children: [_jsx("div", { className: navigationFeatureNavIdentityClassName, "data-grammar-navigation-feature-nav-identity": "true", children: identity }), navigation === undefined ? null : (_jsx("nav", { "aria-label": navigationLabel, className: navigationFeatureNavNavigationClassName, "data-grammar-navigation-feature-nav-navigation": "true", children: navigation })), _jsx("div", { "aria-label": compactNavigationTriggerLabel, className: navigationFeatureNavCompactNavigationClassName, "data-grammar-navigation-feature-nav-compact-navigation": "true", role: "group", children: compactNavigationTrigger }), actions === undefined ? null : (_jsx("div", { "aria-label": actionsLabel, className: navigationFeatureNavActionsClassName, "data-contract": "GAP-2", "data-grammar-navigation-feature-nav-actions": "true", role: actionsLabel === undefined ? undefined : "group", children: actions }))] }), featureNavigation === undefined ? null : (_jsx("div", { "aria-label": featureNavigationLabel, className: navigationFeatureNavFeatureClassName, "data-grammar-navigation-feature-nav-feature": "true", role: featureNavigationLabel === undefined ? undefined : "region", children: featureNavigation }))] }));
13
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composition/NavigationFeatureNav/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAElC,OAAO,EAAE,aAAa,EAA2B,MAAM,wCAAwC,CAAA;AAC/F,OAAO,EACH,oCAAoC,EACpC,6BAA6B,EAC7B,8CAA8C,EAC9C,oCAAoC,EACpC,qCAAqC,EACrC,uCAAuC,EACvC,oCAAoC,GACvC,MAAM,iBAAiB,CAAA;AA0BxB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACjC,QAAQ,EACR,UAAU,EACV,eAAe,EACf,wBAAwB,EACxB,6BAA6B,EAC7B,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,OAAO,GAAG,MAAM,EAChB,QAAQ,GAAG,QAAQ,EACnB,SAAS,EACT,GAAG,WAAW,EACU,EAAE,EAAE,CAAC,CAC7B,qBACQ,WAAW,EACf,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,mBACzC,sBAAsB,yCACA,MAAM,sDACQ,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,gDACrD,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,kDAC7C,QAAQ,aAEtD,MAAC,aAAa,IAAC,SAAS,EAAE,oCAAoC,mBAAgB,iBAAiB,iDAA6C,MAAM,EAAC,OAAO,EAAE,OAAO,aAC/J,cAAK,SAAS,EAAE,qCAAqC,kDAA+C,MAAM,YAAE,QAAQ,GAAO,EAC1H,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC/B,4BAAiB,eAAe,EAAE,SAAS,EAAE,uCAAuC,oDAAiD,MAAM,YAAE,UAAU,GAAO,CACjK,EACD,4BACgB,6BAA6B,EACzC,SAAS,EAAE,8CAA8C,4DACF,MAAM,EAC7D,IAAI,EAAC,OAAO,YAEX,wBAAwB,GACvB,EACL,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5B,4BACgB,YAAY,EACxB,SAAS,EAAE,oCAAoC,mBACjC,OAAO,iDACuB,MAAM,EAClD,IAAI,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,YAErD,OAAO,GACN,CACT,IACW,EACf,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACtC,4BACgB,sBAAsB,EAClC,SAAS,EAAE,oCAAoC,iDACH,MAAM,EAClD,IAAI,EAAE,sBAAsB,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,YAEhE,iBAAiB,GAChB,CACT,IACI,CACZ,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composition/NavigationFeatureNav/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAElC,OAAO,EAAE,aAAa,EAA2B,MAAM,wCAAwC,CAAA;AAC/F,OAAO,EACH,oCAAoC,EACpC,6BAA6B,EAC7B,8CAA8C,EAC9C,oCAAoC,EACpC,qCAAqC,EACrC,uCAAuC,EACvC,oCAAoC,GACvC,MAAM,iBAAiB,CAAA;AA0BxB;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACjC,QAAQ,EACR,UAAU,EACV,eAAe,EACf,wBAAwB,EACxB,6BAA6B,EAC7B,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,OAAO,GAAG,MAAM,EAChB,QAAQ,GAAG,QAAQ,EACnB,SAAS,EACT,GAAG,WAAW,EACU,EAAE,EAAE,CAAC,CAC7B,qBACQ,WAAW,EACf,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,mBACzC,sBAAsB,yCACA,MAAM,sDACQ,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,gDACrD,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,kDAC7C,QAAQ,aAEtD,MAAC,aAAa,IAAC,SAAS,EAAE,oCAAoC,mBAAgB,iBAAiB,iDAA6C,MAAM,EAAC,OAAO,EAAE,OAAO,aAC/J,cAAK,SAAS,EAAE,qCAAqC,kDAA+C,MAAM,YAAE,QAAQ,GAAO,EAC1H,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC/B,4BAAiB,eAAe,EAAE,SAAS,EAAE,uCAAuC,oDAAiD,MAAM,YAAE,UAAU,GAAO,CACjK,EACD,4BACgB,6BAA6B,EACzC,SAAS,EAAE,8CAA8C,4DACF,MAAM,EAC7D,IAAI,EAAC,OAAO,YAEX,wBAAwB,GACvB,EACL,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5B,4BACgB,YAAY,EACxB,SAAS,EAAE,oCAAoC,mBACjC,OAAO,iDACuB,MAAM,EAClD,IAAI,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,YAErD,OAAO,GACN,CACT,IACW,EACf,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACtC,4BACgB,sBAAsB,EAClC,SAAS,EAAE,oCAAoC,iDACH,MAAM,EAClD,IAAI,EAAE,sBAAsB,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,YAEhE,iBAAiB,GAChB,CACT,IACI,CACZ,CAAA"}
@@ -0,0 +1,34 @@
1
+ import type { ComponentPropsWithoutRef, ReactNode } from "react";
2
+ export type TopBarMenu = {
3
+ readonly icon: ReactNode;
4
+ readonly openLabel: string;
5
+ readonly closeLabel: string;
6
+ readonly isOpen: boolean;
7
+ readonly onOpenChange: (isOpen: boolean) => void;
8
+ /** Id of the drawer/menu region the trigger opens (`aria-controls`). */
9
+ readonly controls?: string;
10
+ /** `compact` shows the trigger only below 48rem, where `navigation` leaves the bar. */
11
+ readonly visibility?: "compact" | "always";
12
+ };
13
+ export type TopBarProps = Omit<ComponentPropsWithoutRef<"header">, "children" | "title"> & {
14
+ /** App-owned identity (logo, product name) - usually a link home. */
15
+ readonly brand: ReactNode;
16
+ /** Primary destinations shown inline at wide widths (e.g. a `<nav>` of `Link`s). */
17
+ readonly navigation?: ReactNode;
18
+ /** Trailing actions: search, notifications, account. They stay visible at every width. */
19
+ readonly actions?: ReactNode;
20
+ /** The mobile menu trigger. */
21
+ readonly menu?: TopBarMenu;
22
+ readonly position?: "static" | "sticky";
23
+ };
24
+ /**
25
+ * The application bar (`<header>`, the banner landmark at page level): brand, inline navigation,
26
+ * actions and a menu trigger that replaces the inline navigation below 48rem. The trigger reports
27
+ * `aria-expanded`; the drawer it opens stays app/overlay-owned.
28
+ *
29
+ * Landmark rule: a page has ONE banner, and the app bar owns it. Hosted in `WorkspaceShell`'s
30
+ * `header` slot, the shell yields (its wrapper becomes a plain `div`) so the banner is never nested.
31
+ * Contract: menu trigger A11Y-2 ICON-5 STATE-7 (named glyph button, app-owned aria-expanded).
32
+ */
33
+ export declare const TopBar: ({ brand, navigation, actions, menu, position, className, ...headerProps }: TopBarProps) => import("react").JSX.Element;
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/composition/TopBar/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGhE,MAAM,MAAM,UAAU,GAAG;IACrB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IAChD,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,uFAAuF;IACvF,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;CAC7C,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG;IACvF,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,oFAAoF;IACpF,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAA;IAC/B,0FAA0F;IAC1F,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAA;IAC5B,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC1C,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,GAAI,2EAAsF,WAAW,gCA6BvH,CAAA"}
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Button as HeroButton } from "@heroui/react";
4
+ import { navigationClassName } from "../../navigationClassNames.js";
5
+ /**
6
+ * The application bar (`<header>`, the banner landmark at page level): brand, inline navigation,
7
+ * actions and a menu trigger that replaces the inline navigation below 48rem. The trigger reports
8
+ * `aria-expanded`; the drawer it opens stays app/overlay-owned.
9
+ *
10
+ * Landmark rule: a page has ONE banner, and the app bar owns it. Hosted in `WorkspaceShell`'s
11
+ * `header` slot, the shell yields (its wrapper becomes a plain `div`) so the banner is never nested.
12
+ * Contract: menu trigger A11Y-2 ICON-5 STATE-7 (named glyph button, app-owned aria-expanded).
13
+ */
14
+ export const TopBar = ({ brand, navigation, actions, menu, position = "sticky", className, ...headerProps }) => (_jsxs("header", { ...headerProps, className: navigationClassName("starci-core-top-bar", className), "data-component": "TopBar", "data-tier": "composition", "data-grammar-top-bar-position": position, "data-grammar-top-bar-menu": menu === undefined ? "none" : menu.visibility ?? "compact", children: [menu === undefined ? null : (_jsx(HeroButton, { "aria-expanded": menu.isOpen, "aria-label": menu.isOpen ? menu.closeLabel : menu.openLabel, className: "starci-core-top-bar-menu-trigger", "data-contract": "A11Y-2 ICON-5 STATE-7", "data-grammar-top-bar-trigger": "true", isIconOnly: true, onPress: () => menu.onOpenChange(!menu.isOpen), type: "button", variant: "tertiary", ...(menu.controls === undefined ? {} : { "aria-controls": menu.controls }), children: menu.icon })), _jsx("div", { className: "starci-core-top-bar-brand", "data-grammar-top-bar-brand": "true", children: brand }), navigation === undefined ? null : _jsx("div", { className: "starci-core-top-bar-navigation", "data-grammar-top-bar-navigation": "true", children: navigation }), actions === undefined ? null : _jsx("div", { className: "starci-core-top-bar-actions", "data-grammar-top-bar-actions": "true", children: actions })] }));
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composition/TopBar/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,eAAe,CAAA;AAEpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AA0BnE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,SAAS,EAAE,GAAG,WAAW,EAAe,EAAE,EAAE,CAAC,CACzH,qBACQ,WAAW,EACf,SAAS,EAAE,mBAAmB,CAAC,qBAAqB,EAAE,SAAS,CAAC,oBACjD,QAAQ,eACb,aAAa,mCACQ,QAAQ,+BACZ,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,SAAS,aAEpF,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACzB,KAAC,UAAU,qBACQ,IAAI,CAAC,MAAM,gBACd,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAC1D,SAAS,EAAC,kCAAkC,mBAC9B,uBAAuB,kCACR,MAAM,EACnC,UAAU,QACV,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAC9C,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,UAAU,KACd,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,YAE1E,IAAI,CAAC,IAAI,GACD,CAChB,EACD,cAAK,SAAS,EAAC,2BAA2B,gCAA4B,MAAM,YAAE,KAAK,GAAO,EACzF,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,gCAAgC,qCAAiC,MAAM,YAAE,UAAU,GAAO,EAC3I,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,6BAA6B,kCAA8B,MAAM,YAAE,OAAO,GAAO,IAC3H,CACZ,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { ReactNode } from "react";
1
+ import { type ReactNode } from "react";
2
2
  type SlotContent = Exclude<ReactNode, null | undefined | boolean>;
3
3
  type ShellOwnedMain = ({
4
4
  readonly primaryLabel: string;
@@ -52,8 +52,25 @@ type WithoutCompactNavigation = {
52
52
  readonly compactNavigation?: undefined;
53
53
  readonly compactNavigationLabel?: never;
54
54
  };
55
+ /**
56
+ * Who owns the page's single banner landmark when the shell has a `header`.
57
+ *
58
+ * `shell`: the shell's header wrapper is the `<header>` (banner) and the slot holds plain content.
59
+ * `slot`: the slot content is itself the banner (a `TopBar`, a `NavigationFeatureNav`, or an app
60
+ * bar that renders `<header>`), so the wrapper renders a plain `div` and never nests a second
61
+ * banner around it (axe `landmark-banner-is-top-level`, `landmark-no-duplicate-banner`).
62
+ */
63
+ export type WorkspaceShellHeaderLandmark = "shell" | "slot";
64
+ /** Resolve the landmark rule: an explicit prop wins, otherwise a Grammar app bar in the slot owns it. */
65
+ export declare const resolveWorkspaceHeaderLandmark: (header: ReactNode, headerLandmark?: WorkspaceShellHeaderLandmark) => WorkspaceShellHeaderLandmark;
55
66
  export type WorkspaceShellProps = (ShellOwnedMain | CallerOwnedMain) & (WithNavigation | WithoutNavigation) & (WithRail | WithoutRail) & (WithCompactNavigation | WithoutCompactNavigation) & {
56
67
  readonly header?: ReactNode;
68
+ /**
69
+ * Landmark owner for `header` (see `WorkspaceShellHeaderLandmark`). Defaults to `slot` when the
70
+ * header is a `TopBar` or `NavigationFeatureNav`, otherwise `shell`. Pass `slot` when an
71
+ * app-owned bar that renders its own `<header>` goes in the slot.
72
+ */
73
+ readonly headerLandmark?: WorkspaceShellHeaderLandmark;
57
74
  readonly compactHeader?: ReactNode;
58
75
  readonly primary: ReactNode;
59
76
  readonly primaryId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/composition/WorkspaceShell/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/composition/WorkspaceShell/index.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { cn } from "@heroui/react";
3
+ import { isValidElement } from "react";
3
4
  import { Rail } from "../../branch/Rail/index.js";
5
+ import { NavigationFeatureNav } from "../NavigationFeatureNav/index.js";
6
+ import { TopBar } from "../TopBar/index.js";
4
7
  import { workspaceShellClassName, workspaceShellCompactHeaderClassName, workspaceShellCompactNavigationClassName, workspaceShellFloatingLayerClassName, workspaceShellHeaderClassName, workspaceShellLayoutClassName, workspaceShellLeadingRuleClassName, workspaceShellNavigationClassName, workspaceShellPrimaryClassName, workspaceShellRailClassName, } from "./classNames.js";
8
+ /** Grammar bars that own the banner themselves; hosting one flips the default to `slot`. */
9
+ const BANNER_OWNERS = new Set([TopBar, NavigationFeatureNav]);
10
+ /** Resolve the landmark rule: an explicit prop wins, otherwise a Grammar app bar in the slot owns it. */
11
+ export const resolveWorkspaceHeaderLandmark = (header, headerLandmark) => headerLandmark ?? (isValidElement(header) && BANNER_OWNERS.has(header.type) ? "slot" : "shell");
5
12
  /** Shared product workspace anatomy; connected apps supply every route and business slot. */
6
13
  export const WorkspaceShell = (props) => {
7
14
  const hasHeader = props.header != null && typeof props.header !== "boolean";
@@ -15,6 +22,8 @@ export const WorkspaceShell = (props) => {
15
22
  const primary = mainLandmark === "caller" ? _jsx("div", { className: workspaceShellPrimaryClassName, "data-contract": "GAP-5", "data-grammar-workspace-primary": "true", "data-grammar-main-landmark": "caller", id: props.primaryId, tabIndex: -1, children: props.primary }) : _jsx("main", { "aria-label": props.primaryLabel, "aria-labelledby": props.primaryLabelledBy, className: workspaceShellPrimaryClassName, "data-contract": "GAP-5", "data-grammar-workspace-primary": "true", "data-grammar-main-landmark": "shell", id: props.primaryId, tabIndex: -1, children: props.primary });
16
23
  const rail = hasRail ? _jsx("div", { className: workspaceShellRailClassName, "data-grammar-workspace-rail-region": "true", children: _jsx(Rail, { inset: props.railInset ?? "none", isLabelHidden: props.isRailLabelHidden ?? true, label: props.railLabel, mode: props.railMode ?? "flow", width: props.railWidth ?? "standard", children: props.rail }) }) : null;
17
24
  const leadingRule = railPosition === "leading" ? _jsx("div", { "aria-hidden": "true", className: workspaceShellLeadingRuleClassName, "data-contract": "BOUNDARY-4", "data-grammar-workspace-leading-rule": "true" }) : null;
18
- return _jsxs("div", { className: cn(workspaceShellClassName, props.className), "data-grammar-workspace-floating": hasFloatingLayer ? "present" : "absent", "data-grammar-workspace-shell": "true", children: [hasHeader ? _jsx("header", { className: workspaceShellHeaderClassName, "data-contract": "MARGIN-5", "data-grammar-workspace-header": "true", children: props.header }) : null, hasCompactHeader ? _jsx("div", { className: workspaceShellCompactHeaderClassName, "data-grammar-workspace-compact-header": "true", children: props.compactHeader }) : null, _jsxs("div", { className: workspaceShellLayoutClassName, "data-contract": "GAP-5 MEASURE-1", "data-grammar-workspace-align": props.align ?? "start", "data-grammar-workspace-navigation": hasNavigation ? "present" : "absent", "data-grammar-workspace-navigation-track": hasNavigation ? props.navigationTrack ?? "fixed" : undefined, "data-grammar-workspace-navigation-visibility": hasNavigation ? props.navigationVisibility ?? "always" : undefined, "data-grammar-workspace-rail": hasRail ? "present" : "absent", "data-grammar-workspace-rail-position": railPosition, "data-grammar-workspace-rail-width": hasRail ? props.railWidth ?? "standard" : undefined, children: [hasNavigation ? _jsx("nav", { "aria-label": props.navigationLabel, className: workspaceShellNavigationClassName, "data-grammar-workspace-navigation-region": "true", children: props.navigation }) : null, railPosition === "leading" ? rail : null, leadingRule, primary, railPosition === "trailing" ? rail : null] }), hasCompactNavigation ? _jsx("nav", { "aria-label": props.compactNavigationLabel, className: workspaceShellCompactNavigationClassName, "data-contract": "BOUNDARY-1", "data-grammar-workspace-compact-navigation": "true", children: props.compactNavigation }) : null, hasFloatingLayer ? _jsx("div", { className: workspaceShellFloatingLayerClassName, "data-contract": "OVERFLOW-4", "data-grammar-workspace-floating-layer": "true", children: props.floatingLayer }) : null] });
25
+ return _jsxs("div", { className: cn(workspaceShellClassName, props.className), "data-grammar-workspace-floating": hasFloatingLayer ? "present" : "absent", "data-grammar-workspace-shell": "true", children: [hasHeader ? (resolveWorkspaceHeaderLandmark(props.header, props.headerLandmark) === "slot"
26
+ ? _jsx("div", { className: workspaceShellHeaderClassName, "data-contract": "MARGIN-5", "data-grammar-workspace-header": "true", "data-grammar-workspace-header-landmark": "slot", children: props.header })
27
+ : _jsx("header", { className: workspaceShellHeaderClassName, "data-contract": "MARGIN-5", "data-grammar-workspace-header": "true", "data-grammar-workspace-header-landmark": "shell", children: props.header })) : null, hasCompactHeader ? _jsx("div", { className: workspaceShellCompactHeaderClassName, "data-grammar-workspace-compact-header": "true", children: props.compactHeader }) : null, _jsxs("div", { className: workspaceShellLayoutClassName, "data-contract": "GAP-5 MEASURE-1", "data-grammar-workspace-align": props.align ?? "start", "data-grammar-workspace-navigation": hasNavigation ? "present" : "absent", "data-grammar-workspace-navigation-track": hasNavigation ? props.navigationTrack ?? "fixed" : undefined, "data-grammar-workspace-navigation-visibility": hasNavigation ? props.navigationVisibility ?? "always" : undefined, "data-grammar-workspace-rail": hasRail ? "present" : "absent", "data-grammar-workspace-rail-position": railPosition, "data-grammar-workspace-rail-width": hasRail ? props.railWidth ?? "standard" : undefined, children: [hasNavigation ? _jsx("nav", { "aria-label": props.navigationLabel, className: workspaceShellNavigationClassName, "data-grammar-workspace-navigation-region": "true", children: props.navigation }) : null, railPosition === "leading" ? rail : null, leadingRule, primary, railPosition === "trailing" ? rail : null] }), hasCompactNavigation ? _jsx("nav", { "aria-label": props.compactNavigationLabel, className: workspaceShellCompactNavigationClassName, "data-contract": "BOUNDARY-1", "data-grammar-workspace-compact-navigation": "true", children: props.compactNavigation }) : null, hasFloatingLayer ? _jsx("div", { className: workspaceShellFloatingLayerClassName, "data-contract": "OVERFLOW-4", "data-grammar-workspace-floating-layer": "true", children: props.floatingLayer }) : null] });
19
28
  };
20
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composition/WorkspaceShell/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAElC,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAA;AACjD,OAAO,EACH,uBAAuB,EACvB,oCAAoC,EACpC,wCAAwC,EACxC,oCAAoC,EACpC,6BAA6B,EAC7B,6BAA6B,EAC7B,kCAAkC,EAClC,iCAAiC,EACjC,8BAA8B,EAC9B,2BAA2B,GAC9B,MAAM,iBAAiB,CAAA;AAsBxB,6FAA6F;AAC7F,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAA0B,EAAE,EAAE;IACzD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,SAAS,CAAA;IAC3E,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,IAAI,IAAI,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,SAAS,CAAA;IAChG,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,KAAK,SAAS,CAAA;IACpD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAA;IACxC,MAAM,oBAAoB,GAAG,KAAK,CAAC,iBAAiB,KAAK,SAAS,CAAA;IAClE,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,IAAI,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;IAC3E,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,IAAI,IAAI,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,SAAS,CAAA;IAChG,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,OAAO,CAAA;IAClD,MAAM,OAAO,GAAG,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAK,SAAS,EAAE,8BAA8B,mBAAgB,OAAO,oCAAgC,MAAM,gCAA4B,QAAQ,EAAC,EAAE,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,YAAG,KAAK,CAAC,OAAO,GAAO,CAAC,CAAC,CAAC,6BAAkB,KAAK,CAAC,YAAY,qBAAmB,KAAK,CAAC,iBAAiB,EAAE,SAAS,EAAE,8BAA8B,mBAAgB,OAAO,oCAAgC,MAAM,gCAA4B,OAAO,EAAC,EAAE,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,YAAG,KAAK,CAAC,OAAO,GAAQ,CAAA;IAC1gB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,cAAK,SAAS,EAAE,2BAA2B,wCAAqC,MAAM,YAAC,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,SAAS,IAAI,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,iBAAiB,IAAI,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,IAAI,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,IAAI,UAAU,YAAG,KAAK,CAAC,IAAI,GAAQ,GAAM,CAAC,CAAC,CAAC,IAAI,CAAA;IACpU,MAAM,WAAW,GAAG,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,6BAAiB,MAAM,EAAC,SAAS,EAAE,kCAAkC,mBAAgB,YAAY,yCAAqC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;IAEvM,OAAO,eAAK,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,KAAK,CAAC,SAAS,CAAC,qCAAmC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,kCAA+B,MAAM,aAC7K,SAAS,CAAC,CAAC,CAAC,iBAAQ,SAAS,EAAE,6BAA6B,mBAAgB,UAAU,mCAA+B,MAAM,YAAE,KAAK,CAAC,MAAM,GAAU,CAAC,CAAC,CAAC,IAAI,EAC1J,gBAAgB,CAAC,CAAC,CAAC,cAAK,SAAS,EAAE,oCAAoC,2CAAwC,MAAM,YAAE,KAAK,CAAC,aAAa,GAAO,CAAC,CAAC,CAAC,IAAI,EACzJ,eAAK,SAAS,EAAE,6BAA6B,mBAAgB,iBAAiB,kCAA+B,KAAK,CAAC,KAAK,IAAI,OAAO,uCAAqC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,6CAA2C,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,IAAI,OAAO,CAAC,CAAC,CAAC,SAAS,kDAAgD,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,oBAAoB,IAAI,QAAQ,CAAC,CAAC,CAAC,SAAS,iCAA+B,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,0CAAwC,YAAY,uCAAqC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,SAAS,aACzmB,aAAa,CAAC,CAAC,CAAC,4BAAiB,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE,iCAAiC,8CAA2C,MAAM,YAAE,KAAK,CAAC,UAAU,GAAO,CAAC,CAAC,CAAC,IAAI,EACrL,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IACxG,EACL,oBAAoB,CAAC,CAAC,CAAC,4BAAiB,KAAK,CAAC,sBAAsB,EAAE,SAAS,EAAE,wCAAwC,mBAAgB,YAAY,+CAA2C,MAAM,YAAE,KAAK,CAAC,iBAAiB,GAAO,CAAC,CAAC,CAAC,IAAI,EAC7O,gBAAgB,CAAC,CAAC,CAAC,cAAK,SAAS,EAAE,oCAAoC,mBAAgB,YAAY,2CAAuC,MAAM,YAAE,KAAK,CAAC,aAAa,GAAO,CAAC,CAAC,CAAC,IAAI,IAClL,CAAA;AACV,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/composition/WorkspaceShell/index.tsx"],"names":[],"mappings":"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"}
@@ -4,6 +4,14 @@
4
4
  * This is presentation data, not a registry of UI laws. Product rules remain
5
5
  * outside the package; consumers use these values to render the same StarCi
6
6
  * family without rebuilding its palette, geometry or motion from memory.
7
+ *
8
+ * Every colour pair the family's CSS combines clears WCAG AA in light and dark; `styles.spec.ts`
9
+ * measures them through the resolved scope, HeroUI's vendor variables included. `accent` is the
10
+ * brand FILL (white text on it, and the focus ring); where the accent is painted as TEXT - links,
11
+ * the current tab and bottom-nav label, the section eyebrow, the soft accent pairing - the family
12
+ * reads `accentText`, which is themed because the violet fill is too dark to read on the dark
13
+ * canvas (3.95:1) and a hair too light on the secondary surface (4.44:1). `accentSoft` is the
14
+ * selected/soft tint that `accentText` and `muted` both stay AA on.
7
15
  */
8
16
  export declare const STARCI_CORE_DNA: Readonly<{
9
17
  readonly id: "starci-core";
@@ -17,17 +25,19 @@ export declare const STARCI_CORE_DNA: Readonly<{
17
25
  surface: "oklch(100% 0.0008 354.13)";
18
26
  surfaceSecondary: "oklch(95.24% 0.0012 354.13)";
19
27
  foreground: "oklch(21.03% 0.0015 354.13)";
20
- muted: "oklch(55.17% 0.003 354.13)";
28
+ muted: "oklch(52% 0.003 354.13)";
21
29
  border: "oklch(90% 0.0015 354.13)";
22
30
  separator: "oklch(92% 0.0015 354.13)";
23
31
  success: "oklch(73.29% 0.1941 162.85)";
24
32
  successForeground: "oklch(21.03% 0.0059 162.85)";
25
33
  warning: "oklch(78.19% 0.159 84.37)";
26
34
  warningForeground: "oklch(21.03% 0.0059 84.37)";
27
- danger: "oklch(65.32% 0.2335 37.78)";
35
+ danger: "oklch(55% 0.2 37.78)";
28
36
  dangerForeground: "oklch(99.11% 0 0)";
29
37
  info: "oklch(72% 0.17 250)";
30
38
  infoForeground: "oklch(21.03% 0.0059 250)";
39
+ accentText: "#6a3cf2";
40
+ accentSoft: "oklch(95.5% 0.03 287)";
31
41
  }>;
32
42
  dark: Readonly<{
33
43
  canvas: "oklch(12% 0.0015 354.13)";
@@ -41,10 +51,12 @@ export declare const STARCI_CORE_DNA: Readonly<{
41
51
  successForeground: "oklch(21.03% 0.0059 162.85)";
42
52
  warning: "oklch(82.03% 0.1392 88.38)";
43
53
  warningForeground: "oklch(21.03% 0.0059 88.38)";
44
- danger: "oklch(59.4% 0.1973 36.67)";
45
- dangerForeground: "oklch(99.11% 0 0)";
54
+ danger: "oklch(70% 0.17 36.67)";
55
+ dangerForeground: "oklch(21.03% 0.0059 36.67)";
46
56
  info: "oklch(72% 0.17 250)";
47
57
  infoForeground: "oklch(21.03% 0.0059 250)";
58
+ accentText: "#a48bff";
59
+ accentSoft: "oklch(30% 0.07 287)";
48
60
  }>;
49
61
  }>;
50
62
  readonly geometry: Readonly<{
@@ -108,6 +120,8 @@ export declare const STARCI_CORE_TOKEN_NAMES: Readonly<{
108
120
  readonly dangerForeground: "--starci-core-danger-foreground";
109
121
  readonly info: "--starci-core-info";
110
122
  readonly infoForeground: "--starci-core-info-foreground";
123
+ readonly accentText: "--starci-core-accent-text";
124
+ readonly accentSoft: "--starci-core-accent-soft";
111
125
  readonly pageMeasure: "--starci-core-page-measure";
112
126
  readonly readingMeasure: "--starci-core-reading-measure";
113
127
  readonly surfaceRadius: "--starci-core-surface-radius";
@@ -160,17 +174,19 @@ export declare const STARCI_CORE_TOKEN_DEFAULTS: Readonly<{
160
174
  "--starci-core-surface": "oklch(100% 0.0008 354.13)";
161
175
  "--starci-core-surface-secondary": "oklch(95.24% 0.0012 354.13)";
162
176
  "--starci-core-foreground": "oklch(21.03% 0.0015 354.13)";
163
- "--starci-core-muted": "oklch(55.17% 0.003 354.13)";
177
+ "--starci-core-muted": "oklch(52% 0.003 354.13)";
164
178
  "--starci-core-border": "oklch(90% 0.0015 354.13)";
165
179
  "--starci-core-separator": "oklch(92% 0.0015 354.13)";
166
180
  "--starci-core-success": "oklch(73.29% 0.1941 162.85)";
167
181
  "--starci-core-success-foreground": "oklch(21.03% 0.0059 162.85)";
168
182
  "--starci-core-warning": "oklch(78.19% 0.159 84.37)";
169
183
  "--starci-core-warning-foreground": "oklch(21.03% 0.0059 84.37)";
170
- "--starci-core-danger": "oklch(65.32% 0.2335 37.78)";
184
+ "--starci-core-danger": "oklch(55% 0.2 37.78)";
171
185
  "--starci-core-danger-foreground": "oklch(99.11% 0 0)";
172
186
  "--starci-core-info": "oklch(72% 0.17 250)";
173
187
  "--starci-core-info-foreground": "oklch(21.03% 0.0059 250)";
188
+ "--starci-core-accent-text": "#6a3cf2";
189
+ "--starci-core-accent-soft": "oklch(95.5% 0.03 287)";
174
190
  "--starci-core-page-measure": "80rem";
175
191
  "--starci-core-reading-measure": "72ch";
176
192
  "--starci-core-surface-radius": "1rem";
@@ -198,10 +214,12 @@ export declare const STARCI_CORE_DARK_TOKEN_DEFAULTS: Readonly<{
198
214
  "--starci-core-success-foreground": "oklch(21.03% 0.0059 162.85)";
199
215
  "--starci-core-warning": "oklch(82.03% 0.1392 88.38)";
200
216
  "--starci-core-warning-foreground": "oklch(21.03% 0.0059 88.38)";
201
- "--starci-core-danger": "oklch(59.4% 0.1973 36.67)";
202
- "--starci-core-danger-foreground": "oklch(99.11% 0 0)";
217
+ "--starci-core-danger": "oklch(70% 0.17 36.67)";
218
+ "--starci-core-danger-foreground": "oklch(21.03% 0.0059 36.67)";
203
219
  "--starci-core-info": "oklch(72% 0.17 250)";
204
220
  "--starci-core-info-foreground": "oklch(21.03% 0.0059 250)";
221
+ "--starci-core-accent-text": "#a48bff";
222
+ "--starci-core-accent-soft": "oklch(30% 0.07 287)";
205
223
  }>;
206
224
  export type StarCiCoreTokenDefaults = typeof STARCI_CORE_TOKEN_DEFAULTS;
207
225
  //# sourceMappingURL=dna.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dna.d.ts","sourceRoot":"","sources":["../../src/core/dna.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+DjB,CAAA;AAEX,kFAAkF;AAClF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;EAe3B,CAAA;AAEX,MAAM,MAAM,qBAAqB,GAAG,MAAM,OAAO,yBAAyB,CAAA;AAC1E,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,qBAAqB,CAAC,CAAA;AAE9F,mFAAmF;AACnF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCzB,CAAA;AAEX;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,4BAA4B;;;;;;EAM9B,CAAA;AAEX,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,OAAO,4BAA4B,CAAC,CAAA;AAEtH,MAAM,MAAM,aAAa,GAAG,OAAO,eAAe,CAAA;AAClD,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,OAAO,uBAAuB,CAAC,CAAA;AAExG,sFAAsF;AACtF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCmB,CAAA;AAE1D,mFAAmF;AACnF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;EAgBuB,CAAA;AAEnE,MAAM,MAAM,uBAAuB,GAAG,OAAO,0BAA0B,CAAA"}
1
+ {"version":3,"file":"dna.d.ts","sourceRoot":"","sources":["../../src/core/dna.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmEjB,CAAA;AAEX,kFAAkF;AAClF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;EAe3B,CAAA;AAEX,MAAM,MAAM,qBAAqB,GAAG,MAAM,OAAO,yBAAyB,CAAA;AAC1E,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,qBAAqB,CAAC,CAAA;AAE9F,mFAAmF;AACnF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCzB,CAAA;AAEX;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,4BAA4B;;;;;;EAM9B,CAAA;AAEX,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,OAAO,4BAA4B,CAAC,CAAA;AAEtH,MAAM,MAAM,aAAa,GAAG,OAAO,eAAe,CAAA;AAClD,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,OAAO,uBAAuB,CAAC,CAAA;AAExG,sFAAsF;AACtF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCmB,CAAA;AAE1D,mFAAmF;AACnF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;EAkBuB,CAAA;AAEnE,MAAM,MAAM,uBAAuB,GAAG,OAAO,0BAA0B,CAAA"}