@panneau/ui 5.0.0-alpha.1 → 5.0.0-alpha.3

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 (396) hide show
  1. package/README.md +276 -13
  2. package/bin/check-theme.js +5 -0
  3. package/dist/alert/Alert.css +28 -42
  4. package/dist/alert/Alert.d.ts +18 -4
  5. package/dist/alert/Alert.d.ts.map +1 -1
  6. package/dist/alert/Alert.js +4 -3
  7. package/dist/alert/Alert.js.map +1 -1
  8. package/dist/alert/Alert.module.js +14 -16
  9. package/dist/alert/Alert.module.js.map +1 -1
  10. package/dist/alert/tokens.d.ts +3 -0
  11. package/dist/alert/tokens.d.ts.map +1 -0
  12. package/dist/alert/tokens.js +21 -0
  13. package/dist/alert/tokens.js.map +1 -0
  14. package/dist/badge/Badge.css +24 -36
  15. package/dist/badge/Badge.d.ts +18 -3
  16. package/dist/badge/Badge.d.ts.map +1 -1
  17. package/dist/badge/Badge.js +3 -2
  18. package/dist/badge/Badge.js.map +1 -1
  19. package/dist/badge/Badge.module.js +9 -13
  20. package/dist/badge/Badge.module.js.map +1 -1
  21. package/dist/badge/tokens.d.ts +3 -0
  22. package/dist/badge/tokens.d.ts.map +1 -0
  23. package/dist/badge/tokens.js +23 -0
  24. package/dist/badge/tokens.js.map +1 -0
  25. package/dist/button/Button.css +58 -42
  26. package/dist/button/Button.d.ts +30 -3
  27. package/dist/button/Button.d.ts.map +1 -1
  28. package/dist/button/Button.js +27 -2
  29. package/dist/button/Button.js.map +1 -1
  30. package/dist/button/Button.module.js +14 -14
  31. package/dist/button/Button.module.js.map +1 -1
  32. package/dist/button/tokens.d.ts +3 -0
  33. package/dist/button/tokens.d.ts.map +1 -0
  34. package/dist/button/tokens.js +25 -0
  35. package/dist/button/tokens.js.map +1 -0
  36. package/dist/card/Card.css +27 -20
  37. package/dist/card/Card.js +1 -1
  38. package/dist/card/Card.js.map +1 -1
  39. package/dist/card/Card.module.js +5 -5
  40. package/dist/card/Card.module.js.map +1 -1
  41. package/dist/card/tokens.d.ts +3 -0
  42. package/dist/card/tokens.d.ts.map +1 -0
  43. package/dist/card/tokens.js +31 -0
  44. package/dist/card/tokens.js.map +1 -0
  45. package/dist/checkbox/Checkbox.css +22 -21
  46. package/dist/checkbox/Checkbox.d.ts.map +1 -1
  47. package/dist/checkbox/Checkbox.js +2 -1
  48. package/dist/checkbox/Checkbox.js.map +1 -1
  49. package/dist/checkbox/Checkbox.module.js +6 -6
  50. package/dist/checkbox/Checkbox.module.js.map +1 -1
  51. package/dist/checkbox/ChoiceChrome.d.ts +3 -1
  52. package/dist/checkbox/ChoiceChrome.d.ts.map +1 -1
  53. package/dist/checkbox/ChoiceChrome.js +2 -2
  54. package/dist/checkbox/ChoiceChrome.js.map +1 -1
  55. package/dist/checkbox/tokens.d.ts +3 -0
  56. package/dist/checkbox/tokens.d.ts.map +1 -0
  57. package/dist/checkbox/tokens.js +21 -0
  58. package/dist/checkbox/tokens.js.map +1 -0
  59. package/dist/combo-box/ComboBox.css +4 -4
  60. package/dist/combo-box/ComboBox.js +1 -1
  61. package/dist/combo-box/ComboBox.js.map +1 -1
  62. package/dist/combo-box/ComboBox.module.js +3 -3
  63. package/dist/container/Container.css +32 -0
  64. package/dist/container/Container.d.ts +15 -0
  65. package/dist/container/Container.d.ts.map +1 -0
  66. package/dist/container/Container.js +18 -0
  67. package/dist/container/Container.js.map +1 -0
  68. package/dist/container/Container.module.js +20 -0
  69. package/dist/container/Container.module.js.map +1 -0
  70. package/dist/container/tokens.d.ts +3 -0
  71. package/dist/container/tokens.d.ts.map +1 -0
  72. package/dist/container/tokens.js +19 -0
  73. package/dist/container/tokens.js.map +1 -0
  74. package/dist/date-picker/DatePicker.css +30 -30
  75. package/dist/date-picker/DatePicker.js +1 -1
  76. package/dist/date-picker/DatePicker.js.map +1 -1
  77. package/dist/date-picker/DatePicker.module.js +11 -11
  78. package/dist/date-picker/DatePicker.module.js.map +1 -1
  79. package/dist/date-picker/calendarTokens.d.ts +3 -0
  80. package/dist/date-picker/calendarTokens.d.ts.map +1 -0
  81. package/dist/date-picker/calendarTokens.js +17 -0
  82. package/dist/date-picker/calendarTokens.js.map +1 -0
  83. package/dist/dialog/Dialog.css +40 -36
  84. package/dist/dialog/Dialog.js +1 -1
  85. package/dist/dialog/Dialog.js.map +1 -1
  86. package/dist/dialog/Dialog.module.js +11 -11
  87. package/dist/dialog/Dialog.module.js.map +1 -1
  88. package/dist/dialog/tokens.d.ts +3 -0
  89. package/dist/dialog/tokens.d.ts.map +1 -0
  90. package/dist/dialog/tokens.js +29 -0
  91. package/dist/dialog/tokens.js.map +1 -0
  92. package/dist/disclosure/Disclosure.css +12 -12
  93. package/dist/disclosure/Disclosure.d.ts.map +1 -1
  94. package/dist/disclosure/Disclosure.js +1 -1
  95. package/dist/disclosure/Disclosure.js.map +1 -1
  96. package/dist/disclosure/Disclosure.module.js +7 -7
  97. package/dist/disclosure/Disclosure.module.js.map +1 -1
  98. package/dist/disclosure/tokens.d.ts +3 -0
  99. package/dist/disclosure/tokens.d.ts.map +1 -0
  100. package/dist/disclosure/tokens.js +15 -0
  101. package/dist/disclosure/tokens.js.map +1 -0
  102. package/dist/divider/Divider.css +17 -0
  103. package/dist/divider/Divider.d.ts +8 -0
  104. package/dist/divider/Divider.d.ts.map +1 -0
  105. package/dist/divider/Divider.js +21 -0
  106. package/dist/divider/Divider.js.map +1 -0
  107. package/dist/divider/Divider.module.js +12 -0
  108. package/dist/divider/Divider.module.js.map +1 -0
  109. package/dist/divider/tokens.d.ts +3 -0
  110. package/dist/divider/tokens.d.ts.map +1 -0
  111. package/dist/divider/tokens.js +13 -0
  112. package/dist/divider/tokens.js.map +1 -0
  113. package/dist/field/Field.css +40 -37
  114. package/dist/field/Field.module.js +11 -11
  115. package/dist/field/Field.module.js.map +1 -1
  116. package/dist/field/Fieldset.js +1 -1
  117. package/dist/field/Fieldset.js.map +1 -1
  118. package/dist/field/inputTokens.d.ts +3 -0
  119. package/dist/field/inputTokens.d.ts.map +1 -0
  120. package/dist/field/inputTokens.js +21 -0
  121. package/dist/field/inputTokens.js.map +1 -0
  122. package/dist/field/tokens.d.ts +3 -0
  123. package/dist/field/tokens.d.ts.map +1 -0
  124. package/dist/field/tokens.js +15 -0
  125. package/dist/field/tokens.js.map +1 -0
  126. package/dist/grid/Grid.css +174 -0
  127. package/dist/grid/Grid.d.ts +28 -0
  128. package/dist/grid/Grid.d.ts.map +1 -0
  129. package/dist/grid/Grid.js +31 -0
  130. package/dist/grid/Grid.js.map +1 -0
  131. package/dist/grid/Grid.module.js +12 -0
  132. package/dist/grid/Grid.module.js.map +1 -0
  133. package/dist/grid/GridItem.css +59 -0
  134. package/dist/grid/GridItem.module.js +7 -0
  135. package/dist/grid/GridItem.module.js.map +1 -0
  136. package/dist/grid/tokens.d.ts +3 -0
  137. package/dist/grid/tokens.d.ts.map +1 -0
  138. package/dist/grid/tokens.js +10 -0
  139. package/dist/grid/tokens.js.map +1 -0
  140. package/dist/heading/Heading.css +52 -0
  141. package/dist/heading/Heading.d.ts +17 -0
  142. package/dist/heading/Heading.d.ts.map +1 -0
  143. package/dist/heading/Heading.js +17 -0
  144. package/dist/heading/Heading.js.map +1 -0
  145. package/dist/heading/Heading.module.js +16 -0
  146. package/dist/heading/Heading.module.js.map +1 -0
  147. package/dist/heading/tokens.d.ts +6 -0
  148. package/dist/heading/tokens.d.ts.map +1 -0
  149. package/dist/heading/tokens.js +66 -0
  150. package/dist/heading/tokens.js.map +1 -0
  151. package/dist/icon/Icon.css +1 -1
  152. package/dist/icon/Icon.js +1 -1
  153. package/dist/icon/Icon.js.map +1 -1
  154. package/dist/icon/Icon.module.js +1 -1
  155. package/dist/icon/lucideIconLoader.d.ts +9 -0
  156. package/dist/icon/lucideIconLoader.d.ts.map +1 -0
  157. package/dist/icon/lucideIconLoader.js +22 -0
  158. package/dist/icon/lucideIconLoader.js.map +1 -0
  159. package/dist/icon/namedIcons.d.ts +15 -8
  160. package/dist/icon/namedIcons.d.ts.map +1 -1
  161. package/dist/icon/namedIcons.js +43 -29
  162. package/dist/icon/namedIcons.js.map +1 -1
  163. package/dist/icon-button/IconButton.css +2 -2
  164. package/dist/icon-button/IconButton.d.ts +1 -1
  165. package/dist/icon-button/IconButton.d.ts.map +1 -1
  166. package/dist/icon-button/IconButton.js +3 -3
  167. package/dist/icon-button/IconButton.js.map +1 -1
  168. package/dist/icon-button/IconButton.module.js +2 -2
  169. package/dist/index.d.ts +26 -6
  170. package/dist/index.d.ts.map +1 -1
  171. package/dist/index.js +21 -3
  172. package/dist/inline/Inline.css +142 -0
  173. package/dist/inline/Inline.d.ts +17 -0
  174. package/dist/inline/Inline.d.ts.map +1 -0
  175. package/dist/inline/Inline.js +21 -0
  176. package/dist/inline/Inline.js.map +1 -0
  177. package/dist/inline/Inline.module.js +12 -0
  178. package/dist/inline/Inline.module.js.map +1 -0
  179. package/dist/inline/tokens.d.ts +3 -0
  180. package/dist/inline/tokens.d.ts.map +1 -0
  181. package/dist/inline/tokens.js +10 -0
  182. package/dist/inline/tokens.js.map +1 -0
  183. package/dist/layout/responsive.d.ts +38 -0
  184. package/dist/layout/responsive.d.ts.map +1 -0
  185. package/dist/layout/responsive.js +49 -0
  186. package/dist/layout/responsive.js.map +1 -0
  187. package/dist/menu/Menu.js +2 -2
  188. package/dist/menu/Menu.js.map +1 -1
  189. package/dist/named-icons/index.d.ts +2 -0
  190. package/dist/named-icons/index.d.ts.map +1 -0
  191. package/dist/named-icons/index.js +1 -0
  192. package/dist/number-input/NumberInput.css +12 -12
  193. package/dist/number-input/NumberInput.js +1 -1
  194. package/dist/number-input/NumberInput.js.map +1 -1
  195. package/dist/number-input/NumberInput.module.js +4 -4
  196. package/dist/number-input/NumberInput.module.js.map +1 -1
  197. package/dist/number-input/tokens.d.ts +3 -0
  198. package/dist/number-input/tokens.d.ts.map +1 -0
  199. package/dist/number-input/tokens.js +10 -0
  200. package/dist/number-input/tokens.js.map +1 -0
  201. package/dist/popover/Popover.css +13 -12
  202. package/dist/popover/Popover.js +2 -2
  203. package/dist/popover/Popover.js.map +1 -1
  204. package/dist/popover/Popover.module.js +3 -3
  205. package/dist/popover/Popover.module.js.map +1 -1
  206. package/dist/popover/tokens.d.ts +3 -0
  207. package/dist/popover/tokens.d.ts.map +1 -0
  208. package/dist/popover/tokens.js +19 -0
  209. package/dist/popover/tokens.js.map +1 -0
  210. package/dist/prose/Prose.css +141 -0
  211. package/dist/prose/Prose.d.ts +11 -0
  212. package/dist/prose/Prose.d.ts.map +1 -0
  213. package/dist/prose/Prose.js +18 -0
  214. package/dist/prose/Prose.js.map +1 -0
  215. package/dist/prose/Prose.module.js +8 -0
  216. package/dist/prose/Prose.module.js.map +1 -0
  217. package/dist/prose/tokens.d.ts +3 -0
  218. package/dist/prose/tokens.d.ts.map +1 -0
  219. package/dist/prose/tokens.js +33 -0
  220. package/dist/prose/tokens.js.map +1 -0
  221. package/dist/radio-group/RadioGroup.css +21 -20
  222. package/dist/radio-group/RadioGroup.d.ts.map +1 -1
  223. package/dist/radio-group/RadioGroup.js +2 -2
  224. package/dist/radio-group/RadioGroup.js.map +1 -1
  225. package/dist/radio-group/RadioGroup.module.js +6 -6
  226. package/dist/radio-group/RadioGroup.module.js.map +1 -1
  227. package/dist/radio-group/tokens.d.ts +3 -0
  228. package/dist/radio-group/tokens.d.ts.map +1 -0
  229. package/dist/radio-group/tokens.js +19 -0
  230. package/dist/radio-group/tokens.js.map +1 -0
  231. package/dist/root/PanneauRoot.css +243 -20
  232. package/dist/root/PanneauRoot.d.ts +35 -4
  233. package/dist/root/PanneauRoot.d.ts.map +1 -1
  234. package/dist/root/PanneauRoot.js +107 -20
  235. package/dist/root/PanneauRoot.js.map +1 -1
  236. package/dist/root/PanneauRoot.module.js +11 -3
  237. package/dist/root/PanneauRoot.module.js.map +1 -1
  238. package/dist/root/ThemeScope.d.ts +24 -0
  239. package/dist/root/ThemeScope.d.ts.map +1 -0
  240. package/dist/root/ThemeScope.js +49 -0
  241. package/dist/root/ThemeScope.js.map +1 -0
  242. package/dist/select/ListBox.css +23 -22
  243. package/dist/select/ListBox.module.js +12 -12
  244. package/dist/select/ListBox.module.js.map +1 -1
  245. package/dist/select/Select.js +1 -1
  246. package/dist/select/Select.js.map +1 -1
  247. package/dist/select/listBoxTokens.d.ts +3 -0
  248. package/dist/select/listBoxTokens.d.ts.map +1 -0
  249. package/dist/select/listBoxTokens.js +19 -0
  250. package/dist/select/listBoxTokens.js.map +1 -0
  251. package/dist/spinner/Spinner.css +8 -8
  252. package/dist/spinner/Spinner.js +1 -1
  253. package/dist/spinner/Spinner.js.map +1 -1
  254. package/dist/spinner/Spinner.module.js +5 -5
  255. package/dist/spinner/Spinner.module.js.map +1 -1
  256. package/dist/spinner/tokens.d.ts +3 -0
  257. package/dist/spinner/tokens.d.ts.map +1 -0
  258. package/dist/spinner/tokens.js +10 -0
  259. package/dist/spinner/tokens.js.map +1 -0
  260. package/dist/stack/Stack.css +135 -0
  261. package/dist/stack/Stack.d.ts +15 -0
  262. package/dist/stack/Stack.d.ts.map +1 -0
  263. package/dist/stack/Stack.js +21 -0
  264. package/dist/stack/Stack.js.map +1 -0
  265. package/dist/stack/Stack.module.js +8 -0
  266. package/dist/stack/Stack.module.js.map +1 -0
  267. package/dist/stack/tokens.d.ts +3 -0
  268. package/dist/stack/tokens.d.ts.map +1 -0
  269. package/dist/stack/tokens.js +10 -0
  270. package/dist/stack/tokens.js.map +1 -0
  271. package/dist/switch/Switch.css +34 -25
  272. package/dist/switch/Switch.d.ts.map +1 -1
  273. package/dist/switch/Switch.js +2 -1
  274. package/dist/switch/Switch.js.map +1 -1
  275. package/dist/switch/Switch.module.js +6 -5
  276. package/dist/switch/Switch.module.js.map +1 -1
  277. package/dist/switch/tokens.d.ts +3 -0
  278. package/dist/switch/tokens.d.ts.map +1 -0
  279. package/dist/switch/tokens.js +25 -0
  280. package/dist/switch/tokens.js.map +1 -0
  281. package/dist/tabs/Tabs.css +24 -23
  282. package/dist/tabs/Tabs.js +4 -4
  283. package/dist/tabs/Tabs.js.map +1 -1
  284. package/dist/tabs/Tabs.module.js +4 -4
  285. package/dist/tabs/Tabs.module.js.map +1 -1
  286. package/dist/tabs/tokens.d.ts +3 -0
  287. package/dist/tabs/tokens.d.ts.map +1 -0
  288. package/dist/tabs/tokens.js +25 -0
  289. package/dist/tabs/tokens.js.map +1 -0
  290. package/dist/text/Text.css +74 -0
  291. package/dist/text/Text.d.ts +27 -0
  292. package/dist/text/Text.d.ts.map +1 -0
  293. package/dist/text/Text.js +16 -0
  294. package/dist/text/Text.js.map +1 -0
  295. package/dist/text/Text.module.js +30 -0
  296. package/dist/text/Text.module.js.map +1 -0
  297. package/dist/text/tokens.d.ts +3 -0
  298. package/dist/text/tokens.d.ts.map +1 -0
  299. package/dist/text/tokens.js +10 -0
  300. package/dist/text/tokens.js.map +1 -0
  301. package/dist/text-area/TextArea.css +1 -1
  302. package/dist/text-area/TextArea.js +2 -2
  303. package/dist/text-area/TextArea.js.map +1 -1
  304. package/dist/text-area/TextArea.module.js +3 -3
  305. package/dist/text-area/TextArea.module.js.map +1 -1
  306. package/dist/text-input/TextInput.js +1 -1
  307. package/dist/text-input/TextInput.js.map +1 -1
  308. package/dist/theme/Tone.css +70 -0
  309. package/dist/theme/Tone.module.js +20 -0
  310. package/dist/theme/Tone.module.js.map +1 -0
  311. package/dist/theme/bootstrap.d.ts +10 -0
  312. package/dist/theme/bootstrap.d.ts.map +1 -1
  313. package/dist/theme/bootstrap.js +48 -5
  314. package/dist/theme/bootstrap.js.map +1 -1
  315. package/dist/theme/chartColors.d.ts +23 -0
  316. package/dist/theme/chartColors.d.ts.map +1 -0
  317. package/dist/theme/chartColors.js +27 -0
  318. package/dist/theme/chartColors.js.map +1 -0
  319. package/dist/theme/checkTheme.d.ts +39 -0
  320. package/dist/theme/checkTheme.d.ts.map +1 -0
  321. package/dist/theme/checkTheme.js +132 -0
  322. package/dist/theme/checkTheme.js.map +1 -0
  323. package/dist/theme/cli.d.ts +14 -0
  324. package/dist/theme/cli.d.ts.map +1 -0
  325. package/dist/theme/cli.js +61 -0
  326. package/dist/theme/cli.js.map +1 -0
  327. package/dist/theme/color.d.ts +30 -0
  328. package/dist/theme/color.d.ts.map +1 -0
  329. package/dist/theme/color.js +94 -0
  330. package/dist/theme/color.js.map +1 -0
  331. package/dist/theme/colorVision.d.ts +23 -0
  332. package/dist/theme/colorVision.d.ts.map +1 -0
  333. package/dist/theme/colorVision.js +140 -0
  334. package/dist/theme/colorVision.js.map +1 -0
  335. package/dist/theme/componentTokens.d.ts +24 -0
  336. package/dist/theme/componentTokens.d.ts.map +1 -0
  337. package/dist/theme/componentTokens.js +20 -0
  338. package/dist/theme/componentTokens.js.map +1 -0
  339. package/dist/theme/components.d.ts +38 -0
  340. package/dist/theme/components.d.ts.map +1 -0
  341. package/dist/theme/components.js +65 -0
  342. package/dist/theme/components.js.map +1 -0
  343. package/dist/theme/defineTheme.d.ts +85 -0
  344. package/dist/theme/defineTheme.d.ts.map +1 -0
  345. package/dist/theme/defineTheme.js +130 -0
  346. package/dist/theme/defineTheme.js.map +1 -0
  347. package/dist/theme/fonts.d.ts +32 -0
  348. package/dist/theme/fonts.d.ts.map +1 -0
  349. package/dist/theme/fonts.js +36 -0
  350. package/dist/theme/fonts.js.map +1 -0
  351. package/dist/theme/index.d.ts +13 -0
  352. package/dist/theme/index.d.ts.map +1 -0
  353. package/dist/theme/index.js +10 -0
  354. package/dist/theme/semanticTokens.d.ts +9 -0
  355. package/dist/theme/semanticTokens.d.ts.map +1 -0
  356. package/dist/theme/semanticTokens.js +110 -0
  357. package/dist/theme/semanticTokens.js.map +1 -0
  358. package/dist/theme/theme.d.ts +61 -7
  359. package/dist/theme/theme.d.ts.map +1 -1
  360. package/dist/theme/theme.js +100 -10
  361. package/dist/theme/theme.js.map +1 -1
  362. package/dist/theme/toneClass.d.ts +8 -0
  363. package/dist/theme/toneClass.d.ts.map +1 -0
  364. package/dist/theme/toneClass.js +15 -0
  365. package/dist/theme/toneClass.js.map +1 -0
  366. package/dist/theme/tones.d.ts +89 -0
  367. package/dist/theme/tones.d.ts.map +1 -0
  368. package/dist/theme/tones.js +127 -0
  369. package/dist/theme/tones.js.map +1 -0
  370. package/dist/time-input/TimeInput.js +1 -1
  371. package/dist/time-input/TimeInput.js.map +1 -1
  372. package/dist/toast/Toast.css +22 -44
  373. package/dist/toast/Toast.d.ts +5 -3
  374. package/dist/toast/Toast.d.ts.map +1 -1
  375. package/dist/toast/Toast.js +4 -3
  376. package/dist/toast/Toast.js.map +1 -1
  377. package/dist/toast/Toast.module.js +10 -16
  378. package/dist/toast/Toast.module.js.map +1 -1
  379. package/dist/toast/tokens.d.ts +3 -0
  380. package/dist/toast/tokens.d.ts.map +1 -0
  381. package/dist/toast/tokens.js +21 -0
  382. package/dist/toast/tokens.js.map +1 -0
  383. package/dist/tooltip/Tooltip.css +12 -11
  384. package/dist/tooltip/Tooltip.js +1 -1
  385. package/dist/tooltip/Tooltip.js.map +1 -1
  386. package/dist/tooltip/Tooltip.module.js +2 -2
  387. package/dist/tooltip/Tooltip.module.js.map +1 -1
  388. package/dist/tooltip/tokens.d.ts +3 -0
  389. package/dist/tooltip/tokens.d.ts.map +1 -0
  390. package/dist/tooltip/tokens.js +21 -0
  391. package/dist/tooltip/tokens.js.map +1 -0
  392. package/dist/utils/cx.d.ts +1 -1
  393. package/dist/utils/cx.d.ts.map +1 -1
  394. package/dist/utils/cx.js +2 -2
  395. package/dist/utils/cx.js.map +1 -1
  396. package/package.json +20 -3
