@panneau/ui 5.0.0-alpha.0 → 5.0.0-alpha.2

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 (388) hide show
  1. package/README.md +280 -6
  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 +1 -0
  48. package/dist/checkbox/Checkbox.js.map +1 -1
  49. package/dist/checkbox/Checkbox.module.js +4 -4
  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/namedIcons.d.ts +16 -0
  156. package/dist/icon/namedIcons.d.ts.map +1 -0
  157. package/dist/icon/namedIcons.js +90 -0
  158. package/dist/icon/namedIcons.js.map +1 -0
  159. package/dist/icon-button/IconButton.css +2 -2
  160. package/dist/icon-button/IconButton.d.ts +1 -1
  161. package/dist/icon-button/IconButton.d.ts.map +1 -1
  162. package/dist/icon-button/IconButton.js +3 -3
  163. package/dist/icon-button/IconButton.js.map +1 -1
  164. package/dist/icon-button/IconButton.module.js +2 -2
  165. package/dist/index.d.ts +26 -5
  166. package/dist/index.d.ts.map +1 -1
  167. package/dist/index.js +21 -2
  168. package/dist/inline/Inline.css +142 -0
  169. package/dist/inline/Inline.d.ts +17 -0
  170. package/dist/inline/Inline.d.ts.map +1 -0
  171. package/dist/inline/Inline.js +21 -0
  172. package/dist/inline/Inline.js.map +1 -0
  173. package/dist/inline/Inline.module.js +12 -0
  174. package/dist/inline/Inline.module.js.map +1 -0
  175. package/dist/inline/tokens.d.ts +3 -0
  176. package/dist/inline/tokens.d.ts.map +1 -0
  177. package/dist/inline/tokens.js +10 -0
  178. package/dist/inline/tokens.js.map +1 -0
  179. package/dist/layout/responsive.d.ts +38 -0
  180. package/dist/layout/responsive.d.ts.map +1 -0
  181. package/dist/layout/responsive.js +49 -0
  182. package/dist/layout/responsive.js.map +1 -0
  183. package/dist/menu/Menu.js +2 -2
  184. package/dist/menu/Menu.js.map +1 -1
  185. package/dist/number-input/NumberInput.css +12 -12
  186. package/dist/number-input/NumberInput.js +1 -1
  187. package/dist/number-input/NumberInput.js.map +1 -1
  188. package/dist/number-input/NumberInput.module.js +4 -4
  189. package/dist/number-input/NumberInput.module.js.map +1 -1
  190. package/dist/number-input/tokens.d.ts +3 -0
  191. package/dist/number-input/tokens.d.ts.map +1 -0
  192. package/dist/number-input/tokens.js +10 -0
  193. package/dist/number-input/tokens.js.map +1 -0
  194. package/dist/popover/Popover.css +13 -12
  195. package/dist/popover/Popover.js +2 -2
  196. package/dist/popover/Popover.js.map +1 -1
  197. package/dist/popover/Popover.module.js +3 -3
  198. package/dist/popover/Popover.module.js.map +1 -1
  199. package/dist/popover/tokens.d.ts +3 -0
  200. package/dist/popover/tokens.d.ts.map +1 -0
  201. package/dist/popover/tokens.js +19 -0
  202. package/dist/popover/tokens.js.map +1 -0
  203. package/dist/prose/Prose.css +141 -0
  204. package/dist/prose/Prose.d.ts +11 -0
  205. package/dist/prose/Prose.d.ts.map +1 -0
  206. package/dist/prose/Prose.js +18 -0
  207. package/dist/prose/Prose.js.map +1 -0
  208. package/dist/prose/Prose.module.js +8 -0
  209. package/dist/prose/Prose.module.js.map +1 -0
  210. package/dist/prose/tokens.d.ts +3 -0
  211. package/dist/prose/tokens.d.ts.map +1 -0
  212. package/dist/prose/tokens.js +33 -0
  213. package/dist/prose/tokens.js.map +1 -0
  214. package/dist/radio-group/RadioGroup.css +21 -20
  215. package/dist/radio-group/RadioGroup.d.ts.map +1 -1
  216. package/dist/radio-group/RadioGroup.js +2 -2
  217. package/dist/radio-group/RadioGroup.js.map +1 -1
  218. package/dist/radio-group/RadioGroup.module.js +6 -6
  219. package/dist/radio-group/RadioGroup.module.js.map +1 -1
  220. package/dist/radio-group/tokens.d.ts +3 -0
  221. package/dist/radio-group/tokens.d.ts.map +1 -0
  222. package/dist/radio-group/tokens.js +19 -0
  223. package/dist/radio-group/tokens.js.map +1 -0
  224. package/dist/root/PanneauRoot.css +243 -20
  225. package/dist/root/PanneauRoot.d.ts +28 -4
  226. package/dist/root/PanneauRoot.d.ts.map +1 -1
  227. package/dist/root/PanneauRoot.js +104 -21
  228. package/dist/root/PanneauRoot.js.map +1 -1
  229. package/dist/root/PanneauRoot.module.js +11 -3
  230. package/dist/root/PanneauRoot.module.js.map +1 -1
  231. package/dist/root/ThemeScope.d.ts +24 -0
  232. package/dist/root/ThemeScope.d.ts.map +1 -0
  233. package/dist/root/ThemeScope.js +49 -0
  234. package/dist/root/ThemeScope.js.map +1 -0
  235. package/dist/select/ListBox.css +23 -22
  236. package/dist/select/ListBox.module.js +12 -12
  237. package/dist/select/ListBox.module.js.map +1 -1
  238. package/dist/select/Select.js +1 -1
  239. package/dist/select/Select.js.map +1 -1
  240. package/dist/select/listBoxTokens.d.ts +3 -0
  241. package/dist/select/listBoxTokens.d.ts.map +1 -0
  242. package/dist/select/listBoxTokens.js +19 -0
  243. package/dist/select/listBoxTokens.js.map +1 -0
  244. package/dist/spinner/Spinner.css +8 -8
  245. package/dist/spinner/Spinner.js +1 -1
  246. package/dist/spinner/Spinner.js.map +1 -1
  247. package/dist/spinner/Spinner.module.js +5 -5
  248. package/dist/spinner/Spinner.module.js.map +1 -1
  249. package/dist/spinner/tokens.d.ts +3 -0
  250. package/dist/spinner/tokens.d.ts.map +1 -0
  251. package/dist/spinner/tokens.js +10 -0
  252. package/dist/spinner/tokens.js.map +1 -0
  253. package/dist/stack/Stack.css +135 -0
  254. package/dist/stack/Stack.d.ts +15 -0
  255. package/dist/stack/Stack.d.ts.map +1 -0
  256. package/dist/stack/Stack.js +21 -0
  257. package/dist/stack/Stack.js.map +1 -0
  258. package/dist/stack/Stack.module.js +8 -0
  259. package/dist/stack/Stack.module.js.map +1 -0
  260. package/dist/stack/tokens.d.ts +3 -0
  261. package/dist/stack/tokens.d.ts.map +1 -0
  262. package/dist/stack/tokens.js +10 -0
  263. package/dist/stack/tokens.js.map +1 -0
  264. package/dist/switch/Switch.css +34 -25
  265. package/dist/switch/Switch.d.ts.map +1 -1
  266. package/dist/switch/Switch.js +1 -0
  267. package/dist/switch/Switch.js.map +1 -1
  268. package/dist/switch/Switch.module.js +4 -4
  269. package/dist/switch/Switch.module.js.map +1 -1
  270. package/dist/switch/tokens.d.ts +3 -0
  271. package/dist/switch/tokens.d.ts.map +1 -0
  272. package/dist/switch/tokens.js +25 -0
  273. package/dist/switch/tokens.js.map +1 -0
  274. package/dist/tabs/Tabs.css +24 -23
  275. package/dist/tabs/Tabs.js +4 -4
  276. package/dist/tabs/Tabs.js.map +1 -1
  277. package/dist/tabs/Tabs.module.js +4 -4
  278. package/dist/tabs/Tabs.module.js.map +1 -1
  279. package/dist/tabs/tokens.d.ts +3 -0
  280. package/dist/tabs/tokens.d.ts.map +1 -0
  281. package/dist/tabs/tokens.js +25 -0
  282. package/dist/tabs/tokens.js.map +1 -0
  283. package/dist/text/Text.css +74 -0
  284. package/dist/text/Text.d.ts +27 -0
  285. package/dist/text/Text.d.ts.map +1 -0
  286. package/dist/text/Text.js +16 -0
  287. package/dist/text/Text.js.map +1 -0
  288. package/dist/text/Text.module.js +30 -0
  289. package/dist/text/Text.module.js.map +1 -0
  290. package/dist/text/tokens.d.ts +3 -0
  291. package/dist/text/tokens.d.ts.map +1 -0
  292. package/dist/text/tokens.js +10 -0
  293. package/dist/text/tokens.js.map +1 -0
  294. package/dist/text-area/TextArea.css +1 -1
  295. package/dist/text-area/TextArea.js +1 -1
  296. package/dist/text-area/TextArea.js.map +1 -1
  297. package/dist/text-area/TextArea.module.js +1 -1
  298. package/dist/text-input/TextInput.js +1 -1
  299. package/dist/text-input/TextInput.js.map +1 -1
  300. package/dist/theme/Tone.css +70 -0
  301. package/dist/theme/Tone.module.js +20 -0
  302. package/dist/theme/Tone.module.js.map +1 -0
  303. package/dist/theme/bootstrap.d.ts +10 -0
  304. package/dist/theme/bootstrap.d.ts.map +1 -1
  305. package/dist/theme/bootstrap.js +48 -5
  306. package/dist/theme/bootstrap.js.map +1 -1
  307. package/dist/theme/chartColors.d.ts +23 -0
  308. package/dist/theme/chartColors.d.ts.map +1 -0
  309. package/dist/theme/chartColors.js +27 -0
  310. package/dist/theme/chartColors.js.map +1 -0
  311. package/dist/theme/checkTheme.d.ts +39 -0
  312. package/dist/theme/checkTheme.d.ts.map +1 -0
  313. package/dist/theme/checkTheme.js +132 -0
  314. package/dist/theme/checkTheme.js.map +1 -0
  315. package/dist/theme/cli.d.ts +14 -0
  316. package/dist/theme/cli.d.ts.map +1 -0
  317. package/dist/theme/cli.js +61 -0
  318. package/dist/theme/cli.js.map +1 -0
  319. package/dist/theme/color.d.ts +30 -0
  320. package/dist/theme/color.d.ts.map +1 -0
  321. package/dist/theme/color.js +94 -0
  322. package/dist/theme/color.js.map +1 -0
  323. package/dist/theme/colorVision.d.ts +23 -0
  324. package/dist/theme/colorVision.d.ts.map +1 -0
  325. package/dist/theme/colorVision.js +140 -0
  326. package/dist/theme/colorVision.js.map +1 -0
  327. package/dist/theme/componentTokens.d.ts +24 -0
  328. package/dist/theme/componentTokens.d.ts.map +1 -0
  329. package/dist/theme/componentTokens.js +20 -0
  330. package/dist/theme/componentTokens.js.map +1 -0
  331. package/dist/theme/components.d.ts +38 -0
  332. package/dist/theme/components.d.ts.map +1 -0
  333. package/dist/theme/components.js +65 -0
  334. package/dist/theme/components.js.map +1 -0
  335. package/dist/theme/defineTheme.d.ts +85 -0
  336. package/dist/theme/defineTheme.d.ts.map +1 -0
  337. package/dist/theme/defineTheme.js +130 -0
  338. package/dist/theme/defineTheme.js.map +1 -0
  339. package/dist/theme/fonts.d.ts +32 -0
  340. package/dist/theme/fonts.d.ts.map +1 -0
  341. package/dist/theme/fonts.js +36 -0
  342. package/dist/theme/fonts.js.map +1 -0
  343. package/dist/theme/index.d.ts +13 -0
  344. package/dist/theme/index.d.ts.map +1 -0
  345. package/dist/theme/index.js +10 -0
  346. package/dist/theme/semanticTokens.d.ts +9 -0
  347. package/dist/theme/semanticTokens.d.ts.map +1 -0
  348. package/dist/theme/semanticTokens.js +110 -0
  349. package/dist/theme/semanticTokens.js.map +1 -0
  350. package/dist/theme/theme.d.ts +61 -7
  351. package/dist/theme/theme.d.ts.map +1 -1
  352. package/dist/theme/theme.js +100 -10
  353. package/dist/theme/theme.js.map +1 -1
  354. package/dist/theme/toneClass.d.ts +8 -0
  355. package/dist/theme/toneClass.d.ts.map +1 -0
  356. package/dist/theme/toneClass.js +15 -0
  357. package/dist/theme/toneClass.js.map +1 -0
  358. package/dist/theme/tones.d.ts +89 -0
  359. package/dist/theme/tones.d.ts.map +1 -0
  360. package/dist/theme/tones.js +127 -0
  361. package/dist/theme/tones.js.map +1 -0
  362. package/dist/time-input/TimeInput.js +1 -1
  363. package/dist/time-input/TimeInput.js.map +1 -1
  364. package/dist/toast/Toast.css +22 -44
  365. package/dist/toast/Toast.d.ts +5 -3
  366. package/dist/toast/Toast.d.ts.map +1 -1
  367. package/dist/toast/Toast.js +4 -3
  368. package/dist/toast/Toast.js.map +1 -1
  369. package/dist/toast/Toast.module.js +10 -16
  370. package/dist/toast/Toast.module.js.map +1 -1
  371. package/dist/toast/tokens.d.ts +3 -0
  372. package/dist/toast/tokens.d.ts.map +1 -0
  373. package/dist/toast/tokens.js +21 -0
  374. package/dist/toast/tokens.js.map +1 -0
  375. package/dist/tooltip/Tooltip.css +12 -11
  376. package/dist/tooltip/Tooltip.js +1 -1
  377. package/dist/tooltip/Tooltip.js.map +1 -1
  378. package/dist/tooltip/Tooltip.module.js +2 -2
  379. package/dist/tooltip/Tooltip.module.js.map +1 -1
  380. package/dist/tooltip/tokens.d.ts +3 -0
  381. package/dist/tooltip/tokens.d.ts.map +1 -0
  382. package/dist/tooltip/tokens.js +21 -0
  383. package/dist/tooltip/tokens.js.map +1 -0
  384. package/dist/utils/cx.d.ts +1 -1
  385. package/dist/utils/cx.d.ts.map +1 -1
  386. package/dist/utils/cx.js +2 -2
  387. package/dist/utils/cx.js.map +1 -1
  388. package/package.json +15 -3
