@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,5 +1,8 @@
1
1
  /* Common owns only universal structure/scales. Families supply material DNA. */
2
2
  @layer starci-grammar-common, starci-grammar-core, starci-grammar-heritage, starci-grammar-offset-pop;
3
+ @import "./components-forms.css";
4
+ @import "./components-overlays.css";
5
+ @import "./components-navigation.css";
3
6
 
4
7
  @layer starci-grammar-common {
5
8
  .grammar-common-root {
@@ -11,6 +14,204 @@
11
14
  min-width: 0;
12
15
  }
13
16
 
17
+ /*
18
+ * THE ROOT OWNS EVERY VENDOR THEME VARIABLE.
19
+ *
20
+ * HeroUI declares its theme on `:root`, where each `color-mix()` is substituted against HeroUI's
21
+ * own light values, and a descendant inherits the RESULT. A family that re-declares `--accent`
22
+ * on its root therefore still received HeroUI's blue `--accent-soft`, and a dark scope still
23
+ * received HeroUI's light `--default`, `--field-background`, `--segment` and `--overlay`. So
24
+ * this root declares every HeroUI theme variable itself: the semantic ones get neutral,
25
+ * AA-safe defaults (bare Common is a real theme, light and dark), and every derived one is
26
+ * written in terms of the semantic ones, so it re-resolves on whichever family and theme scope
27
+ * it lands on. A family supplies its semantic values; the rest follows.
28
+ */
29
+ .grammar-common-root {
30
+ color-scheme: light;
31
+
32
+ --background: oklch(97.02% 0 0);
33
+ --foreground: oklch(21.03% 0.0059 285.89);
34
+ --surface: oklch(100% 0 0);
35
+ --surface-secondary: oklch(95.24% 0.0013 286.37);
36
+ --muted: oklch(49.5% 0.0138 285.94);
37
+ --border: oklch(90% 0.004 286.32);
38
+ --separator: oklch(92% 0.004 286.32);
39
+ --accent: oklch(53% 0.2 256);
40
+ --accent-foreground: oklch(99.11% 0 0);
41
+ --success: oklch(73.29% 0.1935 150.81);
42
+ --success-foreground: oklch(21.03% 0.0059 285.89);
43
+ --warning: oklch(78.19% 0.1585 72.33);
44
+ --warning-foreground: oklch(21.03% 0.0059 285.89);
45
+ --danger: oklch(55% 0.215 26);
46
+ --danger-foreground: oklch(99.11% 0 0);
47
+ --info: var(--accent);
48
+ --info-foreground: var(--accent-foreground);
49
+ --backdrop: rgb(0 0 0 / 50%);
50
+ --surface-shadow: 0 2px 4px 0 rgb(0 0 0 / 4%), 0 1px 2px 0 rgb(0 0 0 / 6%), 0 0 1px 0 rgb(0 0 0 / 6%);
51
+ --overlay-shadow: 0 2px 8px 0 rgb(0 0 0 / 6%), 0 -6px 12px 0 rgb(0 0 0 / 3%), 0 14px 28px 0 rgb(0 0 0 / 8%);
52
+ --field-shadow: 0 2px 4px 0 rgb(0 0 0 / 4%), 0 1px 2px 0 rgb(0 0 0 / 6%), 0 0 1px 0 rgb(0 0 0 / 6%);
53
+
54
+ /* Derived from the semantic set above, so they follow the family and theme in scope. */
55
+ --focus: var(--accent);
56
+ --link: var(--foreground);
57
+ --surface-foreground: var(--foreground);
58
+ --surface-secondary-foreground: var(--foreground);
59
+ --surface-tertiary: color-mix(in oklab, var(--surface-secondary) 98%, var(--foreground));
60
+ --surface-tertiary-foreground: var(--foreground);
61
+ --overlay: var(--surface);
62
+ --overlay-foreground: var(--foreground);
63
+ --default: color-mix(in oklab, var(--surface-secondary) 98%, var(--foreground));
64
+ --default-foreground: var(--foreground);
65
+ --segment: var(--surface);
66
+ --segment-foreground: var(--foreground);
67
+ --field-background: var(--surface);
68
+ --field-foreground: var(--foreground);
69
+ --field-placeholder: var(--muted);
70
+ --field-border: transparent;
71
+ --scrollbar-thumb: color-mix(in oklch, var(--foreground) 15%, transparent);
72
+ --scrollbar-track: transparent;
73
+ --scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
74
+ --surface-hover: color-mix(in oklab, var(--surface) 92%, var(--surface-foreground) 8%);
75
+ --default-hover: color-mix(in oklab, var(--default) 96%, var(--default-foreground) 4%);
76
+ --accent-hover: color-mix(in oklab, var(--accent) 90%, var(--accent-foreground) 10%);
77
+ --success-hover: color-mix(in oklab, var(--success) 90%, var(--success-foreground) 10%);
78
+ --warning-hover: color-mix(in oklab, var(--warning) 90%, var(--warning-foreground) 10%);
79
+ --danger-hover: color-mix(in oklab, var(--danger) 90%, var(--danger-foreground) 10%);
80
+ --field-hover: color-mix(in oklab, var(--field-background) 98%, var(--field-foreground) 2%);
81
+ --field-focus: var(--field-background);
82
+ --field-border-hover: color-mix(in oklab, var(--field-border, var(--border)) 88%, var(--field-foreground) 10%);
83
+ --field-border-focus: color-mix(in oklab, var(--field-border, var(--border)) 74%, var(--field-foreground) 22%);
84
+ --default-soft: color-mix(in oklab, var(--default) 50%, transparent);
85
+ --default-soft-foreground: var(--default-foreground);
86
+ --default-soft-hover: color-mix(in oklab, var(--default) 60%, transparent);
87
+ --accent-soft: color-mix(in oklab, var(--accent) 15%, transparent);
88
+ --accent-soft-foreground: color-mix(in oklab, var(--accent) 70%, var(--foreground) 30%);
89
+ --accent-soft-hover: color-mix(in oklab, var(--accent-soft) 94%, var(--accent));
90
+ --success-soft: color-mix(in oklab, var(--success) 15%, transparent);
91
+ --success-soft-foreground: color-mix(in oklab, var(--success) 50%, var(--foreground) 50%);
92
+ --success-soft-hover: color-mix(in oklab, var(--success) 20%, transparent);
93
+ --warning-soft: color-mix(in oklab, var(--warning) 15%, transparent);
94
+ --warning-soft-foreground: color-mix(in oklab, var(--warning) 45%, var(--foreground) 55%);
95
+ --warning-soft-hover: color-mix(in oklab, var(--warning) 20%, transparent);
96
+ --danger-soft: color-mix(in oklab, var(--danger) 15%, transparent);
97
+ --danger-soft-foreground: color-mix(in oklab, var(--danger) 65%, var(--foreground) 35%);
98
+ --danger-soft-hover: color-mix(in oklab, var(--danger) 20%, transparent);
99
+ --background-secondary: color-mix(in oklab, var(--background) 96%, var(--foreground) 4%);
100
+ --background-tertiary: color-mix(in oklab, var(--background) 92%, var(--foreground) 8%);
101
+ --background-inverse: var(--foreground);
102
+ --separator-secondary: color-mix(in oklab, var(--surface) 85%, var(--surface-foreground) 15%);
103
+ --separator-tertiary: color-mix(in oklab, var(--surface) 81%, var(--surface-foreground) 19%);
104
+ --border-secondary: color-mix(in oklab, var(--surface) 78%, var(--surface-foreground) 22%);
105
+ --border-tertiary: color-mix(in oklab, var(--surface) 66%, var(--surface-foreground) 34%);
106
+
107
+ color: var(--foreground);
108
+ background-color: var(--background);
109
+ }
110
+
111
+ /*
112
+ * A hover fill moves AWAY from its foreground, so the pair keeps (and gains) contrast instead
113
+ * of HeroUI's mix toward the foreground, which takes a 5:1 button under AA on hover. Relative
114
+ * colour inverts the foreground's lightness; without it the fill keeps the gentler vendor mix.
115
+ */
116
+ @supports (color: oklch(from white l c h)) {
117
+ .grammar-common-root {
118
+ --accent-hover: color-mix(in oklab, var(--accent) 90%, oklch(from var(--accent-foreground) calc(1 - l) 0 0));
119
+ --success-hover: color-mix(in oklab, var(--success) 90%, oklch(from var(--success-foreground) calc(1 - l) 0 0));
120
+ --warning-hover: color-mix(in oklab, var(--warning) 90%, oklch(from var(--warning-foreground) calc(1 - l) 0 0));
121
+ --danger-hover: color-mix(in oklab, var(--danger) 90%, oklch(from var(--danger-foreground) calc(1 - l) 0 0));
122
+ }
123
+ }
124
+
125
+ /* A real dark theme for bare Common; families override the semantic set, the mixes follow. */
126
+ .grammar-common-root[data-grammar-theme="dark"] {
127
+ color-scheme: dark;
128
+
129
+ --background: oklch(12% 0.005 285.82);
130
+ --foreground: oklch(99.11% 0 0);
131
+ --surface: oklch(21.03% 0.0059 285.89);
132
+ --surface-secondary: oklch(25.7% 0.0037 286.14);
133
+ --muted: oklch(72% 0.015 286.07);
134
+ --border: oklch(28% 0.006 286.03);
135
+ --separator: oklch(25% 0.006 286.03);
136
+ --accent: oklch(72% 0.14 250);
137
+ --accent-foreground: oklch(21.03% 0.0059 285.89);
138
+ --success: oklch(73.29% 0.1935 150.81);
139
+ --success-foreground: oklch(21.03% 0.0059 285.89);
140
+ --warning: oklch(82.03% 0.1388 76.34);
141
+ --warning-foreground: oklch(21.03% 0.0059 285.89);
142
+ --danger: oklch(70% 0.17 24);
143
+ --danger-foreground: oklch(21.03% 0.0059 285.89);
144
+ --backdrop: rgb(0 0 0 / 60%);
145
+ --surface-shadow: 0 0 0 0 transparent inset;
146
+ --overlay-shadow: 0 0 1px 0 rgb(255 255 255 / 30%) inset;
147
+ --field-shadow: 0 0 0 0 transparent inset;
148
+ --segment: color-mix(in oklab, var(--surface) 76%, var(--foreground));
149
+ --accent-soft: color-mix(in oklab, var(--accent) 16%, transparent);
150
+ --accent-soft-foreground: color-mix(in oklab, var(--accent) 70%, var(--foreground) 30%);
151
+ --success-soft: color-mix(in oklab, var(--success) 14%, transparent);
152
+ --success-soft-foreground: color-mix(in oklab, var(--success) 70%, var(--foreground) 30%);
153
+ --warning-soft: color-mix(in oklab, var(--warning) 14%, transparent);
154
+ --warning-soft-foreground: color-mix(in oklab, var(--warning) 70%, var(--foreground) 30%);
155
+ --danger-soft: color-mix(in oklab, var(--danger) 16%, transparent);
156
+ --danger-soft-foreground: color-mix(in oklab, var(--danger) 70%, var(--foreground) 30%);
157
+ }
158
+
159
+ @media (prefers-color-scheme: dark) {
160
+ .grammar-common-root[data-grammar-theme="system"] {
161
+ color-scheme: dark;
162
+
163
+ --background: oklch(12% 0.005 285.82);
164
+ --foreground: oklch(99.11% 0 0);
165
+ --surface: oklch(21.03% 0.0059 285.89);
166
+ --surface-secondary: oklch(25.7% 0.0037 286.14);
167
+ --muted: oklch(72% 0.015 286.07);
168
+ --border: oklch(28% 0.006 286.03);
169
+ --separator: oklch(25% 0.006 286.03);
170
+ --accent: oklch(72% 0.14 250);
171
+ --accent-foreground: oklch(21.03% 0.0059 285.89);
172
+ --success: oklch(73.29% 0.1935 150.81);
173
+ --success-foreground: oklch(21.03% 0.0059 285.89);
174
+ --warning: oklch(82.03% 0.1388 76.34);
175
+ --warning-foreground: oklch(21.03% 0.0059 285.89);
176
+ --danger: oklch(70% 0.17 24);
177
+ --danger-foreground: oklch(21.03% 0.0059 285.89);
178
+ --backdrop: rgb(0 0 0 / 60%);
179
+ --surface-shadow: 0 0 0 0 transparent inset;
180
+ --overlay-shadow: 0 0 1px 0 rgb(255 255 255 / 30%) inset;
181
+ --field-shadow: 0 0 0 0 transparent inset;
182
+ --segment: color-mix(in oklab, var(--surface) 76%, var(--foreground));
183
+ --accent-soft: color-mix(in oklab, var(--accent) 16%, transparent);
184
+ --accent-soft-foreground: color-mix(in oklab, var(--accent) 70%, var(--foreground) 30%);
185
+ --success-soft: color-mix(in oklab, var(--success) 14%, transparent);
186
+ --success-soft-foreground: color-mix(in oklab, var(--success) 70%, var(--foreground) 30%);
187
+ --warning-soft: color-mix(in oklab, var(--warning) 14%, transparent);
188
+ --warning-soft-foreground: color-mix(in oklab, var(--warning) 70%, var(--foreground) 30%);
189
+ --danger-soft: color-mix(in oklab, var(--danger) 16%, transparent);
190
+ --danger-soft-foreground: color-mix(in oklab, var(--danger) 70%, var(--foreground) 30%);
191
+ }
192
+ }
193
+
194
+ @media (forced-colors: active) {
195
+ .grammar-common-root,
196
+ .grammar-common-root[data-grammar-theme] {
197
+ --background: Canvas;
198
+ --foreground: CanvasText;
199
+ --surface: Canvas;
200
+ --surface-secondary: Canvas;
201
+ --muted: GrayText;
202
+ --border: CanvasText;
203
+ --separator: CanvasText;
204
+ --accent: Highlight;
205
+ --accent-foreground: HighlightText;
206
+ --success: CanvasText;
207
+ --success-foreground: Canvas;
208
+ --warning: CanvasText;
209
+ --warning-foreground: Canvas;
210
+ --danger: CanvasText;
211
+ --danger-foreground: Canvas;
212
+ }
213
+ }
214
+
14
215
  .grammar-common-root,
15
216
  .grammar-common-root::before,
16
217
  .grammar-common-root::after,
@@ -98,6 +299,35 @@
98
299
  flex: none;
99
300
  }
