@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,65 @@
1
+ import { FIELD_SLOTS } from "./field.slots.js";
2
+ //#region src/components/field/field.props.ts
3
+ /**
4
+ * The D12 data-attribute contract for the field layer — the wiring parts (`Field`, `Fieldset`, `Form`)
5
+ * and the shared in-field affordances (`Field.Action`, `Field.Count`).
6
+ *
7
+ * Each part exposes a `props(...)` builder returning a spreadable `{ "data-slot": "noctis-field-<part>",
8
+ * ...dataAttrs }`, so `field.css` can style a *foreign* element as that part:
9
+ *
10
+ * <p {...Field.Description.props()}>We never share your address.</p>
11
+ * // → <p data-slot="noctis-field-description">
12
+ *
13
+ * The escape hatch carries no className (styling is attribute-driven); an optional `className` is
14
+ * forwarded verbatim. The live validity attributes (`data-invalid`, `data-disabled`, …) are stamped by
15
+ * Base UI on the real wiring parts; these helpers exist for the escape-hatch path.
16
+ */
17
+ const withClassName = (bag, className) => className === void 0 ? bag : {
18
+ ...bag,
19
+ className
20
+ };
21
+ /** Root prop bag: just the slot anchor. */
22
+ function rootProps({ className } = {}) {
23
+ return withClassName({ "data-slot": FIELD_SLOTS.root }, className);
24
+ }
25
+ /** Label prop bag: just the slot anchor. */
26
+ function labelProps({ className } = {}) {
27
+ return withClassName({ "data-slot": FIELD_SLOTS.label }, className);
28
+ }
29
+ /** Control prop bag: just the slot anchor. */
30
+ function controlProps({ className } = {}) {
31
+ return withClassName({ "data-slot": FIELD_SLOTS.control }, className);
32
+ }
33
+ /** Description prop bag: just the slot anchor. */
34
+ function descriptionProps({ className } = {}) {
35
+ return withClassName({ "data-slot": FIELD_SLOTS.description }, className);
36
+ }
37
+ /** Error prop bag: just the slot anchor. */
38
+ function errorProps({ className } = {}) {
39
+ return withClassName({ "data-slot": FIELD_SLOTS.error }, className);
40
+ }
41
+ /** Fieldset prop bag: just the slot anchor. */
42
+ function fieldsetProps({ className } = {}) {
43
+ return withClassName({ "data-slot": FIELD_SLOTS.fieldset }, className);
44
+ }
45
+ /** Fieldset legend prop bag: just the slot anchor. */
46
+ function legendProps({ className } = {}) {
47
+ return withClassName({ "data-slot": FIELD_SLOTS.fieldsetLegend }, className);
48
+ }
49
+ /** Form prop bag: just the slot anchor. */
50
+ function formProps({ className } = {}) {
51
+ return withClassName({ "data-slot": FIELD_SLOTS.form }, className);
52
+ }
53
+ /** Action prop bag: slot anchor plus the `data-side` edge (the in-field ghost button). */
54
+ function actionProps({ side = "end", className } = {}) {
55
+ return withClassName({
56
+ "data-slot": FIELD_SLOTS.action,
57
+ "data-side": side
58
+ }, className);
59
+ }
60
+ /** Count prop bag: just the slot anchor (the character-count readout; escalation is value-driven). */
61
+ function countProps({ className } = {}) {
62
+ return withClassName({ "data-slot": FIELD_SLOTS.count }, className);
63
+ }
64
+ //#endregion
65
+ export { actionProps, controlProps, countProps, descriptionProps, errorProps, fieldsetProps, formProps, labelProps, legendProps, rootProps };
@@ -0,0 +1,35 @@
1
+ //#region src/components/field/field.slots.d.ts
2
+ /**
3
+ * The `data-*` hooks the field layer stamps, for host-side styling and tests. Slot values mark each
4
+ * rendered element; the validity states are emitted by Base UI's Field/Fieldset on the wiring parts; the
5
+ * affordances carry their own placement/escalation hooks. Pair a slot with a state to target, say, only
6
+ * a disabled field's label or only the count while near its limit.
7
+ */
8
+ declare enum FieldDataAttributes {
9
+ /** Marks each rendered field part. */
10
+ slot = "data-slot",
11
+ /** Present on every part of a disabled field (and on a disabled fieldset). */
12
+ disabled = "data-disabled",
13
+ /** Present on the parts of a field whose control has been blurred at least once. */
14
+ touched = "data-touched",
15
+ /** Present on the parts of a field whose value differs from its initial value. */
16
+ dirty = "data-dirty",
17
+ /** Present on the parts of a field that currently fails validation. */
18
+ invalid = "data-invalid",
19
+ /** Present on the parts of a field that currently passes validation. */
20
+ valid = "data-valid",
21
+ /** Present on the parts of a field whose control is focused. */
22
+ focused = "data-focused",
23
+ /** Present on the parts of a field whose control holds a value. */
24
+ filled = "data-filled",
25
+ /** Which edge an action sits on — `start` (leading) | `end` (trailing). */
26
+ side = "data-side",
27
+ /** Opt-in on an action: `filled` collapses it until the host field's control is filled (CSS `:has()`). */
28
+ reveal = "data-reveal",
29
+ /** Present on the count when the value nears its limit — escalates to the warning colour. */
30
+ near = "data-near",
31
+ /** Present on the count when the value passes its limit — escalates to the danger colour. */
32
+ over = "data-over"
33
+ }
34
+ //#endregion
35
+ export { FieldDataAttributes };
@@ -0,0 +1,54 @@
1
+ //#region src/components/field/field.slots.ts
2
+ /**
3
+ * The slot vocabulary every part of the field layer stamps as its `data-slot`. One `field` declaration
4
+ * owns the whole layer: the wiring parts (`Field`/`Fieldset`/`Form`) and the shared in-field affordances
5
+ * (`Field.Action`/`Field.Count`) reused by Input, Textarea, and the rest of the family. Kebab-cased and
6
+ * `noctis-`-prefixed; SLOTS.md generates from the token-graph declaration.
7
+ */
8
+ const FIELD_SLOTS = {
9
+ root: "noctis-field",
10
+ label: "noctis-field-label",
11
+ control: "noctis-field-control",
12
+ description: "noctis-field-description",
13
+ error: "noctis-field-error",
14
+ fieldset: "noctis-field-fieldset",
15
+ fieldsetLegend: "noctis-field-fieldset-legend",
16
+ form: "noctis-field-form",
17
+ action: "noctis-field-action",
18
+ count: "noctis-field-count"
19
+ };
20
+ /**
21
+ * The `data-*` hooks the field layer stamps, for host-side styling and tests. Slot values mark each
22
+ * rendered element; the validity states are emitted by Base UI's Field/Fieldset on the wiring parts; the
23
+ * affordances carry their own placement/escalation hooks. Pair a slot with a state to target, say, only
24
+ * a disabled field's label or only the count while near its limit.
25
+ */
26
+ let FieldDataAttributes = /* @__PURE__ */ function(FieldDataAttributes) {
27
+ /** Marks each rendered field part. */
28
+ FieldDataAttributes["slot"] = "data-slot";
29
+ /** Present on every part of a disabled field (and on a disabled fieldset). */
30
+ FieldDataAttributes["disabled"] = "data-disabled";
31
+ /** Present on the parts of a field whose control has been blurred at least once. */
32
+ FieldDataAttributes["touched"] = "data-touched";
33
+ /** Present on the parts of a field whose value differs from its initial value. */
34
+ FieldDataAttributes["dirty"] = "data-dirty";
35
+ /** Present on the parts of a field that currently fails validation. */
36
+ FieldDataAttributes["invalid"] = "data-invalid";
37
+ /** Present on the parts of a field that currently passes validation. */
38
+ FieldDataAttributes["valid"] = "data-valid";
39
+ /** Present on the parts of a field whose control is focused. */
40
+ FieldDataAttributes["focused"] = "data-focused";
41
+ /** Present on the parts of a field whose control holds a value. */
42
+ FieldDataAttributes["filled"] = "data-filled";
43
+ /** Which edge an action sits on — `start` (leading) | `end` (trailing). */
44
+ FieldDataAttributes["side"] = "data-side";
45
+ /** Opt-in on an action: `filled` collapses it until the host field's control is filled (CSS `:has()`). */
46
+ FieldDataAttributes["reveal"] = "data-reveal";
47
+ /** Present on the count when the value nears its limit — escalates to the warning colour. */
48
+ FieldDataAttributes["near"] = "data-near";
49
+ /** Present on the count when the value passes its limit — escalates to the danger colour. */
50
+ FieldDataAttributes["over"] = "data-over";
51
+ return FieldDataAttributes;
52
+ }({});
53
+ //#endregion
54
+ export { FIELD_SLOTS, FieldDataAttributes };
@@ -0,0 +1,5 @@
1
+ //#region src/components/field/field.types.d.ts
2
+ /** Which edge an in-field action sits on — leading (`start`) or trailing (`end`). */
3
+ type FieldActionSide = "start" | "end";
4
+ //#endregion
5
+ export { FieldActionSide };
@@ -0,0 +1,4 @@
1
+ import { FieldActionSide } from "./field.types.js";
2
+ import { FieldActionPropsArgs, FieldCountPropsArgs, FieldPartProps, actionProps, countProps } from "./field.props.js";
3
+ import { Field, FieldAction, FieldCount, Fieldset, Form } from "./field.js";
4
+ import { FieldDataAttributes } from "./field.slots.js";
@@ -0,0 +1 @@
1
+ import { InlineCode } from "./inline-code.js";
@@ -0,0 +1,46 @@
1
+ import { InlineCodePartProps, InlineCodePropsArgs, rootProps } from "./inline-code.props.js";
2
+ import { ComponentProps, ReactElement } from "react";
3
+
4
+ //#region src/components/inline-code/inline-code.d.ts
5
+ /**
6
+ * Inline code — a short code span set apart from prose as a bordered chip on the neutral `control`
7
+ * fill, mono and em-sized so it sits proportionally inside any text. It shares the bordered-chip
8
+ * language with `Kbd` but stays flat (no key-cap shadow) and sets its text on the dedicated
9
+ * `code-foreground` tier — a step off prose — so a snippet reads as code rather than running text or a
10
+ * keystroke. Corners are a tight, em-relative radius so the chip reads as a code token, not a pill.
11
+ * Inside a link the chip joins the link, taking its colour with the underline lifted off the box. For
12
+ * multi-line fenced code, reach for `CodeBlock`.
13
+ *
14
+ * The chip metrics are em-relative on purpose, so the chip tracks its surrounding text and the global
15
+ * font scale. Each metric is a component token (`--noctis-inline-code-*`) the slot resolves through its
16
+ * internal var, so a consumer can retune the chip on any ancestor without forking the component. The
17
+ * look is precompiled CSS keyed off the `data-slot` anchor (`inline-code.css`); the render stamps that
18
+ * anchor and forwards a plain `className` passthrough.
19
+ *
20
+ * @see {@link InlineCode.Props}
21
+ */
22
+ declare function InlineCodeRoot({
23
+ className,
24
+ ...props
25
+ }: InlineCode.Props): ReactElement;
26
+ /**
27
+ * Inline code chip. The runtime value is the component function with a namespaced `props` static (D12)
28
+ * — `InlineCode.props()` returns the spreadable `data-slot` prop bag for the escape-hatch path.
29
+ */
30
+ declare const InlineCode: typeof InlineCodeRoot & {
31
+ props: typeof rootProps;
32
+ };
33
+ /**
34
+ * Prop types for `InlineCode`, plus the D12 `props` helper's argument/return types. Types-only — it
35
+ * emits no runtime code and merges with the `InlineCode` value above, so `InlineCode` is the component
36
+ * value while `InlineCode.Props` is its prop type.
37
+ */
38
+ declare namespace InlineCode {
39
+ type Props = ComponentProps<"code">;
40
+ /** The spreadable data-attribute prop bag `InlineCode.props()` returns (D12). */
41
+ type PartProps = InlineCodePartProps;
42
+ /** Argument to the `InlineCode.props(...)` escape-hatch helper. */
43
+ type PropsArgs = InlineCodePropsArgs;
44
+ }
45
+ //#endregion
46
+ export { InlineCode };
@@ -0,0 +1,36 @@
1
+ import { INLINE_CODE_SLOTS } from "./inline-code.slots.js";
2
+ import { rootProps } from "./inline-code.props.js";
3
+ import { clsx } from "clsx";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/components/inline-code/inline-code.tsx
6
+ /**
7
+ * Inline code — a short code span set apart from prose as a bordered chip on the neutral `control`
8
+ * fill, mono and em-sized so it sits proportionally inside any text. It shares the bordered-chip
9
+ * language with `Kbd` but stays flat (no key-cap shadow) and sets its text on the dedicated
10
+ * `code-foreground` tier — a step off prose — so a snippet reads as code rather than running text or a
11
+ * keystroke. Corners are a tight, em-relative radius so the chip reads as a code token, not a pill.
12
+ * Inside a link the chip joins the link, taking its colour with the underline lifted off the box. For
13
+ * multi-line fenced code, reach for `CodeBlock`.
14
+ *
15
+ * The chip metrics are em-relative on purpose, so the chip tracks its surrounding text and the global
16
+ * font scale. Each metric is a component token (`--noctis-inline-code-*`) the slot resolves through its
17
+ * internal var, so a consumer can retune the chip on any ancestor without forking the component. The
18
+ * look is precompiled CSS keyed off the `data-slot` anchor (`inline-code.css`); the render stamps that
19
+ * anchor and forwards a plain `className` passthrough.
20
+ *
21
+ * @see {@link InlineCode.Props}
22
+ */
23
+ function InlineCodeRoot({ className, ...props }) {
24
+ return /* @__PURE__ */ jsx("code", {
25
+ "data-slot": INLINE_CODE_SLOTS.root,
26
+ className: clsx(className),
27
+ ...props
28
+ });
29
+ }
30
+ /**
31
+ * Inline code chip. The runtime value is the component function with a namespaced `props` static (D12)
32
+ * — `InlineCode.props()` returns the spreadable `data-slot` prop bag for the escape-hatch path.
33
+ */
34
+ const InlineCode = Object.assign(InlineCodeRoot, { props: rootProps });
35
+ //#endregion
36
+ export { InlineCode };
@@ -0,0 +1,17 @@
1
+ //#region src/components/inline-code/inline-code.props.d.ts
2
+ /** A spreadable data-attribute prop bag — the shape `InlineCode.props()` returns. */
3
+ type InlineCodePartProps = {
4
+ /** The slot value the matching `inline-code.css` rule anchors on. */"data-slot": string; /** Forwarded verbatim — styling is attribute-driven, so this is an optional consumer passthrough. */
5
+ className?: string;
6
+ };
7
+ /** Argument to `InlineCode.props(...)` — no variants/state of its own. */
8
+ interface InlineCodePropsArgs {
9
+ /** Forwarded verbatim onto the returned prop bag. */
10
+ className?: string;
11
+ }
12
+ /** Root prop bag: just the slot anchor (the chip has no variant/state axes). */
13
+ declare function rootProps({
14
+ className
15
+ }?: InlineCodePropsArgs): InlineCodePartProps;
16
+ //#endregion
17
+ export { InlineCodePartProps, InlineCodePropsArgs, rootProps };
@@ -0,0 +1,27 @@
1
+ import { INLINE_CODE_SLOTS } from "./inline-code.slots.js";
2
+ //#region src/components/inline-code/inline-code.props.ts
3
+ /**
4
+ * The D12 unified variant contract for InlineCode — the data-attribute-native escape hatch.
5
+ *
6
+ * `InlineCode` is a single-element chip with no variants or state of its own, so it exposes one
7
+ * `props(...)` builder returning a **spreadable props object** of the form
8
+ * `{ "data-slot": "noctis-inline-code", ...dataAttrs }`. Under the single-`data-slot` anchor model
9
+ * (D4 final) the `data-slot` is the only styling hook needed — `inline-code.css` keys its rule off it
10
+ * — so spreading `InlineCode.props()` onto a *foreign* element styles it as the chip:
11
+ *
12
+ * <code {...InlineCode.props()}>bg-surface</code>
13
+ * // → <code data-slot="noctis-inline-code">
14
+ *
15
+ * The escape hatch carries no className (styling is attribute-driven); an optional `className`
16
+ * passthrough is accepted and forwarded verbatim.
17
+ */
18
+ const withClassName = (bag, className) => className === void 0 ? bag : {
19
+ ...bag,
20
+ className
21
+ };
22
+ /** Root prop bag: just the slot anchor (the chip has no variant/state axes). */
23
+ function rootProps({ className } = {}) {
24
+ return withClassName({ "data-slot": INLINE_CODE_SLOTS.root }, className);
25
+ }
26
+ //#endregion
27
+ export { rootProps };
@@ -0,0 +1,8 @@
1
+ //#region src/components/inline-code/inline-code.slots.ts
2
+ /**
3
+ * The slot vocabulary `InlineCode` stamps as its `data-slot`. The authored source the orchestration
4
+ * file reads from, kebab-cased `{component}`; SLOTS.md still generates from the token-graph declarations.
5
+ */
6
+ const INLINE_CODE_SLOTS = { root: "noctis-inline-code" };
7
+ //#endregion
8
+ export { INLINE_CODE_SLOTS };
@@ -0,0 +1,3 @@
1
+ import { InputAdornmentSide, InputAdornmentVariant, InputSize } from "./input.types.js";
2
+ import { Input } from "./input.js";
3
+ import { InputDataAttributes } from "./input.slots.js";
@@ -0,0 +1,13 @@
1
+ "use client";
2
+ import { createContext, use } from "react";
3
+ //#region src/components/input/input.context.ts
4
+ const InputContext = createContext(null);
5
+ const InputProvider = InputContext.Provider;
6
+ /** Read the field context, throwing a named error when a part renders outside `Input.Root`. */
7
+ function useInputContext(part) {
8
+ const context = use(InputContext);
9
+ if (context === null) throw new Error(`Input.${part} must be rendered inside <Input.Root>.`);
10
+ return context;
11
+ }
12
+ //#endregion
13
+ export { InputProvider, useInputContext };
@@ -0,0 +1,161 @@
1
+ import { FieldActionPropsArgs, FieldCountPropsArgs, actionProps, countProps } from "../field/field.props.js";
2
+ import { FieldAction, FieldCount } from "../field/field.js";
3
+ import { InputAdornmentSide, InputAdornmentVariant, InputSize } from "./input.types.js";
4
+ import { InputAdornmentPropsArgs, InputPartProps, InputRootPropsArgs, adornmentProps, controlProps, rootProps } from "./input.props.js";
5
+ import { input_d_exports } from "../../primitives/input.js";
6
+ import { ComponentPropsWithRef, ReactElement, ReactNode } from "react";
7
+
8
+ //#region src/components/input/input.d.ts
9
+ /**
10
+ * The field shell — a `<div>` that paints the field surface, border, and a subtle rest shadow, and
11
+ * holds the editable control plus any adornments or in-field actions in one inline row. It owns the
12
+ * shared `size` (descendant parts read it from context) and stamps the `data-size` axis `input.css`
13
+ * keys its metrics off. State flows from the control: the shell reads the control's
14
+ * `data-invalid`/`data-disabled`/`data-readonly`/`data-filled`/`data-dirty` through `:has()`, so there
15
+ * is one source of truth. The `invalid`/`disabled` props stay as additive shell-only override escape
16
+ * hatches.
17
+ *
18
+ * Clicking the shell padding focuses the control (the shell wears `cursor: text`), while a click on an
19
+ * `Input.Action` or other interactive child is left to that element. Focus is calm and ring-less: it
20
+ * shifts the border to the focus role on `:has(:focus)`, no surrounding ring.
21
+ */
22
+ declare function InputRoot({
23
+ size,
24
+ invalid,
25
+ disabled,
26
+ className,
27
+ children,
28
+ onMouseDown,
29
+ ...props
30
+ }: Input.Root.Props): ReactElement;
31
+ /**
32
+ * The editable control, built on Base UI's `Input`. Renders a native `<input>` and works on its own or
33
+ * wrapped in a Base UI `Field.Root`, which feeds it the validity/disabled/filled state. Place it inside
34
+ * an {@link Input.Root}; the shell paints the chrome while this part stays a clean, unstyled input so
35
+ * the value, caret, and selection inherit the field's type. `disabled`/`readOnly`/`aria-invalid` set
36
+ * here drive the shell's look through `:has()` — no need to mirror them on the root.
37
+ */
38
+ declare function InputControl({
39
+ className,
40
+ ...props
41
+ }: Input.Control.Props): ReactElement;
42
+ /**
43
+ * A leading or trailing adornment — an icon, unit, or short affordance flanking the control. Set `side`
44
+ * to `start` (the default, leading) or `end` (trailing); the shell's flex row orders it logically, so it
45
+ * mirrors under RTL by construction. The default `quiet` variant is transparent and non-interactive;
46
+ * `variant="segment"` renders a bordered cell flush to the field edge for prefix/suffix addon groups.
47
+ * Descendant icons take the field-size-matched glyph size automatically. For an *interactive* affordance
48
+ * (clear, reveal, a shortcut chip) use {@link Input.Action} instead of marking an adornment up by hand.
49
+ */
50
+ declare function InputAdornment({
51
+ side,
52
+ variant,
53
+ className,
54
+ children,
55
+ ...props
56
+ }: Input.Adornment.Props): ReactElement;
57
+ /**
58
+ * A text field: the editable control wearing the field surface, border, and an accent focus ring that
59
+ * follows the corner radius. Compose from parts — `Input.Root` is the shell that owns the `size`,
60
+ * `Input.Control` is the Base UI input (its disabled/read-only/invalid state drives the shell),
61
+ * `Input.Adornment` flanks it with a quiet or segmented icon/unit/affordance, `Input.Action` is an
62
+ * interactive in-field button (clear, reveal, shortcut) with ghost-control discipline, and `Input.Count`
63
+ * is a live character-count readout. Built on Base UI's Input, so it slots straight into a `Field.Root`
64
+ * for labels, descriptions, and validation, reads validity from the control rather than a hand-set flag,
65
+ * and stays fully keyboard-operable.
66
+ *
67
+ * The runtime compound is a plain object (kept tree-shakeable); per-part prop and state types are
68
+ * exposed through the matching `Input` namespace — e.g. `Input.Control.Props`.
69
+ */
70
+ declare const Input: {
71
+ /** The field shell. `Input.Root.props({ size, invalid, disabled })` → its spreadable prop bag. */Root: typeof InputRoot & {
72
+ props: typeof rootProps;
73
+ }; /** The editable control. `Input.Control.props()` → its spreadable prop bag for a foreign element. */
74
+ Control: typeof InputControl & {
75
+ props: typeof controlProps;
76
+ }; /** A leading/trailing adornment. `Input.Adornment.props({ side, variant })` → its spreadable prop bag. */
77
+ Adornment: typeof InputAdornment & {
78
+ props: typeof adornmentProps;
79
+ }; /** The shared in-field action button (clear/reveal/shortcut). `Input.Action.props({ side })` → its prop bag. */
80
+ Action: typeof FieldAction & {
81
+ props: typeof actionProps;
82
+ }; /** The shared character-count readout. `Input.Count.props()` → its spreadable prop bag. */
83
+ Count: typeof FieldCount & {
84
+ props: typeof countProps;
85
+ };
86
+ };
87
+ /**
88
+ * Per-part prop and state types, mirroring Base UI's `Component.Part.Props` convention. Types-only —
89
+ * it emits no runtime code and merges with the `Input` object above, so `Input.Control` is the component
90
+ * value while `Input.Control.Props` is its prop type.
91
+ */
92
+ declare namespace Input {
93
+ /** Field height/padding/text scale — `sm`, `md`, or `lg`. */
94
+ type Size = InputSize;
95
+ /** Which edge an adornment or action sits on — `start` (leading) or `end` (trailing). */
96
+ type AdornmentSide = InputAdornmentSide;
97
+ /** How an adornment paints — `quiet` (default) or a bordered `segment` cell. */
98
+ type AdornmentVariant = InputAdornmentVariant;
99
+ /** The spreadable data-attribute prop bag every `Input.*.props()` returns (D12). */
100
+ type PartProps = InputPartProps;
101
+ namespace Root {
102
+ type Props = Omit<ComponentPropsWithRef<"div">, "children"> & {
103
+ /**
104
+ * Field height/padding/text scale.
105
+ * @default "md"
106
+ */
107
+ size?: InputSize;
108
+ /**
109
+ * Shell-only override that forces the invalid border. The default path reads the control's
110
+ * `aria-invalid`/Field validity through `:has()`, so this is only an escape hatch.
111
+ * @default false
112
+ */
113
+ invalid?: boolean;
114
+ /**
115
+ * Shell-only override that forces the disabled affordance. The default path reads the
116
+ * control's `disabled`/Field state through `:has()`, so this is only an escape hatch.
117
+ * @default false
118
+ */
119
+ disabled?: boolean; /** `Input.Control`, any `Input.Adornment`s, `Input.Action`s, and an optional `Input.Count`. */
120
+ children?: ReactNode; /** Classes merged onto the shell. */
121
+ className?: string;
122
+ };
123
+ /** Argument to the `Input.Root.props(...)` escape-hatch helper. */
124
+ type PropsArgs = InputRootPropsArgs;
125
+ }
126
+ namespace Control {
127
+ type Props = input_d_exports.Input.Props;
128
+ type State = input_d_exports.Input.State;
129
+ }
130
+ namespace Adornment {
131
+ type Props = ComponentPropsWithRef<"span"> & {
132
+ /**
133
+ * Which edge the adornment sits on — leading (`start`) or trailing (`end`).
134
+ * @default "start"
135
+ */
136
+ side?: InputAdornmentSide;
137
+ /**
138
+ * How the adornment paints — a quiet transparent flank (`quiet`) or a bordered cell flush to
139
+ * the field edge (`segment`) for prefix/suffix addon groups.
140
+ * @default "quiet"
141
+ */
142
+ variant?: InputAdornmentVariant;
143
+ };
144
+ /** Argument to the `Input.Adornment.props(...)` escape-hatch helper. */
145
+ type PropsArgs = InputAdornmentPropsArgs;
146
+ }
147
+ /** The shared in-field action button — see {@link FieldAction}. */
148
+ namespace Action {
149
+ type Props = FieldAction.Props;
150
+ /** Argument to the `Input.Action.props(...)` escape-hatch helper. */
151
+ type PropsArgs = FieldActionPropsArgs;
152
+ }
153
+ /** The shared character-count readout — see {@link FieldCount}. */
154
+ namespace Count {
155
+ type Props = FieldCount.Props;
156
+ /** Argument to the `Input.Count.props(...)` escape-hatch helper. */
157
+ type PropsArgs = FieldCountPropsArgs;
158
+ }
159
+ }
160
+ //#endregion
161
+ export { Input };
@@ -0,0 +1,117 @@
1
+ "use client";
2
+ import { actionProps, countProps } from "../field/field.props.js";
3
+ import { FieldAction, FieldCount } from "../field/field.js";
4
+ import { input_exports } from "../../primitives/input.js";
5
+ import { InputProvider, useInputContext } from "./input.context.js";
6
+ import { INPUT_SLOTS } from "./input.slots.js";
7
+ import { adornmentProps, controlProps, rootProps } from "./input.props.js";
8
+ import { jsx } from "react/jsx-runtime";
9
+ //#region src/components/input/input.tsx
10
+ /** Interactive descendants that own their own click: a click landing on (or inside) one is left alone. */
11
+ const INTERACTIVE_SELECTOR = "button, a, input, textarea, select, label, [contenteditable], [tabindex]";
12
+ /**
13
+ * The field shell — a `<div>` that paints the field surface, border, and a subtle rest shadow, and
14
+ * holds the editable control plus any adornments or in-field actions in one inline row. It owns the
15
+ * shared `size` (descendant parts read it from context) and stamps the `data-size` axis `input.css`
16
+ * keys its metrics off. State flows from the control: the shell reads the control's
17
+ * `data-invalid`/`data-disabled`/`data-readonly`/`data-filled`/`data-dirty` through `:has()`, so there
18
+ * is one source of truth. The `invalid`/`disabled` props stay as additive shell-only override escape
19
+ * hatches.
20
+ *
21
+ * Clicking the shell padding focuses the control (the shell wears `cursor: text`), while a click on an
22
+ * `Input.Action` or other interactive child is left to that element. Focus is calm and ring-less: it
23
+ * shifts the border to the focus role on `:has(:focus)`, no surrounding ring.
24
+ */
25
+ function InputRoot({ size = "md", invalid = false, disabled = false, className, children, onMouseDown, ...props }) {
26
+ const { className: _omit, ...recipe } = rootProps({
27
+ size,
28
+ invalid,
29
+ disabled
30
+ });
31
+ const value = { size };
32
+ function handleMouseDown(event) {
33
+ onMouseDown?.(event);
34
+ if (event.defaultPrevented || event.button !== 0) return;
35
+ if (event.target.closest(INTERACTIVE_SELECTOR)) return;
36
+ const control = event.currentTarget.querySelector(`[data-slot="${INPUT_SLOTS.control}"]`);
37
+ if (control) {
38
+ event.preventDefault();
39
+ control.focus();
40
+ }
41
+ }
42
+ return /* @__PURE__ */ jsx("div", {
43
+ ...recipe,
44
+ "data-slot": INPUT_SLOTS.root,
45
+ className,
46
+ onMouseDown: handleMouseDown,
47
+ ...props,
48
+ children: /* @__PURE__ */ jsx(InputProvider, {
49
+ value,
50
+ children
51
+ })
52
+ });
53
+ }
54
+ /**
55
+ * The editable control, built on Base UI's `Input`. Renders a native `<input>` and works on its own or
56
+ * wrapped in a Base UI `Field.Root`, which feeds it the validity/disabled/filled state. Place it inside
57
+ * an {@link Input.Root}; the shell paints the chrome while this part stays a clean, unstyled input so
58
+ * the value, caret, and selection inherit the field's type. `disabled`/`readOnly`/`aria-invalid` set
59
+ * here drive the shell's look through `:has()` — no need to mirror them on the root.
60
+ */
61
+ function InputControl({ className, ...props }) {
62
+ useInputContext("Control");
63
+ return /* @__PURE__ */ jsx(input_exports.Input, {
64
+ "data-slot": INPUT_SLOTS.control,
65
+ className,
66
+ ...props
67
+ });
68
+ }
69
+ /**
70
+ * A leading or trailing adornment — an icon, unit, or short affordance flanking the control. Set `side`
71
+ * to `start` (the default, leading) or `end` (trailing); the shell's flex row orders it logically, so it
72
+ * mirrors under RTL by construction. The default `quiet` variant is transparent and non-interactive;
73
+ * `variant="segment"` renders a bordered cell flush to the field edge for prefix/suffix addon groups.
74
+ * Descendant icons take the field-size-matched glyph size automatically. For an *interactive* affordance
75
+ * (clear, reveal, a shortcut chip) use {@link Input.Action} instead of marking an adornment up by hand.
76
+ */
77
+ function InputAdornment({ side = "start", variant = "quiet", className, children, ...props }) {
78
+ const { className: _omit, ...recipe } = adornmentProps({
79
+ side,
80
+ variant
81
+ });
82
+ useInputContext("Adornment");
83
+ return /* @__PURE__ */ jsx("span", {
84
+ ...recipe,
85
+ "data-slot": INPUT_SLOTS.adornment,
86
+ className,
87
+ ...props,
88
+ children
89
+ });
90
+ }
91
+ /**
92
+ * A text field: the editable control wearing the field surface, border, and an accent focus ring that
93
+ * follows the corner radius. Compose from parts — `Input.Root` is the shell that owns the `size`,
94
+ * `Input.Control` is the Base UI input (its disabled/read-only/invalid state drives the shell),
95
+ * `Input.Adornment` flanks it with a quiet or segmented icon/unit/affordance, `Input.Action` is an
96
+ * interactive in-field button (clear, reveal, shortcut) with ghost-control discipline, and `Input.Count`
97
+ * is a live character-count readout. Built on Base UI's Input, so it slots straight into a `Field.Root`
98
+ * for labels, descriptions, and validation, reads validity from the control rather than a hand-set flag,
99
+ * and stays fully keyboard-operable.
100
+ *
101
+ * The runtime compound is a plain object (kept tree-shakeable); per-part prop and state types are
102
+ * exposed through the matching `Input` namespace — e.g. `Input.Control.Props`.
103
+ */
104
+ const Input = {
105
+ /** The field shell. `Input.Root.props({ size, invalid, disabled })` → its spreadable prop bag. */
106
+ Root: Object.assign(InputRoot, { props: rootProps }),
107
+ /** The editable control. `Input.Control.props()` → its spreadable prop bag for a foreign element. */
108
+ Control: Object.assign(InputControl, { props: controlProps }),
109
+ /** A leading/trailing adornment. `Input.Adornment.props({ side, variant })` → its spreadable prop bag. */
110
+ Adornment: Object.assign(InputAdornment, { props: adornmentProps }),
111
+ /** The shared in-field action button (clear/reveal/shortcut). `Input.Action.props({ side })` → its prop bag. */
112
+ Action: Object.assign(FieldAction, { props: actionProps }),
113
+ /** The shared character-count readout. `Input.Count.props()` → its spreadable prop bag. */
114
+ Count: Object.assign(FieldCount, { props: countProps })
115
+ };
116
+ //#endregion
117
+ export { Input };