@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,355 @@
1
+ import { IconGlyph } from "../../icons/glyphs.js";
2
+ import { MenuItemPropsArgs, MenuPartProps, checkboxItemProps, contentProps, groupLabelProps, groupProps, itemProps, linkItemProps, radioGroupProps, radioItemProps, separatorProps, shortcutProps, submenuTriggerProps, triggerProps } from "./menu.props.js";
3
+ import { menu_d_exports } from "../../primitives/menu.js";
4
+ import { ReactElement, ReactNode } from "react";
5
+
6
+ //#region src/components/menu/menu.d.ts
7
+ /**
8
+ * Owns the open state and shares it with the trigger and content. Wraps Base UI's Menu. Modal by
9
+ * default — outside content is inert and page scroll is locked while open; set `modal={false}` for a
10
+ * lighter popup that leaves the page interactive.
11
+ */
12
+ declare function MenuRoot(props: Menu.Root.Props): ReactElement;
13
+ /**
14
+ * The control that opens the menu. Style it yourself, or compose a `Button` through `render` — e.g.
15
+ * `<Menu.Trigger render={<Button iconOnly aria-label="More" startIcon={ChevronDownIcon} />} />`.
16
+ */
17
+ declare function MenuTrigger(props: Menu.Trigger.Props): ReactElement;
18
+ /**
19
+ * The floating menu surface — portaled, elevated, and animated — holding the items, groups, and
20
+ * separators. A root menu opens below the trigger, aligned to its start; inside a `SubmenuRoot` it
21
+ * opens on the inline-end side instead, flipping to inline-start at the viewport edge. Caps at the
22
+ * available viewport height and scrolls its list, keeping the keyboard highlight in view.
23
+ */
24
+ declare function MenuContent({
25
+ side,
26
+ align,
27
+ sideOffset,
28
+ alignOffset,
29
+ collisionPadding,
30
+ className,
31
+ style,
32
+ children,
33
+ ...props
34
+ }: Menu.Content.Props): ReactElement;
35
+ /** A labelled section of related items. Put a `GroupLabel` inside to name it for screen readers. */
36
+ declare function MenuGroup({
37
+ className,
38
+ ...props
39
+ }: Menu.Group.Props): ReactElement;
40
+ /** The group's muted, non-interactive heading — announced as the group's accessible name. */
41
+ declare function MenuGroupLabel({
42
+ className,
43
+ ...props
44
+ }: Menu.GroupLabel.Props): ReactElement;
45
+ /**
46
+ * A menu action. Optional leading `icon`; `inset` reserves the icon column on icon-less rows so
47
+ * labels align with iconed siblings; `tone="danger"` marks a destructive action — red label and a
48
+ * danger-tinted highlight. Trailing content (a `Menu.Shortcut`, secondary text) flows after the label.
49
+ */
50
+ declare function MenuItem({
51
+ icon,
52
+ inset,
53
+ tone,
54
+ className,
55
+ children,
56
+ ...props
57
+ }: Menu.Item.Props): ReactElement;
58
+ /**
59
+ * A navigable menu row that renders an `<a>` — the canonical "Open in new tab" / "Copy link address"
60
+ * action. Same row recipe as `Item` (leading `icon`, `inset` alignment, `tone="danger"`); pass anchor
61
+ * props (`href`, `target`, `rel`) through. Navigating is a terminal action, so it closes the menu on
62
+ * click by default (set `closeOnClick={false}` to keep it open).
63
+ */
64
+ declare function MenuLinkItem({
65
+ icon,
66
+ inset,
67
+ tone,
68
+ closeOnClick,
69
+ className,
70
+ children,
71
+ ...props
72
+ }: Menu.LinkItem.Props): ReactElement;
73
+ /**
74
+ * A menu item that toggles a setting. The leading slot is a check that animates in while ticked,
75
+ * holding the same column as item icons; toggling does not close the menu (`closeOnClick` stays
76
+ * Base UI's `false`).
77
+ */
78
+ declare function MenuCheckboxItem({
79
+ className,
80
+ children,
81
+ ...props
82
+ }: Menu.CheckboxItem.Props): ReactElement;
83
+ /** Groups `RadioItem`s around one selected `value` (controlled or via `defaultValue`). */
84
+ declare function MenuRadioGroup({
85
+ className,
86
+ ...props
87
+ }: Menu.RadioGroup.Props): ReactElement;
88
+ /**
89
+ * One choice in a `RadioGroup`. The leading slot is a dot that marks the selected item, holding the
90
+ * same column as item icons; selecting does not close the menu (`closeOnClick` stays Base UI's
91
+ * `false`).
92
+ */
93
+ declare function MenuRadioItem({
94
+ className,
95
+ children,
96
+ ...props
97
+ }: Menu.RadioItem.Props): ReactElement;
98
+ /** Owns a nested submenu's open state. Renders no element — wrap a `SubmenuTrigger` and a `Content`. */
99
+ declare function MenuSubmenuRoot(props: Menu.SubmenuRoot.Props): ReactElement;
100
+ /**
101
+ * An item-shaped row that opens a nested submenu — on hover (after a short intent delay, with a
102
+ * grace period on leave so diagonal pointer travel into the submenu doesn't snap it shut), on click,
103
+ * and from the keyboard (Right arrow / Enter; Left arrow in RTL). The trailing chevron mirrors under
104
+ * RTL, and the row stays lit while its submenu is open.
105
+ */
106
+ declare function MenuSubmenuTrigger({
107
+ icon,
108
+ inset,
109
+ openOnHover,
110
+ delay,
111
+ closeDelay,
112
+ className,
113
+ children,
114
+ ...props
115
+ }: Menu.SubmenuTrigger.Props): ReactElement;
116
+ /**
117
+ * A trailing, muted keyboard-shortcut hint composing the `Kbd` primitive — pass `keys` in `Kbd`
118
+ * syntax (`"Mod+K"`, `"G D"`) or custom children. Decorative: hidden from assistive tech so the
119
+ * item's action name stays clean (and typeahead never matches the shortcut); when the binding is
120
+ * live, set `aria-keyshortcuts` on the item to expose it.
121
+ */
122
+ declare function MenuShortcut({
123
+ keys,
124
+ className,
125
+ children
126
+ }: Menu.Shortcut.Props): ReactElement;
127
+ /** A hairline between groups of menu items. */
128
+ declare function MenuSeparator({
129
+ className,
130
+ ...props
131
+ }: Menu.Separator.Props): ReactElement;
132
+ /**
133
+ * A dropdown menu: a `Trigger` opens a floating list of actions. Built on Base UI's Menu for keyboard
134
+ * navigation (arrows, Home/End, typeahead), focus management, and `Escape`/outside-click dismissal,
135
+ * and decoupled from any particular trigger — pass your own (commonly a `Button` via `render`).
136
+ *
137
+ * Compose from parts: `Menu.Root` owns the open state, `Menu.Trigger` opens it, and `Menu.Content`
138
+ * holds the rows — `Item`s, `CheckboxItem`s, `RadioGroup`/`RadioItem`s, `Group`s with a `GroupLabel`,
139
+ * and `Separator`s. Nest a `SubmenuRoot` (wrapping a `SubmenuTrigger` and its own `Content`) for
140
+ * submenus, and give items a trailing `Shortcut` for keyboard hints. Noctis menus are flush against
141
+ * their anchor — there is no arrow/caret part (Base UI offers one; this system doesn't use it).
142
+ *
143
+ * Styling is precompiled in `menu.css`, keyed off each part's prefixed `data-slot`. Each part also
144
+ * carries the D12 `props()` escape hatch via `Object.assign` (e.g. `Menu.Item.props({ tone })`),
145
+ * returning a spreadable `{ "data-slot": "noctis-menu-<part>", ...dataAttrs }` bag for a foreign
146
+ * element a `<Menu.*>` can't wrap.
147
+ *
148
+ * The runtime compound is a plain object (kept tree-shakeable); per-part prop and state types are
149
+ * exposed through the matching `Menu` namespace — e.g. `Menu.Item.Props`.
150
+ */
151
+ declare const Menu: {
152
+ Root: typeof MenuRoot;
153
+ Trigger: typeof MenuTrigger & {
154
+ props: typeof triggerProps;
155
+ };
156
+ Content: typeof MenuContent & {
157
+ props: typeof contentProps;
158
+ };
159
+ Group: typeof MenuGroup & {
160
+ props: typeof groupProps;
161
+ };
162
+ GroupLabel: typeof MenuGroupLabel & {
163
+ props: typeof groupLabelProps;
164
+ };
165
+ Item: typeof MenuItem & {
166
+ props: typeof itemProps;
167
+ };
168
+ LinkItem: typeof MenuLinkItem & {
169
+ props: typeof linkItemProps;
170
+ };
171
+ CheckboxItem: typeof MenuCheckboxItem & {
172
+ props: typeof checkboxItemProps;
173
+ };
174
+ RadioGroup: typeof MenuRadioGroup & {
175
+ props: typeof radioGroupProps;
176
+ };
177
+ RadioItem: typeof MenuRadioItem & {
178
+ props: typeof radioItemProps;
179
+ };
180
+ SubmenuRoot: typeof MenuSubmenuRoot;
181
+ SubmenuTrigger: typeof MenuSubmenuTrigger & {
182
+ props: typeof submenuTriggerProps;
183
+ };
184
+ Shortcut: typeof MenuShortcut & {
185
+ props: typeof shortcutProps;
186
+ };
187
+ Separator: typeof MenuSeparator & {
188
+ props: typeof separatorProps;
189
+ };
190
+ };
191
+ /**
192
+ * Per-part prop and state types, mirroring Base UI's `Component.Part.Props` convention. Types-only —
193
+ * it emits no runtime code and merges with the `Menu` object above, so `Menu.Item` is the component
194
+ * value while `Menu.Item.Props` is its prop type.
195
+ */
196
+ declare namespace Menu {
197
+ /** The spreadable data-attribute prop bag every `Menu.*.props()` returns (D12). */
198
+ type PartProps = MenuPartProps;
199
+ namespace Root {
200
+ type Props = menu_d_exports.Menu.Root.Props;
201
+ type State = menu_d_exports.Menu.Root.State;
202
+ }
203
+ namespace Trigger {
204
+ type Props = menu_d_exports.Menu.Trigger.Props;
205
+ type State = menu_d_exports.Menu.Trigger.State;
206
+ }
207
+ namespace Content {
208
+ type Props = menu_d_exports.Menu.Popup.Props & {
209
+ /**
210
+ * Which side of the anchor to open on. Inside a `SubmenuRoot` the default becomes
211
+ * `"inline-end"` — beside the trigger row, flipping to `"inline-start"` at the
212
+ * viewport edge.
213
+ * @default "bottom"
214
+ */
215
+ side?: menu_d_exports.Menu.Positioner.Props["side"];
216
+ /**
217
+ * Alignment along that side.
218
+ * @default "start"
219
+ */
220
+ align?: menu_d_exports.Menu.Positioner.Props["align"];
221
+ /**
222
+ * Gap from the anchor, in px. Inside a `SubmenuRoot` it defaults to `0`, flush with
223
+ * the parent menu.
224
+ * @default 6
225
+ */
226
+ sideOffset?: number;
227
+ /**
228
+ * Shift along the alignment axis, in px. Inside a `SubmenuRoot` it defaults to `-4`,
229
+ * lining the submenu's first row up with its trigger.
230
+ * @default 0
231
+ */
232
+ alignOffset?: number;
233
+ /**
234
+ * Minimum space kept from the viewport edge when avoiding collisions, in px.
235
+ * @default 8
236
+ */
237
+ collisionPadding?: menu_d_exports.Menu.Positioner.Props["collisionPadding"];
238
+ };
239
+ }
240
+ namespace Group {
241
+ type Props = menu_d_exports.Menu.Group.Props;
242
+ type State = menu_d_exports.Menu.Group.State;
243
+ }
244
+ namespace GroupLabel {
245
+ type Props = menu_d_exports.Menu.GroupLabel.Props;
246
+ type State = menu_d_exports.Menu.GroupLabel.State;
247
+ }
248
+ namespace Item {
249
+ type Props = menu_d_exports.Menu.Item.Props & {
250
+ /** Optional leading glyph. */icon?: IconGlyph;
251
+ /**
252
+ * Reserve the leading icon column on a row without a glyph, so its label aligns with
253
+ * iconed siblings.
254
+ * @default false
255
+ */
256
+ inset?: boolean;
257
+ /**
258
+ * Visual intent. `danger` marks a destructive action — red label and a danger-tinted
259
+ * highlight.
260
+ * @default "default"
261
+ */
262
+ tone?: "default" | "danger";
263
+ };
264
+ type State = menu_d_exports.Menu.Item.State;
265
+ /** Argument to the `Menu.Item.props(...)` escape-hatch helper. */
266
+ type PropsArgs = MenuItemPropsArgs;
267
+ }
268
+ namespace LinkItem {
269
+ type Props = menu_d_exports.Menu.LinkItem.Props & {
270
+ /** Optional leading glyph. */icon?: IconGlyph;
271
+ /**
272
+ * Reserve the leading icon column on a row without a glyph, so its label aligns with
273
+ * iconed siblings.
274
+ * @default false
275
+ */
276
+ inset?: boolean;
277
+ /**
278
+ * Visual intent. `danger` marks a destructive link — red label and a danger-tinted
279
+ * highlight.
280
+ * @default "default"
281
+ */
282
+ tone?: "default" | "danger";
283
+ /**
284
+ * Close the menu when the link is clicked. Navigating is a terminal action, so this
285
+ * defaults to `true` (unlike Base UI's `false`).
286
+ * @default true
287
+ */
288
+ closeOnClick?: boolean;
289
+ };
290
+ type State = menu_d_exports.Menu.LinkItem.State;
291
+ /** Argument to the `Menu.LinkItem.props(...)` escape-hatch helper. */
292
+ type PropsArgs = MenuItemPropsArgs;
293
+ }
294
+ namespace CheckboxItem {
295
+ type Props = menu_d_exports.Menu.CheckboxItem.Props;
296
+ type State = menu_d_exports.Menu.CheckboxItem.State;
297
+ }
298
+ namespace RadioGroup {
299
+ type Props = menu_d_exports.Menu.RadioGroup.Props;
300
+ type State = menu_d_exports.Menu.RadioGroup.State;
301
+ }
302
+ namespace RadioItem {
303
+ type Props = menu_d_exports.Menu.RadioItem.Props;
304
+ type State = menu_d_exports.Menu.RadioItem.State;
305
+ }
306
+ namespace SubmenuRoot {
307
+ type Props = menu_d_exports.Menu.SubmenuRoot.Props;
308
+ type State = menu_d_exports.Menu.SubmenuRoot.State;
309
+ }
310
+ namespace SubmenuTrigger {
311
+ type Props = Omit<menu_d_exports.Menu.SubmenuTrigger.Props, "openOnHover" | "delay" | "closeDelay"> & {
312
+ /** Optional leading glyph. */icon?: IconGlyph;
313
+ /**
314
+ * Reserve the leading icon column on a row without a glyph, so its label aligns with
315
+ * iconed siblings.
316
+ * @default false
317
+ */
318
+ inset?: boolean;
319
+ /**
320
+ * Also open the submenu when the trigger is hovered.
321
+ * @default true
322
+ */
323
+ openOnHover?: boolean;
324
+ /**
325
+ * How long to wait before opening on hover, in ms.
326
+ * @default 100
327
+ */
328
+ delay?: number;
329
+ /**
330
+ * Grace period before a hover-opened submenu closes after the pointer leaves, in ms —
331
+ * long enough for diagonal travel into the submenu.
332
+ * @default 150
333
+ */
334
+ closeDelay?: number;
335
+ };
336
+ type State = menu_d_exports.Menu.SubmenuTrigger.State;
337
+ }
338
+ namespace Shortcut {
339
+ type Props = {
340
+ /**
341
+ * The keybinding, in `Kbd` syntax — `+` joins keys pressed together, whitespace
342
+ * separates sequence chords (`"Mod+K"`, `"G D"`).
343
+ */
344
+ keys?: string; /** Custom hint content, rendered when `keys` is not set. */
345
+ children?: ReactNode; /** Classes merged onto the hint. */
346
+ className?: string;
347
+ };
348
+ }
349
+ namespace Separator {
350
+ type Props = menu_d_exports.Menu.Separator.Props;
351
+ type State = menu_d_exports.Menu.Separator.State;
352
+ }
353
+ }
354
+ //#endregion
355
+ export { Menu };
@@ -0,0 +1,263 @@
1
+ "use client";
2
+ import { Icon } from "../../icons/icon.js";
3
+ import { CheckIcon, ChevronRightIcon } from "../../icons/glyphs.js";
4
+ import { Surface } from "../surface/surface.js";
5
+ import { menu_exports } from "../../primitives/menu.js";
6
+ import { Kbd } from "../kbd/kbd.js";
7
+ import { MENU_SLOTS } from "./menu.slots.js";
8
+ import { checkboxItemProps, contentProps, groupLabelProps, groupProps, itemProps, linkItemProps, radioGroupProps, radioItemProps, separatorProps, shortcutProps, submenuTriggerProps, triggerProps } from "./menu.props.js";
9
+ import { createContext, useContext } from "react";
10
+ import clsx$1 from "clsx";
11
+ import { jsx, jsxs } from "react/jsx-runtime";
12
+ //#region src/components/menu/menu.tsx
13
+ /**
14
+ * Marks the subtree of a `Menu.SubmenuRoot`, so a nested `Content` switches to submenu positioning
15
+ * defaults (`side="inline-end"`, flush and row-aligned to its trigger) without the caller wiring it.
16
+ */
17
+ const SubmenuLevelContext = createContext(false);
18
+ /**
19
+ * Owns the open state and shares it with the trigger and content. Wraps Base UI's Menu. Modal by
20
+ * default — outside content is inert and page scroll is locked while open; set `modal={false}` for a
21
+ * lighter popup that leaves the page interactive.
22
+ */
23
+ function MenuRoot(props) {
24
+ return /* @__PURE__ */ jsx(menu_exports.Menu.Root, { ...props });
25
+ }
26
+ /**
27
+ * The control that opens the menu. Style it yourself, or compose a `Button` through `render` — e.g.
28
+ * `<Menu.Trigger render={<Button iconOnly aria-label="More" startIcon={ChevronDownIcon} />} />`.
29
+ */
30
+ function MenuTrigger(props) {
31
+ return /* @__PURE__ */ jsx(menu_exports.Menu.Trigger, {
32
+ "data-slot": MENU_SLOTS.trigger,
33
+ ...props
34
+ });
35
+ }
36
+ /**
37
+ * The floating menu surface — portaled, elevated, and animated — holding the items, groups, and
38
+ * separators. A root menu opens below the trigger, aligned to its start; inside a `SubmenuRoot` it
39
+ * opens on the inline-end side instead, flipping to inline-start at the viewport edge. Caps at the
40
+ * available viewport height and scrolls its list, keeping the keyboard highlight in view.
41
+ */
42
+ function MenuContent({ side, align = "start", sideOffset, alignOffset, collisionPadding = 8, className, style, children, ...props }) {
43
+ const inSubmenu = useContext(SubmenuLevelContext);
44
+ return /* @__PURE__ */ jsx(menu_exports.Menu.Portal, { children: /* @__PURE__ */ jsx(menu_exports.Menu.Positioner, {
45
+ side: side ?? (inSubmenu ? "inline-end" : "bottom"),
46
+ align,
47
+ sideOffset: sideOffset ?? (inSubmenu ? 0 : 6),
48
+ alignOffset: alignOffset ?? (inSubmenu ? -4 : 0),
49
+ collisionPadding,
50
+ "data-slot": MENU_SLOTS.positioner,
51
+ children: /* @__PURE__ */ jsx(menu_exports.Menu.Popup, {
52
+ "data-slot": MENU_SLOTS.content,
53
+ render: /* @__PURE__ */ jsx(Surface, {
54
+ elevation: "menu",
55
+ bordered: true,
56
+ shadow: "popover"
57
+ }),
58
+ style: {
59
+ transformOrigin: "var(--transform-origin)",
60
+ maxHeight: "var(--available-height)",
61
+ ...style
62
+ },
63
+ className: clsx$1(className),
64
+ ...props,
65
+ children: /* @__PURE__ */ jsx("div", {
66
+ "data-slot": MENU_SLOTS.viewport,
67
+ "data-custom-scrollbar": true,
68
+ children
69
+ })
70
+ })
71
+ }) });
72
+ }
73
+ /** A labelled section of related items. Put a `GroupLabel` inside to name it for screen readers. */
74
+ function MenuGroup({ className, ...props }) {
75
+ return /* @__PURE__ */ jsx(menu_exports.Menu.Group, {
76
+ "data-slot": MENU_SLOTS.group,
77
+ className: clsx$1(className),
78
+ ...props
79
+ });
80
+ }
81
+ /** The group's muted, non-interactive heading — announced as the group's accessible name. */
82
+ function MenuGroupLabel({ className, ...props }) {
83
+ return /* @__PURE__ */ jsx(menu_exports.Menu.GroupLabel, {
84
+ "data-slot": MENU_SLOTS.groupLabel,
85
+ className: clsx$1(className),
86
+ ...props
87
+ });
88
+ }
89
+ /**
90
+ * A menu action. Optional leading `icon`; `inset` reserves the icon column on icon-less rows so
91
+ * labels align with iconed siblings; `tone="danger"` marks a destructive action — red label and a
92
+ * danger-tinted highlight. Trailing content (a `Menu.Shortcut`, secondary text) flows after the label.
93
+ */
94
+ function MenuItem({ icon, inset = false, tone = "default", className, children, ...props }) {
95
+ return /* @__PURE__ */ jsxs(menu_exports.Menu.Item, {
96
+ "data-slot": MENU_SLOTS.item,
97
+ "data-variant": tone,
98
+ className: clsx$1(className),
99
+ ...props,
100
+ children: [icon ? /* @__PURE__ */ jsx(Icon, {
101
+ icon,
102
+ size: "sm"
103
+ }) : inset ? /* @__PURE__ */ jsx("span", { "data-slot": MENU_SLOTS.insetSpacer }) : null, children]
104
+ });
105
+ }
106
+ /**
107
+ * A navigable menu row that renders an `<a>` — the canonical "Open in new tab" / "Copy link address"
108
+ * action. Same row recipe as `Item` (leading `icon`, `inset` alignment, `tone="danger"`); pass anchor
109
+ * props (`href`, `target`, `rel`) through. Navigating is a terminal action, so it closes the menu on
110
+ * click by default (set `closeOnClick={false}` to keep it open).
111
+ */
112
+ function MenuLinkItem({ icon, inset = false, tone = "default", closeOnClick = true, className, children, ...props }) {
113
+ return /* @__PURE__ */ jsxs(menu_exports.Menu.LinkItem, {
114
+ "data-slot": MENU_SLOTS.linkItem,
115
+ "data-variant": tone,
116
+ closeOnClick,
117
+ className: clsx$1(className),
118
+ ...props,
119
+ children: [icon ? /* @__PURE__ */ jsx(Icon, {
120
+ icon,
121
+ size: "sm"
122
+ }) : inset ? /* @__PURE__ */ jsx("span", { "data-slot": MENU_SLOTS.insetSpacer }) : null, children]
123
+ });
124
+ }
125
+ /**
126
+ * A menu item that toggles a setting. The leading slot is a check that animates in while ticked,
127
+ * holding the same column as item icons; toggling does not close the menu (`closeOnClick` stays
128
+ * Base UI's `false`).
129
+ */
130
+ function MenuCheckboxItem({ className, children, ...props }) {
131
+ return /* @__PURE__ */ jsxs(menu_exports.Menu.CheckboxItem, {
132
+ "data-slot": MENU_SLOTS.checkboxItem,
133
+ className: clsx$1(className),
134
+ ...props,
135
+ children: [/* @__PURE__ */ jsx(menu_exports.Menu.CheckboxItemIndicator, {
136
+ keepMounted: true,
137
+ "data-slot": MENU_SLOTS.itemIndicator,
138
+ children: /* @__PURE__ */ jsx(Icon, {
139
+ icon: CheckIcon,
140
+ size: "sm"
141
+ })
142
+ }), children]
143
+ });
144
+ }
145
+ /** Groups `RadioItem`s around one selected `value` (controlled or via `defaultValue`). */
146
+ function MenuRadioGroup({ className, ...props }) {
147
+ return /* @__PURE__ */ jsx(menu_exports.Menu.RadioGroup, {
148
+ "data-slot": MENU_SLOTS.radioGroup,
149
+ className: clsx$1(className),
150
+ ...props
151
+ });
152
+ }
153
+ /**
154
+ * One choice in a `RadioGroup`. The leading slot is a dot that marks the selected item, holding the
155
+ * same column as item icons; selecting does not close the menu (`closeOnClick` stays Base UI's
156
+ * `false`).
157
+ */
158
+ function MenuRadioItem({ className, children, ...props }) {
159
+ return /* @__PURE__ */ jsxs(menu_exports.Menu.RadioItem, {
160
+ "data-slot": MENU_SLOTS.radioItem,
161
+ className: clsx$1(className),
162
+ ...props,
163
+ children: [/* @__PURE__ */ jsx(menu_exports.Menu.RadioItemIndicator, {
164
+ keepMounted: true,
165
+ "data-slot": MENU_SLOTS.itemIndicator,
166
+ children: /* @__PURE__ */ jsx("span", { "data-slot": MENU_SLOTS.radioDot })
167
+ }), children]
168
+ });
169
+ }
170
+ /** Owns a nested submenu's open state. Renders no element — wrap a `SubmenuTrigger` and a `Content`. */
171
+ function MenuSubmenuRoot(props) {
172
+ return /* @__PURE__ */ jsx(SubmenuLevelContext.Provider, {
173
+ value: true,
174
+ children: /* @__PURE__ */ jsx(menu_exports.Menu.SubmenuRoot, { ...props })
175
+ });
176
+ }
177
+ /**
178
+ * An item-shaped row that opens a nested submenu — on hover (after a short intent delay, with a
179
+ * grace period on leave so diagonal pointer travel into the submenu doesn't snap it shut), on click,
180
+ * and from the keyboard (Right arrow / Enter; Left arrow in RTL). The trailing chevron mirrors under
181
+ * RTL, and the row stays lit while its submenu is open.
182
+ */
183
+ function MenuSubmenuTrigger({ icon, inset = false, openOnHover = true, delay = 100, closeDelay = 150, className, children, ...props }) {
184
+ return /* @__PURE__ */ jsxs(menu_exports.Menu.SubmenuTrigger, {
185
+ "data-slot": MENU_SLOTS.submenuTrigger,
186
+ openOnHover,
187
+ delay,
188
+ closeDelay,
189
+ className: clsx$1(className),
190
+ ...props,
191
+ children: [
192
+ icon ? /* @__PURE__ */ jsx(Icon, {
193
+ icon,
194
+ size: "sm"
195
+ }) : inset ? /* @__PURE__ */ jsx("span", { "data-slot": MENU_SLOTS.insetSpacer }) : null,
196
+ children,
197
+ /* @__PURE__ */ jsx(Icon, {
198
+ icon: ChevronRightIcon,
199
+ size: "sm",
200
+ directional: true
201
+ })
202
+ ]
203
+ });
204
+ }
205
+ /**
206
+ * A trailing, muted keyboard-shortcut hint composing the `Kbd` primitive — pass `keys` in `Kbd`
207
+ * syntax (`"Mod+K"`, `"G D"`) or custom children. Decorative: hidden from assistive tech so the
208
+ * item's action name stays clean (and typeahead never matches the shortcut); when the binding is
209
+ * live, set `aria-keyshortcuts` on the item to expose it.
210
+ */
211
+ function MenuShortcut({ keys, className, children }) {
212
+ return /* @__PURE__ */ jsx("span", {
213
+ "data-slot": MENU_SLOTS.shortcut,
214
+ "aria-hidden": true,
215
+ className: clsx$1(className),
216
+ children: keys ? /* @__PURE__ */ jsx(Kbd, { keys }) : children
217
+ });
218
+ }
219
+ /** A hairline between groups of menu items. */
220
+ function MenuSeparator({ className, ...props }) {
221
+ return /* @__PURE__ */ jsx(menu_exports.Menu.Separator, {
222
+ "data-slot": MENU_SLOTS.separator,
223
+ className: clsx$1(className),
224
+ ...props
225
+ });
226
+ }
227
+ /**
228
+ * A dropdown menu: a `Trigger` opens a floating list of actions. Built on Base UI's Menu for keyboard
229
+ * navigation (arrows, Home/End, typeahead), focus management, and `Escape`/outside-click dismissal,
230
+ * and decoupled from any particular trigger — pass your own (commonly a `Button` via `render`).
231
+ *
232
+ * Compose from parts: `Menu.Root` owns the open state, `Menu.Trigger` opens it, and `Menu.Content`
233
+ * holds the rows — `Item`s, `CheckboxItem`s, `RadioGroup`/`RadioItem`s, `Group`s with a `GroupLabel`,
234
+ * and `Separator`s. Nest a `SubmenuRoot` (wrapping a `SubmenuTrigger` and its own `Content`) for
235
+ * submenus, and give items a trailing `Shortcut` for keyboard hints. Noctis menus are flush against
236
+ * their anchor — there is no arrow/caret part (Base UI offers one; this system doesn't use it).
237
+ *
238
+ * Styling is precompiled in `menu.css`, keyed off each part's prefixed `data-slot`. Each part also
239
+ * carries the D12 `props()` escape hatch via `Object.assign` (e.g. `Menu.Item.props({ tone })`),
240
+ * returning a spreadable `{ "data-slot": "noctis-menu-<part>", ...dataAttrs }` bag for a foreign
241
+ * element a `<Menu.*>` can't wrap.
242
+ *
243
+ * The runtime compound is a plain object (kept tree-shakeable); per-part prop and state types are
244
+ * exposed through the matching `Menu` namespace — e.g. `Menu.Item.Props`.
245
+ */
246
+ const Menu = {
247
+ Root: MenuRoot,
248
+ Trigger: Object.assign(MenuTrigger, { props: triggerProps }),
249
+ Content: Object.assign(MenuContent, { props: contentProps }),
250
+ Group: Object.assign(MenuGroup, { props: groupProps }),
251
+ GroupLabel: Object.assign(MenuGroupLabel, { props: groupLabelProps }),
252
+ Item: Object.assign(MenuItem, { props: itemProps }),
253
+ LinkItem: Object.assign(MenuLinkItem, { props: linkItemProps }),
254
+ CheckboxItem: Object.assign(MenuCheckboxItem, { props: checkboxItemProps }),
255
+ RadioGroup: Object.assign(MenuRadioGroup, { props: radioGroupProps }),
256
+ RadioItem: Object.assign(MenuRadioItem, { props: radioItemProps }),
257
+ SubmenuRoot: MenuSubmenuRoot,
258
+ SubmenuTrigger: Object.assign(MenuSubmenuTrigger, { props: submenuTriggerProps }),
259
+ Shortcut: Object.assign(MenuShortcut, { props: shortcutProps }),
260
+ Separator: Object.assign(MenuSeparator, { props: separatorProps })
261
+ };
262
+ //#endregion
263
+ export { Menu };