@@ -0,0 +1,21 @@
1
+ import { cx } from "../utils/cx.js";
2
+ import { justification, responsiveVariables, space, withVariables } from "../layout/responsive.js";
3
+ import Inline_module_default from "./Inline.module.js";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/inline/Inline.tsx
6
+ /** Items side by side, wrapping when they don't fit, like Bootstrap's `.hstack`. */
7
+ function Inline({ as: Element = "div", gap, align, justify, wrap = true, className, style, ...props }) {
8
+ return /* @__PURE__ */ jsx(Element, {
9
+ ...props,
10
+ className: cx("panneau-inline", Inline_module_default.inline, !wrap && Inline_module_default.nowrap, className),
11
+ style: withVariables([
12
+ responsiveVariables("inline", "gap", gap, space),
13
+ responsiveVariables("inline", "align", align, String),
14
+ responsiveVariables("inline", "justify", justify, justification)
15
+ ], style)
16
+ });
17
+ }
18
+ //#endregion
19
+ export { Inline };
20
+
21
+ //# sourceMappingURL=Inline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Inline.js","names":["styles"],"sources":["../../src/inline/Inline.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\n\nimport {\n type Justification,\n type Responsive,\n type Space,\n justification,\n responsiveVariables,\n space,\n withVariables,\n} from '../layout/responsive';\nimport { cx } from '../utils/cx';\nimport styles from './Inline.module.css';\n\nexport interface InlineProps extends HTMLAttributes<HTMLElement> {\n /** Element to render. Defaults to `div`. */\n as?: 'div' | 'section' | 'header' | 'footer' | 'nav' | 'ul' | 'ol' | 'span';\n /** Space between items, from the space scale. Defaults to the `--panneau-inline-gap` token. */\n gap?: Responsive<Space>;\n /** Vertical alignment of the items. Defaults to `center`. */\n align?: Responsive<'start' | 'center' | 'end' | 'stretch' | 'baseline'>;\n /** Horizontal distribution of the items. Defaults to `start`. */\n justify?: Responsive<Justification>;\n /** Items wrap to the next line when they don't fit. Defaults to `true`. */\n wrap?: boolean;\n}\n\n/** Items side by side, wrapping when they don't fit, like Bootstrap's `.hstack`. */\nexport function Inline({\n as: Element = 'div',\n gap,\n align,\n justify,\n wrap = true,\n className,\n style,\n ...props\n}: InlineProps) {\n return (\n <Element\n {...props}\n className={cx('panneau-inline', styles.inline, !wrap && styles.nowrap, className)}\n style={withVariables(\n [\n responsiveVariables('inline', 'gap', gap, space),\n responsiveVariables('inline', 'align', align, String),\n responsiveVariables('inline', 'justify', justify, justification),\n ],\n style,\n )}\n />\n );\n}\n"],"mappings":";;;;;;AA4BA,SAAgB,OAAO,EACnB,IAAI,UAAU,OACd,KACA,OACA,SACA,OAAO,MACP,WACA,OACA,GAAG,SACS;CACZ,OACI,oBAAC,SAAD;EACI,GAAI;EACJ,WAAW,GAAG,kBAAkBA,sBAAO,QAAQ,CAAC,QAAQA,sBAAO,QAAQ,SAAS;EAChF,OAAO,cACH;GACI,oBAAoB,UAAU,OAAO,KAAK,KAAK;GAC/C,oBAAoB,UAAU,SAAS,OAAO,MAAM;GACpD,oBAAoB,UAAU,WAAW,SAAS,aAAa;EAAC,GAEpE,KACJ;CAAE,CAAA;AAGd"}
@@ -0,0 +1,12 @@
1
+ import "./Inline.css";
2
+ //#region src/inline/Inline.module.css
3
+ var inline = "panneau-inline";
4
+ var nowrap = "panneau-inline-nowrap";
5
+ var Inline_module_default = {
6
+ inline,
7
+ nowrap
8
+ };
9
+ //#endregion
10
+ export { Inline_module_default as default, inline, nowrap };
11
+
12
+ //# sourceMappingURL=Inline.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Inline.module.js","names":[],"sources":["../../src/inline/Inline.module.css"],"sourcesContent":["/* A horizontal row that wraps: each prop can change at the breakpoints of the nearest container. */\n\n.inline {\n display: flex;\n flex-wrap: wrap;\n min-width: 0;\n}\n\n.nowrap {\n flex-wrap: nowrap;\n}\n/* Responsive values are set inline; children reset them so that they aren't inherited. */\n.inline > * {\n --_panneau-inline-gap-base: initial;\n --_panneau-inline-gap-sm: initial;\n --_panneau-inline-gap-md: initial;\n --_panneau-inline-gap-lg: initial;\n --_panneau-inline-gap-xl: initial;\n --_panneau-inline-align-base: initial;\n --_panneau-inline-align-sm: initial;\n --_panneau-inline-align-md: initial;\n --_panneau-inline-align-lg: initial;\n --_panneau-inline-align-xl: initial;\n --_panneau-inline-justify-base: initial;\n --_panneau-inline-justify-sm: initial;\n --_panneau-inline-justify-md: initial;\n --_panneau-inline-justify-lg: initial;\n --_panneau-inline-justify-xl: initial;\n}\n\n.inline {\n gap: var(--_panneau-inline-gap-base, var(--panneau-inline-gap, var(--panneau-space-2)));\n align-items: var(--_panneau-inline-align-base, center);\n justify-content: var(--_panneau-inline-justify-base, start);\n}\n\n@container (min-width: 40rem) {\n .inline {\n gap: var(\n --_panneau-inline-gap-sm,\n var(--_panneau-inline-gap-base, var(--panneau-inline-gap, var(--panneau-space-2)))\n );\n align-items: var(--_panneau-inline-align-sm, var(--_panneau-inline-align-base, center));\n justify-content: var(\n --_panneau-inline-justify-sm,\n var(--_panneau-inline-justify-base, start)\n );\n }\n}\n\n@container (min-width: 48rem) {\n .inline {\n gap: var(\n --_panneau-inline-gap-md,\n var(\n --_panneau-inline-gap-sm,\n var(--_panneau-inline-gap-base, var(--panneau-inline-gap, var(--panneau-space-2)))\n )\n );\n align-items: var(\n --_panneau-inline-align-md,\n var(--_panneau-inline-align-sm, var(--_panneau-inline-align-base, center))\n );\n justify-content: var(\n --_panneau-inline-justify-md,\n var(--_panneau-inline-justify-sm, var(--_panneau-inline-justify-base, start))\n );\n }\n}\n\n@container (min-width: 64rem) {\n .inline {\n gap: var(\n --_panneau-inline-gap-lg,\n var(\n --_panneau-inline-gap-md,\n var(\n --_panneau-inline-gap-sm,\n var(\n --_panneau-inline-gap-base,\n var(--panneau-inline-gap, var(--panneau-space-2))\n )\n )\n )\n );\n align-items: var(\n --_panneau-inline-align-lg,\n var(\n --_panneau-inline-align-md,\n var(--_panneau-inline-align-sm, var(--_panneau-inline-align-base, center))\n )\n );\n justify-content: var(\n --_panneau-inline-justify-lg,\n var(\n --_panneau-inline-justify-md,\n var(--_panneau-inline-justify-sm, var(--_panneau-inline-justify-base, start))\n )\n );\n }\n}\n\n@container (min-width: 80rem) {\n .inline {\n gap: var(\n --_panneau-inline-gap-xl,\n var(\n --_panneau-inline-gap-lg,\n var(\n --_panneau-inline-gap-md,\n var(\n --_panneau-inline-gap-sm,\n var(\n --_panneau-inline-gap-base,\n var(--panneau-inline-gap, var(--panneau-space-2))\n )\n )\n )\n )\n );\n align-items: var(\n --_panneau-inline-align-xl,\n var(\n --_panneau-inline-align-lg,\n var(\n --_panneau-inline-align-md,\n var(--_panneau-inline-align-sm, var(--_panneau-inline-align-base, center))\n )\n )\n );\n justify-content: var(\n --_panneau-inline-justify-xl,\n var(\n --_panneau-inline-justify-lg,\n var(\n --_panneau-inline-justify-md,\n var(--_panneau-inline-justify-sm, var(--_panneau-inline-justify-base, start))\n )\n )\n );\n }\n}\n"],"mappings":""}
@@ -0,0 +1,3 @@
1
+ /** Tokens of Inline. */
2
+ export declare const inlineTokens: import("..").ComponentTokens<"inline", "panneau-inline-gap">;
3
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/inline/tokens.ts"],"names":[],"mappings":"AAEA,wBAAwB;AACxB,eAAO,MAAM,YAAY,8DAGvB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { defineComponentTokens } from "../theme/componentTokens.js";
2
+ //#region src/inline/tokens.ts
3
+ /** Tokens of Inline. */
4
+ var inlineTokens = defineComponentTokens("inline", {
5
+ /** Space between items, in both directions, when the `gap` prop is not set. */
6
+ gap: "var(--panneau-space-2)" });
7
+ //#endregion
8
+ export { inlineTokens };
9
+
10
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","names":[],"sources":["../../src/inline/tokens.ts"],"sourcesContent":["import { defineComponentTokens } from '../theme/componentTokens';\n\n/** Tokens of Inline. */\nexport const inlineTokens = defineComponentTokens('inline', {\n /** Space between items, in both directions, when the `gap` prop is not set. */\n gap: 'var(--panneau-space-2)',\n});\n"],"mappings":";;;AAGA,IAAa,eAAe,sBAAsB,UAAU;;AAExD,KAAK,yBACT,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { CSSProperties } from 'react';
2
+ /**
3
+ * Breakpoints of the layout primitives, like Bootstrap's `$grid-breakpoints`: the minimum width of
4
+ * the nearest container at which a responsive value applies. They are constants, since CSS
5
+ * variables can't be used in queries; the stylesheets of the primitives use the same values.
6
+ */
7
+ export declare const BREAKPOINTS: Readonly<{
8
+ sm: "40rem";
9
+ md: "48rem";
10
+ lg: "64rem";
11
+ xl: "80rem";
12
+ }>;
13
+ /** A breakpoint: `sm`, `md`, `lg` or `xl`. */
14
+ export type Breakpoint = keyof typeof BREAKPOINTS;
15
+ /**
16
+ * A value, or values by breakpoint: `{ base: 1, md: 2, lg: 3 }`. Each value applies from its
17
+ * breakpoint up, until a larger one sets another. Breakpoints are widths of the nearest container
18
+ * (`PanneauRoot`, `Container`, a form, a list), not of the viewport, so that a grid in a narrow
19
+ * sidebar behaves as on a phone.
20
+ */
21
+ export type Responsive<T> = T | Partial<Record<'base' | Breakpoint, T>>;
22
+ /** A step of the space scale of the theme (`--panneau-space-<step>`), or 0. */
23
+ export type Space = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10;
24
+ /** The CSS value of a step of the space scale. */
25
+ export declare function space(step: Space): string;
26
+ /**
27
+ * The inline variables of a responsive prop, `--_panneau-<component>-<prop>-<breakpoint>`, which
28
+ * the static rules of the component read in each container query. Unset breakpoints fall back to
29
+ * smaller ones in CSS.
30
+ */
31
+ export declare function responsiveVariables<T>(component: string, prop: string, value: Responsive<T> | undefined, toCss: (value: T) => string): Record<string, string>;
32
+ /** Merges inline variables with the `style` prop, which wins. */
33
+ export declare function withVariables(variables: Record<string, string>[], style: CSSProperties | undefined): CSSProperties | undefined;
34
+ /** How the primitives distribute items along their axis: `between` is `space-between`. */
35
+ export type Justification = 'start' | 'center' | 'end' | 'between';
36
+ /** The CSS value of a justification. */
37
+ export declare function justification(value: Justification): string;
38
+ //# sourceMappingURL=responsive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responsive.d.ts","sourceRoot":"","sources":["../../src/layout/responsive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C;;;;GAIG;AACH,eAAO,MAAM,WAAW;;;;;EAKtB,CAAC;AAEH,8CAA8C;AAC9C,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,WAAW,CAAC;AAElD;;;;;GAKG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAExE,+EAA+E;AAC/E,MAAM,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAEvD,kDAAkD;AAClD,wBAAgB,KAAK,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAEzC;AAQD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,EAChC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAC5B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AAED,iEAAiE;AACjE,wBAAgB,aAAa,CACzB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EACnC,KAAK,EAAE,aAAa,GAAG,SAAS,GACjC,aAAa,GAAG,SAAS,CAG3B;AAED,0FAA0F;AAC1F,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAEnE,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAE1D"}
@@ -0,0 +1,49 @@
1
+ //#region src/layout/responsive.ts
2
+ /**
3
+ * Breakpoints of the layout primitives, like Bootstrap's `$grid-breakpoints`: the minimum width of
4
+ * the nearest container at which a responsive value applies. They are constants, since CSS
5
+ * variables can't be used in queries; the stylesheets of the primitives use the same values.
6
+ */
7
+ var BREAKPOINTS = Object.freeze({
8
+ sm: "40rem",
9
+ md: "48rem",
10
+ lg: "64rem",
11
+ xl: "80rem"
12
+ });
13
+ /** The CSS value of a step of the space scale. */
14
+ function space(step) {
15
+ return step === 0 ? "0" : `var(--panneau-space-${step})`;
16
+ }
17
+ var KEYS = ["base", ...Object.keys(BREAKPOINTS)];
18
+ function isByBreakpoint(value) {
19
+ return typeof value === "object" && value !== null;
20
+ }
21
+ /**
22
+ * The inline variables of a responsive prop, `--_panneau-<component>-<prop>-<breakpoint>`, which
23
+ * the static rules of the component read in each container query. Unset breakpoints fall back to
24
+ * smaller ones in CSS.
25
+ */
26
+ function responsiveVariables(component, prop, value, toCss) {
27
+ if (value === void 0) return {};
28
+ const values = isByBreakpoint(value) ? value : { base: value };
29
+ return Object.fromEntries(KEYS.flatMap((key) => {
30
+ const item = values[key];
31
+ return item !== void 0 ? [[`--_panneau-${component}-${prop}-${key}`, toCss(item)]] : [];
32
+ }));
33
+ }
34
+ /** Merges inline variables with the `style` prop, which wins. */
35
+ function withVariables(variables, style) {
36
+ const merged = Object.assign({}, ...variables);
37
+ return Object.keys(merged).length > 0 ? {
38
+ ...merged,
39
+ ...style
40
+ } : style;
41
+ }
42
+ /** The CSS value of a justification. */
43
+ function justification(value) {
44
+ return value === "between" ? "space-between" : value;
45
+ }
46
+ //#endregion
47
+ export { BREAKPOINTS, justification, responsiveVariables, space, withVariables };
48
+
49
+ //# sourceMappingURL=responsive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responsive.js","names":[],"sources":["../../src/layout/responsive.ts"],"sourcesContent":["import type { CSSProperties } from 'react';\n\n/**\n * Breakpoints of the layout primitives, like Bootstrap's `$grid-breakpoints`: the minimum width of\n * the nearest container at which a responsive value applies. They are constants, since CSS\n * variables can't be used in queries; the stylesheets of the primitives use the same values.\n */\nexport const BREAKPOINTS = Object.freeze({\n sm: '40rem',\n md: '48rem',\n lg: '64rem',\n xl: '80rem',\n});\n\n/** A breakpoint: `sm`, `md`, `lg` or `xl`. */\nexport type Breakpoint = keyof typeof BREAKPOINTS;\n\n/**\n * A value, or values by breakpoint: `{ base: 1, md: 2, lg: 3 }`. Each value applies from its\n * breakpoint up, until a larger one sets another. Breakpoints are widths of the nearest container\n * (`PanneauRoot`, `Container`, a form, a list), not of the viewport, so that a grid in a narrow\n * sidebar behaves as on a phone.\n */\nexport type Responsive<T> = T | Partial<Record<'base' | Breakpoint, T>>;\n\n/** A step of the space scale of the theme (`--panneau-space-<step>`), or 0. */\nexport type Space = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10;\n\n/** The CSS value of a step of the space scale. */\nexport function space(step: Space): string {\n return step === 0 ? '0' : `var(--panneau-space-${step})`;\n}\n\nconst KEYS = ['base', ...(Object.keys(BREAKPOINTS) as Breakpoint[])] as const;\n\nfunction isByBreakpoint<T>(value: Responsive<T>): value is Partial<Record<'base' | Breakpoint, T>> {\n return typeof value === 'object' && value !== null;\n}\n\n/**\n * The inline variables of a responsive prop, `--_panneau-<component>-<prop>-<breakpoint>`, which\n * the static rules of the component read in each container query. Unset breakpoints fall back to\n * smaller ones in CSS.\n */\nexport function responsiveVariables<T>(\n component: string,\n prop: string,\n value: Responsive<T> | undefined,\n toCss: (value: T) => string,\n): Record<string, string> {\n if (value === undefined) {\n return {};\n }\n const values: Partial<Record<'base' | Breakpoint, T>> = isByBreakpoint(value)\n ? value\n : { base: value };\n return Object.fromEntries(\n KEYS.flatMap((key) => {\n const item = values[key];\n return item !== undefined\n ? [[`--_panneau-${component}-${prop}-${key}`, toCss(item)]]\n : [];\n }),\n );\n}\n\n/** Merges inline variables with the `style` prop, which wins. */\nexport function withVariables(\n variables: Record<string, string>[],\n style: CSSProperties | undefined,\n): CSSProperties | undefined {\n const merged = Object.assign({}, ...variables) as Record<string, string>;\n return Object.keys(merged).length > 0 ? { ...merged, ...style } : style;\n}\n\n/** How the primitives distribute items along their axis: `between` is `space-between`. */\nexport type Justification = 'start' | 'center' | 'end' | 'between';\n\n/** The CSS value of a justification. */\nexport function justification(value: Justification): string {\n return value === 'between' ? 'space-between' : value;\n}\n"],"mappings":";;;;;;AAOA,IAAa,cAAc,OAAO,OAAO;CACrC,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACR,CAAC;;AAiBD,SAAgB,MAAM,MAAqB;CACvC,OAAO,SAAS,IAAI,MAAM,uBAAuB,KAAI;AACzD;AAEA,IAAM,OAAO,CAAC,QAAQ,GAAI,OAAO,KAAK,WAAW,CAAkB;AAEnE,SAAS,eAAkB,OAAwE;CAC/F,OAAO,OAAO,UAAU,YAAY,UAAU;AAClD;;;;;;AAOA,SAAgB,oBACZ,WACA,MACA,OACA,OACsB;CACtB,IAAI,UAAU,KAAA,GACV,OAAO,CAAC;CAEZ,MAAM,SAAkD,eAAe,KAAK,IACtE,QACA,EAAE,MAAM,MAAM;CACpB,OAAO,OAAO,YACV,KAAK,SAAS,QAAQ;EAClB,MAAM,OAAO,OAAO;EACpB,OAAO,SAAS,KAAA,IACV,CAAC,CAAC,cAAc,UAAS,GAAI,KAAI,GAAI,OAAO,MAAM,IAAI,CAAC,CAAC,IACxD,CAAA;CACV,CAAC,CACL;AACJ;;AAGA,SAAgB,cACZ,WACA,OACyB;CACzB,MAAM,SAAS,OAAO,OAAO,CAAC,GAAG,GAAG,SAAS;CAC7C,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,SAAS,IAAI;EAAE,GAAG;EAAQ,GAAG;CAAM,IAAI;AACtE;;AAMA,SAAgB,cAAc,OAA8B;CACxD,OAAO,UAAU,YAAY,kBAAkB;AACnD"}
package/dist/menu/Menu.js CHANGED
@@ -16,7 +16,7 @@ function Menu$1({ className, popoverClassName, placement = "bottom start", ...pr
16
16
  className: popoverClassName,
17
17
  children: /* @__PURE__ */ jsx(Menu, {
18
18
  ...props,
19
- className: cx(ListBox_module_default.listBox, className)
19
+ className: cx("panneau-menu", ListBox_module_default.listBox, className)
20
20
  })
21
21
  });
