@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,314 @@
1
+ "use client";
2
+ import { Icon } from "../../icons/icon.js";
3
+ import { CheckIcon, ChevronDownIcon, ChevronUpIcon, ChevronsUpDownIcon } from "../../icons/glyphs.js";
4
+ import { useNoctisStringFormatter } from "../../core/use-injected-labels.js";
5
+ import { Surface } from "../surface/surface.js";
6
+ import { select_exports } from "../../primitives/select.js";
7
+ import { SelectContextProvider, useSelectContext } from "./select.context.js";
8
+ import { SELECT_SLOTS } from "./select.slots.js";
9
+ import { backdropProps, groupLabelProps, groupProps, iconProps, itemDescriptionProps, itemIconProps, itemIndicatorProps, itemProps, itemTextProps, listProps, popupProps, scrollDownArrowProps, scrollUpArrowProps, separatorProps, triggerProps, valueProps } from "./select.props.js";
10
+ import clsx$1 from "clsx";
11
+ import { jsx, jsxs } from "react/jsx-runtime";
12
+ //#region src/components/select/select.tsx
13
+ /**
14
+ * Owns the selected value and open state, sharing the control `size` (plus the `multiple` and `invalid`
15
+ * flags) with the trigger and rows. Wraps Base UI's Select. Pass `value`/`defaultValue` and
16
+ * `onValueChange` to control the selection, `items` to let `Select.Value` render a chosen item's label
17
+ * instead of its raw value, and `multiple` for a multi-select (the trigger then reads "N selected").
18
+ * `readOnly`, `required`, `disabled`, and `name` pass straight through to Base UI; `invalid` is an
19
+ * additive shell override (a `Field.Root` that turns invalid already marks the trigger). `modal`
20
+ * defaults to `false` so the page keeps scrolling while the popup is open — set it `true`
21
+ * to lock page scroll and render the `Backdrop`.
22
+ */
23
+ function SelectRoot({ size = "md", invalid = false, modal = false, children, ...props }) {
24
+ return /* @__PURE__ */ jsx(SelectContextProvider, {
25
+ value: {
26
+ size,
27
+ multiple: props.multiple === true,
28
+ invalid,
29
+ modal
30
+ },
31
+ children: /* @__PURE__ */ jsx(select_exports.Select.Root, {
32
+ modal,
33
+ ...props,
34
+ children
35
+ })
36
+ });
37
+ }
38
+ /**
39
+ * The field-shaped control that opens the popup. Wears the field look (surface, hairline border, calm
40
+ * ring-less focus — the accent border lights on focus) and pairs a `Select.Value` with a
41
+ * trailing chevron; reads the root's `size` to size itself and the root's `invalid` to paint the danger
42
+ * border. Base UI stamps `data-disabled`/`data-readonly` for the disabled/read-only chrome.
43
+ */
44
+ function SelectTrigger({ className, children, ...props }) {
45
+ const { size, invalid } = useSelectContext("Trigger");
46
+ return /* @__PURE__ */ jsx(select_exports.Select.Trigger, {
47
+ "data-slot": SELECT_SLOTS.trigger,
48
+ "data-size": size,
49
+ ...invalid ? { "data-invalid": "" } : {},
50
+ className: clsx$1(className),
51
+ ...props,
52
+ children
53
+ });
54
+ }
55
+ /**
56
+ * Renders the selected item's label inside the trigger, falling back to `placeholder` when nothing is
57
+ * selected. Pass `items` on `Select.Root` (or a formatting child function) to map a raw value to a
58
+ * label. Under a `multiple` root it renders a localized "N selected" summary instead — pass a child
59
+ * function to override the trigger display entirely (e.g. mirror the chosen row's leading glyph).
60
+ */
61
+ function SelectValue({ className, children, placeholder, ...props }) {
62
+ const { multiple } = useSelectContext("Value");
63
+ const formatter = useNoctisStringFormatter();
64
+ const render = children === void 0 && multiple ? (value) => {
65
+ const count = Array.isArray(value) ? value.length : 0;
66
+ return count > 0 ? formatter.format("select.selectedCount", { count }) : placeholder ?? null;
67
+ } : children;
68
+ return /* @__PURE__ */ jsx(select_exports.Select.Value, {
69
+ "data-slot": SELECT_SLOTS.value,
70
+ placeholder,
71
+ className: clsx$1(className),
72
+ ...props,
73
+ children: render
74
+ });
75
+ }
76
+ /** The trailing chevron on the trigger — a vertical double-chevron marking the control as a select. */
77
+ function SelectIcon({ className, children, ...props }) {
78
+ return /* @__PURE__ */ jsx(select_exports.Select.Icon, {
79
+ "data-slot": SELECT_SLOTS.icon,
80
+ className: clsx$1(className),
81
+ ...props,
82
+ children: children ?? /* @__PURE__ */ jsx(Icon, {
83
+ icon: ChevronsUpDownIcon,
84
+ size: "sm"
85
+ })
86
+ });
87
+ }
88
+ /**
89
+ * The modal scrim painted beneath the popup. Auto-rendered inside `Select.Popup` while the select is
90
+ * `modal` (the default); transparent by default so the page is not dimmed, it still
91
+ * captures outside clicks. Re-point `--noctis-select-backdrop-background-color` to a scrim role to dim.
92
+ */
93
+ function SelectBackdrop({ className, ...props }) {
94
+ return /* @__PURE__ */ jsx(select_exports.Select.Backdrop, {
95
+ "data-slot": SELECT_SLOTS.backdrop,
96
+ className: clsx$1(className),
97
+ ...props
98
+ });
99
+ }
100
+ /**
101
+ * The floating listbox — portaled, elevated through `<Surface>`, and animated — holding the items,
102
+ * groups, and separators. Opens aligned to the trigger and caps at the available viewport height,
103
+ * scrolling its list while keeping the keyboard highlight in view. By default it overlaps the trigger so
104
+ * the selected row lines up with the trigger's value (the "overlay" variant); pass
105
+ * `alignItemWithTrigger={false}` to open below the trigger instead (the "below" variant). Auto-renders
106
+ * the modal `Backdrop` (while modal), the sticky scroll arrows, and the scrollable `List` for you.
107
+ */
108
+ function SelectPopup({ side = "bottom", align = "start", sideOffset = 6, alignItemWithTrigger = true, collisionPadding = 8, className, style, children, ...props }) {
109
+ const { modal } = useSelectContext("Popup");
110
+ return /* @__PURE__ */ jsxs(select_exports.Select.Portal, { children: [modal ? /* @__PURE__ */ jsx(SelectBackdrop, {}) : null, /* @__PURE__ */ jsx(select_exports.Select.Positioner, {
111
+ side,
112
+ align,
113
+ sideOffset,
114
+ alignItemWithTrigger,
115
+ collisionPadding,
116
+ "data-slot": SELECT_SLOTS.positioner,
117
+ children: /* @__PURE__ */ jsxs(select_exports.Select.Popup, {
118
+ "data-slot": SELECT_SLOTS.popup,
119
+ render: /* @__PURE__ */ jsx(Surface, {
120
+ elevation: "elevated",
121
+ bordered: true,
122
+ shadow: "popover"
123
+ }),
124
+ style: {
125
+ transformOrigin: "var(--transform-origin)",
126
+ maxHeight: "var(--available-height)",
127
+ minInlineSize: "max(var(--_select-popup-min-width), calc(var(--anchor-width) + var(--_select-popup-overlay-inset, 0px)))",
128
+ maxInlineSize: "min(var(--_select-popup-max-width), var(--available-width))",
129
+ ...style
130
+ },
131
+ className: clsx$1(className),
132
+ ...props,
133
+ children: [
134
+ /* @__PURE__ */ jsx(SelectScrollUpArrow, {}),
135
+ /* @__PURE__ */ jsx(SelectList, { children }),
136
+ /* @__PURE__ */ jsx(SelectScrollDownArrow, {})
137
+ ]
138
+ })
139
+ })] });
140
+ }
141
+ /**
142
+ * The sticky strip pinned to the popup's top edge that scrolls the list up on hover — a pointer
143
+ * affordance only (it never renders for touch, and keyboard nav scrolls via the arrow keys), so it is
144
+ * `aria-hidden`. Rendered for you inside `Select.Popup`; appears only while the list can scroll up.
145
+ */
146
+ function SelectScrollUpArrow({ className, children, ...props }) {
147
+ return /* @__PURE__ */ jsx(select_exports.Select.ScrollUpArrow, {
148
+ "aria-hidden": true,
149
+ "data-slot": SELECT_SLOTS.scrollUpArrow,
150
+ className: clsx$1(className),
151
+ ...props,
152
+ children: children ?? /* @__PURE__ */ jsx(Icon, {
153
+ icon: ChevronUpIcon,
154
+ size: "sm"
155
+ })
156
+ });
157
+ }
158
+ /**
159
+ * The sticky strip pinned to the popup's bottom edge that scrolls the list down on hover — a pointer
160
+ * affordance only (`aria-hidden`, like its sibling). Rendered for you inside `Select.Popup`; appears
161
+ * only while the list can scroll down.
162
+ */
163
+ function SelectScrollDownArrow({ className, children, ...props }) {
164
+ return /* @__PURE__ */ jsx(select_exports.Select.ScrollDownArrow, {
165
+ "aria-hidden": true,
166
+ "data-slot": SELECT_SLOTS.scrollDownArrow,
167
+ className: clsx$1(className),
168
+ ...props,
169
+ children: children ?? /* @__PURE__ */ jsx(Icon, {
170
+ icon: ChevronDownIcon,
171
+ size: "sm"
172
+ })
173
+ });
174
+ }
175
+ /**
176
+ * The scrollable list wrapping the popup's rows. Rendered for you inside `Select.Popup`. Its scrollbar
177
+ * is hidden — the sticky scroll arrows are the overflow affordance (Radix/macOS behaviour).
178
+ */
179
+ function SelectList({ className, ...props }) {
180
+ return /* @__PURE__ */ jsx(select_exports.Select.List, {
181
+ "data-slot": SELECT_SLOTS.list,
182
+ className: clsx$1(className),
183
+ ...props
184
+ });
185
+ }
186
+ /**
187
+ * A selectable option. Pass its `value` (any serialisable value, including an object) and label
188
+ * children; an optional leading `icon` (a glyph, colour dot, or avatar) sits in a reserved column, an
189
+ * optional `description` adds a muted second line, and a trailing check marks the selected row. Picking
190
+ * a row updates the value (and closes the popup for single selects).
191
+ *
192
+ * Renders its own `ItemIcon` / `ItemText` / `ItemDescription` / `ItemIndicator` from the props —
193
+ * compose those parts by hand only when a row needs custom inner structure.
194
+ */
195
+ function SelectItem({ className, children, icon, description, ...props }) {
196
+ return /* @__PURE__ */ jsxs(select_exports.Select.Item, {
197
+ "data-slot": SELECT_SLOTS.item,
198
+ className: clsx$1(className),
199
+ ...props,
200
+ children: [
201
+ icon != null ? /* @__PURE__ */ jsx(SelectItemIcon, { children: icon }) : null,
202
+ /* @__PURE__ */ jsxs("span", {
203
+ "data-slot": SELECT_SLOTS.itemContent,
204
+ children: [/* @__PURE__ */ jsx(SelectItemText, { children }), description != null ? /* @__PURE__ */ jsx(SelectItemDescription, { children: description }) : null]
205
+ }),
206
+ /* @__PURE__ */ jsx(SelectItemIndicator, { children: /* @__PURE__ */ jsx(Icon, {
207
+ icon: CheckIcon,
208
+ size: "sm"
209
+ }) })
210
+ ]
211
+ });
212
+ }
213
+ /** The row's leading content column (icon, colour dot, or avatar), reserved so labels align. */
214
+ function SelectItemIcon({ className, ...props }) {
215
+ return /* @__PURE__ */ jsx("span", {
216
+ "data-slot": SELECT_SLOTS.itemIcon,
217
+ className: clsx$1(className),
218
+ ...props
219
+ });
220
+ }
221
+ /** The row's label text, mirrored into the trigger's `Select.Value` when the row is selected. */
222
+ function SelectItemText({ className, ...props }) {
223
+ return /* @__PURE__ */ jsx(select_exports.Select.ItemText, {
224
+ "data-slot": SELECT_SLOTS.itemText,
225
+ className: clsx$1(className),
226
+ ...props
227
+ });
228
+ }
229
+ /** A row's muted second line — a short hint beneath the label on a two-line row. */
230
+ function SelectItemDescription({ className, ...props }) {
231
+ return /* @__PURE__ */ jsx("span", {
232
+ "data-slot": SELECT_SLOTS.itemDescription,
233
+ className: clsx$1(className),
234
+ ...props
235
+ });
236
+ }
237
+ /** The trailing check marking the selected row; Base UI mounts it only while the row is selected. */
238
+ function SelectItemIndicator({ className, ...props }) {
239
+ return /* @__PURE__ */ jsx(select_exports.Select.ItemIndicator, {
240
+ "data-slot": SELECT_SLOTS.itemIndicator,
241
+ className: clsx$1(className),
242
+ ...props
243
+ });
244
+ }
245
+ /** A labelled section of related items. Put a `GroupLabel` inside to name it for screen readers. */
246
+ function SelectGroup({ className, ...props }) {
247
+ return /* @__PURE__ */ jsx(select_exports.Select.Group, {
248
+ "data-slot": SELECT_SLOTS.group,
249
+ className: clsx$1(className),
250
+ ...props
251
+ });
252
+ }
253
+ /** The group's muted, non-interactive heading — announced as the group's accessible name. */
254
+ function SelectGroupLabel({ className, ...props }) {
255
+ return /* @__PURE__ */ jsx(select_exports.Select.GroupLabel, {
256
+ "data-slot": SELECT_SLOTS.groupLabel,
257
+ className: clsx$1(className),
258
+ ...props
259
+ });
260
+ }
261
+ /**
262
+ * A hairline between groups of options. Presentational (`aria-hidden`) — a `role="separator"` is not a
263
+ * valid `listbox` child, and the grouping is already conveyed by the `Group`/`GroupLabel` structure.
264
+ */
265
+ function SelectSeparator({ className, ...props }) {
266
+ return /* @__PURE__ */ jsx("div", {
267
+ "aria-hidden": true,
268
+ "data-slot": SELECT_SLOTS.separator,
269
+ className: clsx$1(className),
270
+ ...props
271
+ });
272
+ }
273
+ /**
274
+ * A select: a field-shaped `Trigger` opens a floating listbox of options. Built on Base UI's Select for
275
+ * listbox semantics, keyboard navigation (arrows, Home/End, PageUp/PageDown, typeahead), focus
276
+ * management, scroll arrows, the modal backdrop, and `Escape`/outside-click dismissal, plus native form
277
+ * integration via the hidden input.
278
+ *
279
+ * Compose from parts: `Select.Root` owns the value and open state, `Select.Trigger` (holding a
280
+ * `Select.Value` and a `Select.Icon`) opens it, and `Select.Popup` holds the rows — `Item`s with their
281
+ * leading `icon`, label, optional `description`, and trailing check, `Group`s with a `GroupLabel`, and
282
+ * `Separator`s. The trigger wears the field look (calm ring-less accent-border focus); the popup is an
283
+ * elevated `<Surface>`, the highlighted row picks up a neutral fill, and the selected row is marked by
284
+ * its trailing check (the accent reserved for that check, not a row tint).
285
+ *
286
+ * Styling is precompiled in `select.css`, keyed off each part's prefixed `data-slot`. Each part also
287
+ * carries the D12 `props()` escape hatch via `Object.assign` (e.g. `Select.Item.props({ selected })`),
288
+ * returning a spreadable `{ "data-slot": "noctis-select-<part>", ...dataAttrs }` bag for a foreign
289
+ * element a `<Select.*>` can't wrap.
290
+ *
291
+ * The runtime compound is a plain object (kept tree-shakeable); per-part prop and state types are
292
+ * exposed through the matching `Select` namespace — e.g. `Select.Item.Props`.
293
+ */
294
+ const Select = {
295
+ Root: SelectRoot,
296
+ Trigger: Object.assign(SelectTrigger, { props: triggerProps }),
297
+ Value: Object.assign(SelectValue, { props: valueProps }),
298
+ Icon: Object.assign(SelectIcon, { props: iconProps }),
299
+ Backdrop: Object.assign(SelectBackdrop, { props: backdropProps }),
300
+ Popup: Object.assign(SelectPopup, { props: popupProps }),
301
+ ScrollUpArrow: Object.assign(SelectScrollUpArrow, { props: scrollUpArrowProps }),
302
+ ScrollDownArrow: Object.assign(SelectScrollDownArrow, { props: scrollDownArrowProps }),
303
+ List: Object.assign(SelectList, { props: listProps }),
304
+ Item: Object.assign(SelectItem, { props: itemProps }),
305
+ ItemIcon: Object.assign(SelectItemIcon, { props: itemIconProps }),
306
+ ItemText: Object.assign(SelectItemText, { props: itemTextProps }),
307
+ ItemDescription: Object.assign(SelectItemDescription, { props: itemDescriptionProps }),
308
+ ItemIndicator: Object.assign(SelectItemIndicator, { props: itemIndicatorProps }),
309
+ Group: Object.assign(SelectGroup, { props: groupProps }),
310
+ GroupLabel: Object.assign(SelectGroupLabel, { props: groupLabelProps }),
311
+ Separator: Object.assign(SelectSeparator, { props: separatorProps })
312
+ };
313
+ //#endregion
314
+ export { Select };
@@ -0,0 +1,110 @@
1
+ //#region src/components/select/select.props.d.ts
2
+ /** A spreadable data-attribute prop bag — the shape every `Select.*.props()` returns. */
3
+ type SelectPartProps = {
4
+ /** The slot value the matching `select.css` rules anchor on. */"data-slot": string; /** Forwarded verbatim — styling is attribute-driven, so this is an optional consumer passthrough. */
5
+ className?: string; /** A data-attribute present (empty string) or absent (`undefined`); never `false`. */
6
+ [attr: `data-${string}`]: string | undefined;
7
+ };
8
+ /** Common shape: every part's `.props()` accepts an optional `className` passthrough. */
9
+ interface BasePropsArgs {
10
+ /** Forwarded verbatim onto the returned prop bag. */
11
+ className?: string;
12
+ }
13
+ /** Argument to `Select.Trigger.props(...)` — the size axis plus the open/disabled/invalid/readonly state. */
14
+ interface SelectTriggerPropsArgs extends BasePropsArgs {
15
+ /** The trigger size, stamped as `data-size` — the CSS keys the trigger's height/font metrics off it. @default "md" */
16
+ size?: "md" | "lg";
17
+ /** Whether the popup is open (drives the open affordance via `data-open`). */
18
+ open?: boolean;
19
+ /** Whether the trigger is disabled (drives the not-allowed affordance via `data-disabled`). */
20
+ disabled?: boolean;
21
+ /** Whether the field is invalid (drives the danger border/ring via `data-invalid`). */
22
+ invalid?: boolean;
23
+ /** Whether the field is read-only (drives the quiet, non-interactive chrome via `data-readonly`). */
24
+ readonly?: boolean;
25
+ }
26
+ /** Argument to `Select.Item.props(...)` — the per-row selected/highlighted/disabled state the CSS keys off. */
27
+ interface SelectItemPropsArgs extends BasePropsArgs {
28
+ /** Whether this row is the selected value (drives the trailing check via `data-selected`). */
29
+ selected?: boolean;
30
+ /** Whether the pointer/keyboard is over this row (drives the highlight via `data-highlighted`). */
31
+ highlighted?: boolean;
32
+ /** Whether this row is disabled (drives the not-allowed affordance via `data-disabled`). */
33
+ disabled?: boolean;
34
+ }
35
+ /** Argument to a stateless part's `.props(...)` — no variants/state of its own. */
36
+ type SelectStatelessPropsArgs = BasePropsArgs;
37
+ /** Trigger prop bag: slot anchor plus the `data-size` axis and the open/disabled/invalid/readonly state. */
38
+ declare function triggerProps({
39
+ size,
40
+ open,
41
+ disabled,
42
+ invalid,
43
+ readonly,
44
+ className
45
+ }?: SelectTriggerPropsArgs): SelectPartProps;
46
+ /** Value prop bag: just the slot anchor. */
47
+ declare function valueProps({
48
+ className
49
+ }?: SelectStatelessPropsArgs): SelectPartProps;
50
+ /** Icon prop bag: just the slot anchor (the trailing chevron). */
51
+ declare function iconProps({
52
+ className
53
+ }?: SelectStatelessPropsArgs): SelectPartProps;
54
+ /** Backdrop prop bag: just the slot anchor (the modal scrim behind the popup). */
55
+ declare function backdropProps({
56
+ className
57
+ }?: SelectStatelessPropsArgs): SelectPartProps;
58
+ /** Popup prop bag: just the slot anchor (the popup surface paint is owned by the composed Surface). */
59
+ declare function popupProps({
60
+ className
61
+ }?: SelectStatelessPropsArgs): SelectPartProps;
62
+ /** Scroll-up-arrow prop bag: just the slot anchor (the sticky top scroll affordance). */
63
+ declare function scrollUpArrowProps({
64
+ className
65
+ }?: SelectStatelessPropsArgs): SelectPartProps;
66
+ /** Scroll-down-arrow prop bag: just the slot anchor (the sticky bottom scroll affordance). */
67
+ declare function scrollDownArrowProps({
68
+ className
69
+ }?: SelectStatelessPropsArgs): SelectPartProps;
70
+ /** List prop bag: just the slot anchor. */
71
+ declare function listProps({
72
+ className
73
+ }?: SelectStatelessPropsArgs): SelectPartProps;
74
+ /** Item prop bag: slot anchor plus the `data-selected`/`data-highlighted`/`data-disabled` state. */
75
+ declare function itemProps({
76
+ selected,
77
+ highlighted,
78
+ disabled,
79
+ className
80
+ }?: SelectItemPropsArgs): SelectPartProps;
81
+ /** Item-icon prop bag: just the slot anchor (the leading icon/dot/avatar column). */
82
+ declare function itemIconProps({
83
+ className
84
+ }?: SelectStatelessPropsArgs): SelectPartProps;
85
+ /** Item-text prop bag: just the slot anchor. */
86
+ declare function itemTextProps({
87
+ className
88
+ }?: SelectStatelessPropsArgs): SelectPartProps;
89
+ /** Item-description prop bag: just the slot anchor (the muted second line on a two-line row). */
90
+ declare function itemDescriptionProps({
91
+ className
92
+ }?: SelectStatelessPropsArgs): SelectPartProps;
93
+ /** Item-indicator prop bag: just the slot anchor (the trailing check). */
94
+ declare function itemIndicatorProps({
95
+ className
96
+ }?: SelectStatelessPropsArgs): SelectPartProps;
97
+ /** Group prop bag: just the slot anchor. */
98
+ declare function groupProps({
99
+ className
100
+ }?: SelectStatelessPropsArgs): SelectPartProps;
101
+ /** Group-label prop bag: just the slot anchor. */
102
+ declare function groupLabelProps({
103
+ className
104
+ }?: SelectStatelessPropsArgs): SelectPartProps;
105
+ /** Separator prop bag: just the slot anchor. */
106
+ declare function separatorProps({
107
+ className
108
+ }?: SelectStatelessPropsArgs): SelectPartProps;
109
+ //#endregion
110
+ export { SelectPartProps, backdropProps, groupLabelProps, groupProps, iconProps, itemDescriptionProps, itemIconProps, itemIndicatorProps, itemProps, itemTextProps, listProps, popupProps, scrollDownArrowProps, scrollUpArrowProps, separatorProps, triggerProps, valueProps };
@@ -0,0 +1,103 @@
1
+ import { SELECT_SLOTS } from "./select.slots.js";
2
+ //#region src/components/select/select.props.ts
3
+ /**
4
+ * The D12 unified variant contract for Select — a per-part set of `props(...)` builders that each
5
+ * return a **spreadable props object** of the form `{ "data-slot": "noctis-select-<part>", ...dataAttrs }`,
6
+ * derived from the part's variant/state inputs.
7
+ *
8
+ * Under the single-`data-slot` anchor model the `data-slot` is the only styling hook needed —
9
+ * `select.css` keys every rule off it — so spreading a part's `props()` onto a *foreign* element
10
+ * styles it as that part:
11
+ *
12
+ * <div {...Select.Item.props({ selected: true, highlighted: true })}>Apple</div>
13
+ * // → <div data-slot="noctis-select-item" data-selected="" data-highlighted="">
14
+ *
15
+ * The escape hatch carries no className (styling is attribute-driven); an optional `className`
16
+ * passthrough is accepted and forwarded verbatim. The same variant→data-attribute→values mapping is
17
+ * emitted as data from the token graph (`generated/declarations.json` → `variantSchema`) so non-React /
18
+ * agent consumers can hand-write the markup from the docs.
19
+ */
20
+ /** Stamp a boolean state as a bare data-attribute: present (`""`) when on, absent (`undefined`) when off. */
21
+ const flag = (on) => on ? "" : void 0;
22
+ const withClassName = (bag, className) => className === void 0 ? bag : {
23
+ ...bag,
24
+ className
25
+ };
26
+ /** Trigger prop bag: slot anchor plus the `data-size` axis and the open/disabled/invalid/readonly state. */
27
+ function triggerProps({ size = "md", open, disabled, invalid, readonly, className } = {}) {
28
+ return withClassName({
29
+ "data-slot": SELECT_SLOTS.trigger,
30
+ "data-size": size,
31
+ "data-open": flag(open),
32
+ "data-disabled": flag(disabled),
33
+ "data-invalid": flag(invalid),
34
+ "data-readonly": flag(readonly)
35
+ }, className);
36
+ }
37
+ /** Value prop bag: just the slot anchor. */
38
+ function valueProps({ className } = {}) {
39
+ return withClassName({ "data-slot": SELECT_SLOTS.value }, className);
40
+ }
41
+ /** Icon prop bag: just the slot anchor (the trailing chevron). */
42
+ function iconProps({ className } = {}) {
43
+ return withClassName({ "data-slot": SELECT_SLOTS.icon }, className);
44
+ }
45
+ /** Backdrop prop bag: just the slot anchor (the modal scrim behind the popup). */
46
+ function backdropProps({ className } = {}) {
47
+ return withClassName({ "data-slot": SELECT_SLOTS.backdrop }, className);
48
+ }
49
+ /** Popup prop bag: just the slot anchor (the popup surface paint is owned by the composed Surface). */
50
+ function popupProps({ className } = {}) {
51
+ return withClassName({ "data-slot": SELECT_SLOTS.popup }, className);
52
+ }
53
+ /** Scroll-up-arrow prop bag: just the slot anchor (the sticky top scroll affordance). */
54
+ function scrollUpArrowProps({ className } = {}) {
55
+ return withClassName({ "data-slot": SELECT_SLOTS.scrollUpArrow }, className);
56
+ }
57
+ /** Scroll-down-arrow prop bag: just the slot anchor (the sticky bottom scroll affordance). */
58
+ function scrollDownArrowProps({ className } = {}) {
59
+ return withClassName({ "data-slot": SELECT_SLOTS.scrollDownArrow }, className);
60
+ }
61
+ /** List prop bag: just the slot anchor. */
62
+ function listProps({ className } = {}) {
63
+ return withClassName({ "data-slot": SELECT_SLOTS.list }, className);
64
+ }
65
+ /** Item prop bag: slot anchor plus the `data-selected`/`data-highlighted`/`data-disabled` state. */
66
+ function itemProps({ selected, highlighted, disabled, className } = {}) {
67
+ return withClassName({
68
+ "data-slot": SELECT_SLOTS.item,
69
+ "data-selected": flag(selected),
70
+ "data-highlighted": flag(highlighted),
71
+ "data-disabled": flag(disabled)
72
+ }, className);
73
+ }
74
+ /** Item-icon prop bag: just the slot anchor (the leading icon/dot/avatar column). */
75
+ function itemIconProps({ className } = {}) {
76
+ return withClassName({ "data-slot": SELECT_SLOTS.itemIcon }, className);
77
+ }
78
+ /** Item-text prop bag: just the slot anchor. */
79
+ function itemTextProps({ className } = {}) {
80
+ return withClassName({ "data-slot": SELECT_SLOTS.itemText }, className);
81
+ }
82
+ /** Item-description prop bag: just the slot anchor (the muted second line on a two-line row). */
83
+ function itemDescriptionProps({ className } = {}) {
84
+ return withClassName({ "data-slot": SELECT_SLOTS.itemDescription }, className);
85
+ }
86
+ /** Item-indicator prop bag: just the slot anchor (the trailing check). */
87
+ function itemIndicatorProps({ className } = {}) {
88
+ return withClassName({ "data-slot": SELECT_SLOTS.itemIndicator }, className);
89
+ }
90
+ /** Group prop bag: just the slot anchor. */
91
+ function groupProps({ className } = {}) {
92
+ return withClassName({ "data-slot": SELECT_SLOTS.group }, className);
93
+ }
94
+ /** Group-label prop bag: just the slot anchor. */
95
+ function groupLabelProps({ className } = {}) {
96
+ return withClassName({ "data-slot": SELECT_SLOTS.groupLabel }, className);
97
+ }
98
+ /** Separator prop bag: just the slot anchor. */
99
+ function separatorProps({ className } = {}) {
100
+ return withClassName({ "data-slot": SELECT_SLOTS.separator }, className);
101
+ }
102
+ //#endregion
103
+ export { backdropProps, groupLabelProps, groupProps, iconProps, itemDescriptionProps, itemIconProps, itemIndicatorProps, itemProps, itemTextProps, listProps, popupProps, scrollDownArrowProps, scrollUpArrowProps, separatorProps, triggerProps, valueProps };
@@ -0,0 +1,38 @@
1
+ //#region src/components/select/select.slots.d.ts
2
+ /**
3
+ * The `data-*` hooks `Select` stamps on its parts, for host-side styling and tests. Slot values mark
4
+ * each rendered element; the state attributes are emitted by Base UI's Select — pair a slot with a
5
+ * state to target, say, the trigger only while its popup is open or the currently selected item.
6
+ */
7
+ declare enum SelectDataAttributes {
8
+ /** The slot marker on every rendered part. */
9
+ slot = "data-slot",
10
+ /** The trigger size, mirroring the `size` prop (`md`/`lg`); the component layer keys the trigger's metrics off it. */
11
+ size = "data-size",
12
+ /** Present on the trigger and popup while the select is open. */
13
+ open = "data-open",
14
+ /** Present on the trigger and popup while the select is closed. */
15
+ closed = "data-closed",
16
+ /** Present on the trigger when no value is selected (the placeholder is showing). */
17
+ placeholder = "data-placeholder",
18
+ /** Present on the trigger while the field is invalid — paints the danger border/ring. */
19
+ invalid = "data-invalid",
20
+ /** Present on the trigger while the select is read-only — quiet, non-interactive chrome. */
21
+ readonly = "data-readonly",
22
+ /** Present on the item the pointer or keyboard is currently over. */
23
+ highlighted = "data-highlighted",
24
+ /** Present on the currently selected item (and its trailing check). */
25
+ selected = "data-selected",
26
+ /** Present on a disabled trigger or item. */
27
+ disabled = "data-disabled",
28
+ /** Present on a scroll arrow while the list can scroll in its direction (drives its fade). */
29
+ visible = "data-visible",
30
+ /** The side of the anchor the popup actually rendered on (`bottom`, `top`, …). */
31
+ side = "data-side",
32
+ /** Present on the popup/backdrop/scroll-arrows for the first frame after mount — the transition's start state. */
33
+ startingStyle = "data-starting-style",
34
+ /** Present on the popup/backdrop/scroll-arrows while they transition out before unmounting. */
35
+ endingStyle = "data-ending-style"
36
+ }
37
+ //#endregion
38
+ export { SelectDataAttributes };
@@ -0,0 +1,67 @@
1
+ //#region src/components/select/select.slots.ts
2
+ /**
3
+ * The slot vocabulary every `Select` part stamps as its `data-slot`. The authored source the
4
+ * orchestration file reads from, prefixed `noctis-{component}-{part}` (the precompiled `select.css`
5
+ * keys every rule off these anchors); SLOTS.md still generates from the token-graph declarations.
6
+ *
7
+ * `positioner` is a styling-only anchor (the z-index wrapper around the portalled popup) — it carries
8
+ * no token mints, so it lives here but not in the token-graph anatomy.
9
+ */
10
+ const SELECT_SLOTS = {
11
+ trigger: "noctis-select-trigger",
12
+ value: "noctis-select-value",
13
+ icon: "noctis-select-icon",
14
+ backdrop: "noctis-select-backdrop",
15
+ positioner: "noctis-select-positioner",
16
+ popup: "noctis-select-popup",
17
+ scrollUpArrow: "noctis-select-scroll-up-arrow",
18
+ scrollDownArrow: "noctis-select-scroll-down-arrow",
19
+ list: "noctis-select-list",
20
+ item: "noctis-select-item",
21
+ itemIcon: "noctis-select-item-icon",
22
+ itemContent: "noctis-select-item-content",
23
+ itemText: "noctis-select-item-text",
24
+ itemDescription: "noctis-select-item-description",
25
+ itemIndicator: "noctis-select-item-indicator",
26
+ group: "noctis-select-group",
27
+ groupLabel: "noctis-select-group-label",
28
+ separator: "noctis-select-separator"
29
+ };
30
+ /**
31
+ * The `data-*` hooks `Select` stamps on its parts, for host-side styling and tests. Slot values mark
32
+ * each rendered element; the state attributes are emitted by Base UI's Select — pair a slot with a
33
+ * state to target, say, the trigger only while its popup is open or the currently selected item.
34
+ */
35
+ let SelectDataAttributes = /* @__PURE__ */ function(SelectDataAttributes) {
36
+ /** The slot marker on every rendered part. */
37
+ SelectDataAttributes["slot"] = "data-slot";
38
+ /** The trigger size, mirroring the `size` prop (`md`/`lg`); the component layer keys the trigger's metrics off it. */
39
+ SelectDataAttributes["size"] = "data-size";
40
+ /** Present on the trigger and popup while the select is open. */
41
+ SelectDataAttributes["open"] = "data-open";
42
+ /** Present on the trigger and popup while the select is closed. */
43
+ SelectDataAttributes["closed"] = "data-closed";
44
+ /** Present on the trigger when no value is selected (the placeholder is showing). */
45
+ SelectDataAttributes["placeholder"] = "data-placeholder";
46
+ /** Present on the trigger while the field is invalid — paints the danger border/ring. */
47
+ SelectDataAttributes["invalid"] = "data-invalid";
48
+ /** Present on the trigger while the select is read-only — quiet, non-interactive chrome. */
49
+ SelectDataAttributes["readonly"] = "data-readonly";
50
+ /** Present on the item the pointer or keyboard is currently over. */
51
+ SelectDataAttributes["highlighted"] = "data-highlighted";
52
+ /** Present on the currently selected item (and its trailing check). */
53
+ SelectDataAttributes["selected"] = "data-selected";
54
+ /** Present on a disabled trigger or item. */
55
+ SelectDataAttributes["disabled"] = "data-disabled";
56
+ /** Present on a scroll arrow while the list can scroll in its direction (drives its fade). */
57
+ SelectDataAttributes["visible"] = "data-visible";
58
+ /** The side of the anchor the popup actually rendered on (`bottom`, `top`, …). */
59
+ SelectDataAttributes["side"] = "data-side";
60
+ /** Present on the popup/backdrop/scroll-arrows for the first frame after mount — the transition's start state. */
61
+ SelectDataAttributes["startingStyle"] = "data-starting-style";
62
+ /** Present on the popup/backdrop/scroll-arrows while they transition out before unmounting. */
63
+ SelectDataAttributes["endingStyle"] = "data-ending-style";
64
+ return SelectDataAttributes;
65
+ }({});
66
+ //#endregion
67
+ export { SELECT_SLOTS, SelectDataAttributes };
@@ -0,0 +1,2 @@
1
+ import { SeparatorDataAttributes } from "./separator.slots.js";
2
+ import { Separator } from "./separator.js";