@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,40 @@
1
+ //#region src/components/collapsible/collapsible.slots.ts
2
+ /**
3
+ * The slot vocabulary every `Collapsible` part stamps as its `data-slot`. The authored source the
4
+ * orchestration file reads from, kebab-cased `{component}[-{part}]` under the `noctis-` prefix; SLOTS.md
5
+ * still generates from the token-graph declarations. The root groups state, the trigger toggles it, and
6
+ * the panel holds the disclosed content (mirroring Base UI's Collapsible); the optional heading wraps the
7
+ * trigger for the document outline, and the group is the presentational stacked container.
8
+ */
9
+ const COLLAPSIBLE_SLOTS = {
10
+ root: "noctis-collapsible",
11
+ trigger: "noctis-collapsible-trigger",
12
+ panel: "noctis-collapsible-panel",
13
+ heading: "noctis-collapsible-heading",
14
+ group: "noctis-collapsible-group"
15
+ };
16
+ /**
17
+ * The data attributes `Collapsible`'s parts expose for styling and testing. Each member's value is the
18
+ * attribute name and its JSDoc is the description; the docs API reference reads this enum directly, so
19
+ * the documented attributes can't drift from the precompiled `collapsible.css` rules that key off them.
20
+ * The state attributes are stamped at runtime by Base UI off the live open state.
21
+ */
22
+ let CollapsibleDataAttributes = /* @__PURE__ */ function(CollapsibleDataAttributes) {
23
+ /** The catalog slot that anchors every `collapsible.css` rule and marks the part for SLOTS.md/testing. */
24
+ CollapsibleDataAttributes["slot"] = "data-slot";
25
+ /** Present on the panel while the disclosure is open. */
26
+ CollapsibleDataAttributes["open"] = "data-open";
27
+ /** Present on the panel while the disclosure is closed. */
28
+ CollapsibleDataAttributes["closed"] = "data-closed";
29
+ /** Present on the trigger while its panel is open — the hook the disclosure chevron rotates off. */
30
+ CollapsibleDataAttributes["panelOpen"] = "data-panel-open";
31
+ /** Present on the panel for the first animation frame as it opens — the from-zero-height keyframe edge. */
32
+ CollapsibleDataAttributes["startingStyle"] = "data-starting-style";
33
+ /** Present on the panel for the final animation frame as it closes — the to-zero-height keyframe edge. */
34
+ CollapsibleDataAttributes["endingStyle"] = "data-ending-style";
35
+ /** Present on the trigger and panel when the collapsible is disabled. */
36
+ CollapsibleDataAttributes["disabled"] = "data-disabled";
37
+ return CollapsibleDataAttributes;
38
+ }({});
39
+ //#endregion
40
+ export { COLLAPSIBLE_SLOTS, CollapsibleDataAttributes };
@@ -0,0 +1,23 @@
1
+ //#region src/components/collapsible/collapsible.types.d.ts
2
+ /**
3
+ * Shared, runtime-free Collapsible types. Kept in their own module so the orchestration, props, and
4
+ * context files import one shape without a cycle through `collapsible.tsx`.
5
+ */
6
+ /**
7
+ * The disclosure indicator. `true` (the default) and `"chevron-end"` render the chevron after the label
8
+ * — it points down and rotates to up as the panel opens (the in-flow accordion idiom). `"chevron-start"`
9
+ * is the leading "twisty": the chevron sits *before* the label, points toward the content's start edge
10
+ * (right in LTR, mirrored in RTL), and rotates down on open — the file-tree / sidebar-row reading.
11
+ * `false` omits the built-in chevron so a consumer can supply their own.
12
+ */
13
+ type CollapsibleIndicator = boolean | "chevron-start" | "chevron-end";
14
+ /** The heading level `Collapsible.Heading` renders. Defaults to `3`. */
15
+ type CollapsibleHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
16
+ /**
17
+ * The ARIA role the open panel carries. `"group"` (the default, matching React Aria) names a labelled
18
+ * grouping without adding a landmark; `"region"` promotes the panel to a landmark for the SR rotor —
19
+ * reserve it for a small number of significant disclosures so the landmark list stays useful.
20
+ */
21
+ type CollapsiblePanelRole = "group" | "region";
22
+ //#endregion
23
+ export { CollapsibleHeadingLevel, CollapsibleIndicator, CollapsiblePanelRole };
@@ -0,0 +1,2 @@
1
+ import { Collapsible } from "./collapsible.js";
2
+ import { CollapsibleDataAttributes } from "./collapsible.slots.js";
@@ -0,0 +1,11 @@
1
+ import { ReactElement } from "react";
2
+
3
+ //#region src/components/color-picker/area.d.ts
4
+ /** The 2D saturation × brightness field: horizontal sets saturation, vertical sets value. */
5
+ declare function ColorPickerArea({
6
+ className
7
+ }: {
8
+ className?: string;
9
+ }): ReactElement;
10
+ //#endregion
11
+ export { ColorPickerArea };
@@ -0,0 +1,148 @@
1
+ "use client";
2
+ import { direction_provider_exports } from "../../primitives/direction-provider.js";
3
+ import { FIELD_SATURATION_GRADIENT, FIELD_VALUE_GRADIENT, hsvToRgb, hueCss, rgbCss } from "./color.js";
4
+ import { COLOR_PICKER_SLOTS } from "./color-picker.slots.js";
5
+ import { useColorPickerContext } from "./context.js";
6
+ import { useColorPickerStore } from "./store.js";
7
+ import { useRef } from "react";
8
+ import clsx$1 from "clsx";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+ //#region src/components/color-picker/area.tsx
11
+ /** The 2D saturation × brightness field: horizontal sets saturation, vertical sets value. */
12
+ function ColorPickerArea({ className }) {
13
+ const { disabled, store, labels } = useColorPickerContext("Area");
14
+ const direction = (0, direction_provider_exports.useDirection)();
15
+ const hsv = useColorPickerStore(store, (state) => state.hsv);
16
+ const color = useColorPickerStore(store, (state) => state.color);
17
+ const areaRef = useRef(null);
18
+ const draggingRef = useRef(false);
19
+ const updateFromPoint = (clientX, clientY) => {
20
+ const node = areaRef.current;
21
+ if (!node) return;
22
+ const rect = node.getBoundingClientRect();
23
+ const ratioX = clamp01((clientX - rect.left) / rect.width);
24
+ const s = (direction === "rtl" ? 1 - ratioX : ratioX) * 100;
25
+ const v = (1 - clamp01((clientY - rect.top) / rect.height)) * 100;
26
+ commit(store, {
27
+ ...store.getState().hsv,
28
+ s,
29
+ v
30
+ });
31
+ };
32
+ const handlePointerDown = (event) => {
33
+ if (disabled || event.button !== void 0 && event.button !== 0) return;
34
+ draggingRef.current = true;
35
+ areaRef.current?.setPointerCapture(event.pointerId);
36
+ areaRef.current?.focus({ preventScroll: true });
37
+ updateFromPoint(event.clientX, event.clientY);
38
+ };
39
+ const handlePointerMove = (event) => {
40
+ if (draggingRef.current) updateFromPoint(event.clientX, event.clientY);
41
+ };
42
+ const handlePointerUp = (event) => {
43
+ if (!draggingRef.current) return;
44
+ draggingRef.current = false;
45
+ areaRef.current?.releasePointerCapture(event.pointerId);
46
+ };
47
+ const handleKeyDown = (event) => {
48
+ if (disabled) return;
49
+ const current = store.getState().hsv;
50
+ const step = event.shiftKey ? 10 : 1;
51
+ const inlineSign = direction === "rtl" ? -1 : 1;
52
+ const next = nextFromKey(event.key, current, step, inlineSign);
53
+ if (!next) return;
54
+ event.preventDefault();
55
+ commit(store, next);
56
+ };
57
+ const sat = Math.round(hsv.s);
58
+ const val = Math.round(hsv.v);
59
+ return /* @__PURE__ */ jsxs("div", {
60
+ ref: areaRef,
61
+ "data-slot": COLOR_PICKER_SLOTS.area,
62
+ "data-disabled": disabled ? "" : void 0,
63
+ role: "slider",
64
+ tabIndex: disabled ? -1 : 0,
65
+ "aria-label": labels.field,
66
+ "aria-valuemin": 0,
67
+ "aria-valuemax": 100,
68
+ "aria-valuenow": sat,
69
+ "aria-valuetext": `${sat}%, ${val}%`,
70
+ "aria-disabled": disabled || void 0,
71
+ onPointerDown: handlePointerDown,
72
+ onPointerMove: handlePointerMove,
73
+ onPointerUp: handlePointerUp,
74
+ onPointerCancel: handlePointerUp,
75
+ onKeyDown: handleKeyDown,
76
+ style: { backgroundColor: hueCss(hsv.h) },
77
+ className: clsx$1(className),
78
+ children: [
79
+ /* @__PURE__ */ jsx("div", {
80
+ "aria-hidden": true,
81
+ "data-color-picker-area-gradient": "saturation",
82
+ style: { background: FIELD_SATURATION_GRADIENT }
83
+ }),
84
+ /* @__PURE__ */ jsx("div", {
85
+ "aria-hidden": true,
86
+ "data-color-picker-area-gradient": "value",
87
+ style: { background: FIELD_VALUE_GRADIENT }
88
+ }),
89
+ /* @__PURE__ */ jsx("span", {
90
+ "aria-hidden": true,
91
+ "data-slot": COLOR_PICKER_SLOTS.areaThumb,
92
+ style: {
93
+ insetInlineStart: `${hsv.s}%`,
94
+ insetBlockStart: `${100 - hsv.v}%`,
95
+ backgroundColor: rgbCss(color)
96
+ }
97
+ })
98
+ ]
99
+ });
100
+ }
101
+ function commit(store, hsv) {
102
+ store.setColorAndHsv(hsvToRgb(hsv), hsv);
103
+ }
104
+ function nextFromKey(key, current, step, inlineSign) {
105
+ switch (key) {
106
+ case "ArrowLeft": return {
107
+ ...current,
108
+ s: clampPct(current.s - step * inlineSign)
109
+ };
110
+ case "ArrowRight": return {
111
+ ...current,
112
+ s: clampPct(current.s + step * inlineSign)
113
+ };
114
+ case "ArrowUp": return {
115
+ ...current,
116
+ v: clampPct(current.v + step)
117
+ };
118
+ case "ArrowDown": return {
119
+ ...current,
120
+ v: clampPct(current.v - step)
121
+ };
122
+ case "Home": return {
123
+ ...current,
124
+ s: 0
125
+ };
126
+ case "End": return {
127
+ ...current,
128
+ s: 100
129
+ };
130
+ case "PageUp": return {
131
+ ...current,
132
+ v: 100
133
+ };
134
+ case "PageDown": return {
135
+ ...current,
136
+ v: 0
137
+ };
138
+ default: return null;
139
+ }
140
+ }
141
+ function clamp01(n) {
142
+ return Math.max(0, Math.min(1, n));
143
+ }
144
+ function clampPct(n) {
145
+ return Math.max(0, Math.min(100, n));
146
+ }
147
+ //#endregion
148
+ export { ColorPickerArea };
@@ -0,0 +1,110 @@
1
+ import { Surface } from "../surface/surface.js";
2
+ import { ColorPickerArea } from "./area.js";
3
+ import { ColorFormat } from "./color.js";
4
+ import { alphaSliderProps, areaProps, eyeDropperProps, formatTabsProps, hueSliderProps, inputProps, panelProps, swatchProps } from "./color-picker.props.js";
5
+ import { ColorPickerLabels } from "./context.js";
6
+ import { ColorPickerEyeDropper } from "./eyedropper.js";
7
+ import { ColorPickerFormatTabs } from "./format-tabs.js";
8
+ import { ColorPickerInput } from "./inputs.js";
9
+ import { ColorPickerAlphaSlider, ColorPickerHueSlider } from "./sliders.js";
10
+ import { ColorPickerSwatch } from "./swatch.js";
11
+ import { ReactElement, ReactNode } from "react";
12
+
13
+ //#region src/components/color-picker/color-picker.d.ts
14
+ /**
15
+ * Owns the color state and shares it with every part. Works controlled (`value` + `onValueChange`) or
16
+ * uncontrolled (`defaultValue`); reads and writes any CSS color, defaulting to OKLCH output. Renders no
17
+ * element of its own — arrange the parts inside a `ColorPicker.Panel`. The picker is purely a picker; to
18
+ * float it, wrap the `Panel` in the standalone `Popover` (see the docs example).
19
+ */
20
+ declare function ColorPickerRoot({
21
+ value,
22
+ defaultValue,
23
+ format,
24
+ defaultFormat,
25
+ alpha,
26
+ disabled,
27
+ readOnly,
28
+ onValueChange,
29
+ onFormatChange,
30
+ labels,
31
+ children
32
+ }: ColorPicker.Root.Props): ReactElement;
33
+ /** The container the parts sit in — a `Surface` card. Drop it in the page, or inside a `Popover` to float it. */
34
+ declare function ColorPickerPanel({
35
+ className,
36
+ ...props
37
+ }: ColorPicker.Panel.Props): ReactElement;
38
+ /**
39
+ * An OKLCH-first color picker: a 2D saturation/brightness field, a hue rail and an optional alpha
40
+ * rail, a live swatch, the native eyedropper where the browser has it, a format selector
41
+ * (OKLCH · HEX · RGB · HSL), and a text field that reads any CSS color and writes the chosen format.
42
+ *
43
+ * Compose it from parts. `ColorPicker.Root` owns the color; arrange `Area`, `HueSlider`,
44
+ * `AlphaSlider`, `Swatch`, `EyeDropper`, `FormatTabs`, and `Input` inside a `ColorPicker.Panel`. The
45
+ * picker is inline-only — to float it, wrap the `Panel` in the standalone `Popover`. The field and hue
46
+ * rail edit in HSV (so hue survives the gray axis), and color science runs through `culori` in the
47
+ * picker's color core. Built on Base UI's Slider and Tabs for behavior and a11y; the runtime compound
48
+ * is a plain object, with per-part prop types on the matching namespace.
49
+ */
50
+ declare const ColorPicker: {
51
+ Root: typeof ColorPickerRoot;
52
+ Panel: typeof ColorPickerPanel & {
53
+ props: typeof panelProps;
54
+ };
55
+ Area: typeof ColorPickerArea & {
56
+ props: typeof areaProps;
57
+ };
58
+ HueSlider: typeof ColorPickerHueSlider & {
59
+ props: typeof hueSliderProps;
60
+ };
61
+ AlphaSlider: typeof ColorPickerAlphaSlider & {
62
+ props: typeof alphaSliderProps;
63
+ };
64
+ Swatch: typeof ColorPickerSwatch & {
65
+ props: typeof swatchProps;
66
+ };
67
+ EyeDropper: typeof ColorPickerEyeDropper & {
68
+ props: typeof eyeDropperProps;
69
+ };
70
+ FormatTabs: typeof ColorPickerFormatTabs & {
71
+ props: typeof formatTabsProps;
72
+ };
73
+ Input: typeof ColorPickerInput & {
74
+ props: typeof inputProps;
75
+ };
76
+ };
77
+ /** Per-part prop types, mirroring Base UI's `Component.Part.Props` convention; merges with the object. */
78
+ declare namespace ColorPicker {
79
+ namespace Root {
80
+ /** Props for {@link ColorPicker.Root}. */
81
+ interface Props {
82
+ /** Controlled color, any CSS string. Pair with `onValueChange`. */
83
+ value?: string;
84
+ /** Initial color for the uncontrolled case. Defaults to the Noctis Blue accent seed. */
85
+ defaultValue?: string;
86
+ /** Controlled output format. Pair with `onFormatChange`. */
87
+ format?: ColorFormat;
88
+ /** Initial format for the uncontrolled case. Defaults to `oklch`. */
89
+ defaultFormat?: ColorFormat;
90
+ /** Whether the alpha channel is editable and serialized. Defaults to `true`. */
91
+ alpha?: boolean;
92
+ /** Disable every control and dim the picker. */
93
+ disabled?: boolean;
94
+ /** Make the text input read-only — the field and sliders still drive the value. */
95
+ readOnly?: boolean;
96
+ /** Fires with the color in the active format whenever the user edits it. */
97
+ onValueChange?: (value: string) => void;
98
+ /** Fires when the active output format changes. */
99
+ onFormatChange?: (format: ColorFormat) => void;
100
+ /** Localized accessible names for the parts. Merged over the English defaults. */
101
+ labels?: Partial<ColorPickerLabels>;
102
+ children?: ReactNode;
103
+ }
104
+ }
105
+ namespace Panel {
106
+ type Props = Surface.Props;
107
+ }
108
+ }
109
+ //#endregion
110
+ export { ColorPicker };
@@ -0,0 +1,149 @@
1
+ "use client";
2
+ import { Surface } from "../surface/surface.js";
3
+ import { formatColor, parseColor, rgbToHsv } from "./color.js";
4
+ import { COLOR_PICKER_SLOTS } from "./color-picker.slots.js";
5
+ import { ColorPickerProvider, DEFAULT_LABELS } from "./context.js";
6
+ import { createColorPickerStore } from "./store.js";
7
+ import { ColorPickerArea } from "./area.js";
8
+ import { alphaSliderProps, areaProps, eyeDropperProps, formatTabsProps, hueSliderProps, inputProps, panelProps, swatchProps } from "./color-picker.props.js";
9
+ import { ColorPickerEyeDropper } from "./eyedropper.js";
10
+ import { ColorPickerFormatTabs } from "./format-tabs.js";
11
+ import { ColorPickerInput } from "./inputs.js";
12
+ import { ColorPickerAlphaSlider, ColorPickerHueSlider } from "./sliders.js";
13
+ import { ColorPickerSwatch } from "./swatch.js";
14
+ import { useEffect, useMemo, useRef } from "react";
15
+ import clsx$1 from "clsx";
16
+ import { jsx } from "react/jsx-runtime";
17
+ //#region src/components/color-picker/color-picker.tsx
18
+ /** A pure-black fallback used only if `DEFAULT_COLOR` ever failed to parse — it never does. */
19
+ const BLACK = {
20
+ r: 0,
21
+ g: 0,
22
+ b: 0,
23
+ a: 1
24
+ };
25
+ /**
26
+ * Owns the color state and shares it with every part. Works controlled (`value` + `onValueChange`) or
27
+ * uncontrolled (`defaultValue`); reads and writes any CSS color, defaulting to OKLCH output. Renders no
28
+ * element of its own — arrange the parts inside a `ColorPicker.Panel`. The picker is purely a picker; to
29
+ * float it, wrap the `Panel` in the standalone `Popover` (see the docs example).
30
+ */
31
+ function ColorPickerRoot({ value, defaultValue, format, defaultFormat = "oklch", alpha = true, disabled = false, readOnly = false, onValueChange, onFormatChange, labels, children }) {
32
+ const storeRef = useRef(null);
33
+ const lastValue = useRef("");
34
+ const lastFormat = useRef(defaultFormat);
35
+ const syncingValue = useRef(false);
36
+ const syncingFormat = useRef(false);
37
+ if (storeRef.current === null) {
38
+ const seed = parseColor(value ?? defaultValue ?? "oklch(0.504 0.151 275.2)") ?? BLACK;
39
+ const color = {
40
+ ...seed,
41
+ a: alpha ? seed.a : 1
42
+ };
43
+ const initialFormat = format ?? defaultFormat;
44
+ storeRef.current = createColorPickerStore({
45
+ color,
46
+ hsv: rgbToHsv(color),
47
+ format: initialFormat
48
+ });
49
+ lastValue.current = formatColor(color, initialFormat, alpha);
50
+ lastFormat.current = initialFormat;
51
+ }
52
+ const store = storeRef.current;
53
+ useEffect(() => store.subscribe(() => {
54
+ const state = store.getState();
55
+ if (state.format !== lastFormat.current) {
56
+ lastFormat.current = state.format;
57
+ if (!syncingFormat.current) onFormatChange?.(state.format);
58
+ }
59
+ const next = formatColor(state.color, state.format, alpha);
60
+ if (next !== lastValue.current) {
61
+ lastValue.current = next;
62
+ if (!syncingValue.current) onValueChange?.(next);
63
+ }
64
+ }), [
65
+ store,
66
+ alpha,
67
+ onValueChange,
68
+ onFormatChange
69
+ ]);
70
+ useEffect(() => {
71
+ if (value === void 0 || value === lastValue.current) return;
72
+ const rgb = parseColor(value);
73
+ if (!rgb) return;
74
+ const color = {
75
+ ...rgb,
76
+ a: alpha ? rgb.a : 1
77
+ };
78
+ lastValue.current = formatColor(color, store.getState().format, alpha);
79
+ syncingValue.current = true;
80
+ store.setColorAndHsv(color, rgbToHsv(color));
81
+ syncingValue.current = false;
82
+ }, [
83
+ value,
84
+ alpha,
85
+ store
86
+ ]);
87
+ useEffect(() => {
88
+ if (format === void 0 || format === store.getState().format) return;
89
+ syncingFormat.current = true;
90
+ store.setFormat(format);
91
+ syncingFormat.current = false;
92
+ }, [format, store]);
93
+ const resolvedLabels = useMemo(() => ({
94
+ ...DEFAULT_LABELS,
95
+ ...labels
96
+ }), [labels]);
97
+ return /* @__PURE__ */ jsx(ColorPickerProvider, {
98
+ value: useMemo(() => ({
99
+ store,
100
+ alpha,
101
+ disabled,
102
+ readOnly,
103
+ labels: resolvedLabels
104
+ }), [
105
+ store,
106
+ alpha,
107
+ disabled,
108
+ readOnly,
109
+ resolvedLabels
110
+ ]),
111
+ children
112
+ });
113
+ }
114
+ /** The container the parts sit in — a `Surface` card. Drop it in the page, or inside a `Popover` to float it. */
115
+ function ColorPickerPanel({ className, ...props }) {
116
+ return /* @__PURE__ */ jsx(Surface, {
117
+ "data-slot": COLOR_PICKER_SLOTS.panel,
118
+ elevation: "elevated",
119
+ bordered: true,
120
+ shadow: "card",
121
+ className: clsx$1(className),
122
+ ...props
123
+ });
124
+ }
125
+ /**
126
+ * An OKLCH-first color picker: a 2D saturation/brightness field, a hue rail and an optional alpha
127
+ * rail, a live swatch, the native eyedropper where the browser has it, a format selector
128
+ * (OKLCH · HEX · RGB · HSL), and a text field that reads any CSS color and writes the chosen format.
129
+ *
130
+ * Compose it from parts. `ColorPicker.Root` owns the color; arrange `Area`, `HueSlider`,
131
+ * `AlphaSlider`, `Swatch`, `EyeDropper`, `FormatTabs`, and `Input` inside a `ColorPicker.Panel`. The
132
+ * picker is inline-only — to float it, wrap the `Panel` in the standalone `Popover`. The field and hue
133
+ * rail edit in HSV (so hue survives the gray axis), and color science runs through `culori` in the
134
+ * picker's color core. Built on Base UI's Slider and Tabs for behavior and a11y; the runtime compound
135
+ * is a plain object, with per-part prop types on the matching namespace.
136
+ */
137
+ const ColorPicker = {
138
+ Root: ColorPickerRoot,
139
+ Panel: Object.assign(ColorPickerPanel, { props: panelProps }),
140
+ Area: Object.assign(ColorPickerArea, { props: areaProps }),
141
+ HueSlider: Object.assign(ColorPickerHueSlider, { props: hueSliderProps }),
142
+ AlphaSlider: Object.assign(ColorPickerAlphaSlider, { props: alphaSliderProps }),
143
+ Swatch: Object.assign(ColorPickerSwatch, { props: swatchProps }),
144
+ EyeDropper: Object.assign(ColorPickerEyeDropper, { props: eyeDropperProps }),
145
+ FormatTabs: Object.assign(ColorPickerFormatTabs, { props: formatTabsProps }),
146
+ Input: Object.assign(ColorPickerInput, { props: inputProps })
147
+ };
148
+ //#endregion
149
+ export { ColorPicker };
@@ -0,0 +1,69 @@
1
+ //#region src/components/color-picker/color-picker.props.d.ts
2
+ /** A spreadable attribute prop bag — the shape every `ColorPicker.*.props()` returns. */
3
+ type ColorPickerPartProps = {
4
+ /** The slot value the matching `color-picker.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/aria attribute present or absent (`undefined`); never `false`. */
6
+ [attr: `data-${string}`]: string | undefined;
7
+ };
8
+ /** A bag that may also flag `aria-invalid`/`aria-disabled` (the input/field state hooks the CSS reads). */
9
+ type ColorPickerInputProps = ColorPickerPartProps & {
10
+ /** Present (`"true"`) on a malformed in-progress draft; the CSS re-points the field to the danger role. */"aria-invalid"?: "true";
11
+ };
12
+ /** Common shape: every part's `.props()` accepts an optional `className` passthrough. */
13
+ interface BasePropsArgs {
14
+ /** Forwarded verbatim onto the returned prop bag. */
15
+ className?: string;
16
+ }
17
+ /** Argument to a part with a `disabled` state — the field, the rails, and the format group dim on it. */
18
+ interface ColorPickerDisablablePropsArgs extends BasePropsArgs {
19
+ /** Whether the control is disabled (drives the dimmed affordance via `data-disabled`). */
20
+ disabled?: boolean;
21
+ }
22
+ /** Argument to `ColorPicker.Input.props(...)` — the field's `disabled` + malformed-draft `invalid` state. */
23
+ interface ColorPickerInputPropsArgs extends BasePropsArgs {
24
+ /** Whether the field is disabled (drives the not-allowed affordance via `:disabled`). */
25
+ disabled?: boolean;
26
+ /** Whether the current draft is malformed (drives the danger re-point via `aria-invalid`). */
27
+ invalid?: boolean;
28
+ }
29
+ /** Argument to a stateless part's `.props(...)` — no state of its own; look is fixed. */
30
+ type ColorPickerStatelessPropsArgs = BasePropsArgs;
31
+ /** Panel prop bag: just the slot anchor (the surface paint is owned by the composed Surface). */
32
+ declare function panelProps({
33
+ className
34
+ }?: ColorPickerStatelessPropsArgs): ColorPickerPartProps;
35
+ /** Area prop bag: slot anchor plus the `data-disabled` state the field dims/freezes off. */
36
+ declare function areaProps({
37
+ disabled,
38
+ className
39
+ }?: ColorPickerDisablablePropsArgs): ColorPickerPartProps;
40
+ /** Hue-rail prop bag: slot anchor plus the `data-disabled` state. */
41
+ declare function hueSliderProps({
42
+ disabled,
43
+ className
44
+ }?: ColorPickerDisablablePropsArgs): ColorPickerPartProps;
45
+ /** Alpha-rail prop bag: slot anchor plus the `data-disabled` state. */
46
+ declare function alphaSliderProps({
47
+ disabled,
48
+ className
49
+ }?: ColorPickerDisablablePropsArgs): ColorPickerPartProps;
50
+ /** Swatch prop bag: just the slot anchor (the fill paints as an inline `background`). */
51
+ declare function swatchProps({
52
+ className
53
+ }?: ColorPickerStatelessPropsArgs): ColorPickerPartProps;
54
+ /** EyeDropper prop bag: just the slot anchor (the look is the composed ghost icon Button's). */
55
+ declare function eyeDropperProps({
56
+ className
57
+ }?: ColorPickerStatelessPropsArgs): ColorPickerPartProps;
58
+ /** Format-tabs prop bag: slot anchor plus the `data-disabled` state the group dims off. */
59
+ declare function formatTabsProps({
60
+ disabled,
61
+ className
62
+ }?: ColorPickerDisablablePropsArgs): ColorPickerPartProps;
63
+ /** Input prop bag: slot anchor plus the `aria-invalid` danger re-point (disabled flows through `:disabled`). */
64
+ declare function inputProps({
65
+ invalid,
66
+ className
67
+ }?: ColorPickerInputPropsArgs): ColorPickerInputProps;
68
+ //#endregion
69
+ export { alphaSliderProps, areaProps, eyeDropperProps, formatTabsProps, hueSliderProps, inputProps, panelProps, swatchProps };
@@ -0,0 +1,74 @@
1
+ import { COLOR_PICKER_SLOTS } from "./color-picker.slots.js";
2
+ //#region src/components/color-picker/color-picker.props.ts
3
+ /**
4
+ * The D12 unified variant contract for ColorPicker — a per-part set of `props(...)` builders that each
5
+ * return a **spreadable props object** of the form `{ "data-slot": "noctis-color-picker-<part>",
6
+ * ...dataAttrs }`, derived from the part's state inputs.
7
+ *
8
+ * Under the single-`data-slot` anchor model the `data-slot` is the only styling hook needed —
9
+ * `color-picker.css` keys every rule off it — so spreading a part's `props()` onto a *foreign* element
10
+ * styles it as that part:
11
+ *
12
+ * <input {...ColorPicker.Input.props({ invalid: true })} />
13
+ * // → <input data-slot="noctis-color-picker-input" aria-invalid="true">
14
+ *
15
+ * The escape hatch carries no className (styling is attribute-driven); an optional `className`
16
+ * passthrough is accepted and forwarded verbatim. The same state→attribute→values mapping is emitted as
17
+ * data from the token graph (`generated/declarations.json` → `variantSchema`) so non-React / agent
18
+ * 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
+ /** Panel prop bag: just the slot anchor (the surface paint is owned by the composed Surface). */
27
+ function panelProps({ className } = {}) {
28
+ return withClassName({ "data-slot": COLOR_PICKER_SLOTS.panel }, className);
29
+ }
30
+ /** Area prop bag: slot anchor plus the `data-disabled` state the field dims/freezes off. */
31
+ function areaProps({ disabled, className } = {}) {
32
+ return withClassName({
33
+ "data-slot": COLOR_PICKER_SLOTS.area,
34
+ "data-disabled": flag(disabled)
35
+ }, className);
36
+ }
37
+ /** Hue-rail prop bag: slot anchor plus the `data-disabled` state. */
38
+ function hueSliderProps({ disabled, className } = {}) {
39
+ return withClassName({
40
+ "data-slot": COLOR_PICKER_SLOTS.hue,
41
+ "data-disabled": flag(disabled)
42
+ }, className);
43
+ }
44
+ /** Alpha-rail prop bag: slot anchor plus the `data-disabled` state. */
45
+ function alphaSliderProps({ disabled, className } = {}) {
46
+ return withClassName({
47
+ "data-slot": COLOR_PICKER_SLOTS.alpha,
48
+ "data-disabled": flag(disabled)
49
+ }, className);
50
+ }
51
+ /** Swatch prop bag: just the slot anchor (the fill paints as an inline `background`). */
52
+ function swatchProps({ className } = {}) {
53
+ return withClassName({ "data-slot": COLOR_PICKER_SLOTS.swatch }, className);
54
+ }
55
+ /** EyeDropper prop bag: just the slot anchor (the look is the composed ghost icon Button's). */
56
+ function eyeDropperProps({ className } = {}) {
57
+ return withClassName({ "data-slot": COLOR_PICKER_SLOTS.eyeDropper }, className);
58
+ }
59
+ /** Format-tabs prop bag: slot anchor plus the `data-disabled` state the group dims off. */
60
+ function formatTabsProps({ disabled, className } = {}) {
61
+ return withClassName({
62
+ "data-slot": COLOR_PICKER_SLOTS.formatTabs,
63
+ "data-disabled": flag(disabled)
64
+ }, className);
65
+ }
66
+ /** Input prop bag: slot anchor plus the `aria-invalid` danger re-point (disabled flows through `:disabled`). */
67
+ function inputProps({ invalid, className } = {}) {
68
+ return withClassName({
69
+ "data-slot": COLOR_PICKER_SLOTS.input,
70
+ "aria-invalid": invalid ? "true" : void 0
71
+ }, className);
72
+ }
73
+ //#endregion
74
+ export { alphaSliderProps, areaProps, eyeDropperProps, formatTabsProps, hueSliderProps, inputProps, panelProps, swatchProps };
@@ -0,0 +1,21 @@
1
+ //#region src/components/color-picker/color-picker.slots.ts
2
+ /**
3
+ * The slot vocabulary every `ColorPicker` part stamps as its `data-slot`. The authored source the
4
+ * orchestration and part files read from, kebab-cased `{component}-{part}`; SLOTS.md still generates
5
+ * from the token-graph declarations.
6
+ */
7
+ const COLOR_PICKER_SLOTS = {
8
+ panel: "noctis-color-picker-panel",
9
+ area: "noctis-color-picker-area",
10
+ areaThumb: "noctis-color-picker-area-thumb",
11
+ hue: "noctis-color-picker-hue",
12
+ hueThumb: "noctis-color-picker-hue-thumb",
13
+ alpha: "noctis-color-picker-alpha",
14
+ alphaThumb: "noctis-color-picker-alpha-thumb",
15
+ swatch: "noctis-color-picker-swatch",
16
+ eyeDropper: "noctis-color-picker-eye-dropper",
17
+ formatTabs: "noctis-color-picker-format-tabs",
18
+ input: "noctis-color-picker-input"
19
+ };
20
+ //#endregion
21
+ export { COLOR_PICKER_SLOTS };
@@ -0,0 +1,18 @@
1
+ //#region src/components/color-picker/color.d.ts
2
+ /**
3
+ * The color core for {@link ColorPicker} — the one module in the design system that legitimately
4
+ * authors raw color, the same exception the theme engine carries. Every conversion, every CSS color
5
+ * string the picker paints (thumb fills, hue spectrum, the saturation/value field, the alpha
6
+ * checkerboard) is produced here, so the component files stay free of raw color literals and keep to
7
+ * semantic tokens. `stridge/semantic-tokens` is turned off for this file alone in `.oxlintrc.json`.
8
+ *
9
+ * `culori` does the science; its color objects never leak past this module. Internally the picker
10
+ * stores an RGB canonical plus an HSV mirror (HSV drives the 2D field and the hue wheel, where RGB
11
+ * round-trips lose the hue at the gray axis). Channel scales follow editing-friendly ranges, not
12
+ * culori's `[0,1]`: RGB `[0,255]`, HSV/HSL `h [0,360]` · `s,v,l [0,100]`, OKLCH `l [0,100]%` ·
13
+ * `c [0,0.4]` · `h [0,360]`, alpha `[0,1]` throughout.
14
+ */
15
+ /** The serialization formats the picker can read and write. OKLCH leads — it is the system default. */
16
+ type ColorFormat = "oklch" | "hex" | "rgb" | "hsl";
17
+ //#endregion
18
+ export { ColorFormat };