100
301
 
302
+ /*
303
+ * Keyboard-reachable scroll owners (VerticalScrollRegion / HorizontalScrollRegion when focusable,
304
+ * the Rail body, fenced code and Markdown table frames) draw the same inset focus ring the chat
305
+ * scroll owners use, so a Tab stop that scrolls is never invisible.
306
+ */
307
+ [data-grammar-scroll-region][tabindex="0"]:focus-visible,
308
+ .starci-core-horizontal-scroll-region[tabindex="0"]:focus-visible,
309
+ .starci-core-rail-body[tabindex="0"]:focus-visible,
310
+ .starci-core-fenced-code-block pre[tabindex="0"]:focus-visible,
311
+ .starci-core-markdown-table-frame[tabindex="0"]:focus-visible {
312
+ outline: 2px solid var(--focus, var(--starci-core-focus, Highlight));
313
+ outline-offset: -2px;
314
+ }
315
+
316
+ /* OtpInput with a drawn label: the label stacks above the slot strip, which keeps its own scroll. */
317
+ .starci-core-otp-field {
318
+ display: flex;
319
+ min-width: 0;
320
+ flex-direction: column;
321
+ gap: 0.5rem;
322
+ }
323
+
324
+ /* The drawn label is one block in that stack; a long name wraps instead of widening the field. */
325
+ .starci-core-otp-label {
326
+ display: block;
327
+ min-width: 0;
328
+ overflow-wrap: anywhere;
329
+ }
330
+
101
331
  .starci-core-visually-hidden {
102
332
  position: absolute;
103
333
  width: 1px;
@@ -371,6 +601,23 @@
371
601
  min-width: max-content;
372
602
  }
