@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,85 @@
1
+ //#region src/components/combobox/combobox.props.d.ts
2
+ /** A spreadable data-attribute prop bag — the shape every `Combobox.*.props()` returns. */
3
+ type ComboboxPartProps = {
4
+ /** The slot value the matching `combobox.css` rules anchor on. */"data-slot": string; /** Forwarded verbatim — styling is attribute-driven, so this is an optional consumer passthrough. */
5
+ className?: string; /** A data-attribute present (empty string) or absent (`undefined`); never `false`. */
6
+ [attr: `data-${string}`]: string | undefined;
7
+ };
8
+ /** The control sizes the input offers; the input's metrics re-point off the stamped `data-size`. */
9
+ type ComboboxSize = "md" | "lg";
10
+ /** Common shape: every part's `.props()` accepts an optional `className` passthrough. */
11
+ interface BasePropsArgs {
12
+ /** Forwarded verbatim onto the returned prop bag. */
13
+ className?: string;
14
+ }
15
+ /** Argument to `Combobox.Input.props(...)` — the control size the field's metrics key off. */
16
+ interface ComboboxInputPropsArgs extends BasePropsArgs {
17
+ /** Control height and type. @default "md" */
18
+ size?: ComboboxSize;
19
+ /** Whether the field is invalid (drives the danger border via `data-invalid`). */
20
+ invalid?: boolean;
21
+ }
22
+ /** Argument to `Combobox.ChipsInput.props(...)` — the multi-select field shell's invalid state. */
23
+ interface ComboboxChipsInputPropsArgs extends BasePropsArgs {
24
+ /** Whether the field is invalid (drives the danger border via `data-invalid`). */
25
+ invalid?: boolean;
26
+ }
27
+ /** Argument to `Combobox.Item.props(...)` — the per-row selection/highlight state the CSS keys off. */
28
+ interface ComboboxItemPropsArgs extends BasePropsArgs {
29
+ /** Whether this option is the selected value (drives the leading check via `data-selected`). */
30
+ selected?: boolean;
31
+ /** Whether the pointer/keyboard is over this row (drives the highlight via `data-highlighted`). */
32
+ highlighted?: boolean;
33
+ /** Whether this row is disabled (drives the not-allowed affordance via `data-disabled`). */
34
+ disabled?: boolean;
35
+ }
36
+ /** Argument to a stateless part's `.props(...)` — no variants/state of its own. */
37
+ type ComboboxStatelessPropsArgs = BasePropsArgs;
38
+ /** Input prop bag: slot anchor plus the `data-size` the field's metrics re-point off and the invalid state. */
39
+ declare function inputProps({
40
+ size,
41
+ invalid,
42
+ className
43
+ }?: ComboboxInputPropsArgs): ComboboxPartProps;
44
+ /** Chips-input prop bag: the multi-select field shell's slot anchor plus its invalid state. */
45
+ declare function chipsInputProps({
46
+ invalid,
47
+ className
48
+ }?: ComboboxChipsInputPropsArgs): ComboboxPartProps;
49
+ /** Status prop bag: just the slot anchor (the async live-region message). */
50
+ declare function statusProps({
51
+ className
52
+ }?: ComboboxStatelessPropsArgs): ComboboxPartProps;
53
+ /** Icon prop bag: just the slot anchor (the leading decorative field icon). */
54
+ declare function iconProps({
55
+ className
56
+ }?: ComboboxStatelessPropsArgs): ComboboxPartProps;
57
+ /** Separator prop bag: just the slot anchor (the divider between option groups). */
58
+ declare function separatorProps({
59
+ className
60
+ }?: ComboboxStatelessPropsArgs): ComboboxPartProps;
61
+ /** List prop bag: just the slot anchor. */
62
+ declare function listProps({
63
+ className
64
+ }?: ComboboxStatelessPropsArgs): ComboboxPartProps;
65
+ /** Item prop bag: slot anchor plus the `data-selected`/`data-highlighted`/`data-disabled` state. */
66
+ declare function itemProps({
67
+ selected,
68
+ highlighted,
69
+ disabled,
70
+ className
71
+ }?: ComboboxItemPropsArgs): ComboboxPartProps;
72
+ /** Empty prop bag: just the slot anchor (the centred no-results message). */
73
+ declare function emptyProps({
74
+ className
75
+ }?: ComboboxStatelessPropsArgs): ComboboxPartProps;
76
+ /** Group-label prop bag: just the slot anchor. */
77
+ declare function groupLabelProps({
78
+ className
79
+ }?: ComboboxStatelessPropsArgs): ComboboxPartProps;
80
+ /** Chip prop bag: just the slot anchor (a multi-select selected-value pill). */
81
+ declare function chipProps({
82
+ className
83
+ }?: ComboboxStatelessPropsArgs): ComboboxPartProps;
84
+ //#endregion
85
+ export { ComboboxSize, chipProps, chipsInputProps, emptyProps, groupLabelProps, iconProps, inputProps, itemProps, listProps, separatorProps, statusProps };
@@ -0,0 +1,79 @@
1
+ import { COMBOBOX_SLOTS } from "./combobox.slots.js";
2
+ //#region src/components/combobox/combobox.props.ts
3
+ /**
4
+ * The D12 unified variant contract for Combobox — a per-part set of `props(...)` builders that each
5
+ * return a **spreadable props object** of the form `{ "data-slot": "noctis-combobox-<part>",
6
+ * ...dataAttrs }`, derived from the part's variant/state inputs.
7
+ *
8
+ * Under the single-`data-slot` anchor model the `data-slot` is the only styling hook needed —
9
+ * `combobox.css` keys every rule off it — so spreading a part's `props()` onto a *foreign* element
10
+ * styles it as that part:
11
+ *
12
+ * <li {...Combobox.Item.props({ selected: true, highlighted: true })}>Banana</li>
13
+ * // → <li data-slot="noctis-combobox-item" data-selected="" data-highlighted="">
14
+ *
15
+ * The escape hatch carries no className (styling is attribute-driven); an optional `className`
16
+ * passthrough is accepted and forwarded verbatim. The same variant→data-attribute→values mapping is
17
+ * emitted as data from the token graph (`generated/declarations.json` → `variantSchema`) so non-React
18
+ * / agent consumers can hand-write the markup from the docs.
19
+ */
20
+ /** Stamp a boolean state as a bare data-attribute: present (`""`) when on, absent (`undefined`) when off. */
21
+ const flag = (on) => on ? "" : void 0;
22
+ const withClassName = (bag, className) => className === void 0 ? bag : {
23
+ ...bag,
24
+ className
25
+ };
26
+ /** Input prop bag: slot anchor plus the `data-size` the field's metrics re-point off and the invalid state. */
27
+ function inputProps({ size = "md", invalid, className } = {}) {
28
+ return withClassName({
29
+ "data-slot": COMBOBOX_SLOTS.input,
30
+ "data-size": size,
31
+ "data-invalid": flag(invalid)
32
+ }, className);
33
+ }
34
+ /** Chips-input prop bag: the multi-select field shell's slot anchor plus its invalid state. */
35
+ function chipsInputProps({ invalid, className } = {}) {
36
+ return withClassName({
37
+ "data-slot": COMBOBOX_SLOTS.chipsInput,
38
+ "data-invalid": flag(invalid)
39
+ }, className);
40
+ }
41
+ /** Status prop bag: just the slot anchor (the async live-region message). */
42
+ function statusProps({ className } = {}) {
43
+ return withClassName({ "data-slot": COMBOBOX_SLOTS.status }, className);
44
+ }
45
+ /** Icon prop bag: just the slot anchor (the leading decorative field icon). */
46
+ function iconProps({ className } = {}) {
47
+ return withClassName({ "data-slot": COMBOBOX_SLOTS.icon }, className);
48
+ }
49
+ /** Separator prop bag: just the slot anchor (the divider between option groups). */
50
+ function separatorProps({ className } = {}) {
51
+ return withClassName({ "data-slot": COMBOBOX_SLOTS.separator }, className);
52
+ }
53
+ /** List prop bag: just the slot anchor. */
54
+ function listProps({ className } = {}) {
55
+ return withClassName({ "data-slot": COMBOBOX_SLOTS.list }, className);
56
+ }
57
+ /** Item prop bag: slot anchor plus the `data-selected`/`data-highlighted`/`data-disabled` state. */
58
+ function itemProps({ selected, highlighted, disabled, className } = {}) {
59
+ return withClassName({
60
+ "data-slot": COMBOBOX_SLOTS.item,
61
+ "data-selected": flag(selected),
62
+ "data-highlighted": flag(highlighted),
63
+ "data-disabled": flag(disabled)
64
+ }, className);
65
+ }
66
+ /** Empty prop bag: just the slot anchor (the centred no-results message). */
67
+ function emptyProps({ className } = {}) {
68
+ return withClassName({ "data-slot": COMBOBOX_SLOTS.empty }, className);
69
+ }
70
+ /** Group-label prop bag: just the slot anchor. */
71
+ function groupLabelProps({ className } = {}) {
72
+ return withClassName({ "data-slot": COMBOBOX_SLOTS.groupLabel }, className);
73
+ }
74
+ /** Chip prop bag: just the slot anchor (a multi-select selected-value pill). */
75
+ function chipProps({ className } = {}) {
76
+ return withClassName({ "data-slot": COMBOBOX_SLOTS.chip }, className);
77
+ }
78
+ //#endregion
79
+ export { chipProps, chipsInputProps, emptyProps, groupLabelProps, iconProps, inputProps, itemProps, listProps, separatorProps, statusProps };
@@ -0,0 +1,28 @@
1
+ //#region src/components/combobox/combobox.slots.d.ts
2
+ /**
3
+ * The `data-*` hooks `Combobox` stamps on its parts, for host-side styling and tests. Slot values
4
+ * mark each rendered element; the state attributes are emitted by Base UI's Combobox — pair a slot
5
+ * with a state to target, say, an option row only while it is highlighted.
6
+ */
7
+ declare enum ComboboxDataAttributes {
8
+ /** The element's slot — the styling/testing anchor. */
9
+ slot = "data-slot",
10
+ /** The control size the input stamps (`sm`/`md`/`lg`); the component layer re-points its metrics off it. */
11
+ size = "data-size",
12
+ /** Present on the input (and trigger) while the popup is open. */
13
+ popupOpen = "data-popup-open",
14
+ /** Present on the option row the pointer or keyboard is currently over. */
15
+ highlighted = "data-highlighted",
16
+ /** Present on a selected option row (and its indicator). */
17
+ selected = "data-selected",
18
+ /** Present on a disabled option row. */
19
+ disabled = "data-disabled",
20
+ /** Present on the input when its corresponding items list is empty. */
21
+ listEmpty = "data-list-empty",
22
+ /** Present on the input/chips-input when the field is invalid (set explicitly or by a `Field`). */
23
+ invalid = "data-invalid",
24
+ /** Present on a `Clear` kept mounted while the field holds a value (drives the fade). */
25
+ visible = "data-visible"
26
+ }
27
+ //#endregion
28
+ export { ComboboxDataAttributes };
@@ -0,0 +1,63 @@
1
+ //#region src/components/combobox/combobox.slots.ts
2
+ /**
3
+ * The slot vocabulary every `Combobox` part stamps as its `data-slot`. The authored source the
4
+ * orchestration file reads from, prefixed `noctis-combobox-{part}` (the precompiled `combobox.css`
5
+ * keys every rule off these anchors); SLOTS.md still generates from the token-graph declarations.
6
+ *
7
+ * `inputGroup`, `trigger`, `icon`, `spinner`, `clear`, `positioner`, `content`, `status`, `group`,
8
+ * `chipsInput`, `chips`, `chipRemove`, `separator`, and `itemMatch` are styling-only anchors (the
9
+ * field shell, the open/clear/loading affordances, the popup wrapper, the async status region, the
10
+ * multi-select chip controls, the group divider, and the match highlight) — they carry no token
11
+ * mints, so they live here but not in the token-graph anatomy.
12
+ */
13
+ const COMBOBOX_SLOTS = {
14
+ input: "noctis-combobox-input",
15
+ inputGroup: "noctis-combobox-input-group",
16
+ chipsInput: "noctis-combobox-chips-input",
17
+ trigger: "noctis-combobox-trigger",
18
+ icon: "noctis-combobox-icon",
19
+ spinner: "noctis-combobox-spinner",
20
+ clear: "noctis-combobox-clear",
21
+ positioner: "noctis-combobox-positioner",
22
+ content: "noctis-combobox-content",
23
+ status: "noctis-combobox-status",
24
+ list: "noctis-combobox-list",
25
+ item: "noctis-combobox-item",
26
+ itemIndicator: "noctis-combobox-item-indicator",
27
+ itemMatch: "noctis-combobox-item-match",
28
+ empty: "noctis-combobox-empty",
29
+ group: "noctis-combobox-group",
30
+ groupLabel: "noctis-combobox-group-label",
31
+ separator: "noctis-combobox-separator",
32
+ chips: "noctis-combobox-chips",
33
+ chip: "noctis-combobox-chip",
34
+ chipRemove: "noctis-combobox-chip-remove"
35
+ };
36
+ /**
37
+ * The `data-*` hooks `Combobox` stamps on its parts, for host-side styling and tests. Slot values
38
+ * mark each rendered element; the state attributes are emitted by Base UI's Combobox — pair a slot
39
+ * with a state to target, say, an option row only while it is highlighted.
40
+ */
41
+ let ComboboxDataAttributes = /* @__PURE__ */ function(ComboboxDataAttributes) {
42
+ /** The element's slot — the styling/testing anchor. */
43
+ ComboboxDataAttributes["slot"] = "data-slot";
44
+ /** The control size the input stamps (`sm`/`md`/`lg`); the component layer re-points its metrics off it. */
45
+ ComboboxDataAttributes["size"] = "data-size";
46
+ /** Present on the input (and trigger) while the popup is open. */
47
+ ComboboxDataAttributes["popupOpen"] = "data-popup-open";
48
+ /** Present on the option row the pointer or keyboard is currently over. */
49
+ ComboboxDataAttributes["highlighted"] = "data-highlighted";
50
+ /** Present on a selected option row (and its indicator). */
51
+ ComboboxDataAttributes["selected"] = "data-selected";
52
+ /** Present on a disabled option row. */
53
+ ComboboxDataAttributes["disabled"] = "data-disabled";
54
+ /** Present on the input when its corresponding items list is empty. */
55
+ ComboboxDataAttributes["listEmpty"] = "data-list-empty";
56
+ /** Present on the input/chips-input when the field is invalid (set explicitly or by a `Field`). */
57
+ ComboboxDataAttributes["invalid"] = "data-invalid";
58
+ /** Present on a `Clear` kept mounted while the field holds a value (drives the fade). */
59
+ ComboboxDataAttributes["visible"] = "data-visible";
60
+ return ComboboxDataAttributes;
61
+ }({});
62
+ //#endregion
63
+ export { COMBOBOX_SLOTS, ComboboxDataAttributes };
@@ -0,0 +1,2 @@
1
+ import { Combobox } from "./combobox.js";
2
+ import { ComboboxDataAttributes } from "./combobox.slots.js";
@@ -0,0 +1,254 @@
1
+ import { checkboxItemProps, groupLabelProps, groupProps, itemProps, linkItemProps, radioGroupProps, radioItemProps, separatorProps, shortcutProps, submenuTriggerProps } from "../menu/menu.props.js";
2
+ import { context_menu_d_exports } from "../../primitives/context-menu.js";
3
+ import { Menu } from "../menu/menu.js";
4
+ import { ContextMenuPartProps, contentProps, triggerProps } from "./context-menu.props.js";
5
+ import { ReactElement } from "react";
6
+
7
+ //#region src/components/context-menu/context-menu.d.ts
8
+ /**
9
+ * Owns the open state and shares it with the trigger and content. Wraps Base UI's ContextMenu, which is
10
+ * **always modal** — while open, page scroll is locked and outside content is inert. Unlike `Menu` there
11
+ * is no non-modal variant: Base UI deliberately ignores `modal` on a context menu (its `parent.type` is
12
+ * always `"context-menu"`, so `MenuRoot` discards `modalProp` and warns). Opens at the pointer on
13
+ * right-click; the menu replaces the browser's native context menu inside the trigger area.
14
+ *
15
+ * The scroll lock reserves the scrollbar gutter (`scrollbar-gutter: stable` on `<html>`) as it hides the
16
+ * bar, so content does not shift. If the disappearing bar still bothers you, reserve the gutter app-wide
17
+ * (`html { scrollbar-gutter: stable both-edges; }`) and the page looks identical with the menu open.
18
+ *
19
+ * Useful passthrough knobs on `ContextMenu.Root.Props` (all forwarded to Base UI):
20
+ * - `disabled` — suppress the menu on a region so the browser's native menu shows instead.
21
+ * - `onOpenChangeComplete` — fires after the open/close transition settles.
22
+ * - `closeParentOnEsc` — when nested, also close the parent menu on `Escape` (default `false`).
23
+ */
24
+ declare function ContextMenuRoot(props: ContextMenu.Root.Props): ReactElement;
25
+ /**
26
+ * Owns a nested submenu's open state. Renders no element — wrap a `SubmenuTrigger` and a `Content`.
27
+ *
28
+ * Wraps `BaseContextMenu.SubmenuRoot`, which is the *same underlying primitive* as `BaseMenu.SubmenuRoot`
29
+ * — Base UI's `context-menu` entrypoint only authors its own `Root`/`Trigger` and re-exports every other
30
+ * part (SubmenuRoot included) straight from `menu`. Sourcing it from the context-menu namespace keeps the
31
+ * coupling explicit so it can't silently break if the two ever diverge.
32
+ */
33
+ declare function ContextMenuSubmenuRoot(props: ContextMenu.SubmenuRoot.Props): ReactElement;
34
+ /**
35
+ * The area that opens the menu on right-click (or long-press on touch). Renders a `<div>` by default;
36
+ * compose any element through `render` (e.g. a card or a region) — the whole area captures the
37
+ * contextmenu gesture and suppresses the browser's native menu.
38
+ *
39
+ * Focusable by default (`tabIndex={0}`) so a keyboard-only user can reach it and open the menu with
40
+ * **Shift+F10 / the Menu key** — a context menu must never be the sole entry point to an action, and an
41
+ * unfocusable trigger would make it exactly that. Pass `tabIndex={-1}` to drop it out of the tab order,
42
+ * or `tabIndex={undefined}` to clear the default entirely and defer to a focusable `render` element
43
+ * (a `Button`, a link) whose own focus behaviour then stands.
44
+ *
45
+ * `context-menu.css` gives the slot a `:focus-visible` ring and a stable state seam: Base UI stamps
46
+ * `data-pressed` while a touch long-press registers (painted with a neutral instant tint) and
47
+ * `data-popup-open` while the menu is open (an off-by-default "armed" hook a host can opt into). The
48
+ * trigger still ships visually neutral — no border or background — so apps style it however they like.
49
+ */
50
+ declare function ContextMenuTrigger({
51
+ className,
52
+ ...props
53
+ }: ContextMenu.Trigger.Props): ReactElement;
54
+ /**
55
+ * The floating menu surface — portaled, elevated, and animated — holding the items, groups, and
56
+ * separators. Opens at the pointer position, flipping to stay on screen, and caps at the available
57
+ * viewport height, scrolling its list while keeping the keyboard highlight in view.
58
+ */
59
+ declare function ContextMenuContent({
60
+ side,
61
+ align,
62
+ sideOffset,
63
+ alignOffset,
64
+ collisionPadding,
65
+ className,
66
+ style,
67
+ children,
68
+ ...props
69
+ }: ContextMenu.Content.Props): ReactElement;
70
+ /**
71
+ * A right-click (context) menu: a `Trigger` area opens a floating list of actions at the pointer.
72
+ * Built on Base UI's ContextMenu for keyboard navigation (arrows, Home/End, typeahead), focus
73
+ * management, and `Escape`/outside-click dismissal — it suppresses the browser's native menu inside
74
+ * the trigger area and replaces it with the elevated Noctis surface.
75
+ *
76
+ * Compose from parts: `ContextMenu.Root` owns the open state, `ContextMenu.Trigger` is the area that
77
+ * captures the right-click, and `ContextMenu.Content` holds the rows. The row family is shared with
78
+ * `Menu` — `Item`s, `CheckboxItem`s, `RadioGroup`/`RadioItem`s, `Group`s with a `GroupLabel`,
79
+ * `Separator`s, nested `SubmenuRoot`/`SubmenuTrigger`, and trailing `Shortcut` hints — so a context
80
+ * menu reads identically to a dropdown menu. Noctis menus are flush against their anchor — there is no
81
+ * arrow/caret part.
82
+ *
83
+ * Styling is precompiled in `context-menu.css` (the popup) and `menu.css` (the shared rows), keyed off
84
+ * each part's prefixed `data-slot`. The own parts also carry the D12 `props()` escape hatch via
85
+ * `Object.assign` (e.g. `ContextMenu.Trigger.props()`), returning a spreadable
86
+ * `{ "data-slot": "noctis-context-menu-<part>", ...dataAttrs }` bag for a foreign element a
87
+ * `<ContextMenu.*>` can't wrap.
88
+ *
89
+ * The runtime compound is a plain object (kept tree-shakeable); per-part prop and state types are
90
+ * exposed through the matching `ContextMenu` namespace — e.g. `ContextMenu.Item.Props`.
91
+ */
92
+ declare const ContextMenu: {
93
+ Root: typeof ContextMenuRoot;
94
+ Trigger: typeof ContextMenuTrigger & {
95
+ props: typeof triggerProps;
96
+ };
97
+ Content: typeof ContextMenuContent & {
98
+ props: typeof contentProps;
99
+ };
100
+ Group: (({
101
+ className,
102
+ ...props
103
+ }: Menu.Group.Props) => ReactElement) & {
104
+ props: typeof groupProps;
105
+ };
106
+ GroupLabel: (({
107
+ className,
108
+ ...props
109
+ }: Menu.GroupLabel.Props) => ReactElement) & {
110
+ props: typeof groupLabelProps;
111
+ };
112
+ Item: (({
113
+ icon,
114
+ inset,
115
+ tone,
116
+ className,
117
+ children,
118
+ ...props
119
+ }: Menu.Item.Props) => ReactElement) & {
120
+ props: typeof itemProps;
121
+ };
122
+ LinkItem: (({
123
+ icon,
124
+ inset,
125
+ tone,
126
+ closeOnClick,
127
+ className,
128
+ children,
129
+ ...props
130
+ }: Menu.LinkItem.Props) => ReactElement) & {
131
+ props: typeof linkItemProps;
132
+ };
133
+ CheckboxItem: (({
134
+ className,
135
+ children,
136
+ ...props
137
+ }: Menu.CheckboxItem.Props) => ReactElement) & {
138
+ props: typeof checkboxItemProps;
139
+ };
140
+ RadioGroup: (({
141
+ className,
142
+ ...props
143
+ }: Menu.RadioGroup.Props) => ReactElement) & {
144
+ props: typeof radioGroupProps;
145
+ };
146
+ RadioItem: (({
147
+ className,
148
+ children,
149
+ ...props
150
+ }: Menu.RadioItem.Props) => ReactElement) & {
151
+ props: typeof radioItemProps;
152
+ };
153
+ SubmenuRoot: typeof ContextMenuSubmenuRoot;
154
+ SubmenuTrigger: (({
155
+ icon,
156
+ inset,
157
+ openOnHover,
158
+ delay,
159
+ closeDelay,
160
+ className,
161
+ children,
162
+ ...props
163
+ }: Menu.SubmenuTrigger.Props) => ReactElement) & {
164
+ props: typeof submenuTriggerProps;
165
+ };
166
+ Shortcut: (({
167
+ keys,
168
+ className,
169
+ children
170
+ }: Menu.Shortcut.Props) => ReactElement) & {
171
+ props: typeof shortcutProps;
172
+ };
173
+ Separator: (({
174
+ className,
175
+ ...props
176
+ }: Menu.Separator.Props) => ReactElement) & {
177
+ props: typeof separatorProps;
178
+ };
179
+ };
180
+ /**
181
+ * Per-part prop and state types, mirroring Base UI's `Component.Part.Props` convention. Types-only —
182
+ * it emits no runtime code and merges with the `ContextMenu` object above, so `ContextMenu.Item` is
183
+ * the component value while `ContextMenu.Item.Props` is its prop type. The shared row parts re-expose
184
+ * `Menu`'s types so the two overlays stay one contract.
185
+ */
186
+ declare namespace ContextMenu {
187
+ /** The spreadable data-attribute prop bag every own `ContextMenu.*.props()` returns (D12). */
188
+ type PartProps = ContextMenuPartProps;
189
+ namespace Root {
190
+ type Props = context_menu_d_exports.ContextMenu.Root.Props;
191
+ type State = context_menu_d_exports.ContextMenu.Root.State;
192
+ }
193
+ namespace Trigger {
194
+ type Props = context_menu_d_exports.ContextMenu.Trigger.Props;
195
+ type State = context_menu_d_exports.ContextMenu.Trigger.State;
196
+ }
197
+ namespace Content {
198
+ type Props = context_menu_d_exports.ContextMenu.Popup.Props & {
199
+ /**
200
+ * Which side of the pointer anchor to open on, before collision flipping keeps it on screen.
201
+ * Inside a `SubmenuRoot` the default becomes `"inline-end"` — beside the trigger row.
202
+ * @default "bottom"
203
+ */
204
+ side?: context_menu_d_exports.ContextMenu.Positioner.Props["side"];
205
+ /**
206
+ * Alignment along that side.
207
+ * @default "start"
208
+ */
209
+ align?: context_menu_d_exports.ContextMenu.Positioner.Props["align"]; /** Gap from the anchor, in px. */
210
+ sideOffset?: number; /** Shift along the alignment axis, in px. */
211
+ alignOffset?: number;
212
+ /**
213
+ * Minimum space kept from the viewport edge when avoiding collisions, in px.
214
+ * @default 8
215
+ */
216
+ collisionPadding?: context_menu_d_exports.ContextMenu.Positioner.Props["collisionPadding"];
217
+ };
218
+ }
219
+ namespace Group {
220
+ type Props = Menu.Group.Props;
221
+ }
222
+ namespace GroupLabel {
223
+ type Props = Menu.GroupLabel.Props;
224
+ }
225
+ namespace Item {
226
+ type Props = Menu.Item.Props;
227
+ }
228
+ namespace LinkItem {
229
+ type Props = Menu.LinkItem.Props;
230
+ }
231
+ namespace CheckboxItem {
232
+ type Props = Menu.CheckboxItem.Props;
233
+ }
234
+ namespace RadioGroup {
235
+ type Props = Menu.RadioGroup.Props;
236
+ }
237
+ namespace RadioItem {
238
+ type Props = Menu.RadioItem.Props;
239
+ }
240
+ namespace SubmenuRoot {
241
+ type Props = Menu.SubmenuRoot.Props;
242
+ }
243
+ namespace SubmenuTrigger {
244
+ type Props = Menu.SubmenuTrigger.Props;
245
+ }
246
+ namespace Shortcut {
247
+ type Props = Menu.Shortcut.Props;
248
+ }
249
+ namespace Separator {
250
+ type Props = Menu.Separator.Props;
251
+ }
252
+ }
253
+ //#endregion
254
+ export { ContextMenu };
@@ -0,0 +1,150 @@
1
+ "use client";
2
+ import { Surface } from "../surface/surface.js";
3
+ import { context_menu_exports } from "../../primitives/context-menu.js";
4
+ import { Menu } from "../menu/menu.js";
5
+ import { CONTEXT_MENU_SLOTS } from "./context-menu.slots.js";
6
+ import { contentProps, triggerProps } from "./context-menu.props.js";
7
+ import { createContext, useContext } from "react";
8
+ import clsx$1 from "clsx";
9
+ import { jsx } from "react/jsx-runtime";
10
+ //#region src/components/context-menu/context-menu.tsx
11
+ /**
12
+ * Marks the subtree of a `ContextMenu.SubmenuRoot`, so a nested `Content` switches to submenu
13
+ * positioning defaults (`side="inline-end"`, flush and row-aligned to its trigger) without the caller
14
+ * wiring it — mirroring the dropdown `Menu`'s submenu behaviour.
15
+ */
16
+ const SubmenuLevelContext = createContext(false);
17
+ /**
18
+ * Owns the open state and shares it with the trigger and content. Wraps Base UI's ContextMenu, which is
19
+ * **always modal** — while open, page scroll is locked and outside content is inert. Unlike `Menu` there
20
+ * is no non-modal variant: Base UI deliberately ignores `modal` on a context menu (its `parent.type` is
21
+ * always `"context-menu"`, so `MenuRoot` discards `modalProp` and warns). Opens at the pointer on
22
+ * right-click; the menu replaces the browser's native context menu inside the trigger area.
23
+ *
24
+ * The scroll lock reserves the scrollbar gutter (`scrollbar-gutter: stable` on `<html>`) as it hides the
25
+ * bar, so content does not shift. If the disappearing bar still bothers you, reserve the gutter app-wide
26
+ * (`html { scrollbar-gutter: stable both-edges; }`) and the page looks identical with the menu open.
27
+ *
28
+ * Useful passthrough knobs on `ContextMenu.Root.Props` (all forwarded to Base UI):
29
+ * - `disabled` — suppress the menu on a region so the browser's native menu shows instead.
30
+ * - `onOpenChangeComplete` — fires after the open/close transition settles.
31
+ * - `closeParentOnEsc` — when nested, also close the parent menu on `Escape` (default `false`).
32
+ */
33
+ function ContextMenuRoot(props) {
34
+ return /* @__PURE__ */ jsx(context_menu_exports.ContextMenu.Root, { ...props });
35
+ }
36
+ /**
37
+ * Owns a nested submenu's open state. Renders no element — wrap a `SubmenuTrigger` and a `Content`.
38
+ *
39
+ * Wraps `BaseContextMenu.SubmenuRoot`, which is the *same underlying primitive* as `BaseMenu.SubmenuRoot`
40
+ * — Base UI's `context-menu` entrypoint only authors its own `Root`/`Trigger` and re-exports every other
41
+ * part (SubmenuRoot included) straight from `menu`. Sourcing it from the context-menu namespace keeps the
42
+ * coupling explicit so it can't silently break if the two ever diverge.
43
+ */
44
+ function ContextMenuSubmenuRoot(props) {
45
+ return /* @__PURE__ */ jsx(SubmenuLevelContext.Provider, {
46
+ value: true,
47
+ children: /* @__PURE__ */ jsx(context_menu_exports.ContextMenu.SubmenuRoot, { ...props })
48
+ });
49
+ }
50
+ /**
51
+ * The area that opens the menu on right-click (or long-press on touch). Renders a `<div>` by default;
52
+ * compose any element through `render` (e.g. a card or a region) — the whole area captures the
53
+ * contextmenu gesture and suppresses the browser's native menu.
54
+ *
55
+ * Focusable by default (`tabIndex={0}`) so a keyboard-only user can reach it and open the menu with
56
+ * **Shift+F10 / the Menu key** — a context menu must never be the sole entry point to an action, and an
57
+ * unfocusable trigger would make it exactly that. Pass `tabIndex={-1}` to drop it out of the tab order,
58
+ * or `tabIndex={undefined}` to clear the default entirely and defer to a focusable `render` element
59
+ * (a `Button`, a link) whose own focus behaviour then stands.
60
+ *
61
+ * `context-menu.css` gives the slot a `:focus-visible` ring and a stable state seam: Base UI stamps
62
+ * `data-pressed` while a touch long-press registers (painted with a neutral instant tint) and
63
+ * `data-popup-open` while the menu is open (an off-by-default "armed" hook a host can opt into). The
64
+ * trigger still ships visually neutral — no border or background — so apps style it however they like.
65
+ */
66
+ function ContextMenuTrigger({ className, ...props }) {
67
+ const tabIndex = "tabIndex" in props ? props.tabIndex : 0;
68
+ return /* @__PURE__ */ jsx(context_menu_exports.ContextMenu.Trigger, {
69
+ "data-slot": CONTEXT_MENU_SLOTS.trigger,
70
+ tabIndex,
71
+ className: clsx$1(className),
72
+ ...props
73
+ });
74
+ }
75
+ /**
76
+ * The floating menu surface — portaled, elevated, and animated — holding the items, groups, and
77
+ * separators. Opens at the pointer position, flipping to stay on screen, and caps at the available
78
+ * viewport height, scrolling its list while keeping the keyboard highlight in view.
79
+ */
80
+ function ContextMenuContent({ side, align = "start", sideOffset, alignOffset, collisionPadding = 8, className, style, children, ...props }) {
81
+ const inSubmenu = useContext(SubmenuLevelContext);
82
+ return /* @__PURE__ */ jsx(context_menu_exports.ContextMenu.Portal, { children: /* @__PURE__ */ jsx(context_menu_exports.ContextMenu.Positioner, {
83
+ side: side ?? (inSubmenu ? "inline-end" : "bottom"),
84
+ align,
85
+ sideOffset: sideOffset ?? (inSubmenu ? 0 : void 0),
86
+ alignOffset: alignOffset ?? (inSubmenu ? -4 : void 0),
87
+ collisionPadding,
88
+ "data-slot": CONTEXT_MENU_SLOTS.positioner,
89
+ children: /* @__PURE__ */ jsx(context_menu_exports.ContextMenu.Popup, {
90
+ "data-slot": CONTEXT_MENU_SLOTS.content,
91
+ render: /* @__PURE__ */ jsx(Surface, {
92
+ elevation: "menu",
93
+ bordered: true,
94
+ shadow: "popover"
95
+ }),
96
+ style: {
97
+ transformOrigin: "var(--transform-origin)",
98
+ maxHeight: "var(--available-height)",
99
+ ...style
100
+ },
101
+ className: clsx$1(className),
102
+ ...props,
103
+ children: /* @__PURE__ */ jsx("div", {
104
+ "data-slot": CONTEXT_MENU_SLOTS.viewport,
105
+ "data-custom-scrollbar": true,
106
+ children
107
+ })
108
+ })
109
+ }) });
110
+ }
111
+ /**
112
+ * A right-click (context) menu: a `Trigger` area opens a floating list of actions at the pointer.
113
+ * Built on Base UI's ContextMenu for keyboard navigation (arrows, Home/End, typeahead), focus
114
+ * management, and `Escape`/outside-click dismissal — it suppresses the browser's native menu inside
115
+ * the trigger area and replaces it with the elevated Noctis surface.
116
+ *
117
+ * Compose from parts: `ContextMenu.Root` owns the open state, `ContextMenu.Trigger` is the area that
118
+ * captures the right-click, and `ContextMenu.Content` holds the rows. The row family is shared with
119
+ * `Menu` — `Item`s, `CheckboxItem`s, `RadioGroup`/`RadioItem`s, `Group`s with a `GroupLabel`,
120
+ * `Separator`s, nested `SubmenuRoot`/`SubmenuTrigger`, and trailing `Shortcut` hints — so a context
121
+ * menu reads identically to a dropdown menu. Noctis menus are flush against their anchor — there is no
122
+ * arrow/caret part.
123
+ *
124
+ * Styling is precompiled in `context-menu.css` (the popup) and `menu.css` (the shared rows), keyed off
125
+ * each part's prefixed `data-slot`. The own parts also carry the D12 `props()` escape hatch via
126
+ * `Object.assign` (e.g. `ContextMenu.Trigger.props()`), returning a spreadable
127
+ * `{ "data-slot": "noctis-context-menu-<part>", ...dataAttrs }` bag for a foreign element a
128
+ * `<ContextMenu.*>` can't wrap.
129
+ *
130
+ * The runtime compound is a plain object (kept tree-shakeable); per-part prop and state types are
131
+ * exposed through the matching `ContextMenu` namespace — e.g. `ContextMenu.Item.Props`.
132
+ */
133
+ const ContextMenu = {
134
+ Root: ContextMenuRoot,
135
+ Trigger: Object.assign(ContextMenuTrigger, { props: triggerProps }),
136
+ Content: Object.assign(ContextMenuContent, { props: contentProps }),
137
+ Group: Menu.Group,
138
+ GroupLabel: Menu.GroupLabel,
139
+ Item: Menu.Item,
140
+ LinkItem: Menu.LinkItem,
141
+ CheckboxItem: Menu.CheckboxItem,
142
+ RadioGroup: Menu.RadioGroup,
143
+ RadioItem: Menu.RadioItem,
144
+ SubmenuRoot: ContextMenuSubmenuRoot,
145
+ SubmenuTrigger: Menu.SubmenuTrigger,
146
+ Shortcut: Menu.Shortcut,
147
+ Separator: Menu.Separator
148
+ };
149
+ //#endregion
150
+ export { ContextMenu };