@stridge/noctis 1.0.0-beta.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 (565) hide show
  1. package/README.md +60 -0
  2. package/dist/_virtual/_rolldown/runtime.js +27 -0
  3. package/dist/components/accordion/accordion.context.js +15 -0
  4. package/dist/components/accordion/accordion.d.ts +136 -0
  5. package/dist/components/accordion/accordion.js +132 -0
  6. package/dist/components/accordion/accordion.props.d.ts +45 -0
  7. package/dist/components/accordion/accordion.props.js +53 -0
  8. package/dist/components/accordion/accordion.slots.d.ts +24 -0
  9. package/dist/components/accordion/accordion.slots.js +39 -0
  10. package/dist/components/accordion/accordion.types.d.ts +11 -0
  11. package/dist/components/accordion/index.d.ts +3 -0
  12. package/dist/components/alert-dialog/alert-dialog.context.js +16 -0
  13. package/dist/components/alert-dialog/alert-dialog.d.ts +324 -0
  14. package/dist/components/alert-dialog/alert-dialog.js +279 -0
  15. package/dist/components/alert-dialog/alert-dialog.props.d.ts +85 -0
  16. package/dist/components/alert-dialog/alert-dialog.props.js +84 -0
  17. package/dist/components/alert-dialog/alert-dialog.slots.d.ts +29 -0
  18. package/dist/components/alert-dialog/alert-dialog.slots.js +52 -0
  19. package/dist/components/alert-dialog/alert-dialog.types.d.ts +22 -0
  20. package/dist/components/alert-dialog/index.d.ts +3 -0
  21. package/dist/components/autocomplete/autocomplete.context.d.ts +5 -0
  22. package/dist/components/autocomplete/autocomplete.context.js +13 -0
  23. package/dist/components/autocomplete/autocomplete.d.ts +364 -0
  24. package/dist/components/autocomplete/autocomplete.js +373 -0
  25. package/dist/components/autocomplete/autocomplete.props.d.ts +83 -0
  26. package/dist/components/autocomplete/autocomplete.props.js +63 -0
  27. package/dist/components/autocomplete/autocomplete.slots.d.ts +32 -0
  28. package/dist/components/autocomplete/autocomplete.slots.js +61 -0
  29. package/dist/components/autocomplete/index.d.ts +3 -0
  30. package/dist/components/avatar/avatar.context.js +21 -0
  31. package/dist/components/avatar/avatar.d.ts +235 -0
  32. package/dist/components/avatar/avatar.js +208 -0
  33. package/dist/components/avatar/avatar.props.d.ts +86 -0
  34. package/dist/components/avatar/avatar.props.js +78 -0
  35. package/dist/components/avatar/avatar.slots.d.ts +35 -0
  36. package/dist/components/avatar/avatar.slots.js +49 -0
  37. package/dist/components/avatar/avatar.types.d.ts +28 -0
  38. package/dist/components/avatar/index.d.ts +2 -0
  39. package/dist/components/button/button.d.ts +91 -0
  40. package/dist/components/button/button.js +82 -0
  41. package/dist/components/button/button.props.d.ts +48 -0
  42. package/dist/components/button/button.props.js +25 -0
  43. package/dist/components/button/button.slots.d.ts +30 -0
  44. package/dist/components/button/button.slots.js +40 -0
  45. package/dist/components/button/button.types.d.ts +12 -0
  46. package/dist/components/button/index.d.ts +2 -0
  47. package/dist/components/button-group/button-group.context.js +15 -0
  48. package/dist/components/button-group/button-group.d.ts +60 -0
  49. package/dist/components/button-group/button-group.js +50 -0
  50. package/dist/components/button-group/button-group.props.d.ts +22 -0
  51. package/dist/components/button-group/button-group.props.js +33 -0
  52. package/dist/components/button-group/button-group.slots.d.ts +12 -0
  53. package/dist/components/button-group/button-group.slots.js +18 -0
  54. package/dist/components/button-group/index.d.ts +2 -0
  55. package/dist/components/checkbox/checkbox-group.d.ts +46 -0
  56. package/dist/components/checkbox/checkbox-group.js +31 -0
  57. package/dist/components/checkbox/checkbox.context.js +15 -0
  58. package/dist/components/checkbox/checkbox.d.ts +130 -0
  59. package/dist/components/checkbox/checkbox.js +117 -0
  60. package/dist/components/checkbox/checkbox.props.d.ts +84 -0
  61. package/dist/components/checkbox/checkbox.props.js +49 -0
  62. package/dist/components/checkbox/checkbox.slots.d.ts +27 -0
  63. package/dist/components/checkbox/checkbox.slots.js +40 -0
  64. package/dist/components/checkbox/index.d.ts +3 -0
  65. package/dist/components/code-block/brand-logo.d.ts +37 -0
  66. package/dist/components/code-block/brand-logo.js +212 -0
  67. package/dist/components/code-block/code-block.context.js +13 -0
  68. package/dist/components/code-block/code-block.d.ts +190 -0
  69. package/dist/components/code-block/code-block.js +267 -0
  70. package/dist/components/code-block/code-block.props.d.ts +42 -0
  71. package/dist/components/code-block/code-block.props.js +51 -0
  72. package/dist/components/code-block/code-block.slots.d.ts +16 -0
  73. package/dist/components/code-block/code-block.slots.js +31 -0
  74. package/dist/components/code-block/index.d.ts +3 -0
  75. package/dist/components/code-block/language-label.js +43 -0
  76. package/dist/components/collapsible/collapsible.context.js +18 -0
  77. package/dist/components/collapsible/collapsible.d.ts +167 -0
  78. package/dist/components/collapsible/collapsible.js +182 -0
  79. package/dist/components/collapsible/collapsible.props.d.ts +33 -0
  80. package/dist/components/collapsible/collapsible.props.js +44 -0
  81. package/dist/components/collapsible/collapsible.slots.d.ts +25 -0
  82. package/dist/components/collapsible/collapsible.slots.js +40 -0
  83. package/dist/components/collapsible/collapsible.types.d.ts +23 -0
  84. package/dist/components/collapsible/index.d.ts +2 -0
  85. package/dist/components/color-picker/area.d.ts +11 -0
  86. package/dist/components/color-picker/area.js +148 -0
  87. package/dist/components/color-picker/color-picker.d.ts +110 -0
  88. package/dist/components/color-picker/color-picker.js +149 -0
  89. package/dist/components/color-picker/color-picker.props.d.ts +69 -0
  90. package/dist/components/color-picker/color-picker.props.js +74 -0
  91. package/dist/components/color-picker/color-picker.slots.js +21 -0
  92. package/dist/components/color-picker/color.d.ts +18 -0
  93. package/dist/components/color-picker/color.js +224 -0
  94. package/dist/components/color-picker/context.d.ts +25 -0
  95. package/dist/components/color-picker/context.js +23 -0
  96. package/dist/components/color-picker/eyedropper.d.ts +14 -0
  97. package/dist/components/color-picker/eyedropper.js +50 -0
  98. package/dist/components/color-picker/format-tabs.d.ts +11 -0
  99. package/dist/components/color-picker/format-tabs.js +35 -0
  100. package/dist/components/color-picker/index.d.ts +3 -0
  101. package/dist/components/color-picker/inputs.d.ts +16 -0
  102. package/dist/components/color-picker/inputs.js +61 -0
  103. package/dist/components/color-picker/sliders.d.ts +17 -0
  104. package/dist/components/color-picker/sliders.js +94 -0
  105. package/dist/components/color-picker/store.js +48 -0
  106. package/dist/components/color-picker/swatch.d.ts +15 -0
  107. package/dist/components/color-picker/swatch.js +25 -0
  108. package/dist/components/color-swatch/color-swatch-picker.d.ts +87 -0
  109. package/dist/components/color-swatch/color-swatch-picker.js +73 -0
  110. package/dist/components/color-swatch/color-swatch.context.js +8 -0
  111. package/dist/components/color-swatch/color-swatch.d.ts +55 -0
  112. package/dist/components/color-swatch/color-swatch.js +48 -0
  113. package/dist/components/color-swatch/color-swatch.props.d.ts +54 -0
  114. package/dist/components/color-swatch/color-swatch.props.js +32 -0
  115. package/dist/components/color-swatch/color-swatch.slots.js +13 -0
  116. package/dist/components/color-swatch/index.d.ts +2 -0
  117. package/dist/components/combobox/combobox.context.js +13 -0
  118. package/dist/components/combobox/combobox.d.ts +328 -0
  119. package/dist/components/combobox/combobox.js +315 -0
  120. package/dist/components/combobox/combobox.props.d.ts +85 -0
  121. package/dist/components/combobox/combobox.props.js +79 -0
  122. package/dist/components/combobox/combobox.slots.d.ts +28 -0
  123. package/dist/components/combobox/combobox.slots.js +63 -0
  124. package/dist/components/combobox/index.d.ts +2 -0
  125. package/dist/components/context-menu/context-menu.d.ts +254 -0
  126. package/dist/components/context-menu/context-menu.js +150 -0
  127. package/dist/components/context-menu/context-menu.props.d.ts +22 -0
  128. package/dist/components/context-menu/context-menu.props.js +32 -0
  129. package/dist/components/context-menu/context-menu.slots.d.ts +24 -0
  130. package/dist/components/context-menu/context-menu.slots.js +42 -0
  131. package/dist/components/context-menu/index.d.ts +2 -0
  132. package/dist/components/copy-button/copy-button.d.ts +56 -0
  133. package/dist/components/copy-button/copy-button.js +88 -0
  134. package/dist/components/copy-button/copy-button.props.d.ts +27 -0
  135. package/dist/components/copy-button/copy-button.props.js +51 -0
  136. package/dist/components/copy-button/copy-button.slots.d.ts +20 -0
  137. package/dist/components/copy-button/copy-button.slots.js +36 -0
  138. package/dist/components/copy-button/index.d.ts +2 -0
  139. package/dist/components/dialog/dialog.context.js +15 -0
  140. package/dist/components/dialog/dialog.d.ts +299 -0
  141. package/dist/components/dialog/dialog.js +263 -0
  142. package/dist/components/dialog/dialog.props.d.ts +71 -0
  143. package/dist/components/dialog/dialog.props.js +75 -0
  144. package/dist/components/dialog/dialog.slots.d.ts +26 -0
  145. package/dist/components/dialog/dialog.slots.js +46 -0
  146. package/dist/components/dialog/dialog.types.d.ts +16 -0
  147. package/dist/components/dialog/index.d.ts +3 -0
  148. package/dist/components/field/field.d.ts +221 -0
  149. package/dist/components/field/field.js +192 -0
  150. package/dist/components/field/field.props.d.ts +66 -0
  151. package/dist/components/field/field.props.js +65 -0
  152. package/dist/components/field/field.slots.d.ts +35 -0
  153. package/dist/components/field/field.slots.js +54 -0
  154. package/dist/components/field/field.types.d.ts +5 -0
  155. package/dist/components/field/index.d.ts +4 -0
  156. package/dist/components/inline-code/index.d.ts +1 -0
  157. package/dist/components/inline-code/inline-code.d.ts +46 -0
  158. package/dist/components/inline-code/inline-code.js +36 -0
  159. package/dist/components/inline-code/inline-code.props.d.ts +17 -0
  160. package/dist/components/inline-code/inline-code.props.js +27 -0
  161. package/dist/components/inline-code/inline-code.slots.js +8 -0
  162. package/dist/components/input/index.d.ts +3 -0
  163. package/dist/components/input/input.context.js +13 -0
  164. package/dist/components/input/input.d.ts +161 -0
  165. package/dist/components/input/input.js +117 -0
  166. package/dist/components/input/input.props.d.ts +51 -0
  167. package/dist/components/input/input.props.js +50 -0
  168. package/dist/components/input/input.slots.d.ts +35 -0
  169. package/dist/components/input/input.slots.js +46 -0
  170. package/dist/components/input/input.types.d.ts +12 -0
  171. package/dist/components/kbd/glyphs.js +45 -0
  172. package/dist/components/kbd/index.d.ts +1 -0
  173. package/dist/components/kbd/kbd.d.ts +61 -0
  174. package/dist/components/kbd/kbd.js +233 -0
  175. package/dist/components/kbd/kbd.props.d.ts +30 -0
  176. package/dist/components/kbd/kbd.props.js +39 -0
  177. package/dist/components/kbd/kbd.slots.js +14 -0
  178. package/dist/components/kbd/use-apple-platform.js +25 -0
  179. package/dist/components/menu/index.d.ts +2 -0
  180. package/dist/components/menu/menu.d.ts +355 -0
  181. package/dist/components/menu/menu.js +263 -0
  182. package/dist/components/menu/menu.props.d.ts +92 -0
  183. package/dist/components/menu/menu.props.js +97 -0
  184. package/dist/components/menu/menu.slots.d.ts +32 -0
  185. package/dist/components/menu/menu.slots.js +60 -0
  186. package/dist/components/menubar/index.d.ts +2 -0
  187. package/dist/components/menubar/menubar.context.js +13 -0
  188. package/dist/components/menubar/menubar.d.ts +162 -0
  189. package/dist/components/menubar/menubar.js +122 -0
  190. package/dist/components/menubar/menubar.props.d.ts +41 -0
  191. package/dist/components/menubar/menubar.props.js +45 -0
  192. package/dist/components/menubar/menubar.slots.d.ts +26 -0
  193. package/dist/components/menubar/menubar.slots.js +40 -0
  194. package/dist/components/meter/index.d.ts +2 -0
  195. package/dist/components/meter/meter.context.d.ts +9 -0
  196. package/dist/components/meter/meter.context.js +13 -0
  197. package/dist/components/meter/meter.d.ts +163 -0
  198. package/dist/components/meter/meter.js +121 -0
  199. package/dist/components/meter/meter.props.d.ts +50 -0
  200. package/dist/components/meter/meter.props.js +33 -0
  201. package/dist/components/meter/meter.slots.d.ts +18 -0
  202. package/dist/components/meter/meter.slots.js +31 -0
  203. package/dist/components/navigation-menu/index.d.ts +2 -0
  204. package/dist/components/navigation-menu/navigation-menu.d.ts +328 -0
  205. package/dist/components/navigation-menu/navigation-menu.js +274 -0
  206. package/dist/components/navigation-menu/navigation-menu.props.d.ts +98 -0
  207. package/dist/components/navigation-menu/navigation-menu.props.js +90 -0
  208. package/dist/components/navigation-menu/navigation-menu.slots.d.ts +34 -0
  209. package/dist/components/navigation-menu/navigation-menu.slots.js +60 -0
  210. package/dist/components/number-field/index.d.ts +2 -0
  211. package/dist/components/number-field/number-field.context.d.ts +13 -0
  212. package/dist/components/number-field/number-field.context.js +13 -0
  213. package/dist/components/number-field/number-field.d.ts +197 -0
  214. package/dist/components/number-field/number-field.js +187 -0
  215. package/dist/components/number-field/number-field.props.d.ts +66 -0
  216. package/dist/components/number-field/number-field.props.js +50 -0
  217. package/dist/components/number-field/number-field.slots.d.ts +31 -0
  218. package/dist/components/number-field/number-field.slots.js +48 -0
  219. package/dist/components/otp-field/index.d.ts +3 -0
  220. package/dist/components/otp-field/otp-field.context.js +13 -0
  221. package/dist/components/otp-field/otp-field.d.ts +99 -0
  222. package/dist/components/otp-field/otp-field.js +76 -0
  223. package/dist/components/otp-field/otp-field.props.d.ts +48 -0
  224. package/dist/components/otp-field/otp-field.props.js +43 -0
  225. package/dist/components/otp-field/otp-field.slots.d.ts +28 -0
  226. package/dist/components/otp-field/otp-field.slots.js +39 -0
  227. package/dist/components/popover/index.d.ts +2 -0
  228. package/dist/components/popover/popover.d.ts +192 -0
  229. package/dist/components/popover/popover.js +152 -0
  230. package/dist/components/popover/popover.props.d.ts +34 -0
  231. package/dist/components/popover/popover.props.js +44 -0
  232. package/dist/components/popover/popover.slots.d.ts +22 -0
  233. package/dist/components/popover/popover.slots.js +42 -0
  234. package/dist/components/preview-card/index.d.ts +2 -0
  235. package/dist/components/preview-card/preview-card.d.ts +182 -0
  236. package/dist/components/preview-card/preview-card.js +146 -0
  237. package/dist/components/preview-card/preview-card.props.d.ts +37 -0
  238. package/dist/components/preview-card/preview-card.props.js +48 -0
  239. package/dist/components/preview-card/preview-card.slots.d.ts +22 -0
  240. package/dist/components/preview-card/preview-card.slots.js +39 -0
  241. package/dist/components/progress/index.d.ts +3 -0
  242. package/dist/components/progress/progress.context.d.ts +9 -0
  243. package/dist/components/progress/progress.context.js +13 -0
  244. package/dist/components/progress/progress.d.ts +139 -0
  245. package/dist/components/progress/progress.js +92 -0
  246. package/dist/components/progress/progress.props.d.ts +56 -0
  247. package/dist/components/progress/progress.props.js +38 -0
  248. package/dist/components/progress/progress.slots.d.ts +24 -0
  249. package/dist/components/progress/progress.slots.js +37 -0
  250. package/dist/components/radio/index.d.ts +2 -0
  251. package/dist/components/radio/radio.context.js +5 -0
  252. package/dist/components/radio/radio.d.ts +205 -0
  253. package/dist/components/radio/radio.js +168 -0
  254. package/dist/components/radio/radio.props.d.ts +106 -0
  255. package/dist/components/radio/radio.props.js +65 -0
  256. package/dist/components/radio/radio.slots.d.ts +29 -0
  257. package/dist/components/radio/radio.slots.js +44 -0
  258. package/dist/components/rail/index.d.ts +3 -0
  259. package/dist/components/rail/rail.context.d.ts +17 -0
  260. package/dist/components/rail/rail.context.js +23 -0
  261. package/dist/components/rail/rail.d.ts +232 -0
  262. package/dist/components/rail/rail.js +254 -0
  263. package/dist/components/rail/rail.props.d.ts +98 -0
  264. package/dist/components/rail/rail.props.js +64 -0
  265. package/dist/components/rail/rail.slots.d.ts +20 -0
  266. package/dist/components/rail/rail.slots.js +40 -0
  267. package/dist/components/scroll-area/index.d.ts +2 -0
  268. package/dist/components/scroll-area/scroll-area.context.js +15 -0
  269. package/dist/components/scroll-area/scroll-area.d.ts +217 -0
  270. package/dist/components/scroll-area/scroll-area.js +153 -0
  271. package/dist/components/scroll-area/scroll-area.props.d.ts +73 -0
  272. package/dist/components/scroll-area/scroll-area.props.js +64 -0
  273. package/dist/components/scroll-area/scroll-area.slots.d.ts +40 -0
  274. package/dist/components/scroll-area/scroll-area.slots.js +54 -0
  275. package/dist/components/scroll-area/scroll-area.types.d.ts +24 -0
  276. package/dist/components/search-dialog/index.d.ts +3 -0
  277. package/dist/components/search-dialog/parts/input.d.ts +24 -0
  278. package/dist/components/search-dialog/parts/input.js +53 -0
  279. package/dist/components/search-dialog/parts/messages.d.ts +80 -0
  280. package/dist/components/search-dialog/parts/messages.js +75 -0
  281. package/dist/components/search-dialog/parts/results.d.ts +43 -0
  282. package/dist/components/search-dialog/parts/results.js +63 -0
  283. package/dist/components/search-dialog/parts/root.d.ts +54 -0
  284. package/dist/components/search-dialog/parts/root.js +99 -0
  285. package/dist/components/search-dialog/search-dialog.context.d.ts +15 -0
  286. package/dist/components/search-dialog/search-dialog.context.js +20 -0
  287. package/dist/components/search-dialog/search-dialog.d.ts +84 -0
  288. package/dist/components/search-dialog/search-dialog.js +43 -0
  289. package/dist/components/search-dialog/search-dialog.props.d.ts +45 -0
  290. package/dist/components/search-dialog/search-dialog.props.js +49 -0
  291. package/dist/components/search-dialog/search-dialog.slots.d.ts +16 -0
  292. package/dist/components/search-dialog/search-dialog.slots.js +32 -0
  293. package/dist/components/select/index.d.ts +2 -0
  294. package/dist/components/select/select.context.js +17 -0
  295. package/dist/components/select/select.d.ts +356 -0
  296. package/dist/components/select/select.js +314 -0
  297. package/dist/components/select/select.props.d.ts +110 -0
  298. package/dist/components/select/select.props.js +103 -0
  299. package/dist/components/select/select.slots.d.ts +38 -0
  300. package/dist/components/select/select.slots.js +67 -0
  301. package/dist/components/separator/index.d.ts +2 -0
  302. package/dist/components/separator/separator.d.ts +69 -0
  303. package/dist/components/separator/separator.js +44 -0
  304. package/dist/components/separator/separator.props.d.ts +30 -0
  305. package/dist/components/separator/separator.props.js +30 -0
  306. package/dist/components/separator/separator.slots.d.ts +22 -0
  307. package/dist/components/separator/separator.slots.js +21 -0
  308. package/dist/components/separator/separator.types.d.ts +5 -0
  309. package/dist/components/sheet/index.d.ts +3 -0
  310. package/dist/components/sheet/sheet-stack.d.ts +106 -0
  311. package/dist/components/sheet/sheet-stack.js +146 -0
  312. package/dist/components/sheet/sheet.d.ts +279 -0
  313. package/dist/components/sheet/sheet.js +264 -0
  314. package/dist/components/sheet/sheet.props.d.ts +74 -0
  315. package/dist/components/sheet/sheet.props.js +77 -0
  316. package/dist/components/sheet/sheet.slots.js +22 -0
  317. package/dist/components/sheet/sheet.types.d.ts +12 -0
  318. package/dist/components/slider/index.d.ts +3 -0
  319. package/dist/components/slider/slider.context.d.ts +5 -0
  320. package/dist/components/slider/slider.context.js +29 -0
  321. package/dist/components/slider/slider.d.ts +230 -0
  322. package/dist/components/slider/slider.js +274 -0
  323. package/dist/components/slider/slider.props.d.ts +72 -0
  324. package/dist/components/slider/slider.props.js +59 -0
  325. package/dist/components/slider/slider.slots.d.ts +30 -0
  326. package/dist/components/slider/slider.slots.js +50 -0
  327. package/dist/components/surface/index.d.ts +1 -0
  328. package/dist/components/surface/surface.d.ts +84 -0
  329. package/dist/components/surface/surface.js +48 -0
  330. package/dist/components/surface/surface.props.d.ts +35 -0
  331. package/dist/components/surface/surface.props.js +26 -0
  332. package/dist/components/surface/surface.slots.js +9 -0
  333. package/dist/components/surface/surface.types.d.ts +14 -0
  334. package/dist/components/switch/index.d.ts +2 -0
  335. package/dist/components/switch/switch.context.js +14 -0
  336. package/dist/components/switch/switch.d.ts +110 -0
  337. package/dist/components/switch/switch.js +92 -0
  338. package/dist/components/switch/switch.props.d.ts +68 -0
  339. package/dist/components/switch/switch.props.js +41 -0
  340. package/dist/components/switch/switch.slots.d.ts +23 -0
  341. package/dist/components/switch/switch.slots.js +35 -0
  342. package/dist/components/table/index.d.ts +1 -0
  343. package/dist/components/table/table.d.ts +104 -0
  344. package/dist/components/table/table.js +92 -0
  345. package/dist/components/table/table.props.d.ts +38 -0
  346. package/dist/components/table/table.props.js +49 -0
  347. package/dist/components/table/table.slots.js +17 -0
  348. package/dist/components/tabs/index.d.ts +2 -0
  349. package/dist/components/tabs/tabs.context.d.ts +9 -0
  350. package/dist/components/tabs/tabs.context.js +13 -0
  351. package/dist/components/tabs/tabs.d.ts +139 -0
  352. package/dist/components/tabs/tabs.js +118 -0
  353. package/dist/components/tabs/tabs.props.d.ts +59 -0
  354. package/dist/components/tabs/tabs.props.js +39 -0
  355. package/dist/components/tabs/tabs.slots.d.ts +20 -0
  356. package/dist/components/tabs/tabs.slots.js +33 -0
  357. package/dist/components/textarea/index.d.ts +3 -0
  358. package/dist/components/textarea/textarea.context.js +13 -0
  359. package/dist/components/textarea/textarea.d.ts +142 -0
  360. package/dist/components/textarea/textarea.js +129 -0
  361. package/dist/components/textarea/textarea.props.d.ts +44 -0
  362. package/dist/components/textarea/textarea.props.js +32 -0
  363. package/dist/components/textarea/textarea.slots.d.ts +23 -0
  364. package/dist/components/textarea/textarea.slots.js +33 -0
  365. package/dist/components/textarea/textarea.types.d.ts +5 -0
  366. package/dist/components/toast/index.d.ts +4 -0
  367. package/dist/components/toast/toast.d.ts +241 -0
  368. package/dist/components/toast/toast.js +193 -0
  369. package/dist/components/toast/toast.manager.d.ts +76 -0
  370. package/dist/components/toast/toast.manager.js +71 -0
  371. package/dist/components/toast/toast.props.d.ts +66 -0
  372. package/dist/components/toast/toast.props.js +74 -0
  373. package/dist/components/toast/toast.slots.d.ts +30 -0
  374. package/dist/components/toast/toast.slots.js +49 -0
  375. package/dist/components/toast/toast.types.d.ts +19 -0
  376. package/dist/components/toggle/index.d.ts +2 -0
  377. package/dist/components/toggle/toggle.context.d.ts +11 -0
  378. package/dist/components/toggle/toggle.context.js +14 -0
  379. package/dist/components/toggle/toggle.d.ts +136 -0
  380. package/dist/components/toggle/toggle.js +101 -0
  381. package/dist/components/toggle/toggle.props.d.ts +51 -0
  382. package/dist/components/toggle/toggle.props.js +29 -0
  383. package/dist/components/toggle/toggle.slots.d.ts +26 -0
  384. package/dist/components/toggle/toggle.slots.js +36 -0
  385. package/dist/components/toolbar/index.d.ts +3 -0
  386. package/dist/components/toolbar/toolbar.context.js +23 -0
  387. package/dist/components/toolbar/toolbar.d.ts +218 -0
  388. package/dist/components/toolbar/toolbar.js +197 -0
  389. package/dist/components/toolbar/toolbar.props.d.ts +54 -0
  390. package/dist/components/toolbar/toolbar.props.js +55 -0
  391. package/dist/components/toolbar/toolbar.slots.d.ts +24 -0
  392. package/dist/components/toolbar/toolbar.slots.js +37 -0
  393. package/dist/components/toolbar/toolbar.types.d.ts +15 -0
  394. package/dist/components/tooltip/index.d.ts +2 -0
  395. package/dist/components/tooltip/tooltip.d.ts +170 -0
  396. package/dist/components/tooltip/tooltip.js +143 -0
  397. package/dist/components/tooltip/tooltip.props.d.ts +36 -0
  398. package/dist/components/tooltip/tooltip.props.js +42 -0
  399. package/dist/components/tooltip/tooltip.slots.d.ts +26 -0
  400. package/dist/components/tooltip/tooltip.slots.js +42 -0
  401. package/dist/core/derive-threshold-tone.js +35 -0
  402. package/dist/core/merge-class-name.d.ts +17 -0
  403. package/dist/core/merge-class-name.js +16 -0
  404. package/dist/core/noctis-provider.d.ts +38 -0
  405. package/dist/core/noctis-provider.js +44 -0
  406. package/dist/core/primitive/index.d.ts +1 -0
  407. package/dist/core/primitive/primitive.d.ts +44 -0
  408. package/dist/core/primitive/primitive.js +27 -0
  409. package/dist/core/radius-scope/index.d.ts +2 -0
  410. package/dist/core/radius-scope/radius-scope.d.ts +43 -0
  411. package/dist/core/radius-scope/radius-scope.js +36 -0
  412. package/dist/core/radius-scope/radius-scope.styles.d.ts +13 -0
  413. package/dist/core/radius-scope/radius-scope.styles.js +11 -0
  414. package/dist/core/render.d.ts +24 -0
  415. package/dist/core/render.js +12 -0
  416. package/dist/core/use-copy.d.ts +13 -0
  417. package/dist/core/use-copy.js +30 -0
  418. package/dist/core/use-injected-labels.js +55 -0
  419. package/dist/core/use-reduced-motion.d.ts +9 -0
  420. package/dist/core/use-reduced-motion.js +26 -0
  421. package/dist/core/visually-hidden/index.d.ts +1 -0
  422. package/dist/core/visually-hidden/visually-hidden.d.ts +24 -0
  423. package/dist/core/visually-hidden/visually-hidden.js +19 -0
  424. package/dist/i18n/default-messages.d.ts +12 -0
  425. package/dist/i18n/default-messages.js +10 -0
  426. package/dist/i18n/index.d.ts +2 -0
  427. package/dist/i18n/index.js +2 -0
  428. package/dist/i18n/messages/index.d.ts +2 -0
  429. package/dist/i18n/messages/index.js +2 -0
  430. package/dist/icons/glyphs.d.ts +2 -0
  431. package/dist/icons/glyphs.js +2 -0
  432. package/dist/icons/icon.d.ts +40 -0
  433. package/dist/icons/icon.js +26 -0
  434. package/dist/icons/icon.styles.d.ts +9 -0
  435. package/dist/icons/index.d.ts +3 -0
  436. package/dist/index.d.ts +126 -0
  437. package/dist/index.js +112 -0
  438. package/dist/primitives/accordion.d.ts +7 -0
  439. package/dist/primitives/accordion.js +8 -0
  440. package/dist/primitives/alert-dialog.d.ts +7 -0
  441. package/dist/primitives/alert-dialog.js +8 -0
  442. package/dist/primitives/autocomplete/autocomplete.d.ts +58 -0
  443. package/dist/primitives/autocomplete/autocomplete.js +58 -0
  444. package/dist/primitives/autocomplete/index.d.ts +1 -0
  445. package/dist/primitives/autocomplete.d.ts +2 -0
  446. package/dist/primitives/autocomplete.js +2 -0
  447. package/dist/primitives/avatar.d.ts +7 -0
  448. package/dist/primitives/avatar.js +8 -0
  449. package/dist/primitives/button.d.ts +7 -0
  450. package/dist/primitives/button.js +8 -0
  451. package/dist/primitives/checkbox-group.d.ts +7 -0
  452. package/dist/primitives/checkbox-group.js +8 -0
  453. package/dist/primitives/checkbox.d.ts +7 -0
  454. package/dist/primitives/checkbox.js +8 -0
  455. package/dist/primitives/collapsible.d.ts +7 -0
  456. package/dist/primitives/collapsible.js +8 -0
  457. package/dist/primitives/combobox/combobox.d.ts +71 -0
  458. package/dist/primitives/combobox/combobox.js +66 -0
  459. package/dist/primitives/combobox/index.d.ts +1 -0
  460. package/dist/primitives/combobox.d.ts +2 -0
  461. package/dist/primitives/combobox.js +2 -0
  462. package/dist/primitives/context-menu.d.ts +7 -0
  463. package/dist/primitives/context-menu.js +8 -0
  464. package/dist/primitives/csp-provider.d.ts +1 -0
  465. package/dist/primitives/csp-provider.js +2 -0
  466. package/dist/primitives/dialog.d.ts +7 -0
  467. package/dist/primitives/dialog.js +8 -0
  468. package/dist/primitives/direction-provider.d.ts +1 -0
  469. package/dist/primitives/direction-provider.js +8 -0
  470. package/dist/primitives/drawer.d.ts +1 -0
  471. package/dist/primitives/drawer.js +2 -0
  472. package/dist/primitives/field.d.ts +7 -0
  473. package/dist/primitives/field.js +8 -0
  474. package/dist/primitives/fieldset.d.ts +7 -0
  475. package/dist/primitives/fieldset.js +8 -0
  476. package/dist/primitives/form.d.ts +7 -0
  477. package/dist/primitives/form.js +8 -0
  478. package/dist/primitives/index.d.ts +79 -0
  479. package/dist/primitives/index.js +113 -0
  480. package/dist/primitives/input.d.ts +7 -0
  481. package/dist/primitives/input.js +8 -0
  482. package/dist/primitives/menu.d.ts +7 -0
  483. package/dist/primitives/menu.js +8 -0
  484. package/dist/primitives/menubar.d.ts +7 -0
  485. package/dist/primitives/menubar.js +8 -0
  486. package/dist/primitives/meter/index.d.ts +1 -0
  487. package/dist/primitives/meter/meter.d.ts +56 -0
  488. package/dist/primitives/meter/meter.js +59 -0
  489. package/dist/primitives/meter.d.ts +2 -0
  490. package/dist/primitives/meter.js +2 -0
  491. package/dist/primitives/navigation-menu.d.ts +7 -0
  492. package/dist/primitives/navigation-menu.js +8 -0
  493. package/dist/primitives/number-field/context.d.ts +13 -0
  494. package/dist/primitives/number-field/context.js +36 -0
  495. package/dist/primitives/number-field/index.d.ts +2 -0
  496. package/dist/primitives/number-field/number-field.d.ts +90 -0
  497. package/dist/primitives/number-field/number-field.js +107 -0
  498. package/dist/primitives/number-field.d.ts +3 -0
  499. package/dist/primitives/number-field.js +2 -0
  500. package/dist/primitives/otp-field.d.ts +7 -0
  501. package/dist/primitives/otp-field.js +8 -0
  502. package/dist/primitives/popover.d.ts +7 -0
  503. package/dist/primitives/popover.js +8 -0
  504. package/dist/primitives/preview-card.d.ts +7 -0
  505. package/dist/primitives/preview-card.js +8 -0
  506. package/dist/primitives/progress/index.d.ts +1 -0
  507. package/dist/primitives/progress/progress.d.ts +56 -0
  508. package/dist/primitives/progress/progress.js +59 -0
  509. package/dist/primitives/progress.d.ts +2 -0
  510. package/dist/primitives/progress.js +2 -0
  511. package/dist/primitives/radio-group.d.ts +7 -0
  512. package/dist/primitives/radio-group.js +8 -0
  513. package/dist/primitives/radio.d.ts +7 -0
  514. package/dist/primitives/radio.js +8 -0
  515. package/dist/primitives/scroll-area.d.ts +7 -0
  516. package/dist/primitives/scroll-area.js +8 -0
  517. package/dist/primitives/select.d.ts +7 -0
  518. package/dist/primitives/select.js +8 -0
  519. package/dist/primitives/separator.d.ts +7 -0
  520. package/dist/primitives/separator.js +8 -0
  521. package/dist/primitives/slider/context.d.ts +12 -0
  522. package/dist/primitives/slider/context.js +18 -0
  523. package/dist/primitives/slider/index.d.ts +2 -0
  524. package/dist/primitives/slider/slider.d.ts +83 -0
  525. package/dist/primitives/slider/slider.js +99 -0
  526. package/dist/primitives/slider.d.ts +3 -0
  527. package/dist/primitives/slider.js +2 -0
  528. package/dist/primitives/switch.d.ts +1 -0
  529. package/dist/primitives/switch.js +2 -0
  530. package/dist/primitives/tabs.d.ts +7 -0
  531. package/dist/primitives/tabs.js +8 -0
  532. package/dist/primitives/toast/context.d.ts +11 -0
  533. package/dist/primitives/toast/context.js +18 -0
  534. package/dist/primitives/toast/index.d.ts +2 -0
  535. package/dist/primitives/toast/toast.d.ts +122 -0
  536. package/dist/primitives/toast/toast.js +133 -0
  537. package/dist/primitives/toast.d.ts +3 -0
  538. package/dist/primitives/toast.js +2 -0
  539. package/dist/primitives/toggle-group.d.ts +7 -0
  540. package/dist/primitives/toggle-group.js +8 -0
  541. package/dist/primitives/toggle.d.ts +7 -0
  542. package/dist/primitives/toggle.js +8 -0
  543. package/dist/primitives/toolbar.d.ts +7 -0
  544. package/dist/primitives/toolbar.js +8 -0
  545. package/dist/primitives/tooltip.d.ts +7 -0
  546. package/dist/primitives/tooltip.js +8 -0
  547. package/dist/props.d.ts +46 -0
  548. package/dist/props.js +46 -0
  549. package/dist/styles.css +11513 -0
  550. package/dist/tailwind/cn.d.ts +33 -0
  551. package/dist/tailwind/cn.js +42 -0
  552. package/dist/tailwind/index.d.ts +3 -0
  553. package/dist/tailwind/index.js +3 -0
  554. package/dist/tailwind/tv.d.ts +20 -0
  555. package/dist/tailwind/tv.js +11 -0
  556. package/dist/tailwind.css +485 -0
  557. package/dist/theme/react.d.ts +1 -0
  558. package/dist/theme/react.js +1 -0
  559. package/dist/theme.d.ts +1 -0
  560. package/dist/theme.js +1 -0
  561. package/dist/tokens/react.d.ts +1 -0
  562. package/dist/tokens/react.js +1 -0
  563. package/dist/tokens.d.ts +1 -0
  564. package/dist/tokens.js +1 -0
  565. package/package.json +121 -0