@@ -0,0 +1,16 @@
1
+ import type { IconComponent } from './Icon';
2
+ /**
3
+ * Loads a Lucide icon by its name (`send`, `calendar-days`: the names of lucide.dev/icons), and
4
+ * resolves with its component, or with `null` for a name Lucide doesn't have. Each icon is its own
5
+ * module, and so is the list of names: neither is in the bundle until a named icon is used.
6
+ */
7
+ export declare function loadNamedIcon(name: string): Promise<IconComponent | null>;
8
+ /**
9
+ * An icon component for a Lucide icon name, as definitions name them (`"icon": "send"`). It goes
10
+ * wherever an icon component goes (`<Button icon={getNamedIcon('send')}>`), and is the same
11
+ * component for the same name. It loads the icon the first time it renders (`loadNamedIcon()`),
12
+ * and renders an empty space of the same size until then. A name Lucide doesn't have renders
13
+ * nothing.
14
+ */
15
+ export declare function getNamedIcon(name: string): IconComponent;
16
+ //# sourceMappingURL=namedIcons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namedIcons.d.ts","sourceRoot":"","sources":["../../src/icon/namedIcons.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAwB5C;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAoCzE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAwCxD"}
@@ -0,0 +1,90 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useEffect, useSyncExternalStore } from "react";
3
+ //#region src/icon/namedIcons.tsx
4
+ var entries = /* @__PURE__ */ new Map();
5
+ var components = /* @__PURE__ */ new Map();
6
+ var listeners = /* @__PURE__ */ new Set();
7
+ var imports = null;
8
+ function subscribe(listener) {
9
+ listeners.add(listener);
10
+ return () => {
11
+ listeners.delete(listener);
12
+ };
13
+ }
14
+ function setEntry(name, entry) {
15
+ entries.set(name, entry);
16
+ listeners.forEach((listener) => listener());
17
+ }
18
+ /**
19
+ * Loads a Lucide icon by its name (`send`, `calendar-days`: the names of lucide.dev/icons), and
20
+ * resolves with its component, or with `null` for a name Lucide doesn't have. Each icon is its own
21
+ * module, and so is the list of names: neither is in the bundle until a named icon is used.
22
+ */
23
+ function loadNamedIcon(name) {
24
+ const entry = entries.get(name);
25
+ if (entry?.status === "loaded") return Promise.resolve(entry.icon);
26
+ if (entry?.status === "missing") return Promise.resolve(null);
27
+ if (entry === void 0) setEntry(name, { status: "loading" });
28
+ imports ??= import("lucide-react/dynamicIconImports.mjs").then((module) => module.default);
29
+ return imports.then((all) => {
30
+ const load = Object.hasOwn(all, name) ? all[name] : void 0;
31
+ return load !== void 0 ? load().then((module) => module.default) : null;
32
+ }).then((icon) => {
33
+ if (icon === null) {
34
+ console.warn(`[panneau] Lucide has no icon named "${name}".`);
35
+ setEntry(name, { status: "missing" });
36
+ } else setEntry(name, {
37
+ status: "loaded",
38
+ icon
39
+ });
40
+ return icon;
41
+ }, (error) => {
42
+ entries.delete(name);
43
+ imports = null;
44
+ throw error;
45
+ });
46
+ }
47
+ /**
48
+ * An icon component for a Lucide icon name, as definitions name them (`"icon": "send"`). It goes
49
+ * wherever an icon component goes (`<Button icon={getNamedIcon('send')}>`), and is the same
50
+ * component for the same name. It loads the icon the first time it renders (`loadNamedIcon()`),
51
+ * and renders an empty space of the same size until then. A name Lucide doesn't have renders
52
+ * nothing.
53
+ */
54
+ function getNamedIcon(name) {
55
+ const existing = components.get(name);
56
+ if (existing !== void 0) return existing;
57
+ const NamedIcon = ({ size = 24, className, ...props }) => {
58
+ const entry = useSyncExternalStore(subscribe, () => entries.get(name), () => entries.get(name));
59
+ useEffect(() => {
60
+ if (entries.get(name) === void 0) loadNamedIcon(name).catch(() => void 0);
61
+ }, []);
62
+ if (entry?.status === "loaded") {
63
+ const Loaded = entry.icon;
64
+ return /* @__PURE__ */ jsx(Loaded, {
65
+ size,
66
+ className,
67
+ ...props
68
+ });
69
+ }
70
+ if (entry?.status === "missing") return null;
71
+ const { "aria-hidden": hidden, "aria-label": label, role } = props;
72
+ return /* @__PURE__ */ jsx("svg", {
73
+ width: size,
74
+ height: size,
75
+ viewBox: "0 0 24 24",
76
+ className,
77
+ "aria-hidden": hidden,
78
+ "aria-label": label,
79
+ role,
80
+ "data-loading": ""
81
+ });
82
+ };
83
+ NamedIcon.displayName = `NamedIcon(${name})`;
84
+ components.set(name, NamedIcon);
85
+ return NamedIcon;
86
+ }
87
+ //#endregion
88
+ export { getNamedIcon, loadNamedIcon };
89
+
90
+ //# sourceMappingURL=namedIcons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namedIcons.js","names":[],"sources":["../../src/icon/namedIcons.tsx"],"sourcesContent":["import { useEffect, useSyncExternalStore } from 'react';\n\nimport type { IconComponent } from './Icon';\n\ntype IconImports = Readonly<Record<string, () => Promise<{ default: IconComponent }>>>;\n\ntype Entry =\n { status: 'loading' } | { status: 'loaded'; icon: IconComponent } | { status: 'missing' };\n\nconst entries = new Map<string, Entry>();\nconst components = new Map<string, IconComponent>();\nconst listeners = new Set<() => void>();\nlet imports: Promise<IconImports> | null = null;\n\nfunction subscribe(listener: () => void): () => void {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n}\n\nfunction setEntry(name: string, entry: Entry) {\n entries.set(name, entry);\n listeners.forEach((listener) => listener());\n}\n\n/**\n * Loads a Lucide icon by its name (`send`, `calendar-days`: the names of lucide.dev/icons), and\n * resolves with its component, or with `null` for a name Lucide doesn't have. Each icon is its own\n * module, and so is the list of names: neither is in the bundle until a named icon is used.\n */\nexport function loadNamedIcon(name: string): Promise<IconComponent | null> {\n const entry = entries.get(name);\n if (entry?.status === 'loaded') {\n return Promise.resolve(entry.icon);\n }\n if (entry?.status === 'missing') {\n return Promise.resolve(null);\n }\n if (entry === undefined) {\n setEntry(name, { status: 'loading' });\n }\n imports ??= import('lucide-react/dynamicIconImports.mjs').then(\n (module) => module.default as unknown as IconImports,\n );\n return imports\n .then((all) => {\n const load = Object.hasOwn(all, name) ? all[name] : undefined;\n return load !== undefined ? load().then((module) => module.default) : null;\n })\n .then(\n (icon) => {\n if (icon === null) {\n console.warn(`[panneau] Lucide has no icon named \"${name}\".`);\n setEntry(name, { status: 'missing' });\n } else {\n setEntry(name, { status: 'loaded', icon });\n }\n return icon;\n },\n (error: unknown) => {\n // A chunk that failed to load (offline): the icon is loaded again when it mounts.\n entries.delete(name);\n imports = null;\n throw error;\n },\n );\n}\n\n/**\n * An icon component for a Lucide icon name, as definitions name them (`\"icon\": \"send\"`). It goes\n * wherever an icon component goes (`<Button icon={getNamedIcon('send')}>`), and is the same\n * component for the same name. It loads the icon the first time it renders (`loadNamedIcon()`),\n * and renders an empty space of the same size until then. A name Lucide doesn't have renders\n * nothing.\n */\nexport function getNamedIcon(name: string): IconComponent {\n const existing = components.get(name);\n if (existing !== undefined) {\n return existing;\n }\n const NamedIcon: IconComponent = ({ size = 24, className, ...props }) => {\n const entry = useSyncExternalStore(\n subscribe,\n () => entries.get(name),\n () => entries.get(name),\n );\n useEffect(() => {\n if (entries.get(name) === undefined) {\n loadNamedIcon(name).catch(() => undefined);\n }\n }, []);\n if (entry?.status === 'loaded') {\n const Loaded = entry.icon;\n return <Loaded size={size} className={className} {...props} />;\n }\n if (entry?.status === 'missing') {\n return null;\n }\n const { 'aria-hidden': hidden, 'aria-label': label, role } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n className={className}\n aria-hidden={hidden}\n aria-label={label}\n role={role}\n data-loading=\"\"\n />\n );\n };\n NamedIcon.displayName = `NamedIcon(${name})`;\n components.set(name, NamedIcon);\n return NamedIcon;\n}\n"],"mappings":";;;AASA,IAAM,0BAAU,IAAI,IAAmB;AACvC,IAAM,6BAAa,IAAI,IAA2B;AAClD,IAAM,4BAAY,IAAI,IAAgB;AACtC,IAAI,UAAuC;AAE3C,SAAS,UAAU,UAAkC;CACjD,UAAU,IAAI,QAAQ;CACtB,aAAa;EACT,UAAU,OAAO,QAAQ;CAC7B;AACJ;AAEA,SAAS,SAAS,MAAc,OAAc;CAC1C,QAAQ,IAAI,MAAM,KAAK;CACvB,UAAU,SAAS,aAAa,SAAS,CAAC;AAC9C;;;;;;AAOA,SAAgB,cAAc,MAA6C;CACvE,MAAM,QAAQ,QAAQ,IAAI,IAAI;CAC9B,IAAI,OAAO,WAAW,UAClB,OAAO,QAAQ,QAAQ,MAAM,IAAI;CAErC,IAAI,OAAO,WAAW,WAClB,OAAO,QAAQ,QAAQ,IAAI;CAE/B,IAAI,UAAU,KAAA,GACV,SAAS,MAAM,EAAE,QAAQ,UAAU,CAAC;CAExC,YAAY,OAAO,sCAAsC,CAAC,MACrD,WAAW,OAAO,OACvB;CACA,OAAO,QACF,MAAM,QAAQ;EACX,MAAM,OAAO,OAAO,OAAO,KAAK,IAAI,IAAI,IAAI,QAAQ,KAAA;EACpD,OAAO,SAAS,KAAA,IAAY,KAAK,CAAC,CAAC,MAAM,WAAW,OAAO,OAAO,IAAI;CAC1E,CAAC,CAAC,CACD,MACI,SAAS;EACN,IAAI,SAAS,MAAM;GACf,QAAQ,KAAK,uCAAuC,KAAI,GAAI;GAC5D,SAAS,MAAM,EAAE,QAAQ,UAAU,CAAC;EACxC,OACI,SAAS,MAAM;GAAE,QAAQ;GAAU;EAAK,CAAC;EAE7C,OAAO;CACX,IACC,UAAmB;EAEhB,QAAQ,OAAO,IAAI;EACnB,UAAU;EACV,MAAM;CACV,CACJ;AACR;;;;;;;;AASA,SAAgB,aAAa,MAA6B;CACtD,MAAM,WAAW,WAAW,IAAI,IAAI;CACpC,IAAI,aAAa,KAAA,GACb,OAAO;CAEX,MAAM,aAA4B,EAAE,OAAO,IAAI,WAAW,GAAG,YAAY;EACrE,MAAM,QAAQ,qBACV,iBACM,QAAQ,IAAI,IAAI,SAChB,QAAQ,IAAI,IAAI,CAC1B;EACA,gBAAgB;GACZ,IAAI,QAAQ,IAAI,IAAI,MAAM,KAAA,GACtB,cAAc,IAAI,CAAC,CAAC,YAAY,KAAA,CAAS;EAEjD,GAAG,CAAA,CAAE;EACL,IAAI,OAAO,WAAW,UAAU;GAC5B,MAAM,SAAS,MAAM;GACrB,OAAO,oBAAC,QAAD;IAAc;IAAiB;IAAW,GAAI;GAAM,CAAA;EAC/D;EACA,IAAI,OAAO,WAAW,WAClB,OAAO;EAEX,MAAM,EAAE,eAAe,QAAQ,cAAc,OAAO,SAAS;EAC7D,OACI,oBAAC,OAAD;GACI,OAAO;GACP,QAAQ;GACR,SAAQ;GACG;GACX,eAAa;GACb,cAAY;GACN;GACN,gBAAa;EAAE,CAAA;CAG3B;CACA,UAAU,cAAc,aAAa,KAAI;CACzC,WAAW,IAAI,MAAM,SAAS;CAC9B,OAAO;AACX"}
@@ -1,9 +1,9 @@
1
1
  /* Doubled classes: more specific than the button's own padding, whatever the CSS order. */