22
22
  }
@@ -25,7 +25,7 @@ function MenuItem$1({ children, icon, description, isDanger = false, className,
25
25
  return /* @__PURE__ */ jsxs(MenuItem, {
26
26
  ...props,
27
27
  textValue: textValue ?? (typeof children === "string" ? children : void 0),
28
- className: cx(ListBox_module_default.item, className),
28
+ className: cx("panneau-menu-item", ListBox_module_default.item, className),
29
29
  "data-danger": isDanger || void 0,
30
30
  children: [icon !== void 0 ? /* @__PURE__ */ jsx(Icon, { icon }) : null, /* @__PURE__ */ jsxs("span", {
31
31
  className: ListBox_module_default.itemText,
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","names":["Menu","AriaMenu","styles","MenuItem","AriaMenuItem","_c"],"sources":["../../src/menu/Menu.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport {\n Menu as AriaMenu,\n MenuItem as AriaMenuItem,\n type MenuItemProps as AriaMenuItemProps,\n type MenuProps as AriaMenuProps,\n Separator,\n Text,\n} from 'react-aria-components';\n\nimport { Icon, type IconComponent } from '../icon/Icon';\nimport { PopoverSurface } from '../popover/Popover';\nimport styles from '../select/ListBox.module.css';\nimport { cx } from '../utils/cx';\n\nexport interface MenuProps<T extends object> extends Omit<AriaMenuProps<T>, 'className' | 'style'> {\n className?: string;\n popoverClassName?: string;\n placement?: 'bottom start' | 'bottom end' | 'top start' | 'top end';\n}\n\n/**\n * A menu of actions, inside a `MenuTrigger` with its button as the first child. Arrow keys move\n * between items, and typing a letter jumps to an item.\n */\nexport function Menu<T extends object>({\n className,\n popoverClassName,\n placement = 'bottom start',\n ...props\n}: MenuProps<T>) {\n return (\n <PopoverSurface placement={placement} className={popoverClassName}>\n <AriaMenu {...props} className={cx(styles.listBox, className)} />\n </PopoverSurface>\n );\n}\n\nexport interface MenuItemProps extends Omit<AriaMenuItemProps, 'className' | 'style' | 'children'> {\n children?: ReactNode;\n icon?: IconComponent;\n description?: string;\n /** Styles the item as destructive. */\n isDanger?: boolean;\n className?: string;\n}\n\n/** An item of a `Menu`. */\nexport function MenuItem({\n children,\n icon,\n description,\n isDanger = false,\n className,\n textValue,\n ...props\n}: MenuItemProps) {\n return (\n <AriaMenuItem\n {...props}\n textValue={textValue ?? (typeof children === 'string' ? children : undefined)}\n className={cx(styles.item, className)}\n data-danger={isDanger || undefined}\n >\n {icon !== undefined ? <Icon icon={icon} /> : null}\n <span className={styles.itemText}>\n <Text slot=\"label\" className={styles.itemLabel}>\n {children}\n </Text>\n {description !== undefined ? (\n <Text slot=\"description\" className={styles.itemDescription}>\n {description}\n </Text>\n ) : null}\n </span>\n </AriaMenuItem>\n );\n}\n\n/** A line between groups of menu items. */\nexport function MenuSeparator() {\n return <Separator className={styles.separator} />;\n}\n\nexport { MenuTrigger } from 'react-aria-components';\n"],"mappings":";;;;;;;;;;;;AAyBA,SAAgBA,OAAuB,EACnC,WACA,kBACA,YAAY,gBACZ,GAAG,SACU;CACb,OACI,oBAAC,gBAAD;EAA2B;EAAW,WAAW;EAC7C,UAAA,oBAACC,MAAD;GAAU,GAAI;GAAO,WAAW,GAAGC,uBAAO,SAAS,SAAS;EAAE,CAAA;CAClD,CAAA;AAExB;;AAYA,SAAgBC,WAAS,EACrB,UACA,MACA,aACA,WAAW,OACX,WACA,WACA,GAAG,SACW;CACd,OACI,qBAACC,UAAD;EACI,GAAI;EACJ,WAAW,cAAc,OAAO,aAAa,WAAW,WAAW,KAAA;EACnE,WAAW,GAAGF,uBAAO,MAAM,SAAS;EACpC,eAAa,YAAY,KAAA;EAJ7B,UAAA,CAMK,SAAS,KAAA,IAAY,oBAAC,MAAD,EAAY,KAAK,CAAA,IAAM,MAC7C,qBAAC,QAAD;GAAM,WAAWA,uBAAO;GAAxB,UAAA,CACI,oBAAC,MAAD;IAAM,MAAK;IAAQ,WAAWA,uBAAO;IAChC;GACC,CAAA,GACL,gBAAgB,KAAA,IACb,oBAAC,MAAD;IAAM,MAAK;IAAc,WAAWA,uBAAO;IACtC,UAAA;GACC,CAAA,IACN,IACF;EACI,CAAA,CAAA;;AAEtB;;AAGA,SAAO,gBAAA;CAAA,MAAA,IAAAG,EAAA,CAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,OAAA,IAAA,2BAAA,GAAA;EACI,KAAA,oBAAC,WAAD,EAAsB,WAAAH,uBAAM,UAAU,CAAA;EAAI,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAAA,OAA1C;AAA0C"}
1
+ {"version":3,"file":"Menu.js","names":["Menu","AriaMenu","styles","MenuItem","AriaMenuItem","_c"],"sources":["../../src/menu/Menu.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport {\n Menu as AriaMenu,\n MenuItem as AriaMenuItem,\n type MenuItemProps as AriaMenuItemProps,\n type MenuProps as AriaMenuProps,\n Separator,\n Text,\n} from 'react-aria-components';\n\nimport { Icon, type IconComponent } from '../icon/Icon';\nimport { PopoverSurface } from '../popover/Popover';\nimport styles from '../select/ListBox.module.css';\nimport { cx } from '../utils/cx';\n\nexport interface MenuProps<T extends object> extends Omit<AriaMenuProps<T>, 'className' | 'style'> {\n className?: string;\n popoverClassName?: string;\n placement?: 'bottom start' | 'bottom end' | 'top start' | 'top end';\n}\n\n/**\n * A menu of actions, inside a `MenuTrigger` with its button as the first child. Arrow keys move\n * between items, and typing a letter jumps to an item.\n */\nexport function Menu<T extends object>({\n className,\n popoverClassName,\n placement = 'bottom start',\n ...props\n}: MenuProps<T>) {\n return (\n <PopoverSurface placement={placement} className={popoverClassName}>\n <AriaMenu {...props} className={cx('panneau-menu', styles.listBox, className)} />\n </PopoverSurface>\n );\n}\n\nexport interface MenuItemProps extends Omit<AriaMenuItemProps, 'className' | 'style' | 'children'> {\n children?: ReactNode;\n icon?: IconComponent;\n description?: string;\n /** Styles the item as destructive. */\n isDanger?: boolean;\n className?: string;\n}\n\n/** An item of a `Menu`. */\nexport function MenuItem({\n children,\n icon,\n description,\n isDanger = false,\n className,\n textValue,\n ...props\n}: MenuItemProps) {\n return (\n <AriaMenuItem\n {...props}\n textValue={textValue ?? (typeof children === 'string' ? children : undefined)}\n className={cx('panneau-menu-item', styles.item, className)}\n data-danger={isDanger || undefined}\n >\n {icon !== undefined ? <Icon icon={icon} /> : null}\n <span className={styles.itemText}>\n <Text slot=\"label\" className={styles.itemLabel}>\n {children}\n </Text>\n {description !== undefined ? (\n <Text slot=\"description\" className={styles.itemDescription}>\n {description}\n </Text>\n ) : null}\n </span>\n </AriaMenuItem>\n );\n}\n\n/** A line between groups of menu items. */\nexport function MenuSeparator() {\n return <Separator className={styles.separator} />;\n}\n\nexport { MenuTrigger } from 'react-aria-components';\n"],"mappings":";;;;;;;;;;;;AAyBA,SAAgBA,OAAuB,EACnC,WACA,kBACA,YAAY,gBACZ,GAAG,SACU;CACb,OACI,oBAAC,gBAAD;EAA2B;EAAW,WAAW;EAC7C,UAAA,oBAACC,MAAD;GAAU,GAAI;GAAO,WAAW,GAAG,gBAAgBC,uBAAO,SAAS,SAAS;EAAE,CAAA;CAClE,CAAA;AAExB;;AAYA,SAAgBC,WAAS,EACrB,UACA,MACA,aACA,WAAW,OACX,WACA,WACA,GAAG,SACW;CACd,OACI,qBAACC,UAAD;EACI,GAAI;EACJ,WAAW,cAAc,OAAO,aAAa,WAAW,WAAW,KAAA;EACnE,WAAW,GAAG,qBAAqBF,uBAAO,MAAM,SAAS;EACzD,eAAa,YAAY,KAAA;EAJ7B,UAAA,CAMK,SAAS,KAAA,IAAY,oBAAC,MAAD,EAAY,KAAK,CAAA,IAAM,MAC7C,qBAAC,QAAD;GAAM,WAAWA,uBAAO;GAAxB,UAAA,CACI,oBAAC,MAAD;IAAM,MAAK;IAAQ,WAAWA,uBAAO;IAChC;GACC,CAAA,GACL,gBAAgB,KAAA,IACb,oBAAC,MAAD;IAAM,MAAK;IAAc,WAAWA,uBAAO;IACtC,UAAA;GACC,CAAA,IACN,IACF;EACI,CAAA,CAAA;;AAEtB;;AAGA,SAAO,gBAAA;CAAA,MAAA,IAAAG,EAAA,CAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,OAAA,IAAA,2BAAA,GAAA;EACI,KAAA,oBAAC,WAAD,EAAsB,WAAAH,uBAAM,UAAU,CAAA;EAAI,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAAA,OAA1C;AAA0C"}
@@ -0,0 +1,2 @@
1
+ export { lucideIconLoader } from '../icon/lucideIconLoader';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/named-icons/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1 @@
1
+ export { lucideIconLoader } from "../icon/lucideIconLoader.js";
@@ -1,25 +1,25 @@
1
- .panneau-control-4aptNi.panneau-control-4aptNi {
1
+ .panneau-number-input-control.panneau-number-input-control {
2
2
  padding-inline-end: 0;
3
3
  overflow: hidden;
4
4
  }
5
5
 
6
- .panneau-input-qqs-MV {
7
- font-variant-numeric: tabular-nums;
6
+ .panneau-number-input-input {
7
+ font-variant-numeric: var(--panneau-font-numeric);
8
8
  }
9
9
 
10
- .panneau-steppers-JoTs6w {
10
+ .panneau-number-input-steppers {
11
11
  display: flex;
12
12
  flex-direction: column;
13
13
  align-self: stretch;
14
14
  border-inline-start: var(--panneau-border-width) solid var(--panneau-color-border);
15
15
  }
16
16
 
17
- .panneau-stepper-sAGR2f {
17
+ .panneau-number-input-stepper {
18
18
  display: flex;
19
19
  flex: 1 1 0;
20
20
  align-items: center;
21
21
  justify-content: center;
22
- width: 1.75rem;
22
+ width: var(--panneau-number-input-stepper-width, 1.75rem);
23
23
  padding: 0;
24
24
  color: var(--panneau-color-text-muted);
25
25
  cursor: pointer;
@@ -27,31 +27,31 @@
27
27
  border: 0;
28
28
  }
29
29
 
30
- .panneau-stepper-sAGR2f + .panneau-stepper-sAGR2f {
30
+ .panneau-number-input-stepper + .panneau-number-input-stepper {
31
31
  border-top: var(--panneau-border-width) solid var(--panneau-color-border);
32
32
  }
33
33
 
34
- .panneau-stepper-sAGR2f[data-hovered] {
34
+ .panneau-number-input-stepper[data-hovered] {
35
35
  color: var(--panneau-color-text);
36
36
  background-color: var(--panneau-color-hover);
37
37
  }
38
38
 
39
- .panneau-stepper-sAGR2f[data-pressed] {
39
+ .panneau-number-input-stepper[data-pressed] {
40
40
  background-color: var(--panneau-color-pressed);
41
41
  }
42
42
 
43
- .panneau-stepper-sAGR2f[data-disabled] {
43
+ .panneau-number-input-stepper[data-disabled] {
44
44
  cursor: not-allowed;
45
45
  opacity: 0.5;
46
46
  }
47
47
 
48
48
  /* Touch screens have their own keyboard for numbers: the steppers would be too small. */
49
49
  @media (pointer: coarse) {
50
- .panneau-steppers-JoTs6w {
50
+ .panneau-number-input-steppers {
51
51
  display: none;
52
52
  }
53
53
 
54
- .panneau-control-4aptNi.panneau-control-4aptNi {
54
+ .panneau-number-input-control.panneau-number-input-control {
55
55
  padding-inline-end: var(--panneau-space-3);
56
56
  }
57
57
  }
@@ -25,7 +25,7 @@ function NumberInput({ label, description, errors = [], value, defaultValue, onC
25
25
  isReadOnly,
26
26
  isInvalid: invalid,
27
27
  validationBehavior: "aria",
28
- className: cx(Field_module_default.field, className),
28
+ className: cx("panneau-number-input", Field_module_default.field, className),
29
29
  children: [
30
30
  /* @__PURE__ */ jsx(FieldLabel, {
31
31
  isRequired,
@@ -1 +1 @@
1
- {"version":3,"file":"NumberInput.js","names":["fieldStyles","styles"],"sources":["../../src/number-input/NumberInput.tsx"],"sourcesContent":["import { ChevronDown, ChevronUp } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport {\n type NumberFieldProps as AriaNumberFieldProps,\n Button,\n Group,\n Input,\n NumberField,\n} from 'react-aria-components';\n\nimport {\n type FieldChromeProps,\n FieldDescription,\n FieldErrors,\n FieldLabel,\n fieldStyles,\n} from '../field/FieldParts';\nimport { Icon } from '../icon/Icon';\nimport { cx } from '../utils/cx';\nimport styles from './NumberInput.module.css';\n\nexport interface NumberInputProps\n extends\n Omit<\n AriaNumberFieldProps,\n | 'className'\n | 'style'\n | 'children'\n | 'isInvalid'\n | 'validate'\n | 'value'\n | 'defaultValue'\n | 'onChange'\n >,\n FieldChromeProps {\n /** The number, or `null` when empty. */\n value?: number | null;\n defaultValue?: number | null;\n /** Called with the number, or `null` when the input is cleared. */\n onChange?: (value: number | null) => void;\n placeholder?: string;\n /** Content after the number, inside the control: a unit. */\n suffix?: ReactNode;\n controlClassName?: string;\n inputClassName?: string;\n}\n\nfunction toAria(value: number | null | undefined): number | undefined {\n return value === null ? Number.NaN : value;\n}\n\n/**\n * A number input, formatted for the locale, with steppers and arrow keys. An empty input is\n * `null`, not `NaN`.\n */\nexport function NumberInput({\n label,\n description,\n errors = [],\n value,\n defaultValue,\n onChange,\n placeholder,\n suffix,\n className,\n labelClassName,\n descriptionClassName,\n errorsClassName,\n controlClassName,\n inputClassName,\n isRequired,\n isReadOnly,\n ...props\n}: NumberInputProps) {\n const invalid = errors.length > 0;\n return (\n <NumberField\n {...props}\n value={toAria(value)}\n defaultValue={toAria(defaultValue)}\n onChange={(next) => onChange?.(Number.isNaN(next) ? null : next)}\n isRequired={isRequired}\n isReadOnly={isReadOnly}\n isInvalid={invalid}\n validationBehavior=\"aria\"\n className={cx(fieldStyles.field, className)}\n >\n <FieldLabel isRequired={isRequired} className={labelClassName}>\n {label}\n </FieldLabel>\n <Group\n className={cx(fieldStyles.control, styles.control, controlClassName)}\n data-invalid={invalid || undefined}\n data-readonly={isReadOnly || undefined}\n >\n <Input\n placeholder={placeholder}\n className={cx(fieldStyles.bare, styles.input, inputClassName)}\n />\n {suffix !== undefined ? (\n <span className={fieldStyles.adornment}>{suffix}</span>\n ) : null}\n {isReadOnly !== true ? (\n <span className={styles.steppers}>\n <Button slot=\"increment\" className={styles.stepper}>\n <Icon icon={ChevronUp} size=\"xs\" />\n </Button>\n <Button slot=\"decrement\" className={styles.stepper}>\n <Icon icon={ChevronDown} size=\"xs\" />\n </Button>\n </span>\n ) : null}\n </Group>\n <FieldDescription className={descriptionClassName}>{description}</FieldDescription>\n <FieldErrors errors={errors} className={errorsClassName} />\n </NumberField>\n );\n}\n"],"mappings":";;;;;;;;;AA+CA,SAAS,OAAO,OAAsD;CAClE,OAAO,UAAU,OAAO,MAAa;AACzC;;;;;AAMA,SAAgB,YAAY,EACxB,OACA,aACA,SAAS,CAAA,GACT,OACA,cACA,UACA,aACA,QACA,WACA,gBACA,sBACA,iBACA,kBACA,gBACA,YACA,YACA,GAAG,SACc;CACjB,MAAM,UAAU,OAAO,SAAS;CAChC,OACI,qBAAC,aAAD;EACI,GAAI;EACJ,OAAO,OAAO,KAAK;EACnB,cAAc,OAAO,YAAY;EACjC,WAAW,SAAS,WAAW,OAAO,MAAM,IAAI,IAAI,OAAO,IAAI;EACnD;EACA;EACZ,WAAW;EACX,oBAAmB;EACnB,WAAW,GAAGA,qBAAY,OAAO,SAAS;EAT9C,UAAA;GAWI,oBAAC,YAAD;IAAwB;IAAY,WAAW;IAC1C,UAAA;GACO,CAAA;GACZ,qBAAC,OAAD;IACI,WAAW,GAAGA,qBAAY,SAASC,2BAAO,SAAS,gBAAgB;IACnE,gBAAc,WAAW,KAAA;IACzB,iBAAe,cAAc,KAAA;IAHjC,UAAA;KAKI,oBAAC,OAAD;MACiB;MACb,WAAW,GAAGD,qBAAY,MAAMC,2BAAO,OAAO,cAAc;KAAE,CAAA;KAEjE,WAAW,KAAA,IACR,oBAAC,QAAD;MAAM,WAAWD,qBAAY;MAAY,UAAA;KAAa,CAAA,IACtD;KACH,eAAe,OACZ,qBAAC,QAAD;MAAM,WAAWC,2BAAO;MAAxB,UAAA,CACI,oBAAC,QAAD;OAAQ,MAAK;OAAY,WAAWA,2BAAO;OACvC,UAAA,oBAAC,MAAD;QAAM,MAAM;QAAW,MAAK;OAAI,CAAA;MAC5B,CAAA,GACR,oBAAC,QAAD;OAAQ,MAAK;OAAY,WAAWA,2BAAO;OACvC,UAAA,oBAAC,MAAD;QAAM,MAAM;QAAa,MAAK;OAAI,CAAA;MAC9B,CAAA,CACN;KACN,CAAA,IAAA;IACD;;GACP,oBAAC,kBAAD;IAAkB,WAAW;IAAuB,UAAA;GAA8B,CAAA;GAClF,oBAAC,aAAD;IAAqB;IAAQ,WAAW;GAAgB,CAAA;EAC/C;;AAErB"}
1
+ {"version":3,"file":"NumberInput.js","names":["fieldStyles","styles"],"sources":["../../src/number-input/NumberInput.tsx"],"sourcesContent":["import { ChevronDown, ChevronUp } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport {\n type NumberFieldProps as AriaNumberFieldProps,\n Button,\n Group,\n Input,\n NumberField,\n} from 'react-aria-components';\n\nimport {\n type FieldChromeProps,\n FieldDescription,\n FieldErrors,\n FieldLabel,\n fieldStyles,\n} from '../field/FieldParts';\nimport { Icon } from '../icon/Icon';\nimport { cx } from '../utils/cx';\nimport styles from './NumberInput.module.css';\n\nexport interface NumberInputProps\n extends\n Omit<\n AriaNumberFieldProps,\n | 'className'\n | 'style'\n | 'children'\n | 'isInvalid'\n | 'validate'\n | 'value'\n | 'defaultValue'\n | 'onChange'\n >,\n FieldChromeProps {\n /** The number, or `null` when empty. */\n value?: number | null;\n defaultValue?: number | null;\n /** Called with the number, or `null` when the input is cleared. */\n onChange?: (value: number | null) => void;\n placeholder?: string;\n /** Content after the number, inside the control: a unit. */\n suffix?: ReactNode;\n controlClassName?: string;\n inputClassName?: string;\n}\n\nfunction toAria(value: number | null | undefined): number | undefined {\n return value === null ? Number.NaN : value;\n}\n\n/**\n * A number input, formatted for the locale, with steppers and arrow keys. An empty input is\n * `null`, not `NaN`.\n */\nexport function NumberInput({\n label,\n description,\n errors = [],\n value,\n defaultValue,\n onChange,\n placeholder,\n suffix,\n className,\n labelClassName,\n descriptionClassName,\n errorsClassName,\n controlClassName,\n inputClassName,\n isRequired,\n isReadOnly,\n ...props\n}: NumberInputProps) {\n const invalid = errors.length > 0;\n return (\n <NumberField\n {...props}\n value={toAria(value)}\n defaultValue={toAria(defaultValue)}\n onChange={(next) => onChange?.(Number.isNaN(next) ? null : next)}\n isRequired={isRequired}\n isReadOnly={isReadOnly}\n isInvalid={invalid}\n validationBehavior=\"aria\"\n className={cx('panneau-number-input', fieldStyles.field, className)}\n >\n <FieldLabel isRequired={isRequired} className={labelClassName}>\n {label}\n </FieldLabel>\n <Group\n className={cx(fieldStyles.control, styles.control, controlClassName)}\n data-invalid={invalid || undefined}\n data-readonly={isReadOnly || undefined}\n >\n <Input\n placeholder={placeholder}\n className={cx(fieldStyles.bare, styles.input, inputClassName)}\n />\n {suffix !== undefined ? (\n <span className={fieldStyles.adornment}>{suffix}</span>\n ) : null}\n {isReadOnly !== true ? (\n <span className={styles.steppers}>\n <Button slot=\"increment\" className={styles.stepper}>\n <Icon icon={ChevronUp} size=\"xs\" />\n </Button>\n <Button slot=\"decrement\" className={styles.stepper}>\n <Icon icon={ChevronDown} size=\"xs\" />\n </Button>\n </span>\n ) : null}\n </Group>\n <FieldDescription className={descriptionClassName}>{description}</FieldDescription>\n <FieldErrors errors={errors} className={errorsClassName} />\n </NumberField>\n );\n}\n"],"mappings":";;;;;;;;;AA+CA,SAAS,OAAO,OAAsD;CAClE,OAAO,UAAU,OAAO,MAAa;AACzC;;;;;AAMA,SAAgB,YAAY,EACxB,OACA,aACA,SAAS,CAAA,GACT,OACA,cACA,UACA,aACA,QACA,WACA,gBACA,sBACA,iBACA,kBACA,gBACA,YACA,YACA,GAAG,SACc;CACjB,MAAM,UAAU,OAAO,SAAS;CAChC,OACI,qBAAC,aAAD;EACI,GAAI;EACJ,OAAO,OAAO,KAAK;EACnB,cAAc,OAAO,YAAY;EACjC,WAAW,SAAS,WAAW,OAAO,MAAM,IAAI,IAAI,OAAO,IAAI;EACnD;EACA;EACZ,WAAW;EACX,oBAAmB;EACnB,WAAW,GAAG,wBAAwBA,qBAAY,OAAO,SAAS;EATtE,UAAA;GAWI,oBAAC,YAAD;IAAwB;IAAY,WAAW;IAC1C,UAAA;GACO,CAAA;GACZ,qBAAC,OAAD;IACI,WAAW,GAAGA,qBAAY,SAASC,2BAAO,SAAS,gBAAgB;IACnE,gBAAc,WAAW,KAAA;IACzB,iBAAe,cAAc,KAAA;IAHjC,UAAA;KAKI,oBAAC,OAAD;MACiB;MACb,WAAW,GAAGD,qBAAY,MAAMC,2BAAO,OAAO,cAAc;KAAE,CAAA;KAEjE,WAAW,KAAA,IACR,oBAAC,QAAD;MAAM,WAAWD,qBAAY;MAAY,UAAA;KAAa,CAAA,IACtD;KACH,eAAe,OACZ,qBAAC,QAAD;MAAM,WAAWC,2BAAO;MAAxB,UAAA,CACI,oBAAC,QAAD;OAAQ,MAAK;OAAY,WAAWA,2BAAO;OACvC,UAAA,oBAAC,MAAD;QAAM,MAAM;QAAW,MAAK;OAAI,CAAA;MAC5B,CAAA,GACR,oBAAC,QAAD;OAAQ,MAAK;OAAY,WAAWA,2BAAO;OACvC,UAAA,oBAAC,MAAD;QAAM,MAAM;QAAa,MAAK;OAAI,CAAA;MAC9B,CAAA,CACN;KACN,CAAA,IAAA;IACD;;GACP,oBAAC,kBAAD;IAAkB,WAAW;IAAuB,UAAA;GAA8B,CAAA;GAClF,oBAAC,aAAD;IAAqB;IAAQ,WAAW;GAAgB,CAAA;EAC/C;;AAErB"}
@@ -1,9 +1,9 @@
1
1
  import "./NumberInput.css";
2
2
  //#region src/number-input/NumberInput.module.css
3
- var control = "panneau-control-4aptNi";
4
- var input = "panneau-input-qqs-MV";
5
- var steppers = "panneau-steppers-JoTs6w";
6
- var stepper = "panneau-stepper-sAGR2f";
3
+ var control = "panneau-number-input-control";
4
+ var input = "panneau-number-input-input";
5
+ var steppers = "panneau-number-input-steppers";
6
+ var stepper = "panneau-number-input-stepper";
7
7
  var NumberInput_module_default = {
8
8
  control,
9
9
  input,
@@ -1 +1 @@
1
- {"version":3,"file":"NumberInput.module.js","names":[],"sources":["../../src/number-input/NumberInput.module.css"],"sourcesContent":[".control.control {\n padding-inline-end: 0;\n overflow: hidden;\n}\n\n.input {\n font-variant-numeric: tabular-nums;\n}\n\n.steppers {\n display: flex;\n flex-direction: column;\n align-self: stretch;\n border-inline-start: var(--panneau-border-width) solid var(--panneau-color-border);\n}\n\n.stepper {\n display: flex;\n flex: 1 1 0;\n align-items: center;\n justify-content: center;\n width: 1.75rem;\n padding: 0;\n color: var(--panneau-color-text-muted);\n cursor: pointer;\n background: transparent;\n border: 0;\n}\n\n.stepper + .stepper {\n border-top: var(--panneau-border-width) solid var(--panneau-color-border);\n}\n\n.stepper[data-hovered] {\n color: var(--panneau-color-text);\n background-color: var(--panneau-color-hover);\n}\n\n.stepper[data-pressed] {\n background-color: var(--panneau-color-pressed);\n}\n\n.stepper[data-disabled] {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/* Touch screens have their own keyboard for numbers: the steppers would be too small. */\n@media (pointer: coarse) {\n .steppers {\n display: none;\n }\n\n .control.control {\n padding-inline-end: var(--panneau-space-3);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"NumberInput.module.js","names":[],"sources":["../../src/number-input/NumberInput.module.css"],"sourcesContent":[".control.control {\n padding-inline-end: 0;\n overflow: hidden;\n}\n\n.input {\n font-variant-numeric: var(--panneau-font-numeric);\n}\n\n.steppers {\n display: flex;\n flex-direction: column;\n align-self: stretch;\n border-inline-start: var(--panneau-border-width) solid var(--panneau-color-border);\n}\n\n.stepper {\n display: flex;\n flex: 1 1 0;\n align-items: center;\n justify-content: center;\n width: var(--panneau-number-input-stepper-width, 1.75rem);\n padding: 0;\n color: var(--panneau-color-text-muted);\n cursor: pointer;\n background: transparent;\n border: 0;\n}\n\n.stepper + .stepper {\n border-top: var(--panneau-border-width) solid var(--panneau-color-border);\n}\n\n.stepper[data-hovered] {\n color: var(--panneau-color-text);\n background-color: var(--panneau-color-hover);\n}\n\n.stepper[data-pressed] {\n background-color: var(--panneau-color-pressed);\n}\n\n.stepper[data-disabled] {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/* Touch screens have their own keyboard for numbers: the steppers would be too small. */\n@media (pointer: coarse) {\n .steppers {\n display: none;\n }\n\n .control.control {\n padding-inline-end: var(--panneau-space-3);\n }\n}\n"],"mappings":""}
@@ -0,0 +1,3 @@
1
+ /** Tokens of NumberInput. */
2
+ export declare const numberInputTokens: import("..").ComponentTokens<"number-input", "panneau-number-input-stepper-width">;
3
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/number-input/tokens.ts"],"names":[],"mappings":"AAEA,6BAA6B;AAC7B,eAAO,MAAM,iBAAiB,oFAG5B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { defineComponentTokens } from "../theme/componentTokens.js";
2
+ //#region src/number-input/tokens.ts
3
+ /** Tokens of NumberInput. */
4
+ var numberInputTokens = defineComponentTokens("number-input", {
5
+ /** Width of the increment and decrement buttons. */
6
+ "stepper-width": "1.75rem" });
7
+ //#endregion
8
+ export { numberInputTokens };
9
+
10
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","names":[],"sources":["../../src/number-input/tokens.ts"],"sourcesContent":["import { defineComponentTokens } from '../theme/componentTokens';\n\n/** Tokens of NumberInput. */\nexport const numberInputTokens = defineComponentTokens('number-input', {\n /** Width of the increment and decrement buttons. */\n 'stepper-width': '1.75rem',\n});\n"],"mappings":";;;AAGA,IAAa,oBAAoB,sBAAsB,gBAAgB;;AAEnE,iBAAiB,UACrB,CAAC"}
@@ -1,30 +1,31 @@
1
- .panneau-popover-KacUIM {
1
+ .panneau-popover {
2
2
  min-width: var(--trigger-width, 10rem);
3
3
  max-width: calc(100vw - 2 * var(--panneau-space-4));
4
4
  color: var(--panneau-color-text);
5
- background-color: var(--panneau-color-surface-raised);
6
- border: var(--panneau-border-width) solid var(--panneau-color-border);
7
- border-radius: var(--panneau-radius-lg);
8
- box-shadow: var(--panneau-shadow-lg);
5
+ background-color: var(--panneau-popover-bg, var(--panneau-color-surface-raised));
6
+ border: var(--panneau-border-width) solid
7
+ var(--panneau-popover-border-color, var(--panneau-color-border));
8
+ border-radius: var(--panneau-popover-radius, var(--panneau-radius-lg));
9
+ box-shadow: var(--panneau-popover-shadow, var(--panneau-shadow-lg));
9
10
  outline: none;
10
11
  overflow: auto;
11
12
  z-index: var(--panneau-z-overlay);
12
13
  }
13
14
 
14
- .panneau-popover-KacUIM[data-entering] {
15
- animation: panneau-pop-fB47s- var(--panneau-duration) ease-out;
15
+ .panneau-popover[data-entering] {
16
+ animation: panneau-popover-pop var(--panneau-duration) ease-out;
16
17
  }
17
18
 
18
- .panneau-popover-KacUIM[data-exiting] {
19
- animation: panneau-pop-fB47s- var(--panneau-duration) ease-in reverse;
19
+ .panneau-popover[data-exiting] {
20
+ animation: panneau-popover-pop var(--panneau-duration) ease-in reverse;
20
21
  }
21
22
 
22
- .panneau-dialog-2cVt0D {
23
- padding: var(--panneau-space-3);
23
+ .panneau-popover-dialog {
24
+ padding: var(--panneau-popover-padding, var(--panneau-space-3));
24
25
  outline: none;
25
26
  }
26
27
 
27
- @keyframes panneau-pop-fB47s- {
28
+ @keyframes panneau-popover-pop {
28
29
  from {
29
30
  opacity: 0;
30
31
  transform: scale(0.97);
@@ -14,7 +14,7 @@ function Popover$1({ children, "aria-label": ariaLabel, className, dialogClassNa
14
14
  return /* @__PURE__ */ jsx(Popover, {
15
15
  ...props,
16
16
  offset,
17
- className: cx(Popover_module_default.popover, className),
17
+ className: cx("panneau-popover", Popover_module_default.popover, className),
18
18
  UNSTABLE_portalContainer: container,
19
19
  children: /* @__PURE__ */ jsx(Dialog, {
20
20
  "aria-label": ariaLabel,
@@ -30,7 +30,7 @@ function PopoverSurface({ children, className, offset = 6, ...props }) {
30
30
  return /* @__PURE__ */ jsx(Popover, {
31
31
  ...props,
32
32
  offset,
33
- className: cx(Popover_module_default.popover, className),
33
+ className: cx("panneau-popover", Popover_module_default.popover, className),
34
34
  UNSTABLE_portalContainer: container,
35
35
  children
36
36
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.js","names":["Popover","AriaPopover","styles"],"sources":["../../src/popover/Popover.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport {\n Popover as AriaPopover,\n type PopoverProps as AriaPopoverProps,\n Dialog,\n} from 'react-aria-components';\n\nimport { usePortalContainer } from '../root/PanneauRoot';\nimport { cx } from '../utils/cx';\nimport styles from './Popover.module.css';\n\nexport interface PopoverProps extends Omit<\n AriaPopoverProps,\n 'className' | 'style' | 'children' | 'UNSTABLE_portalContainer'\n> {\n children?: ReactNode;\n /** Accessible label of the popover's dialog, when it has no heading. */\n 'aria-label'?: string;\n className?: string;\n dialogClassName?: string;\n}\n\n/**\n * A popover with free content, inside a `PopoverTrigger` with its button as the first child. Its\n * content is a non-modal dialog: focus moves into it and comes back to the button when it closes.\n */\nexport function Popover({\n children,\n 'aria-label': ariaLabel,\n className,\n dialogClassName,\n offset = 6,\n ...props\n}: PopoverProps) {\n const container = usePortalContainer();\n if (container === null) {\n return null;\n }\n return (\n <AriaPopover\n {...props}\n offset={offset}\n className={cx(styles.popover, className)}\n UNSTABLE_portalContainer={container}\n >\n <Dialog aria-label={ariaLabel} className={cx(styles.dialog, dialogClassName)}>\n {children}\n </Dialog>\n </AriaPopover>\n );\n}\n\n/** The popover surface without a dialog, for listboxes and menus. */\nexport function PopoverSurface({\n children,\n className,\n offset = 6,\n ...props\n}: Omit<PopoverProps, 'aria-label' | 'dialogClassName'>) {\n const container = usePortalContainer();\n if (container === null) {\n return null;\n }\n return (\n <AriaPopover\n {...props}\n offset={offset}\n className={cx(styles.popover, className)}\n UNSTABLE_portalContainer={container}\n >\n {children}\n </AriaPopover>\n );\n}\n\nexport { DialogTrigger as PopoverTrigger } from 'react-aria-components';\n"],"mappings":";;;;;;;;;;AA0BA,SAAgBA,UAAQ,EACpB,UACA,cAAc,WACd,WACA,iBACA,SAAS,GACT,GAAG,SACU;CACb,MAAM,YAAY,mBAAmB;CACrC,IAAI,cAAc,MACd,OAAO;CAEX,OACI,oBAACC,SAAD;EACI,GAAI;EACI;EACR,WAAW,GAAGC,uBAAO,SAAS,SAAS;EACvC,0BAA0B;EAE1B,UAAA,oBAAC,QAAD;GAAQ,cAAY;GAAW,WAAW,GAAGA,uBAAO,QAAQ,eAAe;GACtE;EACG,CAAA;CACC,CAAA;AAErB;;AAGA,SAAgB,eAAe,EAC3B,UACA,WACA,SAAS,GACT,GAAG,SACkD;CACrD,MAAM,YAAY,mBAAmB;CACrC,IAAI,cAAc,MACd,OAAO;CAEX,OACI,oBAACD,SAAD;EACI,GAAI;EACI;EACR,WAAW,GAAGC,uBAAO,SAAS,SAAS;EACvC,0BAA0B;EAEzB;CACQ,CAAA;AAErB"}
1
+ {"version":3,"file":"Popover.js","names":["Popover","AriaPopover","styles"],"sources":["../../src/popover/Popover.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport {\n Popover as AriaPopover,\n type PopoverProps as AriaPopoverProps,\n Dialog,\n} from 'react-aria-components';\n\nimport { usePortalContainer } from '../root/PanneauRoot';\nimport { cx } from '../utils/cx';\nimport styles from './Popover.module.css';\n\nexport interface PopoverProps extends Omit<\n AriaPopoverProps,\n 'className' | 'style' | 'children' | 'UNSTABLE_portalContainer'\n> {\n children?: ReactNode;\n /** Accessible label of the popover's dialog, when it has no heading. */\n 'aria-label'?: string;\n className?: string;\n dialogClassName?: string;\n}\n\n/**\n * A popover with free content, inside a `PopoverTrigger` with its button as the first child. Its\n * content is a non-modal dialog: focus moves into it and comes back to the button when it closes.\n */\nexport function Popover({\n children,\n 'aria-label': ariaLabel,\n className,\n dialogClassName,\n offset = 6,\n ...props\n}: PopoverProps) {\n const container = usePortalContainer();\n if (container === null) {\n return null;\n }\n return (\n <AriaPopover\n {...props}\n offset={offset}\n className={cx('panneau-popover', styles.popover, className)}\n UNSTABLE_portalContainer={container}\n >\n <Dialog aria-label={ariaLabel} className={cx(styles.dialog, dialogClassName)}>\n {children}\n </Dialog>\n </AriaPopover>\n );\n}\n\n/** The popover surface without a dialog, for listboxes and menus. */\nexport function PopoverSurface({\n children,\n className,\n offset = 6,\n ...props\n}: Omit<PopoverProps, 'aria-label' | 'dialogClassName'>) {\n const container = usePortalContainer();\n if (container === null) {\n return null;\n }\n return (\n <AriaPopover\n {...props}\n offset={offset}\n className={cx('panneau-popover', styles.popover, className)}\n UNSTABLE_portalContainer={container}\n >\n {children}\n </AriaPopover>\n );\n}\n\nexport { DialogTrigger as PopoverTrigger } from 'react-aria-components';\n"],"mappings":";;;;;;;;;;AA0BA,SAAgBA,UAAQ,EACpB,UACA,cAAc,WACd,WACA,iBACA,SAAS,GACT,GAAG,SACU;CACb,MAAM,YAAY,mBAAmB;CACrC,IAAI,cAAc,MACd,OAAO;CAEX,OACI,oBAACC,SAAD;EACI,GAAI;EACI;EACR,WAAW,GAAG,mBAAmBC,uBAAO,SAAS,SAAS;EAC1D,0BAA0B;EAE1B,UAAA,oBAAC,QAAD;GAAQ,cAAY;GAAW,WAAW,GAAGA,uBAAO,QAAQ,eAAe;GACtE;EACG,CAAA;CACC,CAAA;AAErB;;AAGA,SAAgB,eAAe,EAC3B,UACA,WACA,SAAS,GACT,GAAG,SACkD;CACrD,MAAM,YAAY,mBAAmB;CACrC,IAAI,cAAc,MACd,OAAO;CAEX,OACI,oBAACD,SAAD;EACI,GAAI;EACI;EACR,WAAW,GAAG,mBAAmBC,uBAAO,SAAS,SAAS;EAC1D,0BAA0B;EAEzB;CACQ,CAAA;AAErB"}
@@ -1,8 +1,8 @@
1
1
  import "./Popover.css";
2
2
  //#region src/popover/Popover.module.css
3
- var popover = "panneau-popover-KacUIM";
4
- var pop = "panneau-pop-fB47s-";
5
- var dialog = "panneau-dialog-2cVt0D";
3
+ var popover = "panneau-popover";
4
+ var pop = "panneau-popover-pop";
5
+ var dialog = "panneau-popover-dialog";
6
6
  var Popover_module_default = {
7
7
  popover,
8
8
  pop,
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.module.js","names":[],"sources":["../../src/popover/Popover.module.css"],"sourcesContent":[".popover {\n min-width: var(--trigger-width, 10rem);\n max-width: calc(100vw - 2 * var(--panneau-space-4));\n color: var(--panneau-color-text);\n background-color: var(--panneau-color-surface-raised);\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-lg);\n box-shadow: var(--panneau-shadow-lg);\n outline: none;\n overflow: auto;\n z-index: var(--panneau-z-overlay);\n}\n\n.popover[data-entering] {\n animation: pop var(--panneau-duration) ease-out;\n}\n\n.popover[data-exiting] {\n animation: pop var(--panneau-duration) ease-in reverse;\n}\n\n.dialog {\n padding: var(--panneau-space-3);\n outline: none;\n}\n\n@keyframes pop {\n from {\n opacity: 0;\n transform: scale(0.97);\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Popover.module.js","names":[],"sources":["../../src/popover/Popover.module.css"],"sourcesContent":[".popover {\n min-width: var(--trigger-width, 10rem);\n max-width: calc(100vw - 2 * var(--panneau-space-4));\n color: var(--panneau-color-text);\n background-color: var(--panneau-popover-bg, var(--panneau-color-surface-raised));\n border: var(--panneau-border-width) solid\n var(--panneau-popover-border-color, var(--panneau-color-border));\n border-radius: var(--panneau-popover-radius, var(--panneau-radius-lg));\n box-shadow: var(--panneau-popover-shadow, var(--panneau-shadow-lg));\n outline: none;\n overflow: auto;\n z-index: var(--panneau-z-overlay);\n}\n\n.popover[data-entering] {\n animation: pop var(--panneau-duration) ease-out;\n}\n\n.popover[data-exiting] {\n animation: pop var(--panneau-duration) ease-in reverse;\n}\n\n.dialog {\n padding: var(--panneau-popover-padding, var(--panneau-space-3));\n outline: none;\n}\n\n@keyframes pop {\n from {\n opacity: 0;\n transform: scale(0.97);\n }\n}\n"],"mappings":""}
@@ -0,0 +1,3 @@
1
+ /** Tokens of Popover. */
2
+ export declare const popoverTokens: import("..").ComponentTokens<"popover", "panneau-popover-radius" | "panneau-popover-padding" | "panneau-popover-bg" | "panneau-popover-border-color" | "panneau-popover-shadow">;
3
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/popover/tokens.ts"],"names":[],"mappings":"AAEA,yBAAyB;AACzB,eAAO,MAAM,aAAa,kLAWxB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { defineComponentTokens } from "../theme/componentTokens.js";
2
+ //#region src/popover/tokens.ts
3
+ /** Tokens of Popover. */
4
+ var popoverTokens = defineComponentTokens("popover", {
5
+ /** Background. */
6
+ bg: "var(--panneau-color-surface-raised)",
7
+ /** Border color. */
8
+ "border-color": "var(--panneau-color-border)",
9
+ /** Corner radius. */
10
+ radius: "var(--panneau-radius-lg)",
11
+ /** Shadow. */
12
+ shadow: "var(--panneau-shadow-lg)",
13
+ /** Padding of the content. */
14
+ padding: "var(--panneau-space-3)"
15
+ });
16
+ //#endregion
17
+ export { popoverTokens };
18
+
19
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","names":[],"sources":["../../src/popover/tokens.ts"],"sourcesContent":["import { defineComponentTokens } from '../theme/componentTokens';\n\n/** Tokens of Popover. */\nexport const popoverTokens = defineComponentTokens('popover', {\n /** Background. */\n bg: 'var(--panneau-color-surface-raised)',\n /** Border color. */\n 'border-color': 'var(--panneau-color-border)',\n /** Corner radius. */\n radius: 'var(--panneau-radius-lg)',\n /** Shadow. */\n shadow: 'var(--panneau-shadow-lg)',\n /** Padding of the content. */\n padding: 'var(--panneau-space-3)',\n});\n"],"mappings":";;;AAGA,IAAa,gBAAgB,sBAAsB,WAAW;;CAE1D,IAAI;;CAEJ,gBAAgB;;CAEhB,QAAQ;;CAER,QAAQ;;CAER,SAAS;AACb,CAAC"}