@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
@@ -6,7 +6,7 @@
6
6
  * class on the root, overrides any token without fighting the cascade.
7
7
  */
8
8
 
9
- :where(.panneau-root--wA35w) {
9
+ :where(.panneau-root) {
10
10
  /* Surfaces */
11
11
  --panneau-color-bg: #ffffff;
12
12
  --panneau-color-surface: #ffffff;
@@ -42,17 +42,54 @@
42
42
  --panneau-color-success: #15803d;
43
43
  --panneau-color-success-subtle: #f0fdf4;
44
44
  --panneau-color-success-border: #86efac;
45
+ --panneau-color-success-solid: #15803d;
46
+ --panneau-color-success-solid-hover: #166534;
47
+ --panneau-color-success-solid-text: #ffffff;
45
48
  --panneau-color-warning: #a16207;
46
49
  --panneau-color-warning-subtle: #fefce8;
47
50
  --panneau-color-warning-border: #fcd34d;
51
+ --panneau-color-warning-solid: #a16207;
52
+ --panneau-color-warning-solid-hover: #854d0e;
53
+ --panneau-color-warning-solid-text: #ffffff;
48
54
  --panneau-color-info: #1d4ed8;
49
55
  --panneau-color-info-subtle: #eff6ff;
50
56
  --panneau-color-info-border: #93c5fd;
57
+ --panneau-color-info-solid: #1d4ed8;
58
+ --panneau-color-info-solid-hover: #1e40af;
59
+ --panneau-color-info-solid-text: #ffffff;
51
60
 
52
- /* Typography */
53
- --panneau-font-family:
61
+ /*
62
+ * Data visualization: 8 categorical colors in a fixed order, a sequential ramp from low to high,
63
+ * and a diverging pair around a neutral midpoint. Each categorical color reaches 3:1 against
64
+ * the surface, and stays distinct under the common color vision deficiencies (chartColors.test).
65
+ */
66
+ --panneau-chart-categorical-1: #1c6cbb;
67
+ --panneau-chart-categorical-2: #c47713;
68
+ --panneau-chart-categorical-3: #d12f74;
69
+ --panneau-chart-categorical-4: #515922;
70
+ --panneau-chart-categorical-5: #2b9c52;
71
+ --panneau-chart-categorical-6: #a977b3;
72
+ --panneau-chart-categorical-7: #8f2786;
73
+ --panneau-chart-categorical-8: #9176e8;
74
+ --panneau-chart-sequential-1: #dbe8f6;
75
+ --panneau-chart-sequential-2: #a3c6e9;
76
+ --panneau-chart-sequential-3: #5f9bd6;
77
+ --panneau-chart-sequential-4: #2c6cb0;
78
+ --panneau-chart-sequential-5: #1a4475;
79
+ --panneau-chart-diverging-negative: #b4501a;
80
+ --panneau-chart-diverging-neutral: #e4e4e7;
81
+ --panneau-chart-diverging-positive: #1c6cbb;
82
+
83
+ /* Typography: font roles. Headings and display text follow the body unless a theme sets them. */
84
+ --panneau-font-family-body:
54
85
  system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
86
+ --panneau-font-family-heading: var(--panneau-font-family-body);
87
+ --panneau-font-family-display: var(--panneau-font-family-heading);
55
88
  --panneau-font-family-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
89
+ /* Deprecated alias of the body family: set --panneau-font-family-body instead. */
90
+ --panneau-font-family: var(--panneau-font-family-body);
91
+ /* Numbers that line up: stats, dates, ids (font-variant-numeric). */
92
+ --panneau-font-numeric: tabular-nums;
56
93
  --panneau-font-size-xs: 0.75rem;
57
94
  --panneau-font-size-sm: 0.8125rem;
58
95
  --panneau-font-size-md: 0.875rem;
@@ -85,9 +122,11 @@
85
122
  --panneau-shadow-md: 0 1px 3px rgb(0 0 0 / 0.08), 0 4px 12px rgb(0 0 0 / 0.08);
86
123
  --panneau-shadow-lg: 0 4px 8px rgb(0 0 0 / 0.08), 0 16px 40px rgb(0 0 0 / 0.16);
87
124
 
88
- /* Controls */
125
+ /* Controls and rows: the comfortable density. Other densities redefine these tokens. */
89
126
  --panneau-control-height: 2.25rem;
90
127
  --panneau-control-height-sm: 1.875rem;
128
+ --panneau-control-padding-x: 0.75rem;
129
+ --panneau-row-padding-y: 0.5rem;
91
130
  --panneau-focus-width: 2px;
92
131
 
93
132
  /* Motion and layers */
@@ -98,7 +137,83 @@
98
137
  color-scheme: light;
99
138
  }
100
139
 
101
- :where(.panneau-root--wA35w[data-color-scheme='dark']) {
140
+ /*
141
+ * A ThemeScope with its own color scheme (.scheme) takes the light colors back, since the root
142
+ * around it may be dark. Scopes without one inherit the colors of their parent.
143
+ */
144
+ :where(.panneau-root-scheme[data-color-scheme='light'], .panneau-root-scheme[data-color-scheme='auto']) {
145
+ --panneau-chart-categorical-1: #1c6cbb;
146
+ --panneau-chart-categorical-2: #c47713;
147
+ --panneau-chart-categorical-3: #d12f74;
148
+ --panneau-chart-categorical-4: #515922;
149
+ --panneau-chart-categorical-5: #2b9c52;
150
+ --panneau-chart-categorical-6: #a977b3;
151
+ --panneau-chart-categorical-7: #8f2786;
152
+ --panneau-chart-categorical-8: #9176e8;
153
+ --panneau-chart-sequential-1: #dbe8f6;
154
+ --panneau-chart-sequential-2: #a3c6e9;
155
+ --panneau-chart-sequential-3: #5f9bd6;
156
+ --panneau-chart-sequential-4: #2c6cb0;
157
+ --panneau-chart-sequential-5: #1a4475;
158
+ --panneau-chart-diverging-negative: #b4501a;
159
+ --panneau-chart-diverging-neutral: #e4e4e7;
160
+ --panneau-chart-diverging-positive: #1c6cbb;
161
+ --panneau-color-bg: #ffffff;
162
+ --panneau-color-surface: #ffffff;
163
+ --panneau-color-surface-sunken: #f4f4f5;
164
+ --panneau-color-surface-raised: #ffffff;
165
+ --panneau-color-hover: rgb(24 24 27 / 0.06);
166
+ --panneau-color-pressed: rgb(24 24 27 / 0.1);
167
+ --panneau-color-backdrop: rgb(9 9 11 / 0.45);
168
+ --panneau-color-text: #18181b;
169
+ --panneau-color-text-muted: #52525b;
170
+ --panneau-color-link: #1d4ed8;
171
+ --panneau-color-border: #e4e4e7;
172
+ --panneau-color-border-control: #8b8b94;
173
+ --panneau-color-accent: #18181b;
174
+ --panneau-color-accent-hover: #3f3f46;
175
+ --panneau-color-accent-text: #ffffff;
176
+ --panneau-color-accent-subtle: #f4f4f5;
177
+ --panneau-color-focus: #2563eb;
178
+ --panneau-color-danger: #b91c1c;
179
+ --panneau-color-danger-subtle: #fef2f2;
180
+ --panneau-color-danger-border: #fca5a5;
181
+ --panneau-color-danger-solid: #b91c1c;
182
+ --panneau-color-danger-solid-hover: #991b1b;
183
+ --panneau-color-danger-solid-text: #ffffff;
184
+ --panneau-color-success: #15803d;
185
+ --panneau-color-success-subtle: #f0fdf4;
186
+ --panneau-color-success-border: #86efac;
187
+ --panneau-color-warning: #a16207;
188
+ --panneau-color-warning-subtle: #fefce8;
189
+ --panneau-color-warning-border: #fcd34d;
190
+ --panneau-color-info: #1d4ed8;
191
+ --panneau-color-info-subtle: #eff6ff;
192
+ --panneau-color-info-border: #93c5fd;
193
+ --panneau-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.06);
194
+ --panneau-shadow-md: 0 1px 3px rgb(0 0 0 / 0.08), 0 4px 12px rgb(0 0 0 / 0.08);
195
+ --panneau-shadow-lg: 0 4px 8px rgb(0 0 0 / 0.08), 0 16px 40px rgb(0 0 0 / 0.16);
196
+
197
+ color-scheme: light;
198
+ }
199
+
200
+ :where(.panneau-root[data-color-scheme='dark'], .panneau-root-scheme[data-color-scheme='dark']) {
201
+ --panneau-chart-categorical-1: #61a9e3;
202
+ --panneau-chart-categorical-2: #e5c040;
203
+ --panneau-chart-categorical-3: #d9456a;
204
+ --panneau-chart-categorical-4: #a1da9e;
205
+ --panneau-chart-categorical-5: #bb6528;
206
+ --panneau-chart-categorical-6: #a06a9b;
207
+ --panneau-chart-categorical-7: #8c71e2;
208
+ --panneau-chart-categorical-8: #56dfe1;
209
+ --panneau-chart-sequential-1: #1d3550;
210
+ --panneau-chart-sequential-2: #285684;
211
+ --panneau-chart-sequential-3: #3d7fc2;
212
+ --panneau-chart-sequential-4: #74abe0;
213
+ --panneau-chart-sequential-5: #b8d6f2;
214
+ --panneau-chart-diverging-negative: #f0884a;
215
+ --panneau-chart-diverging-neutral: #3f3f46;
216
+ --panneau-chart-diverging-positive: #61a9e3;
102
217
  --panneau-color-bg: #09090b;
103
218
  --panneau-color-surface: #18181b;
104
219
  --panneau-color-surface-sunken: #111113;
@@ -139,7 +254,23 @@
139
254
  }
140
255
 
141
256
  @media (prefers-color-scheme: dark) {
142
- :where(.panneau-root--wA35w[data-color-scheme='auto']) {
257
+ :where(.panneau-root[data-color-scheme='auto'], .panneau-root-scheme[data-color-scheme='auto']) {
258
+ --panneau-chart-categorical-1: #61a9e3;
259
+ --panneau-chart-categorical-2: #e5c040;
260
+ --panneau-chart-categorical-3: #d9456a;
261
+ --panneau-chart-categorical-4: #a1da9e;
262
+ --panneau-chart-categorical-5: #bb6528;
263
+ --panneau-chart-categorical-6: #a06a9b;
264
+ --panneau-chart-categorical-7: #8c71e2;
265
+ --panneau-chart-categorical-8: #56dfe1;
266
+ --panneau-chart-sequential-1: #1d3550;
267
+ --panneau-chart-sequential-2: #285684;
268
+ --panneau-chart-sequential-3: #3d7fc2;
269
+ --panneau-chart-sequential-4: #74abe0;
270
+ --panneau-chart-sequential-5: #b8d6f2;
271
+ --panneau-chart-diverging-negative: #f0884a;
272
+ --panneau-chart-diverging-neutral: #3f3f46;
273
+ --panneau-chart-diverging-positive: #61a9e3;
143
274
  --panneau-color-bg: #09090b;
144
275
  --panneau-color-surface: #18181b;
145
276
  --panneau-color-surface-sunken: #111113;
@@ -180,29 +311,69 @@
180
311
  }
181
312
  }
182
313
 
183
- /* Touch screens: larger targets, and 16px text in inputs so that iOS doesn't zoom on focus. */
314
+ /*
315
+ * Densities: compact, comfortable (the tokens above) and touch, with larger targets and 16px text in
316
+ * inputs so that iOS doesn't zoom on focus. `auto`, the default, is touch on coarse pointers (touch
317
+ * screens) and comfortable otherwise.
318
+ */
319
+ /* A ThemeScope with its own density (.density) takes the comfortable values back. */
320
+ :where(.panneau-root-density[data-density='comfortable'], .panneau-root-density[data-density='auto']) {
321
+ --panneau-control-height: 2.25rem;
322
+ --panneau-control-height-sm: 1.875rem;
323
+ --panneau-font-size-control: 0.875rem;
324
+ --panneau-control-padding-x: 0.75rem;
325
+ --panneau-row-padding-y: 0.5rem;
326
+ }
327
+
328
+ :where(.panneau-root[data-density='compact'], .panneau-root-density[data-density='compact']) {
329
+ --panneau-control-height: 2rem;
330
+ --panneau-control-height-sm: 1.625rem;
331
+ --panneau-font-size-control: 0.8125rem;
332
+ --panneau-control-padding-x: 0.5rem;
333
+ --panneau-row-padding-y: 0.25rem;
334
+ }
335
+
336
+ :where(.panneau-root[data-density='touch'], .panneau-root-density[data-density='touch']) {
337
+ --panneau-control-height: 2.75rem;
338
+ --panneau-control-height-sm: 2.25rem;
339
+ --panneau-font-size-control: 1rem;
340
+ --panneau-control-padding-x: 0.75rem;
341
+ --panneau-row-padding-y: 0.75rem;
342
+ }
343
+
184
344
  @media (pointer: coarse) {
185
- :where(.panneau-root--wA35w) {
345
+ :where(.panneau-root[data-density='auto'], .panneau-root-density[data-density='auto']) {
186
346
  --panneau-control-height: 2.75rem;
187
347
  --panneau-control-height-sm: 2.25rem;
188
348
  --panneau-font-size-control: 1rem;
349
+ --panneau-control-padding-x: 0.75rem;
350
+ --panneau-row-padding-y: 0.75rem;
189
351
  }
190
352
  }
191
353
 
192
354
  @media (prefers-reduced-motion: reduce) {
193
- :where(.panneau-root--wA35w) {
355
+ :where(.panneau-root) {
194
356
  --panneau-duration: 0ms;
195
357
  }
196
358
  }
197
359
 
198
- /* Base stylesheet, scoped to the root, without specificity: components and projects override it. */
360
+ /* Base stylesheet, scoped to the root, with less weight than any class: components and projects override it. */
199
361
 
200
- .panneau-root--wA35w {
362
+ .panneau-root {
201
363
  /* The class is mostly a hook for the rules below, which use :where(). */
202
364
  display: block;
203
365
  }
204
366
 
205
- :where(.panneau-root--wA35w) {
367
+ /*
368
+ * The root is a size container, so that the responsive props of layout primitives follow its width
369
+ * rather than the viewport's. Like any size container, its width can't come from its content: in a
370
+ * flex row or a float, give it a width. Toast regions share the tokens of .root, not this.
371
+ */
372
+ .panneau-root-container {
373
+ container: panneau-root / inline-size;
374
+ }
375
+
376
+ :where(.panneau-root) {
206
377
  font-family: var(--panneau-font-family);
207
378
  font-size: var(--panneau-font-size-md);
208
379
  line-height: var(--panneau-line-height);
@@ -213,39 +384,91 @@
213
384
  text-size-adjust: 100%;
214
385
  }
215
386
 
216
- :where(.panneau-root--wA35w) :where(*, *::before, *::after) {
387
+ :where(.panneau-root) :where(*, *::before, *::after) {
217
388
  box-sizing: border-box;
218
389
  }
219
390
 
220
- :where(.panneau-root--wA35w) :where(h1, h2, h3, h4, h5, h6, p, ul, ol, dl, figure, fieldset, legend) {
391
+ /*
392
+ * Element resets weigh two element selectors, (0,0,2), by repeating :is(): more than the global
393
+ * element rules of a site, such as Bootstrap's Reboot (`h5 { margin-bottom: 0.5rem }` weighs
394
+ * (0,0,1)), less than any class, so that components and projects still override them.
395
+ */
396
+ :where(.panneau-root)
397
+ :is(
398
+ h1,
399
+ h2,
400
+ h3,
401
+ h4,
402
+ h5,
403
+ h6,
404
+ p,
405
+ ul,
406
+ ol,
407
+ dl,
408
+ dd,
409
+ figure,
410
+ blockquote,
411
+ pre,
412
+ hr,
413
+ fieldset,
414
+ legend
415
+ ):is(h1, h2, h3, h4, h5, h6, p, ul, ol, dl, dd, figure, blockquote, pre, hr, fieldset, legend) {
221
416
  margin: 0;
222
417
  padding: 0;
223
418
  }
224
419
 
225
- :where(.panneau-root--wA35w) :where(fieldset) {
420
+ /* Reboot floats legends and scales their text. */
421
+ :where(.panneau-root) :is(legend):is(legend) {
422
+ float: none;
423
+ width: auto;
424
+ font-size: inherit;
425
+ line-height: inherit;
426
+ }
427
+
428
+ /* Reboot fades rules to 25% opacity. */
429
+ :where(.panneau-root) :is(hr):is(hr) {
430
+ opacity: 1;
431
+ }
432
+
433
+ :where(.panneau-root) :where(fieldset) {
226
434
  border: 0;
227
435
  min-width: 0;
228
436
  }
229
437
 
230
- :where(.panneau-root--wA35w) :where(button, input, select, textarea) {
438
+ :where(.panneau-root) :where(button, input, select, textarea) {
231
439
  font: inherit;
232
440
  color: inherit;
233
441
  }
234
442
 
235
- :where(.panneau-root--wA35w) :where(a) {
443
+ :where(.panneau-root) :is(a):is(a) {
236
444
  color: var(--panneau-color-link);
237
445
  }
238
446
 
239
- :where(.panneau-root--wA35w) :where(img, svg, video) {
447
+ :where(.panneau-root) :where(img, svg, video) {
240
448
  max-width: 100%;
241
449
  }
242
450
 
243
- :where(.panneau-root--wA35w) :where(:focus-visible) {
451
+ :where(.panneau-root) :where(:focus-visible) {
244
452
  outline: var(--panneau-focus-width) solid var(--panneau-color-focus);
245
453
  outline-offset: 2px;
246
454
  }
247
455
 
456
+ /*
457
+ * A ThemeScope applies the text styles of its tokens again, since inherited values were computed
458
+ * on the root. One with its own color scheme or theme paints its background too.
459
+ */
460
+ :where(.panneau-root-scope) {
461
+ font-family: var(--panneau-font-family);
462
+ font-size: var(--panneau-font-size-md);
463
+ line-height: var(--panneau-line-height);
464
+ color: var(--panneau-color-text);
465
+ }
466
+
467
+ :where(.panneau-root-scope.panneau-root-scheme, .panneau-root-scope[data-panneau-theme]) {
468
+ background-color: var(--panneau-color-bg);
469
+ }
470
+
248
471
  /* Overlays (dialogs, popovers, menus, tooltips) render here, so that they get the tokens. */
249
- .panneau-portal-keLcJN {
472
+ .panneau-root-portal {
250
473
  display: contents;
251
474
  }
@@ -1,10 +1,25 @@
1
1
  import { type HTMLAttributes, type ReactNode } from 'react';
2
- import { type ColorScheme, type Theme } from '../theme/theme';
2
+ import { type NamedIconLoader } from '../icon/namedIcons';
3
+ import { type ColorScheme, type Density, type Theme } from '../theme/theme';
3
4
  export interface PanneauRootProps extends HTMLAttributes<HTMLDivElement> {
4
- /** Tokens that override the default theme: `bootstrapTheme`, or a project's own. */
5
+ /**
6
+ * Tokens, tones, variants and fonts that override the default theme: `bootstrapTheme`, or a
7
+ * project's own (`defineTheme()`).
8
+ */
5
9
  theme?: Theme | null;
6
10
  /** Defaults to `light`. `auto` follows the system setting. */
7
11
  colorScheme?: ColorScheme;
12
+ /**
13
+ * How much room controls and rows take: `compact`, `comfortable` or `touch`. Defaults to
14
+ * `auto`: `touch` on touch screens, `comfortable` otherwise.
15
+ */
16
+ density?: Density;
17
+ /**
18
+ * Loads the icons that definitions name (`"icon": "send"`), for `getNamedIcon()`: pass
19
+ * `lucideIconLoader` from `@panneau/ui/named-icons`, or a loader of only the icons the app
20
+ * uses. Without it, named icons render an empty space.
21
+ */
22
+ iconLoader?: NamedIconLoader | null;
8
23
  /**
9
24
  * Locale of dates and numbers in React Aria components. Defaults to the react-intl locale, or
10
25
  * to the browser's without an `IntlProvider`.
@@ -17,8 +32,24 @@ export interface PanneauRootProps extends HTMLAttributes<HTMLDivElement> {
17
32
  locale?: string;
18
33
  children?: ReactNode;
19
34
  }
35
+ /** The color scheme and density in effect, which a `ThemeScope` inherits when it doesn't set them. */
36
+ export declare const ScopeContext: import("react").Context<{
37
+ colorScheme: ColorScheme;
38
+ density: Density;
39
+ }>;
40
+ /** Gives overlays a container: that of a root, or of a scope. */
41
+ export declare const PortalProvider: import("react").Provider<Element | null | undefined>;
42
+ /**
43
+ * The `<style>` and `<link>` elements of a theme: its CSS, scoped to `data-panneau-theme`, and its
44
+ * fonts. React hoists them to the head and adds each once, however many roots or scopes use it.
45
+ * Returns the scope of the theme too, for `data-panneau-theme`.
46
+ */
47
+ export declare function useThemeStyles(theme: Theme | null): {
48
+ scope?: string;
49
+ styles: ReactNode;
50
+ };
20
51
  /**
21
- * The element overlays render into: the closest `PanneauRoot`'s, or `undefined` for the body
52
+ * The element overlays render into: the closest `PanneauRoot`'s or `ThemeScope`'s, or `undefined` for the body
22
53
  * without a root. It is `null` during the first render of a root: overlays wait for it, since
23
54
  * React Aria hides everything outside of a modal from assistive technologies when it opens.
24
55
  */
@@ -30,5 +61,5 @@ export declare function usePortalContainer(): Element | null | undefined;
30
61
  * any token with its own class on the root. Without an `IntlProvider` above it, it provides one
31
62
  * with Panneau's messages in its `locale`.
32
63
  */
33
- export declare function PanneauRoot({ theme, colorScheme, locale, className, children, ...props }: PanneauRootProps): import("react").JSX.Element;
64
+ export declare function PanneauRoot({ theme, colorScheme, density, iconLoader, locale, className, children, ...props }: PanneauRootProps): import("react").JSX.Element;
34
65
  //# sourceMappingURL=PanneauRoot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PanneauRoot.d.ts","sourceRoot":"","sources":["../../src/root/PanneauRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAgC,MAAM,OAAO,CAAC;AAM1F,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,KAAK,EAA2B,MAAM,gBAAgB,CAAC;AAKvF,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACpE,oFAAoF;IACpF,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB;AAKD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,GAAG,IAAI,GAAG,SAAS,CAE/D;AA2BD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,EACxB,KAAY,EACZ,WAAqB,EACrB,MAAM,EACN,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACX,EAAE,gBAAgB,+BAqClB"}
1
+ {"version":3,"file":"PanneauRoot.d.ts","sourceRoot":"","sources":["../../src/root/PanneauRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAgC,MAAM,OAAO,CAAC;AAM1F,OAAO,EAAE,KAAK,eAAe,EAA0B,MAAM,oBAAoB,CAAC;AAElF,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,KAAK,EAGb,MAAM,gBAAgB,CAAC;AAKxB,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACpE;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,UAAU,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB;AAKD,sGAAsG;AACtG,eAAO,MAAM,YAAY;iBAAgC,WAAW;aAAW,OAAO;EAGpF,CAAC;AAEH,iEAAiE;AACjE,eAAO,MAAM,cAAc,sDAAyB,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CAwBzF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,GAAG,IAAI,GAAG,SAAS,CAE/D;AA2BD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,EACxB,KAAY,EACZ,WAAqB,EACrB,OAAgB,EAChB,UAAiB,EACjB,MAAM,EACN,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACX,EAAE,gBAAgB,+BAsClB"}
@@ -1,20 +1,101 @@
1
1
  import { cx } from "../utils/cx.js";
2
+ import { NamedIconLoaderContext } from "../icon/namedIcons.js";
3
+ import { getFontFaceCss, getFontStylesheets } from "../theme/fonts.js";
2
4
  import { getThemeCss, hashString } from "../theme/theme.js";
3
5
  import { ToastProvider } from "../toast/Toast.js";
4
6
  import PanneauRoot_module_default from "./PanneauRoot.module.js";
5
7
  import { I18nProvider } from "react-aria-components";
6
- import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
9
  import { getPanneauMessages } from "@panneau/intl";
8
10
  import { createContext, use, useState } from "react";
9
11
  import { IntlContext, IntlProvider } from "react-intl";
12
+ import { c } from "react/compiler-runtime";
10
13
  //#region src/root/PanneauRoot.tsx
11
14
  /** `undefined` outside of a root, `null` while the root's container isn't mounted yet. */
12
15
  var PortalContext = createContext(void 0);
16
+ /** The color scheme and density in effect, which a `ThemeScope` inherits when it doesn't set them. */
17
+ var ScopeContext = createContext({
18
+ colorScheme: "light",
19
+ density: "auto"
20
+ });
21
+ /** Gives overlays a container: that of a root, or of a scope. */
22
+ var PortalProvider = PortalContext.Provider;
13
23
  /**
14
- * The element overlays render into: the closest `PanneauRoot`'s, or `undefined` for the body
24
+ * The `<style>` and `<link>` elements of a theme: its CSS, scoped to `data-panneau-theme`, and its
25
+ * fonts. React hoists them to the head and adds each once, however many roots or scopes use it.
26
+ * Returns the scope of the theme too, for `data-panneau-theme`.
27
+ */
28
+ function useThemeStyles(theme) {
29
+ const $ = c(13);
30
+ let t0;
31
+ let t1;
32
+ let t2;
33
+ if ($[0] !== theme) {
34
+ const css = theme !== null ? getThemeCss(theme, "§") : "";
35
+ const scope = css !== "" ? hashString(css) : void 0;
36
+ const fontCss = getFontFaceCss(theme?.fonts);
37
+ t2 = scope;
38
+ t0 = scope !== void 0 ? /* @__PURE__ */ jsx("style", {
39
+ href: `panneau-theme-${scope}`,
40
+ precedence: "panneau",
41
+ children: css.replaceAll("§", scope)
42
+ }) : null;
43
+ t1 = fontCss !== "" ? /* @__PURE__ */ jsx("style", {
44
+ href: `panneau-fonts-${hashString(fontCss)}`,
45
+ precedence: "panneau",
46
+ children: fontCss
47
+ }) : null;
48
+ $[0] = theme;
49
+ $[1] = t0;
50
+ $[2] = t1;
51
+ $[3] = t2;
52
+ } else {
53
+ t0 = $[1];
54
+ t1 = $[2];
55
+ t2 = $[3];
56
+ }
57
+ let t3;
58
+ if ($[4] !== theme?.fonts) {
59
+ t3 = getFontStylesheets(theme?.fonts).map(_temp);
60
+ $[4] = theme?.fonts;
61
+ $[5] = t3;
62
+ } else t3 = $[5];
63
+ let t4;
64
+ if ($[6] !== t0 || $[7] !== t1 || $[8] !== t3) {
65
+ t4 = /* @__PURE__ */ jsxs(Fragment, { children: [
66
+ t0,
67
+ t1,
68
+ t3
69
+ ] });
70
+ $[6] = t0;
71
+ $[7] = t1;
72
+ $[8] = t3;
73
+ $[9] = t4;
74
+ } else t4 = $[9];
75
+ let t5;
76
+ if ($[10] !== t2 || $[11] !== t4) {
77
+ t5 = {
78
+ scope: t2,
79
+ styles: t4
80
+ };
81
+ $[10] = t2;
82
+ $[11] = t4;
83
+ $[12] = t5;
84
+ } else t5 = $[12];
85
+ return t5;
86
+ }
87
+ /**
88
+ * The element overlays render into: the closest `PanneauRoot`'s or `ThemeScope`'s, or `undefined` for the body
15
89
  * without a root. It is `null` during the first render of a root: overlays wait for it, since
16
90
  * React Aria hides everything outside of a modal from assistive technologies when it opens.
17
91
  */
92
+ function _temp(href) {
93
+ return /* @__PURE__ */ jsx("link", {
94
+ rel: "stylesheet",
95
+ href,
96
+ precedence: "panneau"
97
+ }, href);
98
+ }
18
99
  function usePortalContainer() {
19
100
  return use(PortalContext);
20
101
  }
@@ -40,31 +121,37 @@ function PanneauIntlProvider({ locale = "en", children }) {
40
121
  * any token with its own class on the root. Without an `IntlProvider` above it, it provides one
41
122
  * with Panneau's messages in its `locale`.
42
123
  */
43
- function PanneauRoot({ theme = null, colorScheme = "light", locale, className, children, ...props }) {
124
+ function PanneauRoot({ theme = null, colorScheme = "light", density = "auto", iconLoader = null, locale, className, children, ...props }) {
44
125
  const intl = use(IntlContext);
45
126
  const [container, setContainer] = useState(null);
46
- const css = theme !== null ? getThemeCss(theme, "§") : "";
47
- const scope = css !== "" ? hashString(css) : void 0;
127
+ const { scope, styles: themeStyles } = useThemeStyles(theme);
48
128
  const root = /* @__PURE__ */ jsxs("div", {
49
129
  ...props,
50
- className: cx(PanneauRoot_module_default.root, className),
130
+ className: cx("panneau-root", PanneauRoot_module_default.root, PanneauRoot_module_default.container, className),
51
131
  "data-color-scheme": colorScheme,
132
+ "data-density": density,
52
133
  "data-panneau-theme": scope,
53
- children: [scope !== void 0 ? /* @__PURE__ */ jsx("style", {
54
- href: `panneau-theme-${scope}`,
55
- precedence: "panneau",
56
- children: css.replaceAll("§", scope)
57
- }) : null, /* @__PURE__ */ jsxs(I18nProvider, {
134
+ children: [themeStyles, /* @__PURE__ */ jsxs(I18nProvider, {
58
135
  locale: locale ?? intl?.locale,
59
- children: [/* @__PURE__ */ jsx(PortalContext, {
60
- value: container,
61
- children: /* @__PURE__ */ jsx(ToastProvider, {
62
- regionClassName: PanneauRoot_module_default.root,
63
- regionProps: {
64
- "data-color-scheme": colorScheme,
65
- "data-panneau-theme": scope
136
+ children: [/* @__PURE__ */ jsx(NamedIconLoaderContext, {
137
+ value: iconLoader,
138
+ children: /* @__PURE__ */ jsx(ScopeContext, {
139
+ value: {
140
+ colorScheme,
141
+ density
66
142
  },
67
- children
143
+ children: /* @__PURE__ */ jsx(PortalContext, {
144
+ value: container,
145
+ children: /* @__PURE__ */ jsx(ToastProvider, {
146
+ regionClassName: PanneauRoot_module_default.root,
147
+ regionProps: {
148
+ "data-color-scheme": colorScheme,
149
+ "data-density": density,
150
+ "data-panneau-theme": scope
151
+ },
152
+ children
153
+ })
154
+ })
68
155
  })
69
156
  }), /* @__PURE__ */ jsx("div", {
70
157
  ref: setContainer,
@@ -79,6 +166,6 @@ function PanneauRoot({ theme = null, colorScheme = "light", locale, className, c
79
166
  return root;
80
167
  }
81
168
  //#endregion
82
- export { PanneauRoot, usePortalContainer };
169
+ export { PanneauRoot, PortalProvider, ScopeContext, usePortalContainer, useThemeStyles };
83
170
 
84
171
  //# sourceMappingURL=PanneauRoot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PanneauRoot.js","names":["styles"],"sources":["../../src/root/PanneauRoot.tsx"],"sourcesContent":["import { type HTMLAttributes, type ReactNode, createContext, use, useState } from 'react';\nimport { I18nProvider } from 'react-aria-components';\nimport { IntlContext, IntlProvider, type IntlShape } from 'react-intl';\n\nimport { getPanneauMessages } from '@panneau/intl';\n\nimport { type ColorScheme, type Theme, getThemeCss, hashString } from '../theme/theme';\nimport { ToastProvider } from '../toast/Toast';\nimport { cx } from '../utils/cx';\nimport styles from './PanneauRoot.module.css';\n\nexport interface PanneauRootProps extends HTMLAttributes<HTMLDivElement> {\n /** Tokens that override the default theme: `bootstrapTheme`, or a project's own. */\n theme?: Theme | null;\n /** Defaults to `light`. `auto` follows the system setting. */\n colorScheme?: ColorScheme;\n /**\n * Locale of dates and numbers in React Aria components. Defaults to the react-intl locale, or\n * to the browser's without an `IntlProvider`.\n *\n * Without an `IntlProvider` above it, the root provides one, with the messages of every Panneau\n * package in this locale (English without a locale, or for a locale Panneau doesn't translate).\n * An app with its own `IntlProvider` adds them with `withPanneauMessages()` from\n * `@panneau/intl`.\n */\n locale?: string;\n children?: ReactNode;\n}\n\n/** `undefined` outside of a root, `null` while the root's container isn't mounted yet. */\nconst PortalContext = createContext<Element | null | undefined>(undefined);\n\n/**\n * The element overlays render into: the closest `PanneauRoot`'s, or `undefined` for the body\n * without a root. It is `null` during the first render of a root: overlays wait for it, since\n * React Aria hides everything outside of a modal from assistive technologies when it opens.\n */\nexport function usePortalContainer(): Element | null | undefined {\n return use(PortalContext);\n}\n\n/**\n * An `IntlProvider` with Panneau's messages in a locale, for a root without one above it. A locale\n * Panneau doesn't translate gets English, so that react-intl doesn't report every message as\n * missing.\n */\nfunction PanneauIntlProvider({\n locale = 'en',\n children,\n}: {\n locale?: string;\n children: ReactNode;\n}) {\n const messages = getPanneauMessages(locale);\n const translated = Object.keys(messages).length > 0;\n return (\n <IntlProvider\n locale={translated ? locale : 'en'}\n defaultLocale=\"en\"\n messages={translated ? messages : getPanneauMessages('en')}\n >\n {children}\n </IntlProvider>\n );\n}\n\n/**\n * The root of every Panneau interface. It scopes the base stylesheet and the design tokens to its\n * element (no global CSS), applies a theme and a color scheme, and hosts overlays and toasts so\n * that they get the tokens too. Panneau components must render inside one. A project can override\n * any token with its own class on the root. Without an `IntlProvider` above it, it provides one\n * with Panneau's messages in its `locale`.\n */\nexport function PanneauRoot({\n theme = null,\n colorScheme = 'light',\n locale,\n className,\n children,\n ...props\n}: PanneauRootProps) {\n const intl = use(IntlContext) as IntlShape | null | undefined;\n const [container, setContainer] = useState<HTMLDivElement | null>(null);\n const css = theme !== null ? getThemeCss(theme, '§') : '';\n const scope = css !== '' ? hashString(css) : undefined;\n const root = (\n <div\n {...props}\n className={cx(styles.root, className)}\n data-color-scheme={colorScheme}\n data-panneau-theme={scope}\n >\n {scope !== undefined ? (\n <style href={`panneau-theme-${scope}`} precedence=\"panneau\">\n {css.replaceAll('§', scope)}\n </style>\n ) : null}\n <I18nProvider locale={locale ?? intl?.locale}>\n <PortalContext value={container}>\n <ToastProvider\n regionClassName={styles.root}\n regionProps={{\n 'data-color-scheme': colorScheme,\n 'data-panneau-theme': scope,\n }}\n >\n {children}\n </ToastProvider>\n </PortalContext>\n <div ref={setContainer} className={styles.portal} />\n </I18nProvider>\n </div>\n );\n if (intl === null || intl === undefined) {\n return <PanneauIntlProvider locale={locale}>{root}</PanneauIntlProvider>;\n }\n return root;\n}\n"],"mappings":";;;;;;;;;;;AA8BA,IAAM,gBAAgB,cAA0C,KAAA,CAAS;;;;;;AAOzE,SAAgB,qBAAiD;CAC7D,OAAO,IAAI,aAAa;AAC5B;;;;;;AAOA,SAAS,oBAAoB,EACzB,SAAS,MACT,YAID;CACC,MAAM,WAAW,mBAAmB,MAAM;CAC1C,MAAM,aAAa,OAAO,KAAK,QAAQ,CAAC,CAAC,SAAS;CAClD,OACI,oBAAC,cAAD;EACI,QAAQ,aAAa,SAAS;EAC9B,eAAc;EACd,UAAU,aAAa,WAAW,mBAAmB,IAAI;EAExD;CACS,CAAA;AAEtB;;;;;;;;AASA,SAAgB,YAAY,EACxB,QAAQ,MACR,cAAc,SACd,QACA,WACA,UACA,GAAG,SACc;CACjB,MAAM,OAAO,IAAI,WAAW;CAC5B,MAAM,CAAC,WAAW,gBAAgB,SAAgC,IAAI;CACtE,MAAM,MAAM,UAAU,OAAO,YAAY,OAAO,GAAG,IAAI;CACvD,MAAM,QAAQ,QAAQ,KAAK,WAAW,GAAG,IAAI,KAAA;CAC7C,MAAM,OACF,qBAAC,OAAD;EACI,GAAI;EACJ,WAAW,GAAGA,2BAAO,MAAM,SAAS;EACpC,qBAAmB;EACnB,sBAAoB;EAJxB,UAAA,CAMK,UAAU,KAAA,IACP,oBAAC,SAAD;GAAO,MAAM,iBAAiB;GAAS,YAAW;GAC7C,UAAA,IAAI,WAAW,KAAK,KAAK;EACvB,CAAA,IACP,MACJ,qBAAC,cAAD;GAAc,QAAQ,UAAU,MAAM;GAAtC,UAAA,CACI,oBAAC,eAAD;IAAe,OAAO;IAClB,UAAA,oBAAC,eAAD;KACI,iBAAiBA,2BAAO;KACxB,aAAa;MACT,qBAAqB;MACrB,sBAAsB;KAC1B;KAEC;IACU,CAAA;GACJ,CAAA,GACf,oBAAC,OAAD;IAAK,KAAK;IAAc,WAAWA,2BAAO;GAAO,CAAA,CACvC;EACb,CAAA,CAAA;;CAET,IAAI,SAAS,QAAQ,SAAS,KAAA,GAC1B,OAAO,oBAAC,qBAAD;EAA6B;EAAS,UAAA;CAA0B,CAAA;CAE3E,OAAO;AACX"}
1
+ {"version":3,"file":"PanneauRoot.js","names":["scope","fontCss","href","_c","_Fragment","styles"],"sources":["../../src/root/PanneauRoot.tsx"],"sourcesContent":["import { type HTMLAttributes, type ReactNode, createContext, use, useState } from 'react';\nimport { I18nProvider } from 'react-aria-components';\nimport { IntlContext, IntlProvider, type IntlShape } from 'react-intl';\n\nimport { getPanneauMessages } from '@panneau/intl';\n\nimport { type NamedIconLoader, NamedIconLoaderContext } from '../icon/namedIcons';\nimport { getFontFaceCss, getFontStylesheets } from '../theme/fonts';\nimport {\n type ColorScheme,\n type Density,\n type Theme,\n getThemeCss,\n hashString,\n} from '../theme/theme';\nimport { ToastProvider } from '../toast/Toast';\nimport { cx } from '../utils/cx';\nimport styles from './PanneauRoot.module.css';\n\nexport interface PanneauRootProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Tokens, tones, variants and fonts that override the default theme: `bootstrapTheme`, or a\n * project's own (`defineTheme()`).\n */\n theme?: Theme | null;\n /** Defaults to `light`. `auto` follows the system setting. */\n colorScheme?: ColorScheme;\n /**\n * How much room controls and rows take: `compact`, `comfortable` or `touch`. Defaults to\n * `auto`: `touch` on touch screens, `comfortable` otherwise.\n */\n density?: Density;\n /**\n * Loads the icons that definitions name (`\"icon\": \"send\"`), for `getNamedIcon()`: pass\n * `lucideIconLoader` from `@panneau/ui/named-icons`, or a loader of only the icons the app\n * uses. Without it, named icons render an empty space.\n */\n iconLoader?: NamedIconLoader | null;\n /**\n * Locale of dates and numbers in React Aria components. Defaults to the react-intl locale, or\n * to the browser's without an `IntlProvider`.\n *\n * Without an `IntlProvider` above it, the root provides one, with the messages of every Panneau\n * package in this locale (English without a locale, or for a locale Panneau doesn't translate).\n * An app with its own `IntlProvider` adds them with `withPanneauMessages()` from\n * `@panneau/intl`.\n */\n locale?: string;\n children?: ReactNode;\n}\n\n/** `undefined` outside of a root, `null` while the root's container isn't mounted yet. */\nconst PortalContext = createContext<Element | null | undefined>(undefined);\n\n/** The color scheme and density in effect, which a `ThemeScope` inherits when it doesn't set them. */\nexport const ScopeContext = createContext<{ colorScheme: ColorScheme; density: Density }>({\n colorScheme: 'light',\n density: 'auto',\n});\n\n/** Gives overlays a container: that of a root, or of a scope. */\nexport const PortalProvider = PortalContext.Provider;\n\n/**\n * The `<style>` and `<link>` elements of a theme: its CSS, scoped to `data-panneau-theme`, and its\n * fonts. React hoists them to the head and adds each once, however many roots or scopes use it.\n * Returns the scope of the theme too, for `data-panneau-theme`.\n */\nexport function useThemeStyles(theme: Theme | null): { scope?: string; styles: ReactNode } {\n const css = theme !== null ? getThemeCss(theme, '§') : '';\n const scope = css !== '' ? hashString(css) : undefined;\n const fontCss = getFontFaceCss(theme?.fonts);\n return {\n scope,\n styles: (\n <>\n {scope !== undefined ? (\n <style href={`panneau-theme-${scope}`} precedence=\"panneau\">\n {css.replaceAll('§', scope)}\n </style>\n ) : null}\n {fontCss !== '' ? (\n <style href={`panneau-fonts-${hashString(fontCss)}`} precedence=\"panneau\">\n {fontCss}\n </style>\n ) : null}\n {getFontStylesheets(theme?.fonts).map((href) => (\n <link key={href} rel=\"stylesheet\" href={href} precedence=\"panneau\" />\n ))}\n </>\n ),\n };\n}\n\n/**\n * The element overlays render into: the closest `PanneauRoot`'s or `ThemeScope`'s, or `undefined` for the body\n * without a root. It is `null` during the first render of a root: overlays wait for it, since\n * React Aria hides everything outside of a modal from assistive technologies when it opens.\n */\nexport function usePortalContainer(): Element | null | undefined {\n return use(PortalContext);\n}\n\n/**\n * An `IntlProvider` with Panneau's messages in a locale, for a root without one above it. A locale\n * Panneau doesn't translate gets English, so that react-intl doesn't report every message as\n * missing.\n */\nfunction PanneauIntlProvider({\n locale = 'en',\n children,\n}: {\n locale?: string;\n children: ReactNode;\n}) {\n const messages = getPanneauMessages(locale);\n const translated = Object.keys(messages).length > 0;\n return (\n <IntlProvider\n locale={translated ? locale : 'en'}\n defaultLocale=\"en\"\n messages={translated ? messages : getPanneauMessages('en')}\n >\n {children}\n </IntlProvider>\n );\n}\n\n/**\n * The root of every Panneau interface. It scopes the base stylesheet and the design tokens to its\n * element (no global CSS), applies a theme and a color scheme, and hosts overlays and toasts so\n * that they get the tokens too. Panneau components must render inside one. A project can override\n * any token with its own class on the root. Without an `IntlProvider` above it, it provides one\n * with Panneau's messages in its `locale`.\n */\nexport function PanneauRoot({\n theme = null,\n colorScheme = 'light',\n density = 'auto',\n iconLoader = null,\n locale,\n className,\n children,\n ...props\n}: PanneauRootProps) {\n const intl = use(IntlContext) as IntlShape | null | undefined;\n const [container, setContainer] = useState<HTMLDivElement | null>(null);\n const { scope, styles: themeStyles } = useThemeStyles(theme);\n const root = (\n <div\n {...props}\n className={cx('panneau-root', styles.root, styles.container, className)}\n data-color-scheme={colorScheme}\n data-density={density}\n data-panneau-theme={scope}\n >\n {themeStyles}\n <I18nProvider locale={locale ?? intl?.locale}>\n <NamedIconLoaderContext value={iconLoader}>\n <ScopeContext value={{ colorScheme, density }}>\n <PortalContext value={container}>\n <ToastProvider\n regionClassName={styles.root}\n regionProps={{\n 'data-color-scheme': colorScheme,\n 'data-density': density,\n 'data-panneau-theme': scope,\n }}\n >\n {children}\n </ToastProvider>\n </PortalContext>\n </ScopeContext>\n </NamedIconLoaderContext>\n <div ref={setContainer} className={styles.portal} />\n </I18nProvider>\n </div>\n );\n if (intl === null || intl === undefined) {\n return <PanneauIntlProvider locale={locale}>{root}</PanneauIntlProvider>;\n }\n return root;\n}\n"],"mappings":";;;;;;;;;;;;;;AAoDA,IAAM,gBAAgB,cAA0C,KAAA,CAAS;;AAGzE,IAAa,eAAe,cAA8D;CACtF,aAAa;CACb,SAAS;AACb,CAAC;;AAGD,IAAa,iBAAiB,cAAc;;;;;;AAO5C,SAAO,eAAA,OAAA;CAAA,MAAA,IAAAG,EAAA,EAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,OAAA;EACH,MAAA,MAAY,UAAU,OAAO,YAAY,OAAO,GAAQ,IAA5C;EACZ,MAAA,QAAc,QAAQ,KAAK,WAAW,GAAe,IAAvC,KAAA;EACd,MAAA,UAAgB,eAAe,OAAK,KAAO;EAEvCH,KAAA;EAGS,KAAA,UAAU,KAAA,IACP,oBAAA,SAAA;GAAa,MAAA,iBAAiB;GAAoB,YAAA;GAC7C,UAAA,IAAG,WAAY,KAAK,KAAK;EACtB,CAAA,IAHX;EAKA,KAAA,YAAY,KACT,oBAAA,SAAA;GAAa,MAAA,iBAAiB,WAAW,OAAO;GAAgB,YAAA;GAC3D,UAAA;EACG,CAAA,IAHX;EAIO,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA;EAAA,KAAA,EAAA;EAAA,KAAA,EAAA;EAAA,KAAA,EAAA;CAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,OAAA,OAAA;EACP,KAAA,mBAAmB,OAAK,KAAO,CAAC,CAAA,IAAK,KAErC;EAAC,EAAA,KAAA,OAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,MAAA,EAAA,OAAA,MAAA,EAAA,OAAA,IAAA;EAbN,KAAA,qBAAAI,UAAA,EAAA,UAAA;GACK;GAKA;GAKA;EAEC,EAAA,CAAA;EACH,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,QAAA,MAAA,EAAA,QAAA,IAAA;EAjBJ,KAAA;GAAA,OACHJ;GAAK,QAED;EAgBR;EAAC,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;CAAA,OAAA,KAAA,EAAA;CAAA,OAnBM;AAmBN;;;;;;AAvBE,SAAA,MAAA,MAAA;CAAA,OAmBa,oBAAA,QAAA;EAAqB,KAAA;EAAmB;EAAiB,YAAA;CAAS,GAAvD,IAAuD;AAAG;AAYzF,SAAgB,qBAAiD;CAC7D,OAAO,IAAI,aAAa;AAC5B;;;;;;AAOA,SAAS,oBAAoB,EACzB,SAAS,MACT,YAID;CACC,MAAM,WAAW,mBAAmB,MAAM;CAC1C,MAAM,aAAa,OAAO,KAAK,QAAQ,CAAC,CAAC,SAAS;CAClD,OACI,oBAAC,cAAD;EACI,QAAQ,aAAa,SAAS;EAC9B,eAAc;EACd,UAAU,aAAa,WAAW,mBAAmB,IAAI;EAExD;CACS,CAAA;AAEtB;;;;;;;;AASA,SAAgB,YAAY,EACxB,QAAQ,MACR,cAAc,SACd,UAAU,QACV,aAAa,MACb,QACA,WACA,UACA,GAAG,SACc;CACjB,MAAM,OAAO,IAAI,WAAW;CAC5B,MAAM,CAAC,WAAW,gBAAgB,SAAgC,IAAI;CACtE,MAAM,EAAE,OAAO,QAAQ,gBAAgB,eAAe,KAAK;CAC3D,MAAM,OACF,qBAAC,OAAD;EACI,GAAI;EACJ,WAAW,GAAG,gBAAgBK,2BAAO,MAAMA,2BAAO,WAAW,SAAS;EACtE,qBAAmB;EACnB,gBAAc;EACd,sBAAoB;EALxB,UAAA,CAOK,aACD,qBAAC,cAAD;GAAc,QAAQ,UAAU,MAAM;GAAtC,UAAA,CACI,oBAAC,wBAAD;IAAwB,OAAO;IAC3B,UAAA,oBAAC,cAAD;KAAc,OAAO;MAAE;MAAa;KAAQ;KACxC,UAAA,oBAAC,eAAD;MAAe,OAAO;MAClB,UAAA,oBAAC,eAAD;OACI,iBAAiBA,2BAAO;OACxB,aAAa;QACT,qBAAqB;QACrB,gBAAgB;QAChB,sBAAsB;OAC1B;OAEC;MACU,CAAA;KACJ,CAAA;IACL,CAAA;GACM,CAAA,GACxB,oBAAC,OAAD;IAAK,KAAK;IAAc,WAAWA,2BAAO;GAAO,CAAA,CACvC;EACb,CAAA,CAAA;;CAET,IAAI,SAAS,QAAQ,SAAS,KAAA,GAC1B,OAAO,oBAAC,qBAAD;EAA6B;EAAS,UAAA;CAA0B,CAAA;CAE3E,OAAO;AACX"}
@@ -1,12 +1,20 @@
1
1
  import "./PanneauRoot.css";
2
2
  //#region src/root/PanneauRoot.module.css
3
- var root = "panneau-root--wA35w";
4
- var portal = "panneau-portal-keLcJN";
3
+ var root = "panneau-root";
4
+ var scheme = "panneau-root-scheme";
5
+ var density = "panneau-root-density";
6
+ var container = "panneau-root-container";
7
+ var scope = "panneau-root-scope";
8
+ var portal = "panneau-root-portal";
5
9
  var PanneauRoot_module_default = {
6
10
  root,
11
+ scheme,
12
+ density,
13
+ container,
14
+ scope,
7
15
  portal
8
16
  };
9
17
  //#endregion
10
- export { PanneauRoot_module_default as default, portal, root };
18
+ export { container, PanneauRoot_module_default as default, density, portal, root, scheme, scope };
11
19
 
12
20
  //# sourceMappingURL=PanneauRoot.module.js.map