2
- .panneau-iconButton-eXWLoz.panneau-iconButton-eXWLoz {
2
+ .panneau-icon-button.panneau-icon-button {
3
3
  width: var(--panneau-control-height);
4
4
  padding: 0;
5
5
  }
6
6
 
7
- .panneau-iconButton-eXWLoz.panneau-sm-i6-bGf {
7
+ .panneau-icon-button.panneau-icon-button-sm {
8
8
  width: var(--panneau-control-height-sm);
9
9
  }
@@ -11,5 +11,5 @@ export interface IconButtonProps extends Omit<ButtonProps, 'icon' | 'iconEnd' |
11
11
  style?: CSSProperties;
12
12
  }
13
13
  /** A square button with only an icon. Its label is announced and shown as a tooltip. */
14
- export declare function IconButton({ icon, label, variant, size, showTooltip, className, ...props }: IconButtonProps): import("react").JSX.Element;
14
+ export declare function IconButton({ icon, label, appearance, size, showTooltip, className, ...props }: IconButtonProps): import("react").JSX.Element;
15
15
  //# sourceMappingURL=IconButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton.d.ts","sourceRoot":"","sources":["../../src/icon-button/IconButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAKlD,MAAM,WAAW,eAAgB,SAAQ,IAAI,CACzC,WAAW,EACX,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,YAAY,CAC/D;IACG,IAAI,EAAE,aAAa,CAAC;IACpB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,OAAiB,EACjB,IAAW,EACX,WAAkB,EAClB,SAAS,EACT,GAAG,KAAK,EACX,EAAE,eAAe,+BAejB"}
1
+ {"version":3,"file":"IconButton.d.ts","sourceRoot":"","sources":["../../src/icon-button/IconButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAKlD,MAAM,WAAW,eAAgB,SAAQ,IAAI,CACzC,WAAW,EACX,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,YAAY,CAC/D;IACG,IAAI,EAAE,aAAa,CAAC;IACpB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,UAAoB,EACpB,IAAW,EACX,WAAkB,EAClB,SAAS,EACT,GAAG,KAAK,EACX,EAAE,eAAe,+BAoBjB"}
@@ -5,14 +5,14 @@ import IconButton_module_default from "./IconButton.module.js";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region src/icon-button/IconButton.tsx
7
7
  /** A square button with only an icon. Its label is announced and shown as a tooltip. */
8
- function IconButton({ icon, label, variant = "ghost", size = "md", showTooltip = true, className, ...props }) {
8
+ function IconButton({ icon, label, appearance = "ghost", size = "md", showTooltip = true, className, ...props }) {
9
9
  const button = /* @__PURE__ */ jsx(Button, {
10
10
  ...props,
11
- variant,
11
+ appearance,
12
12
  size,
13
13
  icon,
14
14
  "aria-label": label,
15
- className: cx(IconButton_module_default.iconButton, size === "sm" && IconButton_module_default.sm, className)
15
+ className: cx("panneau-icon-button", IconButton_module_default.iconButton, size === "sm" && IconButton_module_default.sm, className)
16
16
  });
17
17
  if (!showTooltip) return button;
18
18
  return /* @__PURE__ */ jsx(Tooltip, {
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton.js","names":["styles"],"sources":["../../src/icon-button/IconButton.tsx"],"sourcesContent":["import type { CSSProperties } from 'react';\n\nimport { Button, type ButtonProps } from '../button/Button';\nimport type { IconComponent } from '../icon/Icon';\nimport { Tooltip } from '../tooltip/Tooltip';\nimport { cx } from '../utils/cx';\nimport styles from './IconButton.module.css';\n\nexport interface IconButtonProps extends Omit<\n ButtonProps,\n 'icon' | 'iconEnd' | 'children' | 'fullWidth' | 'aria-label'\n> {\n icon: IconComponent;\n /** Accessible label, also shown as a tooltip. */\n label: string;\n /** Shows the label in a tooltip on hover and focus. Defaults to true. */\n showTooltip?: boolean;\n className?: string;\n style?: CSSProperties;\n}\n\n/** A square button with only an icon. Its label is announced and shown as a tooltip. */\nexport function IconButton({\n icon,\n label,\n variant = 'ghost',\n size = 'md',\n showTooltip = true,\n className,\n ...props\n}: IconButtonProps) {\n const button = (\n <Button\n {...props}\n variant={variant}\n size={size}\n icon={icon}\n aria-label={label}\n className={cx(styles.iconButton, size === 'sm' && styles.sm, className)}\n />\n );\n if (!showTooltip) {\n return button;\n }\n return <Tooltip content={label}>{button}</Tooltip>;\n}\n"],"mappings":";;;;;;;AAsBA,SAAgB,WAAW,EACvB,MACA,OACA,UAAU,SACV,OAAO,MACP,cAAc,MACd,WACA,GAAG,SACa;CAChB,MAAM,SACF,oBAAC,QAAD;EACI,GAAI;EACK;EACH;EACA;EACN,cAAY;EACZ,WAAW,GAAGA,0BAAO,YAAY,SAAS,QAAQA,0BAAO,IAAI,SAAS;CAAE,CAAA;CAGhF,IAAI,CAAC,aACD,OAAO;CAEX,OAAO,oBAAC,SAAD;EAAS,SAAS;EAAQ,UAAA;CAAgB,CAAA;AACrD"}
1
+ {"version":3,"file":"IconButton.js","names":["styles"],"sources":["../../src/icon-button/IconButton.tsx"],"sourcesContent":["import type { CSSProperties } from 'react';\n\nimport { Button, type ButtonProps } from '../button/Button';\nimport type { IconComponent } from '../icon/Icon';\nimport { Tooltip } from '../tooltip/Tooltip';\nimport { cx } from '../utils/cx';\nimport styles from './IconButton.module.css';\n\nexport interface IconButtonProps extends Omit<\n ButtonProps,\n 'icon' | 'iconEnd' | 'children' | 'fullWidth' | 'aria-label'\n> {\n icon: IconComponent;\n /** Accessible label, also shown as a tooltip. */\n label: string;\n /** Shows the label in a tooltip on hover and focus. Defaults to true. */\n showTooltip?: boolean;\n className?: string;\n style?: CSSProperties;\n}\n\n/** A square button with only an icon. Its label is announced and shown as a tooltip. */\nexport function IconButton({\n icon,\n label,\n appearance = 'ghost',\n size = 'md',\n showTooltip = true,\n className,\n ...props\n}: IconButtonProps) {\n const button = (\n <Button\n {...props}\n appearance={appearance}\n size={size}\n icon={icon}\n aria-label={label}\n className={cx(\n 'panneau-icon-button',\n styles.iconButton,\n size === 'sm' && styles.sm,\n className,\n )}\n />\n );\n if (!showTooltip) {\n return button;\n }\n return <Tooltip content={label}>{button}</Tooltip>;\n}\n"],"mappings":";;;;;;;AAsBA,SAAgB,WAAW,EACvB,MACA,OACA,aAAa,SACb,OAAO,MACP,cAAc,MACd,WACA,GAAG,SACa;CAChB,MAAM,SACF,oBAAC,QAAD;EACI,GAAI;EACQ;EACN;EACA;EACN,cAAY;EACZ,WAAW,GACP,uBACAA,0BAAO,YACP,SAAS,QAAQA,0BAAO,IACxB,SACJ;CAAE,CAAA;CAGV,IAAI,CAAC,aACD,OAAO;CAEX,OAAO,oBAAC,SAAD;EAAS,SAAS;EAAQ,UAAA;CAAgB,CAAA;AACrD"}
@@ -1,7 +1,7 @@
1
1
  import "./IconButton.css";
2
2
  //#region src/icon-button/IconButton.module.css
3
- var iconButton = "panneau-iconButton-eXWLoz";
4
- var sm = "panneau-sm-i6-bGf";
3
+ var iconButton = "panneau-icon-button";
4
+ var sm = "panneau-icon-button-sm";
5
5
  var IconButton_module_default = {
6
6
  iconButton,
7
7
  sm
package/dist/index.d.ts CHANGED
@@ -1,7 +1,11 @@
1
- export { Alert, type AlertProps, type AlertTone } from './alert/Alert';
2
- export { Badge, type BadgeProps, type BadgeTone } from './badge/Badge';
3
- export { Button, type ButtonProps, type ButtonVariant } from './button/Button';
1
+ export { Alert, type AlertAppearance, type AlertProps, type AlertTone, type AlertVariants, } from './alert/Alert';
2
+ export { Badge, type BadgeAppearance, type BadgeProps, type BadgeTone, type BadgeVariants, } from './badge/Badge';
3
+ export { Button, type ButtonAppearance, type ButtonProps, type ButtonVariant, type ButtonVariants, } from './button/Button';
4
4
  export { Card, type CardProps } from './card/Card';
5
+ export { Container, type ContainerProps } from './container/Container';
6
+ export { Divider, type DividerProps } from './divider/Divider';
7
+ export { Grid, GridItem, type GridItemProps, type GridProps } from './grid/Grid';
8
+ export { Heading, type HeadingLevel, type HeadingProps, type HeadingSize } from './heading/Heading';
5
9
  export { Checkbox, type CheckboxProps } from './checkbox/Checkbox';
6
10
  export { type ChoiceChromeProps } from './checkbox/ChoiceChrome';
7
11
  export { ComboBox, type ComboBoxItem, type ComboBoxProps } from './combo-box/ComboBox';
@@ -11,6 +15,7 @@ export { Disclosure, type DisclosureProps } from './disclosure/Disclosure';
11
15
  export { type FieldChromeProps } from './field/FieldParts';
12
16
  export { Fieldset, type FieldsetProps } from './field/Fieldset';
13
17
  export { Icon, type IconComponent, type IconProps, type IconSize } from './icon/Icon';
18
+ export { getNamedIcon, loadNamedIcon } from './icon/namedIcons';
14
19
  export { IconButton, type IconButtonProps } from './icon-button/IconButton';
15
20
  export { usePanneauIntl } from './intl/usePanneauIntl';
16
21
  export { Menu, MenuItem, type MenuItemProps, type MenuProps, MenuSeparator, MenuTrigger, } from './menu/Menu';
@@ -18,14 +23,30 @@ export { NumberInput, type NumberInputProps } from './number-input/NumberInput';
18
23
  export { Popover, type PopoverProps, PopoverTrigger } from './popover/Popover';
19
24
  export { RadioGroup, type RadioGroupProps } from './radio-group/RadioGroup';
20
25
  export { PanneauRoot, type PanneauRootProps, usePortalContainer } from './root/PanneauRoot';
26
+ export { ThemeScope, type ThemeScopeProps } from './root/ThemeScope';
21
27
  export { type MultipleSelectProps, type OptionValue, Select, type SelectBaseProps, type SelectOption, type SelectProps, type SingleSelectProps, } from './select/Select';
28
+ export { Inline, type InlineProps } from './inline/Inline';
29
+ export { BREAKPOINTS, type Breakpoint, type Justification, type Responsive, type Space, } from './layout/responsive';
30
+ export { Prose, type ProseProps } from './prose/Prose';
22
31
  export { Spinner, type SpinnerProps } from './spinner/Spinner';
32
+ export { Stack, type StackProps } from './stack/Stack';
23
33
  export { Switch, type SwitchProps } from './switch/Switch';
24
34
  export { Tab, TabList, type TabListProps, TabPanel, type TabPanelProps, type TabProps, Tabs, type TabsProps, } from './tabs/Tabs';
35
+ export { Text, type TextFamily, type TextProps, type TextSize } from './text/Text';
25
36
  export { TextArea, type TextAreaProps } from './text-area/TextArea';
26
37
  export { TextInput, type TextInputProps } from './text-input/TextInput';
27
- export { bootstrapTheme } from './theme/bootstrap';
28
- export { type ColorScheme, type Theme } from './theme/theme';
38
+ export { bootstrapTheme, bootstrapTone } from './theme/bootstrap';
39
+ export { CHART_CATEGORICAL_COUNT, CHART_SEQUENTIAL_COUNT, chartColors } from './theme/chartColors';
40
+ export { type ThemeContrastCheck, type ThemeReport, checkTheme } from './theme/checkTheme';
41
+ export { type ColorDifferenceCheck, type ColorVisionDeficiency, checkColorDifferences, } from './theme/colorVision';
42
+ export { type Rgb } from './theme/color';
43
+ export { type ComponentTokens, defineComponentTokens } from './theme/componentTokens';
44
+ export { type ComponentTokenName, componentTokens } from './theme/components';
45
+ export { type PaletteTokenName, type PanneauTokens, type ThemeDefinition, type ThemeTokens, type TokenName, defineTheme, findUnknownTokens, mergeThemes, } from './theme/defineTheme';
46
+ export { SEMANTIC_TOKENS, type SemanticTokenName } from './theme/semanticTokens';
47
+ export { type ThemeFont, type ThemeFontFace, type ThemeFontStylesheet } from './theme/fonts';
48
+ export { type ColorScheme, type Density, type Theme } from './theme/theme';
49
+ export { BUILT_IN_TONES, type PanneauTones, type Tone, type ToneInput, type ToneSurfaces, type ToneValues, deriveTone, toneClassName, } from './theme/tones';
29
50
  export { TimeInput, type TimeInputProps } from './time-input/TimeInput';
30
51
  export { type ToastContent, type ToastOptions, type ToastTone, type Toasts, useToast, } from './toast/Toast';
31
52
  export { Tooltip, type TooltipProps } from './tooltip/Tooltip';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Icon } from "./icon/Icon.js";
2
2
  import { usePanneauIntl } from "./intl/usePanneauIntl.js";
3
3
  import { Spinner } from "./spinner/Spinner.js";
4
+ import { BUILT_IN_TONES, deriveTone, toneClassName } from "./theme/tones.js";
4
5
  import { Button } from "./button/Button.js";
5
6
  import { useToast } from "./toast/Toast.js";
6
7
  import { PanneauRoot, usePortalContainer } from "./root/PanneauRoot.js";
@@ -9,6 +10,11 @@ import { IconButton } from "./icon-button/IconButton.js";
9
10
  import { Alert } from "./alert/Alert.js";
10
11
  import { Badge } from "./badge/Badge.js";
11
12
  import { Card } from "./card/Card.js";
13
+ import { Container } from "./container/Container.js";
14
+ import { Divider } from "./divider/Divider.js";
15
+ import { BREAKPOINTS } from "./layout/responsive.js";
16
+ import { Grid, GridItem } from "./grid/Grid.js";
17
+ import { Heading } from "./heading/Heading.js";
12
18
  import { Checkbox } from "./checkbox/Checkbox.js";
13
19
  import { Popover, PopoverTrigger } from "./popover/Popover.js";
14
20
  import { ComboBox } from "./combo-box/ComboBox.js";
@@ -16,14 +22,27 @@ import { DatePicker } from "./date-picker/DatePicker.js";
16
22
  import { Dialog, DialogTrigger } from "./dialog/Dialog.js";
17
23
  import { Disclosure } from "./disclosure/Disclosure.js";
18
24
  import { Fieldset } from "./field/Fieldset.js";
25
+ import { getNamedIcon, loadNamedIcon } from "./icon/namedIcons.js";
19
26
  import { Menu, MenuItem, MenuSeparator, MenuTrigger } from "./menu/Menu.js";
20
27
  import { NumberInput } from "./number-input/NumberInput.js";
21
28
  import { RadioGroup } from "./radio-group/RadioGroup.js";
29
+ import { ThemeScope } from "./root/ThemeScope.js";
22
30
  import { Select } from "./select/Select.js";
31
+ import { Inline } from "./inline/Inline.js";
32
+ import { Prose } from "./prose/Prose.js";
33
+ import { Stack } from "./stack/Stack.js";
23
34
  import { Switch } from "./switch/Switch.js";
24
35
  import { Tab, TabList, TabPanel, Tabs } from "./tabs/Tabs.js";
36
+ import { Text } from "./text/Text.js";
25
37
  import { TextArea } from "./text-area/TextArea.js";
26
38
  import { TextInput } from "./text-input/TextInput.js";
27
- import { bootstrapTheme } from "./theme/bootstrap.js";
39
+ import { bootstrapTheme, bootstrapTone } from "./theme/bootstrap.js";
40
+ import { CHART_CATEGORICAL_COUNT, CHART_SEQUENTIAL_COUNT, chartColors } from "./theme/chartColors.js";
41
+ import { checkColorDifferences } from "./theme/colorVision.js";
42
+ import { checkTheme } from "./theme/checkTheme.js";
43
+ import { defineComponentTokens } from "./theme/componentTokens.js";
44
+ import { componentTokens } from "./theme/components.js";
45
+ import { SEMANTIC_TOKENS } from "./theme/semanticTokens.js";
46
+ import { defineTheme, findUnknownTokens, mergeThemes } from "./theme/defineTheme.js";
28
47
  import { TimeInput } from "./time-input/TimeInput.js";
29
- export { Alert, Badge, Button, Card, Checkbox, ComboBox, DatePicker, Dialog, DialogTrigger, Disclosure, Fieldset, Icon, IconButton, Menu, MenuItem, MenuSeparator, MenuTrigger, NumberInput, PanneauRoot, Popover, PopoverTrigger, RadioGroup, Select, Spinner, Switch, Tab, TabList, TabPanel, Tabs, TextArea, TextInput, TimeInput, Tooltip, bootstrapTheme, usePanneauIntl, usePortalContainer, useToast };
48
+ export { Alert, BREAKPOINTS, BUILT_IN_TONES, Badge, Button, CHART_CATEGORICAL_COUNT, CHART_SEQUENTIAL_COUNT, Card, Checkbox, ComboBox, Container, DatePicker, Dialog, DialogTrigger, Disclosure, Divider, Fieldset, Grid, GridItem, Heading, Icon, IconButton, Inline, Menu, MenuItem, MenuSeparator, MenuTrigger, NumberInput, PanneauRoot, Popover, PopoverTrigger, Prose, RadioGroup, SEMANTIC_TOKENS, Select, Spinner, Stack, Switch, Tab, TabList, TabPanel, Tabs, Text, TextArea, TextInput, ThemeScope, TimeInput, Tooltip, bootstrapTheme, bootstrapTone, chartColors, checkColorDifferences, checkTheme, componentTokens, defineComponentTokens, defineTheme, deriveTone, findUnknownTokens, getNamedIcon, loadNamedIcon, mergeThemes, toneClassName, usePanneauIntl, usePortalContainer, useToast };
@@ -0,0 +1,142 @@
1
+ /* A horizontal row that wraps: each prop can change at the breakpoints of the nearest container. */
2
+
3
+ .panneau-inline {
4
+ display: flex;
5
+ flex-wrap: wrap;
6
+ min-width: 0;
7
+ }
8
+
9
+ .panneau-inline-nowrap {
10
+ flex-wrap: nowrap;
11
+ }
12
+ /* Responsive values are set inline; children reset them so that they aren't inherited. */
13
+ .panneau-inline > * {
14
+ --_panneau-inline-gap-base: initial;
15
+ --_panneau-inline-gap-sm: initial;
16
+ --_panneau-inline-gap-md: initial;
17
+ --_panneau-inline-gap-lg: initial;
18
+ --_panneau-inline-gap-xl: initial;
19
+ --_panneau-inline-align-base: initial;
20
+ --_panneau-inline-align-sm: initial;
21
+ --_panneau-inline-align-md: initial;
22
+ --_panneau-inline-align-lg: initial;
23
+ --_panneau-inline-align-xl: initial;
24
+ --_panneau-inline-justify-base: initial;
25
+ --_panneau-inline-justify-sm: initial;
26
+ --_panneau-inline-justify-md: initial;
27
+ --_panneau-inline-justify-lg: initial;
28
+ --_panneau-inline-justify-xl: initial;
29
+ }
30
+
31
+ .panneau-inline {
32
+ gap: var(--_panneau-inline-gap-base, var(--panneau-inline-gap, var(--panneau-space-2)));
33
+ align-items: var(--_panneau-inline-align-base, center);
34
+ justify-content: var(--_panneau-inline-justify-base, start);
35
+ }
36
+
37
+ @container (min-width: 40rem) {
38
+ .panneau-inline {
39
+ gap: var(
40
+ --_panneau-inline-gap-sm,
41
+ var(--_panneau-inline-gap-base, var(--panneau-inline-gap, var(--panneau-space-2)))
42
+ );
43
+ align-items: var(--_panneau-inline-align-sm, var(--_panneau-inline-align-base, center));
44
+ justify-content: var(
45
+ --_panneau-inline-justify-sm,
46
+ var(--_panneau-inline-justify-base, start)
47
+ );
48
+ }
49
+ }
50
+
51
+ @container (min-width: 48rem) {
52
+ .panneau-inline {
53
+ gap: var(
54
+ --_panneau-inline-gap-md,
55
+ var(
56
+ --_panneau-inline-gap-sm,
57
+ var(--_panneau-inline-gap-base, var(--panneau-inline-gap, var(--panneau-space-2)))
58
+ )
59
+ );
60
+ align-items: var(
61
+ --_panneau-inline-align-md,
62
+ var(--_panneau-inline-align-sm, var(--_panneau-inline-align-base, center))
63
+ );
64
+ justify-content: var(
65
+ --_panneau-inline-justify-md,
66
+ var(--_panneau-inline-justify-sm, var(--_panneau-inline-justify-base, start))
67
+ );
68
+ }
69
+ }
70
+
71
+ @container (min-width: 64rem) {
72
+ .panneau-inline {
73
+ gap: var(
74
+ --_panneau-inline-gap-lg,
75
+ var(
76
+ --_panneau-inline-gap-md,
77
+ var(
78
+ --_panneau-inline-gap-sm,
79
+ var(
80
+ --_panneau-inline-gap-base,
81
+ var(--panneau-inline-gap, var(--panneau-space-2))
82
+ )
83
+ )
84
+ )
85
+ );
86
+ align-items: var(
87
+ --_panneau-inline-align-lg,
88
+ var(
89
+ --_panneau-inline-align-md,
90
+ var(--_panneau-inline-align-sm, var(--_panneau-inline-align-base, center))
91
+ )
92
+ );
93
+ justify-content: var(
94
+ --_panneau-inline-justify-lg,
95
+ var(
96
+ --_panneau-inline-justify-md,
97
+ var(--_panneau-inline-justify-sm, var(--_panneau-inline-justify-base, start))
98
+ )
99
+ );
100
+ }
101
+ }
102
+
103
+ @container (min-width: 80rem) {
104
+ .panneau-inline {
105
+ gap: var(
106
+ --_panneau-inline-gap-xl,
107
+ var(
108
+ --_panneau-inline-gap-lg,
109
+ var(
110
+ --_panneau-inline-gap-md,
111
+ var(
112
+ --_panneau-inline-gap-sm,
113
+ var(
114
+ --_panneau-inline-gap-base,
115
+ var(--panneau-inline-gap, var(--panneau-space-2))
116
+ )
117
+ )
118
+ )
119
+ )
120
+ );
121
+ align-items: var(
122
+ --_panneau-inline-align-xl,
123
+ var(
124
+ --_panneau-inline-align-lg,
125
+ var(
126
+ --_panneau-inline-align-md,
127
+ var(--_panneau-inline-align-sm, var(--_panneau-inline-align-base, center))
128
+ )
129
+ )
130
+ );
131
+ justify-content: var(
132
+ --_panneau-inline-justify-xl,
133
+ var(
134
+ --_panneau-inline-justify-lg,
135
+ var(
136
+ --_panneau-inline-justify-md,
137
+ var(--_panneau-inline-justify-sm, var(--_panneau-inline-justify-base, start))
138
+ )
139
+ )
140
+ );
141
+ }
142
+ }
@@ -0,0 +1,17 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ import { type Justification, type Responsive, type Space } from '../layout/responsive';
3
+ export interface InlineProps extends HTMLAttributes<HTMLElement> {
4
+ /** Element to render. Defaults to `div`. */
5
+ as?: 'div' | 'section' | 'header' | 'footer' | 'nav' | 'ul' | 'ol' | 'span';
6
+ /** Space between items, from the space scale. Defaults to the `--panneau-inline-gap` token. */
7
+ gap?: Responsive<Space>;
8
+ /** Vertical alignment of the items. Defaults to `center`. */
9
+ align?: Responsive<'start' | 'center' | 'end' | 'stretch' | 'baseline'>;
10
+ /** Horizontal distribution of the items. Defaults to `start`. */
11
+ justify?: Responsive<Justification>;
12
+ /** Items wrap to the next line when they don't fit. Defaults to `true`. */
13
+ wrap?: boolean;
14
+ }
15
+ /** Items side by side, wrapping when they don't fit, like Bootstrap's `.hstack`. */
16
+ export declare function Inline({ as: Element, gap, align, justify, wrap, className, style, ...props }: InlineProps): import("react").JSX.Element;
17
+ //# sourceMappingURL=Inline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Inline.d.ts","sourceRoot":"","sources":["../../src/inline/Inline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EACH,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,KAAK,EAKb,MAAM,sBAAsB,CAAC;AAI9B,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,WAAW,CAAC;IAC5D,4CAA4C;IAC5C,EAAE,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IAC5E,+FAA+F;IAC/F,GAAG,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IACxB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC,CAAC;IACxE,iEAAiE;IACjE,OAAO,CAAC,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;IACpC,2EAA2E;IAC3E,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,oFAAoF;AACpF,wBAAgB,MAAM,CAAC,EACnB,EAAE,EAAE,OAAe,EACnB,GAAG,EACH,KAAK,EACL,OAAO,EACP,IAAW,EACX,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACX,EAAE,WAAW,+BAeb"}
@@ -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"}