@@ -0,0 +1,69 @@
1
+ import { SeparatorOrientation } from "./separator.types.js";
2
+ import { SeparatorProps, SeparatorPropsArgs, separatorProps } from "./separator.props.js";
3
+ import { separator_d_exports } from "../../primitives/separator.js";
4
+ import { ReactElement } from "react";
5
+
6
+ //#region src/components/separator/separator.d.ts
7
+ /**
8
+ * A hairline divider, built on Base UI's `Separator`. Semantic by default — Base UI gives it the
9
+ * `separator` role with the orientation, so screen readers announce the division without any extra
10
+ * wiring. A horizontal separator spans the inline flow; a vertical one divides items in a row.
11
+ *
12
+ * Pass `decorative` when the line is purely visual and the regions it splits already read as distinct
13
+ * to assistive tech (dividers between groups in a toolbar, or between landmarked sections): the element
14
+ * drops to `role="none"` so screen readers skip it. Leave it off (the default) when the line itself is
15
+ * what conveys the structure.
16
+ *
17
+ * Styling is precompiled in `separator.css`, keyed off the `data-slot="noctis-separator"` anchor plus
18
+ * the `data-orientation` Base UI stamps; the line's colour, thickness, and inset flow through the
19
+ * `--_separator-*` internals. Decorative or not, the paint is identical — only the role differs. To
20
+ * draw the same hairline on a non-`<Separator>` element, spread {@link Separator.props} onto it instead.
21
+ *
22
+ * @see {@link Separator.Props}
23
+ */
24
+ declare function SeparatorImpl({
25
+ orientation,
26
+ decorative,
27
+ className,
28
+ ...props
29
+ }: Separator.Props): ReactElement;
30
+ /**
31
+ * The hairline divider. The component value carries the D12 `props()` escape hatch via `Object.assign`:
32
+ * spread `Separator.props({ orientation })` onto an element a `<Separator>` can't render to draw the
33
+ * same line. It returns a spreadable `{ "data-slot": "noctis-separator", ...dataAttrs }` bag the
34
+ * precompiled `separator.css` keys off.
35
+ */
36
+ declare const Separator: typeof SeparatorImpl & {
37
+ props: typeof separatorProps;
38
+ };
39
+ /**
40
+ * Per-part prop and option types. Merges with the `Separator` function above, so `Separator` is the
41
+ * component value while `Separator.Props` is its prop type and `Separator.props` is the escape-hatch
42
+ * helper.
43
+ */
44
+ declare namespace Separator {
45
+ type Props = Omit<separator_d_exports.Separator.Props, "className" | "orientation"> & {
46
+ /**
47
+ * The line's orientation. Horizontal spans the inline flow; vertical divides items in a row.
48
+ * @default "horizontal"
49
+ */
50
+ orientation?: SeparatorOrientation;
51
+ /**
52
+ * Treat the line as purely visual. When `true`, the element renders with `role="none"` so
53
+ * assistive tech skips it — for dividers whose regions are already distinct (toolbar groups,
54
+ * landmarked sections). When `false`, it keeps the announced `separator` role. The paint is
55
+ * identical either way; only the role changes.
56
+ * @default false
57
+ */
58
+ decorative?: boolean; /** Merged onto the rendered element's class list. */
59
+ className?: string;
60
+ };
61
+ /** The line's orientation. */
62
+ type Orientation = SeparatorOrientation;
63
+ /** Argument to the `Separator.props(...)` escape-hatch helper. */
64
+ type PropsArgs = SeparatorPropsArgs;
65
+ /** The spreadable data-attribute prop bag `Separator.props()` returns (D12). */
66
+ type PartProps = SeparatorProps;
67
+ }
68
+ //#endregion
69
+ export { Separator };
@@ -0,0 +1,44 @@
1
+ "use client";
2
+ import { separator_exports } from "../../primitives/separator.js";
3
+ import { SEPARATOR_SLOTS } from "./separator.slots.js";
4
+ import { separatorProps } from "./separator.props.js";
5
+ import { jsx } from "react/jsx-runtime";
6
+ //#region src/components/separator/separator.tsx
7
+ /**
8
+ * A hairline divider, built on Base UI's `Separator`. Semantic by default — Base UI gives it the
9
+ * `separator` role with the orientation, so screen readers announce the division without any extra
10
+ * wiring. A horizontal separator spans the inline flow; a vertical one divides items in a row.
11
+ *
12
+ * Pass `decorative` when the line is purely visual and the regions it splits already read as distinct
13
+ * to assistive tech (dividers between groups in a toolbar, or between landmarked sections): the element
14
+ * drops to `role="none"` so screen readers skip it. Leave it off (the default) when the line itself is
15
+ * what conveys the structure.
16
+ *
17
+ * Styling is precompiled in `separator.css`, keyed off the `data-slot="noctis-separator"` anchor plus
18
+ * the `data-orientation` Base UI stamps; the line's colour, thickness, and inset flow through the
19
+ * `--_separator-*` internals. Decorative or not, the paint is identical — only the role differs. To
20
+ * draw the same hairline on a non-`<Separator>` element, spread {@link Separator.props} onto it instead.
21
+ *
22
+ * @see {@link Separator.Props}
23
+ */
24
+ function SeparatorImpl({ orientation = "horizontal", decorative = false, className, ...props }) {
25
+ return /* @__PURE__ */ jsx(separator_exports.Separator, {
26
+ "data-slot": SEPARATOR_SLOTS.root,
27
+ orientation,
28
+ className,
29
+ ...props,
30
+ ...decorative ? {
31
+ role: "none",
32
+ "aria-orientation": void 0
33
+ } : {}
34
+ });
35
+ }
36
+ /**
37
+ * The hairline divider. The component value carries the D12 `props()` escape hatch via `Object.assign`:
38
+ * spread `Separator.props({ orientation })` onto an element a `<Separator>` can't render to draw the
39
+ * same line. It returns a spreadable `{ "data-slot": "noctis-separator", ...dataAttrs }` bag the
40
+ * precompiled `separator.css` keys off.
41
+ */
42
+ const Separator = Object.assign(SeparatorImpl, { props: separatorProps });
43
+ //#endregion
44
+ export { Separator };
@@ -0,0 +1,30 @@
1
+ import { SEPARATOR_SLOTS } from "./separator.slots.js";
2
+ import { SeparatorOrientation } from "./separator.types.js";
3
+
4
+ //#region src/components/separator/separator.props.d.ts
5
+ /** A spreadable data-attribute prop bag — the shape `Separator.props()` returns. */
6
+ type SeparatorProps = {
7
+ /** The catalog slot `separator.css` keys every rule off. */"data-slot": typeof SEPARATOR_SLOTS.root; /** The orientation axis the cross-axis size keys off. */
8
+ "data-orientation": SeparatorOrientation; /** Forwarded verbatim — styling is attribute-driven, so this is an optional consumer passthrough. */
9
+ className?: string;
10
+ };
11
+ /** Argument to `Separator.props(...)` — the orientation the `separator.css` rules key the line off. */
12
+ interface SeparatorPropsArgs {
13
+ /**
14
+ * The line's orientation.
15
+ * @default "horizontal"
16
+ */
17
+ orientation?: SeparatorOrientation;
18
+ /** Forwarded verbatim onto the returned prop bag. */
19
+ className?: string;
20
+ }
21
+ /**
22
+ * Separator prop bag: the `data-slot` anchor plus the `data-orientation` axis the `separator.css` rules
23
+ * read. Spread it onto a non-`<Separator>` element to draw the same hairline.
24
+ */
25
+ declare function separatorProps({
26
+ orientation,
27
+ className
28
+ }?: SeparatorPropsArgs): SeparatorProps;
29
+ //#endregion
30
+ export { SeparatorProps, SeparatorPropsArgs, separatorProps };
@@ -0,0 +1,30 @@
1
+ import { SEPARATOR_SLOTS } from "./separator.slots.js";
2
+ //#region src/components/separator/separator.props.ts
3
+ /**
4
+ * The D12 props helper for Separator — the data-attribute-native styling hook.
5
+ *
6
+ * `props(...)` returns a **spreadable props object** keyed off the `data-slot` anchor the precompiled
7
+ * `separator.css` reads, plus the `data-orientation` axis the cross-axis size keys off. Spread it onto
8
+ * any element to style it as a separator line:
9
+ *
10
+ * <div role="separator" {...Separator.props({ orientation: "vertical" })} />
11
+ * // → <div data-slot="noctis-separator" data-orientation="vertical">
12
+ *
13
+ * The bag carries no className; an optional `className` passthrough is accepted and forwarded verbatim.
14
+ */
15
+ /**
16
+ * Separator prop bag: the `data-slot` anchor plus the `data-orientation` axis the `separator.css` rules
17
+ * read. Spread it onto a non-`<Separator>` element to draw the same hairline.
18
+ */
19
+ function separatorProps({ orientation = "horizontal", className } = {}) {
20
+ const bag = {
21
+ "data-slot": SEPARATOR_SLOTS.root,
22
+ "data-orientation": orientation
23
+ };
24
+ return className === void 0 ? bag : {
25
+ ...bag,
26
+ className
27
+ };
28
+ }
29
+ //#endregion
30
+ export { separatorProps };
@@ -0,0 +1,22 @@
1
+ //#region src/components/separator/separator.slots.d.ts
2
+ /**
3
+ * The slot vocabulary the {@link Separator} stamps as its `data-slot`. The authored source the
4
+ * orchestration file reads from, kebab-cased under the `noctis-` prefix; SLOTS.md still generates from
5
+ * the token-graph declaration.
6
+ */
7
+ declare const SEPARATOR_SLOTS: {
8
+ readonly root: "noctis-separator";
9
+ };
10
+ /**
11
+ * The data attributes the {@link Separator} (and the Base UI separator it renders) expose for styling
12
+ * and testing. Each member's value is the attribute name and its JSDoc is the description; the docs API
13
+ * reference reads this enum directly, so the documented attributes can't drift from the component.
14
+ */
15
+ declare enum SeparatorDataAttributes {
16
+ /** The catalog slot the precompiled `separator.css` keys every rule off. */
17
+ slot = "data-slot",
18
+ /** The line's orientation — `horizontal` (default) | `vertical`; Base UI stamps it, and the CSS keys the cross-axis size off it. */
19
+ orientation = "data-orientation"
20
+ }
21
+ //#endregion
22
+ export { SEPARATOR_SLOTS, SeparatorDataAttributes };
@@ -0,0 +1,21 @@
1
+ //#region src/components/separator/separator.slots.ts
2
+ /**
3
+ * The slot vocabulary the {@link Separator} stamps as its `data-slot`. The authored source the
4
+ * orchestration file reads from, kebab-cased under the `noctis-` prefix; SLOTS.md still generates from
5
+ * the token-graph declaration.
6
+ */
7
+ const SEPARATOR_SLOTS = { root: "noctis-separator" };
8
+ /**
9
+ * The data attributes the {@link Separator} (and the Base UI separator it renders) expose for styling
10
+ * and testing. Each member's value is the attribute name and its JSDoc is the description; the docs API
11
+ * reference reads this enum directly, so the documented attributes can't drift from the component.
12
+ */
13
+ let SeparatorDataAttributes = /* @__PURE__ */ function(SeparatorDataAttributes) {
14
+ /** The catalog slot the precompiled `separator.css` keys every rule off. */
15
+ SeparatorDataAttributes["slot"] = "data-slot";
16
+ /** The line's orientation — `horizontal` (default) | `vertical`; Base UI stamps it, and the CSS keys the cross-axis size off it. */
17
+ SeparatorDataAttributes["orientation"] = "data-orientation";
18
+ return SeparatorDataAttributes;
19
+ }({});
20
+ //#endregion
21
+ export { SEPARATOR_SLOTS, SeparatorDataAttributes };
@@ -0,0 +1,5 @@
1
+ //#region src/components/separator/separator.types.d.ts
2
+ /** The line's orientation — a horizontal rule across the flow, or a vertical divider between items. */
3
+ type SeparatorOrientation = "horizontal" | "vertical";
4
+ //#endregion
5
+ export { SeparatorOrientation };
@@ -0,0 +1,3 @@
1
+ import { SheetSide, SheetSize } from "./sheet.types.js";
2
+ import { Sheet } from "./sheet.js";
3
+ import { EMPTY_SHEET_STACK, SheetStack, SheetStackEntry, SheetStackEntryInput, SheetStackManager, sheetStackReducer, useSheetStack, useSheetStackContext } from "./sheet-stack.js";
@@ -0,0 +1,106 @@
1
+ import { Sheet } from "./sheet.js";
2
+ import { ReactElement, ReactNode } from "react";
3
+
4
+ //#region src/components/sheet/sheet-stack.d.ts
5
+ /** A mounted layer in the stack. Carries its own content and panel shape, plus its visibility. */
6
+ interface SheetStackEntry {
7
+ /** Stable identity for the layer — its React key and the handle `close`/`remove` take. */
8
+ key: string;
9
+ /** What the panel renders. Compose `Sheet.Header`/`Body`/`Footer` and a `Sheet.Close` here. */
10
+ content: ReactNode;
11
+ /** Which edge this layer docks to. Defaults to `end`. */
12
+ side?: Sheet.Side;
13
+ /** This layer's cross-axis extent. Defaults to `md`. */
14
+ size?: Sheet.Size;
15
+ /** Whether the layer is currently shown. Stays mounted while `false` so it can animate out. */
16
+ open: boolean;
17
+ }
18
+ /** A layer to add — like {@link SheetStackEntry} but visibility and key are managed for you. */
19
+ interface SheetStackEntryInput {
20
+ /** Optional stable key. One is generated when omitted. Reusing a key replaces that layer. */
21
+ key?: string;
22
+ content: ReactNode;
23
+ side?: Sheet.Side;
24
+ size?: Sheet.Size;
25
+ }
26
+ /**
27
+ * Imperative control over a stack of layers. The state lives here; the UI is dependency-injected via
28
+ * `<SheetStack manager={…}>`. Sibling and nested components reach the same manager through
29
+ * {@link useSheetStackContext}, so a button anywhere under the provider can push or pop without prop
30
+ * threading.
31
+ */
32
+ interface SheetStackManager {
33
+ /** Every mounted layer, back to front — including any currently animating out. */
34
+ entries: readonly SheetStackEntry[];
35
+ /** How many layers are currently shown. */
36
+ depth: number;
37
+ /** Push a new layer on top. Returns its key. */
38
+ push: (entry: SheetStackEntryInput) => string;
39
+ /** Hide the top-most layer (and let it animate out). */
40
+ pop: () => void;
41
+ /** Hide a layer and everything stacked above it. */
42
+ close: (key: string) => void;
43
+ /** Swap the whole stack for a new set of layers. */
44
+ replace: (entries: SheetStackEntryInput[]) => void;
45
+ /** Hide every layer. */
46
+ reset: () => void;
47
+ /** Unmount a layer immediately, skipping its exit animation. */
48
+ remove: (key: string) => void;
49
+ }
50
+ type Action = {
51
+ type: "push";
52
+ entry: SheetStackEntry;
53
+ } | {
54
+ type: "pop";
55
+ } | {
56
+ type: "close";
57
+ key: string;
58
+ } | {
59
+ type: "replace";
60
+ entries: SheetStackEntry[];
61
+ } | {
62
+ type: "reset";
63
+ } | {
64
+ type: "remove";
65
+ key: string;
66
+ };
67
+ /** The empty stack. */
68
+ declare const EMPTY_SHEET_STACK: readonly SheetStackEntry[];
69
+ /**
70
+ * Pure stack transition. Exported so the state machine can be exercised directly: `push` de-duplicates
71
+ * by key (re-adding moves the layer to the top), `pop`/`close` only hide layers so they can animate
72
+ * out, and `remove` is the hard unmount that follows once the exit finishes.
73
+ */
74
+ declare function sheetStackReducer(state: SheetStackEntry[], action: Action): SheetStackEntry[];
75
+ /**
76
+ * Create a stack manager. Hold one of these at the top of a flow, render it with `<SheetStack>`, and
77
+ * drive it with `push`/`pop`/`close`. Each layer is a real nested Base UI dialog, so focus trapping,
78
+ * scroll-lock, and `Escape` ordering across the stack are handled for you.
79
+ */
80
+ declare function useSheetStack(): SheetStackManager;
81
+ /**
82
+ * Read the stack manager from context. Use it inside layer content (or anywhere under `<SheetStack>`)
83
+ * to push a deeper layer, pop back, or close the stack without threading the manager through props.
84
+ */
85
+ declare function useSheetStackContext(): SheetStackManager;
86
+ /**
87
+ * Renders a {@link SheetStackManager}'s layers as a stack of nested sheets and shares the manager
88
+ * through context. State is owned by `useSheetStack` and injected here, so the same layer content can
89
+ * be driven by any manager and read by any descendant.
90
+ */
91
+ declare function SheetStack({
92
+ manager,
93
+ children
94
+ }: SheetStack.Props): ReactElement;
95
+ /**
96
+ * The component's prop type. Types-only — it emits no runtime code and merges with the `SheetStack`
97
+ * function above, so `SheetStack` is the component value while `SheetStack.Props` is its prop type.
98
+ */
99
+ declare namespace SheetStack {
100
+ type Props = {
101
+ /** The manager from {@link useSheetStack}. */manager: SheetStackManager; /** Extra nodes rendered under the provider — e.g. triggers that call `manager` via context. */
102
+ children?: ReactNode;
103
+ };
104
+ }
105
+ //#endregion
106
+ export { EMPTY_SHEET_STACK, SheetStack, SheetStackEntry, SheetStackEntryInput, SheetStackManager, sheetStackReducer, useSheetStack, useSheetStackContext };
@@ -0,0 +1,146 @@
1
+ "use client";
2
+ import { Sheet } from "./sheet.js";
3
+ import { createContext, use, useMemo, useReducer, useRef } from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/components/sheet/sheet-stack.tsx
6
+ /** The empty stack. */
7
+ const EMPTY_SHEET_STACK = [];
8
+ /** Index of the top-most shown layer, or `-1` when none is shown. */
9
+ function topVisibleIndex(state) {
10
+ for (let i = state.length - 1; i >= 0; i -= 1) if (state[i]?.open) return i;
11
+ return -1;
12
+ }
13
+ /**
14
+ * Pure stack transition. Exported so the state machine can be exercised directly: `push` de-duplicates
15
+ * by key (re-adding moves the layer to the top), `pop`/`close` only hide layers so they can animate
16
+ * out, and `remove` is the hard unmount that follows once the exit finishes.
17
+ */
18
+ function sheetStackReducer(state, action) {
19
+ switch (action.type) {
20
+ case "push": return [...state.filter((entry) => entry.key !== action.entry.key), action.entry];
21
+ case "pop": {
22
+ const index = topVisibleIndex(state);
23
+ if (index === -1) return state;
24
+ return state.map((entry, i) => i === index ? {
25
+ ...entry,
26
+ open: false
27
+ } : entry);
28
+ }
29
+ case "close": {
30
+ const index = state.findIndex((entry) => entry.key === action.key);
31
+ if (index === -1) return state;
32
+ return state.map((entry, i) => i >= index ? {
33
+ ...entry,
34
+ open: false
35
+ } : entry);
36
+ }
37
+ case "replace": return action.entries;
38
+ case "reset": return state.map((entry) => ({
39
+ ...entry,
40
+ open: false
41
+ }));
42
+ case "remove": return state.filter((entry) => entry.key !== action.key);
43
+ default: return state;
44
+ }
45
+ }
46
+ /**
47
+ * Create a stack manager. Hold one of these at the top of a flow, render it with `<SheetStack>`, and
48
+ * drive it with `push`/`pop`/`close`. Each layer is a real nested Base UI dialog, so focus trapping,
49
+ * scroll-lock, and `Escape` ordering across the stack are handled for you.
50
+ */
51
+ function useSheetStack() {
52
+ const [entries, dispatch] = useReducer(sheetStackReducer, EMPTY_SHEET_STACK);
53
+ const counter = useRef(0);
54
+ return useMemo(() => {
55
+ return {
56
+ entries,
57
+ depth: entries.reduce((count, entry) => entry.open ? count + 1 : count, 0),
58
+ push(input) {
59
+ counter.current += 1;
60
+ const key = input.key ?? `sheet-stack-${counter.current}`;
61
+ dispatch({
62
+ type: "push",
63
+ entry: {
64
+ ...input,
65
+ key,
66
+ open: true
67
+ }
68
+ });
69
+ return key;
70
+ },
71
+ pop() {
72
+ dispatch({ type: "pop" });
73
+ },
74
+ close(key) {
75
+ dispatch({
76
+ type: "close",
77
+ key
78
+ });
79
+ },
80
+ replace(inputs) {
81
+ counter.current += 1;
82
+ const base = counter.current;
83
+ dispatch({
84
+ type: "replace",
85
+ entries: inputs.map((input, i) => ({
86
+ ...input,
87
+ key: input.key ?? `sheet-stack-${base}-${i}`,
88
+ open: true
89
+ }))
90
+ });
91
+ },
92
+ reset() {
93
+ dispatch({ type: "reset" });
94
+ },
95
+ remove(key) {
96
+ dispatch({
97
+ type: "remove",
98
+ key
99
+ });
100
+ }
101
+ };
102
+ }, [entries]);
103
+ }
104
+ const SheetStackContext = createContext(null);
105
+ /**
106
+ * Read the stack manager from context. Use it inside layer content (or anywhere under `<SheetStack>`)
107
+ * to push a deeper layer, pop back, or close the stack without threading the manager through props.
108
+ */
109
+ function useSheetStackContext() {
110
+ const manager = use(SheetStackContext);
111
+ if (!manager) throw new Error("useSheetStackContext must be used within <SheetStack>.");
112
+ return manager;
113
+ }
114
+ /** Render layers from `index` down, each nested inside the one before it so the stack reads as depth. */
115
+ function renderLayer(entries, index, manager) {
116
+ if (index >= entries.length) return null;
117
+ const entry = entries[index];
118
+ if (!entry) return null;
119
+ return /* @__PURE__ */ jsx(Sheet.Root, {
120
+ open: entry.open,
121
+ onOpenChange: (open) => {
122
+ if (!open) manager.close(entry.key);
123
+ },
124
+ onOpenChangeComplete: (open) => {
125
+ if (!open) manager.remove(entry.key);
126
+ },
127
+ children: /* @__PURE__ */ jsxs(Sheet.Content, {
128
+ side: entry.side,
129
+ size: entry.size,
130
+ children: [entry.content, renderLayer(entries, index + 1, manager)]
131
+ })
132
+ }, entry.key);
133
+ }
134
+ /**
135
+ * Renders a {@link SheetStackManager}'s layers as a stack of nested sheets and shares the manager
136
+ * through context. State is owned by `useSheetStack` and injected here, so the same layer content can
137
+ * be driven by any manager and read by any descendant.
138
+ */
139
+ function SheetStack({ manager, children }) {
140
+ return /* @__PURE__ */ jsxs(SheetStackContext, {
141
+ value: manager,
142
+ children: [renderLayer(manager.entries, 0, manager), children]
143
+ });
144
+ }
145
+ //#endregion
146
+ export { EMPTY_SHEET_STACK, SheetStack, sheetStackReducer, useSheetStack, useSheetStackContext };