373
603
 
604
+ /*
605
+ * The same one scrolling axis, for the vertical region.
606
+ *
607
+ * The vendor's `.scroll-shadow--vertical` sets `overflow-y: auto` alone, and every host class
608
+ * this region wears - the chat conversation, the chat overlay rail, the accordion region, the
609
+ * form scroll viewport - names that same single axis or names none at all. A computed non-visible
610
+ * overflow on one axis forces the other from `visible` to `auto`, so the region rendered
611
+ * `overflow: auto auto`: two scrolling axes under an OVERFLOW-3 claim that promises one. Naming
612
+ * both axes on the region's own identity holds the render at the one axis the claim describes,
613
+ * and needs no `!important` to do it: no host class and no vendor rule ever names `overflow-x`,
614
+ * so this declaration is unopposed whichever order a consumer imports the two sheets in.
615
+ */
616
+ [data-grammar-scroll-region="vertical"] {
617
+ overflow-x: hidden;
618
+ overflow-y: auto;
619
+ }
620
+
374
621
  @media (min-width: 40rem) {
375
622
  .starci-core-form-page {
376
623
  padding-block: 2.5rem;
@@ -622,7 +869,17 @@
622
869
  cursor: not-allowed;
623
870
  }
624
871
 
625
- [data-grammar-state="unavailable"] {
872
+ /*
873
+ * Unavailable is not disabled: the row or surface is still content a reader needs, so its copy
874
+ * reads in the muted ink (AA on every family ground) rather than fading the whole element to
875
+ * ~2.3:1. Only the non-text state mark keeps the disabled fade as the visual cue.
876
+ */
877
+ [data-grammar-state="unavailable"],
878
+ [data-grammar-state="unavailable"] .starci-core-static-row-copy > * {
879
+ color: var(--muted, GrayText);
880
+ }
881
+
882
+ [data-grammar-state="unavailable"] [data-grammar-state-mark] {
626
883
  opacity: var(--starci-core-disabled-opacity, 0.55);
627
884
  }
628
885
 
@@ -660,6 +917,13 @@
660
917
  min-width: 0;
661
918
  }
662
919
 
920
+ /* The collection IS the list (`<ul role="list">`, or the scroll region with role="list"): no UA indent or bullets. */
921
+ .starci-core-owned-collection:is(ul, ol, [role="list"]) {
922
+ margin: 0;
923
+ padding: 0;
924
+ list-style: none;
925
+ }
926
+
663
927
  /* A verdict list is flush inside its shell; the shell already owns the corner. */
664
928
  .starci-core-owned-collection[data-grammar-collection="verdict"] {
665
929
  border-radius: 0 !important;
@@ -1480,6 +1744,18 @@
1480
1744
  background: transparent !important;
1481
1745
  }
1482
1746
 
1747
+ /*
1748
+ * THE 44px TOUCH FLOOR, as the form controls spell it: on a touch pointer or a narrow viewport
1749
+ * the menu target is at least 44px in both axes even where a consumer resizes the toggle. It is
1750
+ * a MINIMUM, which the vendor never sets, so it owes no `!important`.
1751
+ */
1752
+ @media (pointer: coarse), (max-width: 40rem) {
1753
+ .starci-core-subnav-toggle {
1754
+ min-inline-size: var(--starci-core-control-min-size, 2.75rem);
1755
+ min-block-size: var(--starci-core-control-min-size, 2.75rem);
1756
+ }
1757
+ }
1758
+
1483
1759
  @media (min-width: 48rem) {
1484
1760
  .starci-core-navigation-feature-nav[data-grammar-navigation-feature-nav-destinations="absent"] .starci-core-navigation-feature-nav-primary {
1485
1761
  grid-template-columns: auto minmax(0, 1fr) !important;
@@ -2159,6 +2435,11 @@
2159
2435
  flex: none;
2160
2436
  }
2161
2437
 
2438
+ /* RankArtwork is a glyph too: a flex row never squeezes it. Its size stays the consumer's. */
2439
+ .starci-core-rank-artwork {
2440
+ flex: none;
2441
+ }
2442
+
2162
2443
  .starci-core-icon[data-usage="heading"] {
2163
2444
  width: 1.5rem;
2164
2445
  height: 1.5rem;
@@ -1 +1 @@
1
- {"version":3,"file":"LeadingNumber.d.ts","sourceRoot":"","sources":["../../src/core/LeadingNumber.tsx"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC5B,CAAA;AAID;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,kBAAkB,gCAMtD,CAAA"}
1
+ {"version":3,"file":"LeadingNumber.d.ts","sourceRoot":"","sources":["../../src/core/LeadingNumber.tsx"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC5B,CAAA;AAID;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,kBAAkB,gCAOtD,CAAA"}
@@ -6,5 +6,5 @@ import { leadingNumberClassName } from "./classNames.js";
6
6
  * The punctuation and treatment are intentionally closed: an ordinal prefix is
7
7
  * quiet reading structure (`1.`), never a badge, chip, status, or decoration.
8
8
  */
9
- export const LeadingNumber = (props) => (_jsxs("span", { className: leadingNumberClassName, children: [props.position, "."] }));
9
+ export const LeadingNumber = (props) => (_jsxs("span", { className: leadingNumberClassName, "data-contract": "FONT-2 TONE-2", children: [props.position, "."] }));
10
10
  //# sourceMappingURL=LeadingNumber.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LeadingNumber.js","sourceRoot":"","sources":["../../src/core/LeadingNumber.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAExD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAE,EAAE,CAAC,CACxD,gBACI,SAAS,EAAE,sBAAsB,aAEhC,KAAK,CAAC,QAAQ,SACZ,CACV,CAAA"}
1
+ {"version":3,"file":"LeadingNumber.js","sourceRoot":"","sources":["../../src/core/LeadingNumber.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAExD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAE,EAAE,CAAC,CACxD,gBACI,SAAS,EAAE,sBAAsB,mBACnB,eAAe,aAE5B,KAAK,CAAC,QAAQ,SACZ,CACV,CAAA"}
@@ -1,12 +1,28 @@
1
1
  export type OtpInputProps = {
2
2
  readonly id: string;
3
3
  readonly name: string;
4
+ /**
5
+ * Visible name of the code, e.g. "Verification code". It is drawn above the slots as a
6
+ * `<label for={id}>` and names both the slot group (`role="group"`) and the one real input.
7
+ */
8
+ readonly label?: string;
9
+ /** Keep `label` as the accessible name but hide the drawn text. */
10
+ readonly isLabelHidden?: boolean;
11
+ /** Id of an app-owned element (a Field label, a heading) that names the code instead of `label`. */
12
+ readonly labelledBy?: string;
4
13
  readonly defaultValue?: string;
5
14
  readonly disabled?: boolean;
6
15
  readonly invalid?: boolean;
7
16
  readonly describedBy?: string;
8
17
  readonly onChange?: (value: string) => void;
9
18
  };
10
- /** Own the conventional six-digit OTP control and its intrinsic-width overflow treatment. */
19
+ /**
20
+ * Own the conventional six-digit OTP control and its intrinsic-width overflow treatment.
21
+ *
22
+ * The slot strip is a `role="group"` named by `label` (or `labelledBy`), and the single hidden
23
+ * `<input>` that receives the code carries the same name, so the control is announced as, e.g.,
24
+ * "Verification code, group" and "Verification code, edit text". The strip scrolls only the slots,
25
+ * which the focused input already reaches, so the region adds no extra Tab stop.
26
+ */
11
27
  export declare const OtpInput: (props: OtpInputProps) => import("react").JSX.Element;
12
28
  //# sourceMappingURL=OtpInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OtpInput.d.ts","sourceRoot":"","sources":["../../src/core/OtpInput.tsx"],"names":[],"mappings":"AAOA,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9C,CAAA;AAED,6FAA6F;AAC7F,eAAO,MAAM,QAAQ,GAAI,OAAO,aAAa,gCAqC5C,CAAA"}
1
+ {"version":3,"file":"OtpInput.d.ts","sourceRoot":"","sources":["../../src/core/OtpInput.tsx"],"names":[],"mappings":"AAOA,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,mEAAmE;IACnE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,oGAAoG;IACpG,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9C,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,aAAa,gCA4D5C,CAAA"}
@@ -1,12 +1,20 @@
1
1
  "use client";
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import { useCallback, useRef } from "react";
4
- import { InputOTP, REGEXP_ONLY_DIGITS } from "@heroui/react";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useCallback, useId, useRef } from "react";
4
+ import { InputOTP, Label as HeroLabel, REGEXP_ONLY_DIGITS } from "@heroui/react";
5
5
  import { horizontalScrollRegionClassName } from "./classNames.js";
6
6
  import { HorizontalScrollRegion } from "./composite/HorizontalScrollRegion/index.js";
7
- /** Own the conventional six-digit OTP control and its intrinsic-width overflow treatment. */
7
+ /**
8
+ * Own the conventional six-digit OTP control and its intrinsic-width overflow treatment.
9
+ *
10
+ * The slot strip is a `role="group"` named by `label` (or `labelledBy`), and the single hidden
11
+ * `<input>` that receives the code carries the same name, so the control is announced as, e.g.,
12
+ * "Verification code, group" and "Verification code, edit text". The strip scrolls only the slots,
13
+ * which the focused input already reaches, so the region adds no extra Tab stop.
14
+ */
8
15
  export const OtpInput = (props) => {
9
16
  const regionRef = useRef(null);
17
+ const generatedLabelId = useId();
10
18
  const onChange = useCallback((nextValue) => {
11
19
  props.onChange?.(nextValue);
12
20
  window.requestAnimationFrame(() => {
@@ -17,6 +25,10 @@ export const OtpInput = (props) => {
17
25
  slots.item(activeIndex).scrollIntoView({ block: "nearest", inline: "nearest" });
18
26
  });
19
27
  }, [props.onChange]);
20
- return (_jsx(HorizontalScrollRegion, { ref: regionRef, className: horizontalScrollRegionClassName, "data-contract": "PADDING-1 OVERFLOW-3 OVERFLOW-5", children: _jsx(InputOTP, { id: props.id, name: props.name, maxLength: 6, pattern: REGEXP_ONLY_DIGITS, autoComplete: "one-time-code", inputMode: "numeric", defaultValue: props.defaultValue, isDisabled: props.disabled === true, isInvalid: props.invalid === true, "aria-invalid": props.invalid === true ? true : undefined, "aria-describedby": props.describedBy, variant: "secondary", onChange: onChange, children: _jsx(InputOTP.Group, { children: Array.from({ length: 6 }, (_, index) => (_jsx(InputOTP.Slot, { index: index }, index))) }) }) }));
28
+ const labelId = props.label === undefined ? props.labelledBy : generatedLabelId;
29
+ const control = (_jsx(HorizontalScrollRegion, { ref: regionRef, className: horizontalScrollRegionClassName, "data-contract": "PADDING-1 OVERFLOW-3 OVERFLOW-5", isFocusable: false, ...(labelId === undefined ? {} : { role: "group", "aria-labelledby": labelId }), children: _jsx(InputOTP, { id: props.id, name: props.name, maxLength: 6, pattern: REGEXP_ONLY_DIGITS, autoComplete: "one-time-code", inputMode: "numeric", defaultValue: props.defaultValue, isDisabled: props.disabled === true, isInvalid: props.invalid === true, "aria-invalid": props.invalid === true ? true : undefined, "aria-describedby": props.describedBy, ...(labelId === undefined ? {} : { "aria-labelledby": labelId }), variant: "secondary", onChange: onChange, children: _jsx(InputOTP.Group, { children: Array.from({ length: 6 }, (_, index) => (_jsx(InputOTP.Slot, { index: index }, index))) }) }) }));
30
+ if (props.label === undefined)
31
+ return control;
32
+ return (_jsxs("div", { className: "starci-core-otp-field", "data-grammar-otp-field": "true", children: [_jsx(HeroLabel, { className: props.isLabelHidden === true ? "starci-core-visually-hidden" : "starci-core-otp-label", htmlFor: props.id, id: labelId, children: props.label }), control] }));
21
33
  };
22
34
  //# sourceMappingURL=OtpInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OtpInput.js","sourceRoot":"","sources":["../../src/core/OtpInput.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,+BAA+B,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAA;AAYpF,6FAA6F;AAC7F,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAE,EAAE;IAC7C,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IAC9C,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,SAAiB,EAAE,EAAE;QAC/C,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAA;QAC3B,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE;YAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAc,8BAA8B,CAAC,CAAA;YAC9F,IAAI,CAAC,KAAK,EAAE,MAAM;gBAAE,OAAM;YAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAChE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;QACnF,CAAC,CAAC,CAAA;IACN,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEpB,OAAO,CACH,KAAC,sBAAsB,IAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,+BAA+B,mBAAgB,iCAAiC,YAC/H,KAAC,QAAQ,IACL,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,SAAS,EAAE,CAAC,EACZ,OAAO,EAAE,kBAAkB,EAC3B,YAAY,EAAC,eAAe,EAC5B,SAAS,EAAC,SAAS,EACnB,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,UAAU,EAAE,KAAK,CAAC,QAAQ,KAAK,IAAI,EACnC,SAAS,EAAE,KAAK,CAAC,OAAO,KAAK,IAAI,kBACnB,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,sBACrC,KAAK,CAAC,WAAW,EACnC,OAAO,EAAC,WAAW,EACnB,QAAQ,EAAE,QAAQ,YAElB,KAAC,QAAQ,CAAC,KAAK,cACV,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CACrC,KAAC,QAAQ,CAAC,IAAI,IAAa,KAAK,EAAE,KAAK,IAAnB,KAAK,CAAkB,CAC9C,CAAC,GACW,GACV,GACU,CAC5B,CAAA;AACL,CAAC,CAAA"}
1
+ {"version":3,"file":"OtpInput.js","sourceRoot":"","sources":["../../src/core/OtpInput.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,KAAK,IAAI,SAAS,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAChF,OAAO,EAAE,+BAA+B,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAA;AAqBpF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAE,EAAE;IAC7C,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IAC9C,MAAM,gBAAgB,GAAG,KAAK,EAAE,CAAA;IAChC,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,SAAiB,EAAE,EAAE;QAC/C,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAA;QAC3B,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE;YAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAc,8BAA8B,CAAC,CAAA;YAC9F,IAAI,CAAC,KAAK,EAAE,MAAM;gBAAE,OAAM;YAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAChE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;QACnF,CAAC,CAAC,CAAA;IACN,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEpB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAA;IAC/E,MAAM,OAAO,GAAG,CACZ,KAAC,sBAAsB,IACnB,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,+BAA+B,mBAC5B,iCAAiC,EAC/C,WAAW,EAAE,KAAK,KACd,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,YAEhF,KAAC,QAAQ,IACL,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,SAAS,EAAE,CAAC,EACZ,OAAO,EAAE,kBAAkB,EAC3B,YAAY,EAAC,eAAe,EAC5B,SAAS,EAAC,SAAS,EACnB,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,UAAU,EAAE,KAAK,CAAC,QAAQ,KAAK,IAAI,EACnC,SAAS,EAAE,KAAK,CAAC,OAAO,KAAK,IAAI,kBACnB,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,sBACrC,KAAK,CAAC,WAAW,KAC/B,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,EACjE,OAAO,EAAC,WAAW,EACnB,QAAQ,EAAE,QAAQ,YAElB,KAAC,QAAQ,CAAC,KAAK,cACV,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CACrC,KAAC,QAAQ,CAAC,IAAI,IAAa,KAAK,EAAE,KAAK,IAAnB,KAAK,CAAkB,CAC9C,CAAC,GACW,GACV,GACU,CAC5B,CAAA;IAED,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,OAAO,CAAA;IAC7C,OAAO,CACH,eAAK,SAAS,EAAC,uBAAuB,4BAAwB,MAAM,aAChE,KAAC,SAAS,IACN,SAAS,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,uBAAuB,EACjG,OAAO,EAAE,KAAK,CAAC,EAAE,EACjB,EAAE,EAAE,OAAO,YAEV,KAAK,CAAC,KAAK,GACJ,EACX,OAAO,IACN,CACT,CAAA;AACL,CAAC,CAAA"}
@@ -3,6 +3,11 @@ import type { PresentationState } from "./state.js";
3
3
  export type StateMarkProps = {
4
4
  readonly state: PresentationState;
5
5
  };
6
- /** Draw the check mark used by successful neutral states. */
6
+ /**
7
+ * Draw the check mark used by successful neutral states.
8
+ *
9
+ * Contract: STATE-1 (the carrier is chosen from the named state through `treatmentFor`) and ICON-6
10
+ * (the mark is decorative, so it is always `aria-hidden`; the state's words carry the meaning).
11
+ */
7
12
  export declare const StateMark: (props: StateMarkProps) => import("react").JSX.Element | null;
8
13
  //# sourceMappingURL=StateMark.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StateMark.d.ts","sourceRoot":"","sources":["../../src/core/StateMark.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAGnD,wCAAwC;AACxC,MAAM,MAAM,cAAc,GAAG;IACzB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;CACpC,CAAA;AAED,6DAA6D;AAC7D,eAAO,MAAM,SAAS,GAAI,OAAO,cAAc,uCAc9C,CAAA"}
1
+ {"version":3,"file":"StateMark.d.ts","sourceRoot":"","sources":["../../src/core/StateMark.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAGnD,wCAAwC;AACxC,MAAM,MAAM,cAAc,GAAG;IACzB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;CACpC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,cAAc,uCAe9C,CAAA"}
@@ -1,10 +1,15 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { treatmentFor } from "./state.js";
3
- /** Draw the check mark used by successful neutral states. */
3
+ /**
4
+ * Draw the check mark used by successful neutral states.
5
+ *
6
+ * Contract: STATE-1 (the carrier is chosen from the named state through `treatmentFor`) and ICON-6
7
+ * (the mark is decorative, so it is always `aria-hidden`; the state's words carry the meaning).
8
+ */
4
9
  export const StateMark = (props) => {
5
10
  const treatment = treatmentFor(props.state);
6
11
  if (treatment.mark !== "check")
7
12
  return null;
8
- return (_jsx("svg", { "aria-hidden": "true", "data-grammar-state-mark": "check", focusable: "false", viewBox: "0 0 20 20", children: _jsx("path", { d: "M5 10.5 8.25 14 15 6.5", fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2" }) }));
13
+ return (_jsx("svg", { "aria-hidden": "true", "data-contract": "STATE-1 ICON-6", "data-grammar-state-mark": "check", focusable: "false", viewBox: "0 0 20 20", children: _jsx("path", { d: "M5 10.5 8.25 14 15 6.5", fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2" }) }));
9
14
  };
10
15
  //# sourceMappingURL=StateMark.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StateMark.js","sourceRoot":"","sources":["../../src/core/StateMark.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAOzC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAqB,EAAE,EAAE;IAC/C,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3C,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAA;IAE3C,OAAO,CACH,6BACgB,MAAM,6BACM,OAAO,EAC/B,SAAS,EAAC,OAAO,EACjB,OAAO,EAAC,WAAW,YAEnB,eAAM,CAAC,EAAC,wBAAwB,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAC,GAAG,GAAG,GAChI,CACT,CAAA;AACL,CAAC,CAAA"}
1
+ {"version":3,"file":"StateMark.js","sourceRoot":"","sources":["../../src/core/StateMark.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAOzC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAqB,EAAE,EAAE;IAC/C,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3C,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAA;IAE3C,OAAO,CACH,6BACgB,MAAM,mBACJ,gBAAgB,6BACN,OAAO,EAC/B,SAAS,EAAC,OAAO,EACjB,OAAO,EAAC,WAAW,YAEnB,eAAM,CAAC,EAAC,wBAAwB,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAC,GAAG,GAAG,GAChI,CACT,CAAA;AACL,CAAC,CAAA"}
@@ -0,0 +1,28 @@
1
+ import { type ReactNode } from "react";
2
+ export type AccordionItem = {
3
+ readonly id: string;
4
+ readonly title: ReactNode;
5
+ readonly content: ReactNode;
6
+ readonly isDisabled?: boolean;
7
+ };
8
+ export type AccordionProps = {
9
+ /** Names the group of sections for assistive technology. */
10
+ readonly label: string;
11
+ readonly items: ReadonlyArray<AccordionItem>;
12
+ /** Controlled open sections. Omit for uncontrolled use with `defaultExpandedIds`. */
13
+ readonly expandedIds?: ReadonlyArray<string>;
14
+ readonly defaultExpandedIds?: ReadonlyArray<string>;
15
+ readonly onExpandedChange?: (ids: ReadonlyArray<string>) => void;
16
+ /** Single-open (default) closes the previous section when another opens. */
17
+ readonly allowsMultipleExpanded?: boolean;
18
+ readonly headingLevel?: 2 | 3 | 4 | 5 | 6;
19
+ readonly className?: string;
20
+ };
21
+ /**
22
+ * A generic, unframed stack of disclosures (FAQ, settings groups). `SurfaceAccordionCard` stays
23
+ * the framed card form. Up/Down/Home/End move between section triggers; each section exposes
24
+ * `data-grammar-disclosure-state`.
25
+ * Contract: group FOCUS-2 (peer keys), item STATE-7 (controlled open set), trigger FOCUS-1, indicator MOTION-2.
26
+ */
27
+ export declare const Accordion: ({ label, items, expandedIds, defaultExpandedIds, onExpandedChange, allowsMultipleExpanded, headingLevel, className, }: AccordionProps) => import("react").JSX.Element;
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/branch/Accordion/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAIhD,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IACzB,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IAC5C,qFAAqF;IACrF,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC5C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACnD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IAChE,4EAA4E;IAC5E,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IACzC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC9B,CAAA;AASD;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,uHASvB,cAAc,gCA+ChB,CAAA"}
@@ -0,0 +1,30 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Accordion as HeroAccordion } from "@heroui/react";
4
+ import { useState } from "react";
5
+ import { moveFocusBetweenPeers } from "../../navigationKeys.js";
6
+ import { navigationClassName } from "../../navigationClassNames.js";
7
+ /*
8
+ * Consumer hooks: `starci-core-generic-accordion-root`, `starci-core-generic-accordion-panel`,
9
+ * `starci-core-generic-accordion-body` name HeroUI parts whose vendor paint Common leaves as it is.
10
+ * No shipped sheet paints them; the Grammar name lets a consumer or family select those parts
11
+ * without reaching for vendor class names.
12
+ */
13
+ /**
14
+ * A generic, unframed stack of disclosures (FAQ, settings groups). `SurfaceAccordionCard` stays
15
+ * the framed card form. Up/Down/Home/End move between section triggers; each section exposes
16
+ * `data-grammar-disclosure-state`.
17
+ * Contract: group FOCUS-2 (peer keys), item STATE-7 (controlled open set), trigger FOCUS-1, indicator MOTION-2.
18
+ */
19
+ export const Accordion = ({ label, items, expandedIds, defaultExpandedIds = [], onExpandedChange, allowsMultipleExpanded = false, headingLevel = 3, className, }) => {
20
+ const [uncontrolled, setUncontrolled] = useState(defaultExpandedIds);
21
+ const expanded = expandedIds ?? uncontrolled;
22
+ const expandedSet = new Set(expanded);
23
+ return (_jsx("div", { "aria-label": label, className: navigationClassName("starci-core-generic-accordion", className), "data-component": "Accordion", "data-tier": "branch", "data-contract": "FOCUS-2", onKeyDown: (event) => { moveFocusBetweenPeers(event, "[data-grammar-accordion-trigger]", "vertical"); }, role: "group", children: _jsx(HeroAccordion, { allowsMultipleExpanded: allowsMultipleExpanded, className: "starci-core-generic-accordion-root", expandedKeys: expandedSet, onExpandedChange: (keys) => {
24
+ const next = [...keys].map(String);
25
+ if (expandedIds === undefined)
26
+ setUncontrolled(next);
27
+ onExpandedChange?.(next);
28
+ }, children: items.map((item) => (_jsxs(HeroAccordion.Item, { id: item.id, className: "starci-core-generic-accordion-item", "data-contract": "STATE-7", "data-grammar-disclosure-state": expandedSet.has(item.id) ? "open" : "closed", ...(item.isDisabled === undefined ? {} : { isDisabled: item.isDisabled }), children: [_jsx(HeroAccordion.Heading, { className: "starci-core-generic-accordion-heading", level: headingLevel, children: _jsxs(HeroAccordion.Trigger, { className: "starci-core-generic-accordion-trigger", "data-contract": "FOCUS-1", "data-grammar-accordion-trigger": "true", children: [_jsx("span", { className: "starci-core-generic-accordion-title", children: item.title }), _jsx(HeroAccordion.Indicator, { className: "starci-core-generic-accordion-indicator", "data-contract": "MOTION-2" })] }) }), _jsx(HeroAccordion.Panel, { className: "starci-core-generic-accordion-panel", children: _jsx(HeroAccordion.Body, { className: "starci-core-generic-accordion-body", children: item.content }) })] }, item.id))) }) }));
29
+ };
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/branch/Accordion/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,SAAS,IAAI,aAAa,EAAY,MAAM,eAAe,CAAA;AACpE,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAuBnE;;;;;GAKG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EACtB,KAAK,EACL,KAAK,EACL,WAAW,EACX,kBAAkB,GAAG,EAAE,EACvB,gBAAgB,EAChB,sBAAsB,GAAG,KAAK,EAC9B,YAAY,GAAG,CAAC,EAChB,SAAS,GACI,EAAE,EAAE;IACjB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAwB,kBAAkB,CAAC,CAAA;IAC3F,MAAM,QAAQ,GAAG,WAAW,IAAI,YAAY,CAAA;IAC5C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;IACrC,OAAO,CACH,4BACgB,KAAK,EACjB,SAAS,EAAE,mBAAmB,CAAC,+BAA+B,EAAE,SAAS,CAAC,oBAC3D,WAAW,eAChB,QAAQ,mBACJ,SAAS,EACvB,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,qBAAqB,CAAC,KAAK,EAAE,kCAAkC,EAAE,UAAU,CAAC,CAAA,CAAC,CAAC,EACtG,IAAI,EAAC,OAAO,YAEZ,KAAC,aAAa,IACV,sBAAsB,EAAE,sBAAsB,EAC9C,SAAS,EAAC,oCAAoC,EAC9C,YAAY,EAAE,WAAW,EACzB,gBAAgB,EAAE,CAAC,IAAc,EAAE,EAAE;gBACjC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBAClC,IAAI,WAAW,KAAK,SAAS;oBAAE,eAAe,CAAC,IAAI,CAAC,CAAA;gBACpD,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAA;YAC5B,CAAC,YAEA,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACjB,MAAC,aAAa,CAAC,IAAI,IAEf,EAAE,EAAE,IAAI,CAAC,EAAE,EACX,SAAS,EAAC,oCAAoC,mBAChC,SAAS,mCACQ,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,KACvE,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,aAE1E,KAAC,aAAa,CAAC,OAAO,IAAC,SAAS,EAAC,uCAAuC,EAAC,KAAK,EAAE,YAAY,YACxF,MAAC,aAAa,CAAC,OAAO,IAAC,SAAS,EAAC,uCAAuC,mBAAe,SAAS,oCAAgC,MAAM,aAClI,eAAM,SAAS,EAAC,qCAAqC,YAAE,IAAI,CAAC,KAAK,GAAQ,EACzE,KAAC,aAAa,CAAC,SAAS,IAAC,SAAS,EAAC,yCAAyC,mBAAe,UAAU,GAAG,IACpF,GACJ,EACxB,KAAC,aAAa,CAAC,KAAK,IAAC,SAAS,EAAC,qCAAqC,YAChE,KAAC,aAAa,CAAC,IAAI,IAAC,SAAS,EAAC,oCAAoC,YAAE,IAAI,CAAC,OAAO,GAAsB,GACpF,KAfjB,IAAI,CAAC,EAAE,CAgBK,CACxB,CAAC,GACU,GACd,CACT,CAAA;AACL,CAAC,CAAA"}
@@ -0,0 +1,40 @@
1
+ import { type ReactNode } from "react";
2
+ import type { PresentationState } from "../../../common/state.js";
3
+ import { type OverlayOpenState } from "../../overlayScope.js";
4
+ export type AlertDialogProps = OverlayOpenState & {
5
+ /** The question being confirmed; the dialog's accessible name. */
6
+ readonly title: string;
7
+ /** The consequence, wired as `aria-describedby`. */
8
+ readonly description?: ReactNode;
9
+ readonly children?: ReactNode;
10
+ /**
11
+ * Meaning of the decision. `negative` marks a destructive confirm (danger-toned action);
12
+ * anything else confirms with the family decision accent. Default `negative`.
13
+ */
14
+ readonly tone?: PresentationState;
15
+ readonly confirmLabel: string;
16
+ readonly cancelLabel: string;
17
+ /**
18
+ * Runs on confirm. Returning a promise keeps the dialog open and the confirm action pending
19
+ * until it settles; it closes on success and stays open on rejection so the person can retry.
20
+ */
21
+ readonly onConfirm: () => void | Promise<unknown>;
22
+ readonly onCancel?: () => void;
23
+ /** App-owned pending state for a confirm whose work is tracked elsewhere. */
24
+ readonly isConfirmPending?: boolean;
25
+ /** A Common `Button` (any React Aria pressable) that opens the confirmation. */
26
+ readonly trigger?: ReactNode;
27
+ /** Escape cancels by default; disable only when cancelling would itself be unsafe. */
28
+ readonly isKeyboardDismissDisabled?: boolean;
29
+ };
30
+ /**
31
+ * BRANCH - `AlertDialog`: an interrupting confirmation (`role="alertdialog"`).
32
+ *
33
+ * Dismiss rules differ from `Dialog` on purpose: an outside press never dismisses (the decision must
34
+ * be explicit), Escape cancels, and the cancel action is first in focus order so initial focus lands
35
+ * on the safe choice. Focus trap/return, scroll lock and the scoped portal are the `Dialog` rules.
36
+ * Contract: confirm CTA-4 ACTION-2 FEEDBACK-3 (explicit destructive authority, pending on the initiator,
37
+ * closes only on settlement); surface and container as `Dialog`.
38
+ */
39
+ export declare const AlertDialog: ({ title, description, children, tone, confirmLabel, cancelLabel, onConfirm, onCancel, isConfirmPending, trigger, isKeyboardDismissDisabled, ...openState }: AlertDialogProps) => import("react").JSX.Element;
40
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/branch/AlertDialog/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAA0D,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAGrH,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG;IAC9C,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,oDAAoD;IACpD,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAA;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAA;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IACnC,gFAAgF;IAChF,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAA;IAC5B,sFAAsF;IACtF,QAAQ,CAAC,yBAAyB,CAAC,EAAE,OAAO,CAAA;CAC/C,CAAA;AAeD;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,GAAI,4JAazB,gBAAgB,gCAsFlB,CAAA"}