@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
@@ -0,0 +1,59 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { AlertDialog as HeroAlertDialog } from "@heroui/react";
3
+ import { useEffect, useId, useRef, useState } from "react";
4
+ import { overlayOpenProps, useOverlayContainer, vendorStatusFor } from "../../overlayScope.js";
5
+ import { Button } from "../../primitive/Button/index.js";
6
+ /** Holds the safe (cancel) action and takes initial focus when the dialog opens (WAI-ARIA APG). */
7
+ const SafeAction = ({ children }) => {
8
+ const ref = useRef(null);
9
+ useEffect(() => {
10
+ ref.current?.querySelector("button, a[href]")?.focus();
11
+ }, []);
12
+ return _jsx("span", { ref: ref, "data-grammar-overlay-action": "cancel", children: children });
13
+ };
14
+ const isPromiseLike = (value) => (typeof value === "object" && value !== null && typeof value.then === "function");
15
+ /**
16
+ * BRANCH - `AlertDialog`: an interrupting confirmation (`role="alertdialog"`).
17
+ *
18
+ * Dismiss rules differ from `Dialog` on purpose: an outside press never dismisses (the decision must
19
+ * be explicit), Escape cancels, and the cancel action is first in focus order so initial focus lands
20
+ * on the safe choice. Focus trap/return, scroll lock and the scoped portal are the `Dialog` rules.
21
+ * Contract: confirm CTA-4 ACTION-2 FEEDBACK-3 (explicit destructive authority, pending on the initiator,
22
+ * closes only on settlement); surface and container as `Dialog`.
23
+ */
24
+ export const AlertDialog = ({ title, description, children, tone = "negative", confirmLabel, cancelLabel, onConfirm, onCancel, isConfirmPending = false, trigger, isKeyboardDismissDisabled = false, ...openState }) => {
25
+ const { anchor, container } = useOverlayContainer("AlertDialog");
26
+ const descriptionId = useId();
27
+ const [isRunning, setIsRunning] = useState(false);
28
+ const confirmedRef = useRef(false);
29
+ const pending = isConfirmPending || isRunning;
30
+ const onOpenChange = (isOpen) => {
31
+ if (isOpen)
32
+ confirmedRef.current = false;
33
+ else if (confirmedRef.current)
34
+ confirmedRef.current = false;
35
+ else
36
+ onCancel?.();
37
+ openState.onOpenChange?.(isOpen);
38
+ };
39
+ return (_jsxs(HeroAlertDialog, { ...overlayOpenProps({ ...openState, onOpenChange }), children: [trigger, anchor, container === null ? null : (_jsx(HeroAlertDialog.Backdrop, { UNSTABLE_portalContainer: container, isDismissable: false, isKeyboardDismissDisabled: isKeyboardDismissDisabled || pending, "data-grammar-overlay-backdrop": "AlertDialog", className: "starci-core-overlay-backdrop", children: _jsx(HeroAlertDialog.Container, { placement: "center", size: "sm", "data-size": "sm", "data-contract": "MOTION-2", className: "starci-core-dialog-container", children: _jsx(HeroAlertDialog.Dialog, { "data-tier": "branch", "data-component": "AlertDialog", "data-grammar-tone": tone, "data-grammar-overlay-surface": "dialog", "data-contract": "FOCUS-3 LAYOUT-4 CORE-BOUNDARY-4", ...(description === undefined ? {} : { "aria-describedby": descriptionId }), className: "starci-core-dialog starci-core-alert-dialog", children: ({ close }) => {
40
+ const confirm = () => {
41
+ const result = onConfirm();
42
+ if (!isPromiseLike(result)) {
43
+ if (!isConfirmPending) {
44
+ confirmedRef.current = true;
45
+ close();
46
+ }
47
+ return;
48
+ }
49
+ setIsRunning(true);
50
+ result.then(() => {
51
+ setIsRunning(false);
52
+ confirmedRef.current = true;
53
+ close();
54
+ }, () => { setIsRunning(false); });
55
+ };
56
+ return (_jsxs(_Fragment, { children: [_jsxs(HeroAlertDialog.Header, { className: "starci-core-overlay-header", children: [_jsx(HeroAlertDialog.Icon, { status: vendorStatusFor(tone), className: "starci-core-alert-dialog-icon" }), _jsxs("div", { className: "starci-core-overlay-heading-group", children: [_jsx(HeroAlertDialog.Heading, { className: "starci-core-overlay-title", children: title }), description === undefined ? null : (_jsx("p", { id: descriptionId, className: "starci-core-overlay-description", children: description }))] })] }), children === undefined ? null : (_jsx(HeroAlertDialog.Body, { className: "starci-core-overlay-body", children: children })), _jsxs(HeroAlertDialog.Footer, { className: "starci-core-overlay-footer", children: [_jsx(SafeAction, { children: _jsx(Button, { variant: "secondary", isDisabled: pending, onPress: close, children: cancelLabel }) }), _jsx("span", { "data-grammar-overlay-action": "confirm", "data-grammar-tone": tone, "data-contract": "CTA-4 ACTION-2 FEEDBACK-3", children: _jsx(Button, { variant: "primary", isPending: pending, onPress: confirm, children: confirmLabel }) })] })] }));
57
+ } }) }) }))] }));
58
+ };
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/branch/AlertDialog/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { type DateValue } from "@heroui/react";
2
+ export type CalendarProps = {
3
+ /** Names the calendar, e.g. "Delivery date". */
4
+ readonly label: string;
5
+ /** Controlled selected date. Omit for uncontrolled use with `defaultValue`. */
6
+ readonly value?: DateValue | null;
7
+ readonly defaultValue?: DateValue;
8
+ readonly onChange?: (value: DateValue) => void;
9
+ readonly minValue?: DateValue;
10
+ readonly maxValue?: DateValue;
11
+ readonly isDateUnavailable?: (date: DateValue) => boolean;
12
+ readonly isDisabled?: boolean;
13
+ readonly isReadOnly?: boolean;
14
+ /** App-owned accessible names of the month navigation buttons. */
15
+ readonly previousLabel: string;
16
+ readonly nextLabel: string;
17
+ readonly className?: string;
18
+ };
19
+ /**
20
+ * A standalone month calendar (not a date field). Arrow keys move by day/week, Page Up/Down by
21
+ * month, Home/End to the week edges; today, the selected date and unavailable dates are exposed by
22
+ * the vendor as `data-*` states on each cell, with `aria-selected` on the chosen day.
23
+ * Contract: root CONTROL-STATE-3 (app-owned date), grid FOCUS-2, nav A11Y-2 ICON-5, day TRUTH-2.
24
+ */
25
+ export declare const Calendar: ({ label, value, defaultValue, onChange, minValue, maxValue, isDateUnavailable, isDisabled, isReadOnly, previousLabel, nextLabel, className, }: CalendarProps) => import("react").JSX.Element;
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/branch/Calendar/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA4B,KAAK,SAAS,EAAE,MAAM,eAAe,CAAA;AAGxE,MAAM,MAAM,aAAa,GAAG;IACxB,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAA;IACzD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,kEAAkE;IAClE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC9B,CAAA;AAQD;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,+IAatB,aAAa,gCA8Bf,CAAA"}
@@ -0,0 +1,17 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Calendar as HeroCalendar } from "@heroui/react";
4
+ import { navigationClassName } from "../../navigationClassNames.js";
5
+ /*
6
+ * Consumer hooks: `starci-core-calendar-heading`, `starci-core-calendar-weekday` name HeroUI parts
7
+ * whose vendor paint Common leaves as it is. No shipped sheet paints them; the Grammar name lets a
8
+ * consumer or family select those parts without reaching for vendor class names.
9
+ */
10
+ /**
11
+ * A standalone month calendar (not a date field). Arrow keys move by day/week, Page Up/Down by
12
+ * month, Home/End to the week edges; today, the selected date and unavailable dates are exposed by
13
+ * the vendor as `data-*` states on each cell, with `aria-selected` on the chosen day.
14
+ * Contract: root CONTROL-STATE-3 (app-owned date), grid FOCUS-2, nav A11Y-2 ICON-5, day TRUTH-2.
15
+ */
16
+ export const Calendar = ({ label, value, defaultValue, onChange, minValue, maxValue, isDateUnavailable, isDisabled = false, isReadOnly = false, previousLabel, nextLabel, className, }) => (_jsxs(HeroCalendar, { "aria-label": label, className: navigationClassName("starci-core-calendar", className), "data-component": "Calendar", "data-contract": "CONTROL-STATE-3", "data-tier": "branch", isDisabled: isDisabled, isReadOnly: isReadOnly, ...(value === undefined ? {} : { value }), ...(defaultValue === undefined ? {} : { defaultValue }), ...(onChange === undefined ? {} : { onChange }), ...(minValue === undefined ? {} : { minValue }), ...(maxValue === undefined ? {} : { maxValue }), ...(isDateUnavailable === undefined ? {} : { isDateUnavailable }), children: [_jsxs(HeroCalendar.Header, { className: "starci-core-calendar-header", children: [_jsx(HeroCalendar.NavButton, { "aria-label": previousLabel, className: "starci-core-calendar-nav", "data-contract": "A11Y-2 ICON-5", slot: "previous" }), _jsx(HeroCalendar.Heading, { className: "starci-core-calendar-heading" }), _jsx(HeroCalendar.NavButton, { "aria-label": nextLabel, className: "starci-core-calendar-nav", "data-contract": "A11Y-2 ICON-5", slot: "next" })] }), _jsxs(HeroCalendar.Grid, { className: "starci-core-calendar-month", "data-contract": "FOCUS-2", children: [_jsx(HeroCalendar.GridHeader, { children: (day) => _jsx(HeroCalendar.HeaderCell, { className: "starci-core-calendar-weekday", children: day }) }), _jsx(HeroCalendar.GridBody, { children: (date) => _jsx(HeroCalendar.Cell, { className: "starci-core-calendar-day", "data-contract": "TRUTH-2", "data-grammar-calendar-day": "true", date: date }) })] })] }));
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/branch/Calendar/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAkB,MAAM,eAAe,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAoBnE;;;;GAIG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACrB,KAAK,EACL,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,aAAa,EACb,SAAS,EACT,SAAS,GACG,EAAE,EAAE,CAAC,CACjB,MAAC,YAAY,kBACG,KAAK,EACjB,SAAS,EAAE,mBAAmB,CAAC,sBAAsB,EAAE,SAAS,CAAC,oBAClD,UAAU,mBACX,iBAAiB,eACrB,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,KAClB,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,KACtC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,KACpD,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAC5C,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAC5C,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAC5C,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,aAElE,MAAC,YAAY,CAAC,MAAM,IAAC,SAAS,EAAC,6BAA6B,aACxD,KAAC,YAAY,CAAC,SAAS,kBAAa,aAAa,EAAE,SAAS,EAAC,0BAA0B,mBAAe,eAAe,EAAC,IAAI,EAAC,UAAU,GAAG,EACxI,KAAC,YAAY,CAAC,OAAO,IAAC,SAAS,EAAC,8BAA8B,GAAG,EACjE,KAAC,YAAY,CAAC,SAAS,kBAAa,SAAS,EAAE,SAAS,EAAC,0BAA0B,mBAAe,eAAe,EAAC,IAAI,EAAC,MAAM,GAAG,IAC9G,EACtB,MAAC,YAAY,CAAC,IAAI,IAAC,SAAS,EAAC,4BAA4B,mBAAe,SAAS,aAC7E,KAAC,YAAY,CAAC,UAAU,cACnB,CAAC,GAAW,EAAE,EAAE,CAAC,KAAC,YAAY,CAAC,UAAU,IAAC,SAAS,EAAC,8BAA8B,YAAE,GAAG,GAA2B,GAC7F,EAC1B,KAAC,YAAY,CAAC,QAAQ,cACjB,CAAC,IAAI,EAAE,EAAE,CAAC,KAAC,YAAY,CAAC,IAAI,IAAC,SAAS,EAAC,0BAA0B,mBAAe,SAAS,+BAA2B,MAAM,EAAC,IAAI,EAAE,IAAI,GAAI,GACtH,IACR,IACT,CAClB,CAAA"}
@@ -0,0 +1,32 @@
1
+ import type { ReactNode } from "react";
2
+ import { type FieldControlProps } from "../../primitive/Field/index.js";
3
+ import { type ListOption } from "../Select/index.js";
4
+ export type ComboBoxProps = FieldControlProps & {
5
+ readonly id?: string;
6
+ readonly options: ReadonlyArray<ListOption>;
7
+ readonly placeholder?: string;
8
+ /** Selected option id. */
9
+ readonly value?: string | null;
10
+ readonly defaultValue?: string | null;
11
+ readonly onValueChange?: (value: string | null) => void;
12
+ /** Typed text. Control it to filter or fetch options yourself. */
13
+ readonly inputValue?: string;
14
+ readonly defaultInputValue?: string;
15
+ readonly onInputChange?: (value: string) => void;
16
+ /** Keeps typed text that matches no option as the field value (autocomplete / free entry). */
17
+ readonly allowsCustomValue?: boolean;
18
+ /** Shown inside the open list when nothing matches. The copy is the app's. */
19
+ readonly emptyState?: ReactNode;
20
+ /** Options are being fetched for the typed text. */
21
+ readonly isPending?: boolean;
22
+ /** When the list opens: while typing (default), on focus, or only from the trigger/arrow keys. */
23
+ readonly menuTrigger?: "input" | "focus" | "manual";
24
+ };
25
+ /**
26
+ * Type to filter a list, then pick (combobox / autocomplete).
27
+ *
28
+ * The vendor owns the combobox role, `aria-expanded`, `aria-activedescendant`, arrow/Enter/Escape
29
+ * handling and the "contains" filter. Pending keeps the input editable and marks the list busy.
30
+ */
31
+ export declare const ComboBox: ({ id, options, placeholder, value, defaultValue, onValueChange, inputValue, defaultInputValue, onInputChange, allowsCustomValue, emptyState, isPending, menuTrigger, ...field }: ComboBoxProps) => import("react").JSX.Element;
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/branch/ComboBox/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAMH,KAAK,iBAAiB,EACzB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEjE,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG;IAC5C,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACvD,kEAAkE;IAClE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,8FAA8F;IAC9F,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IACpC,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAA;IAC/B,oDAAoD;IACpD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,kGAAkG;IAClG,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAA;CACtD,CAAA;AAcD;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,iLAetB,aAAa,gCA8Cf,CAAA"}
@@ -0,0 +1,28 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { ComboBox as HeroComboBox, Input as HeroInput, ListBox as HeroListBox, Spinner as HeroSpinner, } from "@heroui/react";
4
+ import { FieldDescription, FieldErrorText, FieldLabel, useGrammarPortal, vendorFieldProps, } from "../../primitive/Field/index.js";
5
+ import { ListOptions } from "../Select/index.js";
6
+ /*
7
+ * Consumer hook: `starci-core-combo-box` names this control's root for a consumer or family
8
+ * stylesheet. No shipped sheet paints it: the root is drawn as a whole by `.starci-core-field`, so
9
+ * a rule on the hook adds to the shared anatomy and never has to replace it.
10
+ */
11
+ /*
12
+ * Consumer hooks: `starci-core-list-popover`, `starci-core-list` name HeroUI parts whose vendor
13
+ * paint Common leaves as it is. No shipped sheet paints them; the Grammar name lets a consumer or
14
+ * family select those parts without reaching for vendor class names.
15
+ */
16
+ /**
17
+ * Type to filter a list, then pick (combobox / autocomplete).
18
+ *
19
+ * The vendor owns the combobox role, `aria-expanded`, `aria-activedescendant`, arrow/Enter/Escape
20
+ * handling and the "contains" filter. Pending keeps the input editable and marks the list busy.
21
+ */
22
+ export const ComboBox = ({ id, options, placeholder, value, defaultValue, onValueChange, inputValue, defaultInputValue, onInputChange, allowsCustomValue = false, emptyState, isPending = false, menuTrigger = "input", ...field }) => {
23
+ const { anchor, portalProps } = useGrammarPortal();
24
+ return (_jsxs(HeroComboBox, { "data-tier": "branch", "data-component": "ComboBox", "data-contract": "A11Y-1 FIELD-1 FIELD-2 CONTROL-STATE-2", className: "starci-core-field starci-core-combo-box", fullWidth: true, ...vendorFieldProps({ ...field, isPending }), isReadOnly: field.isReadOnly === true, allowsCustomValue: allowsCustomValue, menuTrigger: menuTrigger, ...(value === undefined ? defaultValue === undefined ? {} : { defaultValue } : { value }), ...(inputValue === undefined ? defaultInputValue === undefined ? {} : { defaultInputValue } : { inputValue }), ...(onInputChange === undefined ? {} : { onInputChange }), onChange: (key) => onValueChange?.(key === null ? null : String(key)), children: [anchor, _jsx(FieldLabel, { isHidden: field.isLabelHidden, isRequired: field.isRequired, children: field.label }), _jsxs(HeroComboBox.InputGroup, { className: "starci-core-combo-box-group", "data-grammar-field-control": "true", children: [_jsx(HeroInput, { ...(id === undefined ? {} : { id }), ...(placeholder === undefined ? {} : { placeholder }), className: "starci-core-combo-box-input", ...(isPending ? { "aria-busy": true } : {}) }), _jsx(HeroComboBox.Trigger, { className: "starci-core-combo-box-trigger", children: isPending ? _jsx(HeroSpinner, { size: "sm", color: "current", "aria-hidden": "true", className: "starci-core-field-spinner" }) : undefined })] }), _jsx(FieldDescription, { children: field.description }), _jsx(FieldErrorText, { children: field.errorMessage }), _jsx(HeroComboBox.Popover, { className: "starci-core-list-popover", "data-grammar-popover": "ComboBox", "data-contract": "LAYOUT-4", ...portalProps, children: _jsx(HeroListBox, { className: "starci-core-list", ...(isPending ? { "aria-busy": true } : {}), ...(emptyState == null ? {} : {
25
+ renderEmptyState: () => _jsx("div", { className: "starci-core-list-empty", "data-grammar-list-empty": "true", "data-contract": "STATE-3", children: emptyState }),
26
+ }), children: _jsx(ListOptions, { options: options }) }) })] }));
27
+ };
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/branch/ComboBox/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { type ReactNode } from "react";
2
+ export type DataTableColumn = {
3
+ readonly id: string;
4
+ readonly label: string;
5
+ /** The column that names each row for assistive technology. Defaults to the first column. */
6
+ readonly isRowHeader?: boolean;
7
+ readonly allowsSorting?: boolean;
8
+ readonly align?: "start" | "end";
9
+ };
10
+ export type DataTableSort = {
11
+ readonly columnId: string;
12
+ readonly direction: "ascending" | "descending";
13
+ };
14
+ export type DataTableRow = {
15
+ readonly id: string;
16
+ };
17
+ export type DataTableProps<Row extends DataTableRow> = {
18
+ /** Names the table, e.g. "Invoices". */
19
+ readonly label: string;
20
+ readonly columns: ReadonlyArray<DataTableColumn>;
21
+ readonly rows: ReadonlyArray<Row>;
22
+ readonly renderCell: (row: Row, columnId: string) => ReactNode;
23
+ /** Controlled sort. Sorting the rows stays with the app; the table announces `aria-sort`. */
24
+ readonly sort?: DataTableSort;
25
+ readonly onSortChange?: (sort: DataTableSort) => void;
26
+ readonly selectionMode?: "none" | "single" | "multiple";
27
+ readonly selectedIds?: ReadonlyArray<string> | "all";
28
+ readonly defaultSelectedIds?: ReadonlyArray<string> | "all";
29
+ readonly onSelectionChange?: (ids: ReadonlyArray<string> | "all") => void;
30
+ /** App-owned accessible names of the selection checkboxes in multiple mode. */
31
+ readonly selectAllLabel?: string;
32
+ readonly selectRowLabel?: (row: Row) => string;
33
+ /** Replaces the rows with `loadingContent` and marks the table busy. */
34
+ readonly isLoading?: boolean;
35
+ readonly loadingContent?: ReactNode;
36
+ /** Shown when there are no rows and the table is not loading. */
37
+ readonly emptyContent: ReactNode;
38
+ /** Keep the column header visible while the body scrolls inside `maxBlockSize`. */
39
+ readonly stickyHeader?: boolean;
40
+ /** Bounds the body so the table owns vertical scroll, e.g. "24rem". */
41
+ readonly maxBlockSize?: string;
42
+ readonly onRowAction?: (id: string) => void;
43
+ readonly className?: string;
44
+ };
45
+ /**
46
+ * Tabular data with sortable columns (`aria-sort`), row selection (`aria-selected`,
47
+ * `data-grammar-selected`), empty and loading states, an optional sticky header, and its own
48
+ * horizontal scroll so a wide table never widens a 360px page.
49
+ * Contract: scroll LAYOUT-3, grid FOCUS-2 CONTROL-STATE-3, row FOCUS-1, empty STATE-3.
50
+ */
51
+ export declare const DataTable: <Row extends DataTableRow>({ label, columns, rows, renderCell, sort, onSortChange, selectionMode, selectedIds, defaultSelectedIds, onSelectionChange, selectAllLabel, selectRowLabel, isLoading, loadingContent, emptyContent, stickyHeader, maxBlockSize, onRowAction, className, }: DataTableProps<Row>) => import("react").JSX.Element;
52
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/branch/DataTable/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAGpE,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,6FAA6F;IAC7F,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,WAAW,GAAG,YAAY,CAAA;CACjD,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAElD,MAAM,MAAM,cAAc,CAAC,GAAG,SAAS,YAAY,IAAI;IACnD,wCAAwC;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CAAA;IAChD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;IACjC,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAA;IAC9D,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAA;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAA;IACrD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAA;IACvD,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,KAAK,CAAA;IACpD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,KAAK,CAAA;IAC3D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,KAAK,KAAK,IAAI,CAAA;IACzE,+EAA+E;IAC/E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAA;IAC9C,wEAAwE;IACxE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAA;IACnC,iEAAiE;IACjE,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAA;IAChC,mFAAmF;IACnF,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;IAC/B,uEAAuE;IACvE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC9B,CAAA;AA2BD;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,GAAG,SAAS,YAAY,EAAE,2PAoBjD,cAAc,CAAC,GAAG,CAAC,gCA4FrB,CAAA"}
@@ -0,0 +1,46 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Checkbox as HeroCheckbox, Table as HeroTable } from "@heroui/react";
4
+ import { useState } from "react";
5
+ import { navigationClassName } from "../../navigationClassNames.js";
6
+ const SELECTION_COLUMN = "starci-data-table-selection";
7
+ const toSortDescriptor = (sort) => ({ column: sort.columnId, direction: sort.direction });
8
+ const toIds = (selection) => selection === "all" ? "all" : [...selection].map(String);
9
+ const toSelection = (ids) => ids === "all" ? "all" : new Set(ids);
10
+ const SelectionCheckbox = ({ label }) => (_jsx(HeroCheckbox, { className: "starci-core-data-table-checkbox", slot: "selection", ...(label === undefined ? {} : { "aria-label": label }), children: _jsx(HeroCheckbox.Content, { children: _jsx(HeroCheckbox.Control, { children: _jsx(HeroCheckbox.Indicator, {}) }) }) }));
11
+ /*
12
+ * Consumer hooks: `starci-core-data-table-sort`, `starci-core-data-table-body`,
13
+ * `starci-core-data-table-checkbox` name HeroUI parts whose vendor paint Common leaves as it is. No
14
+ * shipped sheet paints them; the Grammar name lets a consumer or family select those parts without
15
+ * reaching for vendor class names.
16
+ */
17
+ /**
18
+ * Tabular data with sortable columns (`aria-sort`), row selection (`aria-selected`,
19
+ * `data-grammar-selected`), empty and loading states, an optional sticky header, and its own
20
+ * horizontal scroll so a wide table never widens a 360px page.
21
+ * Contract: scroll LAYOUT-3, grid FOCUS-2 CONTROL-STATE-3, row FOCUS-1, empty STATE-3.
22
+ */
23
+ export const DataTable = ({ label, columns, rows, renderCell, sort, onSortChange, selectionMode = "none", selectedIds, defaultSelectedIds, onSelectionChange, selectAllLabel, selectRowLabel, isLoading = false, loadingContent, emptyContent, stickyHeader = false, maxBlockSize, onRowAction, className, }) => {
24
+ const rowHeaderId = columns.find((column) => column.isRowHeader)?.id ?? columns[0]?.id;
25
+ const multiple = selectionMode === "multiple";
26
+ // Selection is always held here so every row can expose its own `data-grammar-selected`.
27
+ const [uncontrolledSelection, setUncontrolledSelection] = useState(defaultSelectedIds ?? []);
28
+ const selection = selectedIds ?? uncontrolledSelection;
29
+ const isRowSelected = (id) => selection === "all" || selection.includes(id);
30
+ const visibleRows = isLoading ? [] : rows;
31
+ const state = isLoading ? "loading" : rows.length === 0 ? "empty" : "ready";
32
+ const scrollStyle = maxBlockSize === undefined ? undefined : { "--starci-core-data-table-max-block-size": maxBlockSize };
33
+ return (_jsx(HeroTable, { "aria-busy": isLoading || undefined, className: navigationClassName("starci-core-data-table", className), "data-component": "DataTable", "data-tier": "branch", "data-grammar-table-state": state, "data-grammar-table-sticky": stickyHeader ? "true" : "false", "data-grammar-table-bounded": maxBlockSize === undefined ? "false" : "true", children: _jsx(HeroTable.ScrollContainer, { className: "starci-core-data-table-scroll", "data-contract": "LAYOUT-3", "data-grammar-table-scroll": "true", style: scrollStyle, children: _jsxs(HeroTable.Content, { "aria-label": label, className: "starci-core-data-table-content", "data-contract": "FOCUS-2 CONTROL-STATE-3", selectionMode: selectionMode, ...(sort === undefined ? {} : { sortDescriptor: toSortDescriptor(sort) }), ...(onSortChange === undefined ? {} : {
34
+ onSortChange: (descriptor) => onSortChange({ columnId: String(descriptor.column), direction: descriptor.direction }),
35
+ }), selectedKeys: toSelection(selection), onSelectionChange: (next) => {
36
+ const ids = toIds(next);
37
+ if (selectedIds === undefined)
38
+ setUncontrolledSelection(ids);
39
+ onSelectionChange?.(ids);
40
+ }, ...(onRowAction === undefined ? {} : { onRowAction: (key) => onRowAction(String(key)) }), children: [_jsxs(HeroTable.Header, { className: "starci-core-data-table-header", children: [multiple ? (_jsx(HeroTable.Column, { className: "starci-core-data-table-column", "data-grammar-table-selection": "true", id: SELECTION_COLUMN, children: _jsx(SelectionCheckbox, { label: selectAllLabel }) })) : null, columns.map((column) => (_jsx(HeroTable.Column, { id: column.id, allowsSorting: column.allowsSorting === true, className: "starci-core-data-table-column", "data-grammar-table-align": column.align ?? "start", isRowHeader: column.id === rowHeaderId, textValue: column.label, children: ({ sortDirection }) => column.allowsSorting === true
41
+ ? _jsx(HeroTable.SortableColumnHeader, { className: "starci-core-data-table-sort", ...(sortDirection === undefined ? {} : { sortDirection }), children: column.label })
42
+ : column.label }, column.id)))] }), _jsx(HeroTable.Body, { className: "starci-core-data-table-body", renderEmptyState: () => isLoading
43
+ ? _jsx("div", { className: "starci-core-data-table-placeholder", "data-grammar-table-loading": "true", role: "status", children: loadingContent })
44
+ : _jsx("div", { className: "starci-core-data-table-placeholder", "data-contract": "STATE-3", "data-grammar-table-empty": "true", children: emptyContent }), children: visibleRows.map((row) => (_jsxs(HeroTable.Row, { id: row.id, className: "starci-core-data-table-row", "data-contract": "FOCUS-1", "data-grammar-table-row": "true", "data-grammar-selected": selectionMode !== "none" && isRowSelected(row.id) ? "true" : "false", children: [multiple ? (_jsx(HeroTable.Cell, { className: "starci-core-data-table-cell", "data-grammar-table-selection": "true", children: _jsx(SelectionCheckbox, { label: selectRowLabel?.(row) }) })) : null, columns.map((column) => (_jsx(HeroTable.Cell, { className: "starci-core-data-table-cell", "data-grammar-table-align": column.align ?? "start", children: renderCell(row, column.id) }, column.id)))] }, row.id))) })] }) }) }));
45
+ };
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/branch/DataTable/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { type DateValue } from "@heroui/react";
2
+ import { type FieldControlProps } from "../../primitive/Field/index.js";
3
+ import { type DateGranularity } from "../../primitive/DateField/index.js";
4
+ export type DatePickerProps = FieldControlProps & {
5
+ readonly value?: DateValue | null;
6
+ readonly defaultValue?: DateValue | null;
7
+ readonly onValueChange?: (value: DateValue | null) => void;
8
+ readonly minValue?: DateValue;
9
+ readonly maxValue?: DateValue;
10
+ /** Days the reader may not pick; they stay visible and are announced unavailable. */
11
+ readonly isDateUnavailable?: (date: DateValue) => boolean;
12
+ readonly granularity?: DateGranularity;
13
+ };
14
+ /** Month grid used by DatePicker: heading, previous/next, and the day grid (arrow-key navigable). */
15
+ export declare const PickerCalendar: () => import("react").JSX.Element;
16
+ /** Month grid used by DateRangePicker: the same anatomy, selecting a start and an end. */
17
+ export declare const PickerRangeCalendar: () => import("react").JSX.Element;
18
+ /**
19
+ * A date typed in segments or picked from a month grid in a popover. The trigger is a named button,
20
+ * the popover is a dialog that traps and returns focus, and the grid is the vendor's.
21
+ */
22
+ export declare const DatePicker: ({ value, defaultValue, onValueChange, minValue, maxValue, isDateUnavailable, granularity, ...field }: DatePickerProps) => import("react").JSX.Element;
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/branch/DatePicker/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAKH,KAAK,SAAS,EACjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAMH,KAAK,iBAAiB,EACzB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAEvF,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAA;IAC1D,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,qFAAqF;IACrF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAA;IACzD,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,CAAA;CACzC,CAAA;AAED,qGAAqG;AACrG,eAAO,MAAM,cAAc,mCAY1B,CAAA;AAED,0FAA0F;AAC1F,eAAO,MAAM,mBAAmB,mCAY/B,CAAA;AAeD;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,sGASxB,eAAe,gCAkCjB,CAAA"}
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Calendar as HeroCalendar, DateField as HeroDateField, DatePicker as HeroDatePicker, RangeCalendar as HeroRangeCalendar, } from "@heroui/react";
4
+ import { FieldDescription, FieldErrorText, FieldLabel, useGrammarPortal, vendorFieldProps, } from "../../primitive/Field/index.js";
5
+ import { DateSegments } from "../../primitive/DateField/index.js";
6
+ /** Month grid used by DatePicker: heading, previous/next, and the day grid (arrow-key navigable). */
7
+ export const PickerCalendar = () => (_jsxs(HeroCalendar, { className: "starci-core-calendar", "data-grammar-calendar": "single", children: [_jsxs(HeroCalendar.Header, { className: "starci-core-calendar-header", children: [_jsx(HeroCalendar.NavButton, { slot: "previous", className: "starci-core-calendar-nav" }), _jsx(HeroCalendar.Heading, { className: "starci-core-calendar-heading" }), _jsx(HeroCalendar.NavButton, { slot: "next", className: "starci-core-calendar-nav" })] }), _jsxs(HeroCalendar.Grid, { className: "starci-core-calendar-grid", children: [_jsx(HeroCalendar.GridHeader, { children: (day) => _jsx(HeroCalendar.HeaderCell, { children: day }) }), _jsx(HeroCalendar.GridBody, { children: (date) => _jsx(HeroCalendar.Cell, { date: date, className: "starci-core-calendar-cell", "data-grammar-calendar-cell": "true" }) })] })] }));
8
+ /** Month grid used by DateRangePicker: the same anatomy, selecting a start and an end. */
9
+ export const PickerRangeCalendar = () => (_jsxs(HeroRangeCalendar, { className: "starci-core-calendar", "data-grammar-calendar": "range", children: [_jsxs(HeroRangeCalendar.Header, { className: "starci-core-calendar-header", children: [_jsx(HeroRangeCalendar.NavButton, { slot: "previous", className: "starci-core-calendar-nav" }), _jsx(HeroRangeCalendar.Heading, { className: "starci-core-calendar-heading" }), _jsx(HeroRangeCalendar.NavButton, { slot: "next", className: "starci-core-calendar-nav" })] }), _jsxs(HeroRangeCalendar.Grid, { className: "starci-core-calendar-grid", children: [_jsx(HeroRangeCalendar.GridHeader, { children: (day) => _jsx(HeroRangeCalendar.HeaderCell, { children: day }) }), _jsx(HeroRangeCalendar.GridBody, { children: (date) => _jsx(HeroRangeCalendar.Cell, { date: date, className: "starci-core-calendar-cell", "data-grammar-calendar-cell": "true" }) })] })] }));
10
+ /*
11
+ * Consumer hook: `starci-core-date-picker` names this control's root for a consumer or family
12
+ * stylesheet. No shipped sheet paints it: the root is drawn as a whole by `.starci-core-field`, so
13
+ * a rule on the hook adds to the shared anatomy and never has to replace it.
14
+ */
15
+ /*
16
+ * Consumer hooks: `starci-core-date-popover`, `starci-core-date-suffix`,
17
+ * `starci-core-calendar-heading`, `starci-core-calendar-grid` name HeroUI parts whose vendor paint
18
+ * Common leaves as it is. No shipped sheet paints them; the Grammar name lets a consumer or family
19
+ * select those parts without reaching for vendor class names.
20
+ */
21
+ /**
22
+ * A date typed in segments or picked from a month grid in a popover. The trigger is a named button,
23
+ * the popover is a dialog that traps and returns focus, and the grid is the vendor's.
24
+ */
25
+ export const DatePicker = ({ value, defaultValue, onValueChange, minValue, maxValue, isDateUnavailable, granularity = "day", ...field }) => {
26
+ const { anchor, portalProps } = useGrammarPortal();
27
+ return (_jsxs(HeroDatePicker, { "data-tier": "branch", "data-component": "DatePicker", "data-contract": "A11Y-1 FIELD-1 FIELD-2", className: "starci-core-field starci-core-date-picker", ...vendorFieldProps(field), isReadOnly: field.isReadOnly === true, granularity: granularity, ...(value === undefined ? defaultValue === undefined ? {} : { defaultValue } : { value }), ...(onValueChange === undefined ? {} : { onChange: onValueChange }), ...(minValue === undefined ? {} : { minValue }), ...(maxValue === undefined ? {} : { maxValue }), ...(isDateUnavailable === undefined ? {} : { isDateUnavailable }), children: [anchor, _jsx(FieldLabel, { isHidden: field.isLabelHidden, isRequired: field.isRequired, children: field.label }), _jsxs(HeroDateField.Group, { className: "starci-core-date-group", "data-grammar-field-control": "true", children: [_jsx(DateSegments, {}), _jsx(HeroDateField.Suffix, { className: "starci-core-date-suffix", children: _jsx(HeroDatePicker.Trigger, { className: "starci-core-date-trigger", children: _jsx(HeroDatePicker.TriggerIndicator, {}) }) })] }), _jsx(FieldDescription, { children: field.description }), _jsx(FieldErrorText, { children: field.errorMessage }), _jsx(HeroDatePicker.Popover, { className: "starci-core-date-popover", "data-grammar-popover": "DatePicker", "data-contract": "LAYOUT-4 FOCUS-3", ...portalProps, children: _jsx(PickerCalendar, {}) })] }));
28
+ };
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/branch/DatePicker/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type DateValue, type RangeValue } from "@heroui/react";
2
+ import { type FieldControlProps } from "../../primitive/Field/index.js";
3
+ import { type DateGranularity } from "../../primitive/DateField/index.js";
4
+ export type DateRangeValue = RangeValue<DateValue>;
5
+ export type DateRangePickerProps = Omit<FieldControlProps, "name"> & {
6
+ readonly value?: DateRangeValue | null;
7
+ readonly defaultValue?: DateRangeValue | null;
8
+ readonly onValueChange?: (value: DateRangeValue | null) => void;
9
+ readonly minValue?: DateValue;
10
+ readonly maxValue?: DateValue;
11
+ readonly isDateUnavailable?: (date: DateValue) => boolean;
12
+ /** Lets a range span unavailable days; by default such a range is invalid. */
13
+ readonly allowsNonContiguousRanges?: boolean;
14
+ readonly granularity?: DateGranularity;
15
+ /** Form names for the two ends of the range. */
16
+ readonly startName?: string;
17
+ readonly endName?: string;
18
+ };
19
+ /** A start and an end date, typed in two segment groups or picked as a span on a month grid. */
20
+ export declare const DateRangePicker: ({ value, defaultValue, onValueChange, minValue, maxValue, isDateUnavailable, allowsNonContiguousRanges, granularity, startName, endName, ...field }: DateRangePickerProps) => import("react").JSX.Element;
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/branch/DateRangePicker/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGH,KAAK,SAAS,EACd,KAAK,UAAU,EAClB,MAAM,eAAe,CAAA;AACtB,OAAO,EAMH,KAAK,iBAAiB,EACzB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAGvF,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,CAAA;AAElD,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG;IACjE,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAA;IAC/D,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAA;IACzD,8EAA8E;IAC9E,QAAQ,CAAC,yBAAyB,CAAC,EAAE,OAAO,CAAA;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,CAAA;IACtC,gDAAgD;IAChD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAcD,gGAAgG;AAChG,eAAO,MAAM,eAAe,GAAI,qJAY7B,oBAAoB,gCAuCtB,CAAA"}
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { DateField as HeroDateField, DateRangePicker as HeroDateRangePicker, } from "@heroui/react";
4
+ import { FieldDescription, FieldErrorText, FieldLabel, useGrammarPortal, vendorFieldProps, } from "../../primitive/Field/index.js";
5
+ import { DateSegments } from "../../primitive/DateField/index.js";
6
+ import { PickerRangeCalendar } from "../DatePicker/index.js";
7
+ /*
8
+ * Consumer hook: `starci-core-date-picker` names this control's root for a consumer or family
9
+ * stylesheet. No shipped sheet paints it: the root is drawn as a whole by `.starci-core-field`, so
10
+ * a rule on the hook adds to the shared anatomy and never has to replace it.
11
+ */
12
+ /*
13
+ * Consumer hooks: `starci-core-date-popover`, `starci-core-date-suffix` name HeroUI parts whose
14
+ * vendor paint Common leaves as it is. No shipped sheet paints them; the Grammar name lets a
15
+ * consumer or family select those parts without reaching for vendor class names.
16
+ */
17
+ /** A start and an end date, typed in two segment groups or picked as a span on a month grid. */
18
+ export const DateRangePicker = ({ value, defaultValue, onValueChange, minValue, maxValue, isDateUnavailable, allowsNonContiguousRanges = false, granularity = "day", startName, endName, ...field }) => {
19
+ const { anchor, portalProps } = useGrammarPortal();
20
+ return (_jsxs(HeroDateRangePicker, { "data-tier": "branch", "data-component": "DateRangePicker", "data-contract": "A11Y-1 FIELD-1 FIELD-2", className: "starci-core-field starci-core-date-picker", ...vendorFieldProps(field), isReadOnly: field.isReadOnly === true, granularity: granularity, allowsNonContiguousRanges: allowsNonContiguousRanges, ...(value === undefined ? defaultValue === undefined ? {} : { defaultValue } : { value }), ...(onValueChange === undefined ? {} : { onChange: onValueChange }), ...(minValue === undefined ? {} : { minValue }), ...(maxValue === undefined ? {} : { maxValue }), ...(isDateUnavailable === undefined ? {} : { isDateUnavailable }), ...(startName === undefined ? {} : { startName }), ...(endName === undefined ? {} : { endName }), children: [anchor, _jsx(FieldLabel, { isHidden: field.isLabelHidden, isRequired: field.isRequired, children: field.label }), _jsxs(HeroDateField.Group, { className: "starci-core-date-group", "data-grammar-field-control": "true", children: [_jsx(DateSegments, { slot: "start" }), _jsx(HeroDateRangePicker.RangeSeparator, { className: "starci-core-date-range-separator" }), _jsx(DateSegments, { slot: "end" }), _jsx(HeroDateField.Suffix, { className: "starci-core-date-suffix", children: _jsx(HeroDateRangePicker.Trigger, { className: "starci-core-date-trigger", children: _jsx(HeroDateRangePicker.TriggerIndicator, {}) }) })] }), _jsx(FieldDescription, { children: field.description }), _jsx(FieldErrorText, { children: field.errorMessage }), _jsx(HeroDateRangePicker.Popover, { className: "starci-core-date-popover", "data-grammar-popover": "DateRangePicker", "data-contract": "LAYOUT-4 FOCUS-3", ...portalProps, children: _jsx(PickerRangeCalendar, {}) })] }));
21
+ };
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/branch/DateRangePicker/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { type ReactNode } from "react";
2
+ import { type OverlayOpenState } from "../../overlayScope.js";
3
+ export type DialogSize = "sm" | "md" | "lg" | "full";
4
+ /** Footer content, or a function receiving `close` for actions that should dismiss the dialog. */
5
+ export type OverlayFooter = ReactNode | ((close: () => void) => ReactNode);
6
+ export type DialogProps = OverlayOpenState & {
7
+ /** Visible heading; it is the dialog's accessible name (`aria-labelledby`). */
8
+ readonly title: string;
9
+ /** Supporting sentence under the heading, wired as `aria-describedby`. */
10
+ readonly description?: ReactNode;
11
+ readonly children?: ReactNode;
12
+ readonly footer?: OverlayFooter;
13
+ /**
14
+ * The control that opens the dialog: a Common `Button`/`IconButton` (any React Aria pressable).
15
+ * Omit it and drive `isOpen` for a dialog opened by app state.
16
+ */
17
+ readonly trigger?: ReactNode;
18
+ /** Name for the header close button. Omit only when the footer offers its own way out. */
19
+ readonly closeLabel?: string;
20
+ readonly size?: DialogSize;
21
+ /** Close when the person presses outside the dialog. Default `true`. */
22
+ readonly isDismissable?: boolean;
23
+ /** Disable Escape. Default `false`; keep Escape unless leaving would lose unsaved work. */
24
+ readonly isKeyboardDismissDisabled?: boolean;
25
+ };
26
+ /**
27
+ * BRANCH - `Dialog` (modal): a focused task above the page.
28
+ *
29
+ * React Aria owns the behaviour: focus moves into the dialog and is trapped there, Escape and an
30
+ * outside press dismiss it (each can be turned off), page scroll is locked, everything outside is
31
+ * hidden from assistive tech, and focus returns to the trigger on close. The portal lands inside the
32
+ * nearest `.grammar-common-root` (see `useOverlayContainer`), so the family scope still applies.
33
+ * Contract: surface FOCUS-3 (modal trap/return) LAYOUT-4 (portalled) CORE-BOUNDARY-4 (shadow); container MOTION-2.
34
+ */
35
+ export declare const Dialog: ({ title, description, children, footer, trigger, closeLabel, size, isDismissable, isKeyboardDismissDisabled, ...openState }: DialogProps) => import("react").JSX.Element;
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/branch/Dialog/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAC7C,OAAO,EAAyC,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAGpG,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAA;AAEpD,kGAAkG;AAClG,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,SAAS,CAAC,CAAA;AAE1E,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG;IACzC,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAA;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAA;IAC/B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAA;IAC5B,0FAA0F;IAC1F,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAA;IAC1B,wEAAwE;IACxE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,2FAA2F;IAC3F,QAAQ,CAAC,yBAAyB,CAAC,EAAE,OAAO,CAAA;CAC/C,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,GAAI,6HAWpB,WAAW,gCAqDb,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Modal as HeroModal } from "@heroui/react";
3
+ import { useId } from "react";
4
+ import { overlayOpenProps, useOverlayContainer } from "../../overlayScope.js";
5
+ import { CloseButton } from "../../primitive/CloseButton/index.js";
6
+ /**
7
+ * BRANCH - `Dialog` (modal): a focused task above the page.
8
+ *
9
+ * React Aria owns the behaviour: focus moves into the dialog and is trapped there, Escape and an
10
+ * outside press dismiss it (each can be turned off), page scroll is locked, everything outside is
11
+ * hidden from assistive tech, and focus returns to the trigger on close. The portal lands inside the
12
+ * nearest `.grammar-common-root` (see `useOverlayContainer`), so the family scope still applies.
13
+ * Contract: surface FOCUS-3 (modal trap/return) LAYOUT-4 (portalled) CORE-BOUNDARY-4 (shadow); container MOTION-2.
14
+ */
15
+ export const Dialog = ({ title, description, children, footer, trigger, closeLabel, size = "md", isDismissable = true, isKeyboardDismissDisabled = false, ...openState }) => {
16
+ const { anchor, container } = useOverlayContainer("Dialog");
17
+ const descriptionId = useId();
18
+ return (_jsxs(HeroModal, { ...overlayOpenProps(openState), children: [trigger, anchor, container === null ? null : (_jsx(HeroModal.Backdrop, { UNSTABLE_portalContainer: container, isDismissable: isDismissable, isKeyboardDismissDisabled: isKeyboardDismissDisabled, "data-grammar-overlay-backdrop": "Dialog", className: "starci-core-overlay-backdrop", children: _jsx(HeroModal.Container, { placement: "center", size: size, scroll: "inside", "data-size": size, "data-contract": "MOTION-2", className: "starci-core-dialog-container", children: _jsx(HeroModal.Dialog, { "data-tier": "branch", "data-component": "Dialog", "data-size": size, "data-grammar-overlay-surface": "dialog", "data-contract": "FOCUS-3 LAYOUT-4 CORE-BOUNDARY-4", ...(description === undefined ? {} : { "aria-describedby": descriptionId }), className: "starci-core-dialog", children: ({ close }) => (_jsxs(_Fragment, { children: [_jsxs(HeroModal.Header, { className: "starci-core-overlay-header", children: [_jsxs("div", { className: "starci-core-overlay-heading-group", children: [_jsx(HeroModal.Heading, { className: "starci-core-overlay-title", children: title }), description === undefined ? null : (_jsx("p", { id: descriptionId, className: "starci-core-overlay-description", children: description }))] }), closeLabel === undefined ? null : _jsx(CloseButton, { label: closeLabel, onPress: close })] }), children === undefined ? null : (_jsx(HeroModal.Body, { className: "starci-core-overlay-body", children: children })), footer === undefined ? null : (_jsx(HeroModal.Footer, { className: "starci-core-overlay-footer", children: typeof footer === "function" ? footer(close) : footer }))] })) }) }) }))] }));
19
+ };
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/branch/Dialog/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,KAAK,EAAkB,MAAM,OAAO,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAyB,MAAM,uBAAuB,CAAA;AACpG,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AA4BlE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EACnB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,MAAM,EACN,OAAO,EACP,UAAU,EACV,IAAI,GAAG,IAAI,EACX,aAAa,GAAG,IAAI,EACpB,yBAAyB,GAAG,KAAK,EACjC,GAAG,SAAS,EACF,EAAE,EAAE;IACd,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC3D,MAAM,aAAa,GAAG,KAAK,EAAE,CAAA;IAE7B,OAAO,CACH,MAAC,SAAS,OAAK,gBAAgB,CAAC,SAAS,CAAC,aACrC,OAAO,EACP,MAAM,EACN,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACzB,KAAC,SAAS,CAAC,QAAQ,IACf,wBAAwB,EAAE,SAAS,EACnC,aAAa,EAAE,aAAa,EAC5B,yBAAyB,EAAE,yBAAyB,mCACtB,QAAQ,EACtC,SAAS,EAAC,8BAA8B,YAExC,KAAC,SAAS,CAAC,SAAS,IAAC,SAAS,EAAC,QAAQ,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,QAAQ,eAAY,IAAI,mBAAgB,UAAU,EAAC,SAAS,EAAC,8BAA8B,YAClJ,KAAC,SAAS,CAAC,MAAM,iBACH,QAAQ,oBACH,QAAQ,eACZ,IAAI,kCACc,QAAQ,mBACvB,kCAAkC,KAC5C,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAC,EAC5E,SAAS,EAAC,oBAAoB,YAE7B,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACZ,8BACI,MAAC,SAAS,CAAC,MAAM,IAAC,SAAS,EAAC,4BAA4B,aACpD,eAAK,SAAS,EAAC,mCAAmC,aAC9C,KAAC,SAAS,CAAC,OAAO,IAAC,SAAS,EAAC,2BAA2B,YAAE,KAAK,GAAqB,EACnF,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAChC,YAAG,EAAE,EAAE,aAAa,EAAE,SAAS,EAAC,iCAAiC,YAAE,WAAW,GAAK,CACtF,IACC,EACL,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,WAAW,IAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,GAAI,IACtE,EAClB,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC7B,KAAC,SAAS,CAAC,IAAI,IAAC,SAAS,EAAC,0BAA0B,YAAE,QAAQ,GAAkB,CACnF,EACA,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC3B,KAAC,SAAS,CAAC,MAAM,IAAC,SAAS,EAAC,4BAA4B,YACnD,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GACvC,CACtB,IACF,CACN,GACc,GACD,GACL,CACxB,IACO,CACf,CAAA;AACL,CAAC,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { type ReactNode } from "react";
2
+ export type DisclosureProps = {
3
+ /** The always-visible trigger text. */
4
+ readonly title: ReactNode;
5
+ readonly children: ReactNode;
6
+ /** Controlled expansion. Omit for uncontrolled use with `defaultExpanded`. */
7
+ readonly isExpanded?: boolean;
8
+ readonly defaultExpanded?: boolean;
9
+ readonly onExpandedChange?: (isExpanded: boolean) => void;
10
+ readonly isDisabled?: boolean;
11
+ /** Heading level of the trigger's heading element. */
12
+ readonly headingLevel?: 2 | 3 | 4 | 5 | 6;
13
+ readonly className?: string;
14
+ };
15
+ /**
16
+ * One show/hide section (the generic, unframed disclosure; `SurfaceAccordionCard` is the framed
17
+ * card form). The trigger is a real button inside a heading with `aria-expanded`/`aria-controls`;
18
+ * `data-grammar-disclosure-state` mirrors the open state for the stylesheet.
19
+ * Contract: root STATE-7 (controlled expansion), trigger FOCUS-1, indicator MOTION-2.
20
+ */
21
+ export declare const Disclosure: ({ title, children, isExpanded, defaultExpanded, onExpandedChange, isDisabled, headingLevel, className, }: DisclosureProps) => import("react").JSX.Element;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/branch/Disclosure/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAGhD,MAAM,MAAM,eAAe,GAAG;IAC1B,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;IACzD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,sDAAsD;IACtD,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;AAQD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,0GASxB,eAAe,gCA4BjB,CAAA"}