@panneau/ui 5.0.0-alpha.1 → 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 (384) hide show
  1. package/README.md +263 -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-button/IconButton.css +2 -2
  156. package/dist/icon-button/IconButton.d.ts +1 -1
  157. package/dist/icon-button/IconButton.d.ts.map +1 -1
  158. package/dist/icon-button/IconButton.js +3 -3
  159. package/dist/icon-button/IconButton.js.map +1 -1
  160. package/dist/icon-button/IconButton.module.js +2 -2
  161. package/dist/index.d.ts +25 -5
  162. package/dist/index.d.ts.map +1 -1
  163. package/dist/index.js +20 -2
  164. package/dist/inline/Inline.css +142 -0
  165. package/dist/inline/Inline.d.ts +17 -0
  166. package/dist/inline/Inline.d.ts.map +1 -0
  167. package/dist/inline/Inline.js +21 -0
  168. package/dist/inline/Inline.js.map +1 -0
  169. package/dist/inline/Inline.module.js +12 -0
  170. package/dist/inline/Inline.module.js.map +1 -0
  171. package/dist/inline/tokens.d.ts +3 -0
  172. package/dist/inline/tokens.d.ts.map +1 -0
  173. package/dist/inline/tokens.js +10 -0
  174. package/dist/inline/tokens.js.map +1 -0
  175. package/dist/layout/responsive.d.ts +38 -0
  176. package/dist/layout/responsive.d.ts.map +1 -0
  177. package/dist/layout/responsive.js +49 -0
  178. package/dist/layout/responsive.js.map +1 -0
  179. package/dist/menu/Menu.js +2 -2
  180. package/dist/menu/Menu.js.map +1 -1
  181. package/dist/number-input/NumberInput.css +12 -12
  182. package/dist/number-input/NumberInput.js +1 -1
  183. package/dist/number-input/NumberInput.js.map +1 -1
  184. package/dist/number-input/NumberInput.module.js +4 -4
  185. package/dist/number-input/NumberInput.module.js.map +1 -1
  186. package/dist/number-input/tokens.d.ts +3 -0
  187. package/dist/number-input/tokens.d.ts.map +1 -0
  188. package/dist/number-input/tokens.js +10 -0
  189. package/dist/number-input/tokens.js.map +1 -0
  190. package/dist/popover/Popover.css +13 -12
  191. package/dist/popover/Popover.js +2 -2
  192. package/dist/popover/Popover.js.map +1 -1
  193. package/dist/popover/Popover.module.js +3 -3
  194. package/dist/popover/Popover.module.js.map +1 -1
  195. package/dist/popover/tokens.d.ts +3 -0
  196. package/dist/popover/tokens.d.ts.map +1 -0
  197. package/dist/popover/tokens.js +19 -0
  198. package/dist/popover/tokens.js.map +1 -0
  199. package/dist/prose/Prose.css +141 -0
  200. package/dist/prose/Prose.d.ts +11 -0
  201. package/dist/prose/Prose.d.ts.map +1 -0
  202. package/dist/prose/Prose.js +18 -0
  203. package/dist/prose/Prose.js.map +1 -0
  204. package/dist/prose/Prose.module.js +8 -0
  205. package/dist/prose/Prose.module.js.map +1 -0
  206. package/dist/prose/tokens.d.ts +3 -0
  207. package/dist/prose/tokens.d.ts.map +1 -0
  208. package/dist/prose/tokens.js +33 -0
  209. package/dist/prose/tokens.js.map +1 -0
  210. package/dist/radio-group/RadioGroup.css +21 -20
  211. package/dist/radio-group/RadioGroup.d.ts.map +1 -1
  212. package/dist/radio-group/RadioGroup.js +2 -2
  213. package/dist/radio-group/RadioGroup.js.map +1 -1
  214. package/dist/radio-group/RadioGroup.module.js +6 -6
  215. package/dist/radio-group/RadioGroup.module.js.map +1 -1
  216. package/dist/radio-group/tokens.d.ts +3 -0
  217. package/dist/radio-group/tokens.d.ts.map +1 -0
  218. package/dist/radio-group/tokens.js +19 -0
  219. package/dist/radio-group/tokens.js.map +1 -0
  220. package/dist/root/PanneauRoot.css +243 -20
  221. package/dist/root/PanneauRoot.d.ts +28 -4
  222. package/dist/root/PanneauRoot.d.ts.map +1 -1
  223. package/dist/root/PanneauRoot.js +104 -21
  224. package/dist/root/PanneauRoot.js.map +1 -1
  225. package/dist/root/PanneauRoot.module.js +11 -3
  226. package/dist/root/PanneauRoot.module.js.map +1 -1
  227. package/dist/root/ThemeScope.d.ts +24 -0
  228. package/dist/root/ThemeScope.d.ts.map +1 -0
  229. package/dist/root/ThemeScope.js +49 -0
  230. package/dist/root/ThemeScope.js.map +1 -0
  231. package/dist/select/ListBox.css +23 -22
  232. package/dist/select/ListBox.module.js +12 -12
  233. package/dist/select/ListBox.module.js.map +1 -1
  234. package/dist/select/Select.js +1 -1
  235. package/dist/select/Select.js.map +1 -1
  236. package/dist/select/listBoxTokens.d.ts +3 -0
  237. package/dist/select/listBoxTokens.d.ts.map +1 -0
  238. package/dist/select/listBoxTokens.js +19 -0
  239. package/dist/select/listBoxTokens.js.map +1 -0
  240. package/dist/spinner/Spinner.css +8 -8
  241. package/dist/spinner/Spinner.js +1 -1
  242. package/dist/spinner/Spinner.js.map +1 -1
  243. package/dist/spinner/Spinner.module.js +5 -5
  244. package/dist/spinner/Spinner.module.js.map +1 -1
  245. package/dist/spinner/tokens.d.ts +3 -0
  246. package/dist/spinner/tokens.d.ts.map +1 -0
  247. package/dist/spinner/tokens.js +10 -0
  248. package/dist/spinner/tokens.js.map +1 -0
  249. package/dist/stack/Stack.css +135 -0
  250. package/dist/stack/Stack.d.ts +15 -0
  251. package/dist/stack/Stack.d.ts.map +1 -0
  252. package/dist/stack/Stack.js +21 -0
  253. package/dist/stack/Stack.js.map +1 -0
  254. package/dist/stack/Stack.module.js +8 -0
  255. package/dist/stack/Stack.module.js.map +1 -0
  256. package/dist/stack/tokens.d.ts +3 -0
  257. package/dist/stack/tokens.d.ts.map +1 -0
  258. package/dist/stack/tokens.js +10 -0
  259. package/dist/stack/tokens.js.map +1 -0
  260. package/dist/switch/Switch.css +34 -25
  261. package/dist/switch/Switch.d.ts.map +1 -1
  262. package/dist/switch/Switch.js +1 -0
  263. package/dist/switch/Switch.js.map +1 -1
  264. package/dist/switch/Switch.module.js +4 -4
  265. package/dist/switch/Switch.module.js.map +1 -1
  266. package/dist/switch/tokens.d.ts +3 -0
  267. package/dist/switch/tokens.d.ts.map +1 -0
  268. package/dist/switch/tokens.js +25 -0
  269. package/dist/switch/tokens.js.map +1 -0
  270. package/dist/tabs/Tabs.css +24 -23
  271. package/dist/tabs/Tabs.js +4 -4
  272. package/dist/tabs/Tabs.js.map +1 -1
  273. package/dist/tabs/Tabs.module.js +4 -4
  274. package/dist/tabs/Tabs.module.js.map +1 -1
  275. package/dist/tabs/tokens.d.ts +3 -0
  276. package/dist/tabs/tokens.d.ts.map +1 -0
  277. package/dist/tabs/tokens.js +25 -0
  278. package/dist/tabs/tokens.js.map +1 -0
  279. package/dist/text/Text.css +74 -0
  280. package/dist/text/Text.d.ts +27 -0
  281. package/dist/text/Text.d.ts.map +1 -0
  282. package/dist/text/Text.js +16 -0
  283. package/dist/text/Text.js.map +1 -0
  284. package/dist/text/Text.module.js +30 -0
  285. package/dist/text/Text.module.js.map +1 -0
  286. package/dist/text/tokens.d.ts +3 -0
  287. package/dist/text/tokens.d.ts.map +1 -0
  288. package/dist/text/tokens.js +10 -0
  289. package/dist/text/tokens.js.map +1 -0
  290. package/dist/text-area/TextArea.css +1 -1
  291. package/dist/text-area/TextArea.js +1 -1
  292. package/dist/text-area/TextArea.js.map +1 -1
  293. package/dist/text-area/TextArea.module.js +1 -1
  294. package/dist/text-input/TextInput.js +1 -1
  295. package/dist/text-input/TextInput.js.map +1 -1
  296. package/dist/theme/Tone.css +70 -0
  297. package/dist/theme/Tone.module.js +20 -0
  298. package/dist/theme/Tone.module.js.map +1 -0
  299. package/dist/theme/bootstrap.d.ts +10 -0
  300. package/dist/theme/bootstrap.d.ts.map +1 -1
  301. package/dist/theme/bootstrap.js +48 -5
  302. package/dist/theme/bootstrap.js.map +1 -1
  303. package/dist/theme/chartColors.d.ts +23 -0
  304. package/dist/theme/chartColors.d.ts.map +1 -0
  305. package/dist/theme/chartColors.js +27 -0
  306. package/dist/theme/chartColors.js.map +1 -0
  307. package/dist/theme/checkTheme.d.ts +39 -0
  308. package/dist/theme/checkTheme.d.ts.map +1 -0
  309. package/dist/theme/checkTheme.js +132 -0
  310. package/dist/theme/checkTheme.js.map +1 -0
  311. package/dist/theme/cli.d.ts +14 -0
  312. package/dist/theme/cli.d.ts.map +1 -0
  313. package/dist/theme/cli.js +61 -0
  314. package/dist/theme/cli.js.map +1 -0
  315. package/dist/theme/color.d.ts +30 -0
  316. package/dist/theme/color.d.ts.map +1 -0
  317. package/dist/theme/color.js +94 -0
  318. package/dist/theme/color.js.map +1 -0
  319. package/dist/theme/colorVision.d.ts +23 -0
  320. package/dist/theme/colorVision.d.ts.map +1 -0
  321. package/dist/theme/colorVision.js +140 -0
  322. package/dist/theme/colorVision.js.map +1 -0
  323. package/dist/theme/componentTokens.d.ts +24 -0
  324. package/dist/theme/componentTokens.d.ts.map +1 -0
  325. package/dist/theme/componentTokens.js +20 -0
  326. package/dist/theme/componentTokens.js.map +1 -0
  327. package/dist/theme/components.d.ts +38 -0
  328. package/dist/theme/components.d.ts.map +1 -0
  329. package/dist/theme/components.js +65 -0
  330. package/dist/theme/components.js.map +1 -0
  331. package/dist/theme/defineTheme.d.ts +85 -0
  332. package/dist/theme/defineTheme.d.ts.map +1 -0
  333. package/dist/theme/defineTheme.js +130 -0
  334. package/dist/theme/defineTheme.js.map +1 -0
  335. package/dist/theme/fonts.d.ts +32 -0
  336. package/dist/theme/fonts.d.ts.map +1 -0
  337. package/dist/theme/fonts.js +36 -0
  338. package/dist/theme/fonts.js.map +1 -0
  339. package/dist/theme/index.d.ts +13 -0
  340. package/dist/theme/index.d.ts.map +1 -0
  341. package/dist/theme/index.js +10 -0
  342. package/dist/theme/semanticTokens.d.ts +9 -0
  343. package/dist/theme/semanticTokens.d.ts.map +1 -0
  344. package/dist/theme/semanticTokens.js +110 -0
  345. package/dist/theme/semanticTokens.js.map +1 -0
  346. package/dist/theme/theme.d.ts +61 -7
  347. package/dist/theme/theme.d.ts.map +1 -1
  348. package/dist/theme/theme.js +100 -10
  349. package/dist/theme/theme.js.map +1 -1
  350. package/dist/theme/toneClass.d.ts +8 -0
  351. package/dist/theme/toneClass.d.ts.map +1 -0
  352. package/dist/theme/toneClass.js +15 -0
  353. package/dist/theme/toneClass.js.map +1 -0
  354. package/dist/theme/tones.d.ts +89 -0
  355. package/dist/theme/tones.d.ts.map +1 -0
  356. package/dist/theme/tones.js +127 -0
  357. package/dist/theme/tones.js.map +1 -0
  358. package/dist/time-input/TimeInput.js +1 -1
  359. package/dist/time-input/TimeInput.js.map +1 -1
  360. package/dist/toast/Toast.css +22 -44
  361. package/dist/toast/Toast.d.ts +5 -3
  362. package/dist/toast/Toast.d.ts.map +1 -1
  363. package/dist/toast/Toast.js +4 -3
  364. package/dist/toast/Toast.js.map +1 -1
  365. package/dist/toast/Toast.module.js +10 -16
  366. package/dist/toast/Toast.module.js.map +1 -1
  367. package/dist/toast/tokens.d.ts +3 -0
  368. package/dist/toast/tokens.d.ts.map +1 -0
  369. package/dist/toast/tokens.js +21 -0
  370. package/dist/toast/tokens.js.map +1 -0
  371. package/dist/tooltip/Tooltip.css +12 -11
  372. package/dist/tooltip/Tooltip.js +1 -1
  373. package/dist/tooltip/Tooltip.js.map +1 -1
  374. package/dist/tooltip/Tooltip.module.js +2 -2
  375. package/dist/tooltip/Tooltip.module.js.map +1 -1
  376. package/dist/tooltip/tokens.d.ts +3 -0
  377. package/dist/tooltip/tokens.d.ts.map +1 -0
  378. package/dist/tooltip/tokens.js +21 -0
  379. package/dist/tooltip/tokens.js.map +1 -0
  380. package/dist/utils/cx.d.ts +1 -1
  381. package/dist/utils/cx.d.ts.map +1 -1
  382. package/dist/utils/cx.js +2 -2
  383. package/dist/utils/cx.js.map +1 -1
  384. package/package.json +15 -3
@@ -1,83 +1,84 @@
1
- .panneau-tabs-JqDxcK {
1
+ .panneau-tabs {
2
2
  display: flex;
3
3
  flex-direction: column;
4
- gap: var(--panneau-space-4);
4
+ gap: var(--panneau-tabs-gap, var(--panneau-space-4));
5
5
  min-width: 0;
6
6
  }
7
7
 
8
- .panneau-list-uiIzNm {
8
+ .panneau-tabs-list {
9
9
  display: flex;
10
10
  gap: var(--panneau-space-1);
11
11
  overflow-x: auto;
12
- border-bottom: var(--panneau-border-width) solid var(--panneau-color-border);
12
+ border-bottom: var(--panneau-border-width) solid
13
+ var(--panneau-tabs-border-color, var(--panneau-color-border));
13
14
  scrollbar-width: none;
14
15
  }
15
16
 
16
- .panneau-list-uiIzNm::-webkit-scrollbar {
17
+ .panneau-tabs-list::-webkit-scrollbar {
17
18
  display: none;
18
19
  }
19
20
 
20
- .panneau-tab-dwPfFm {
21
+ .panneau-tabs-tab {
21
22
  position: relative;
22
23
  display: inline-flex;
23
24
  flex: 0 0 auto;
24
25
  align-items: center;
25
26
  gap: var(--panneau-space-2);
26
27
  min-height: var(--panneau-control-height);
27
- padding: 0 var(--panneau-space-3);
28
+ padding: 0 var(--panneau-tabs-tab-padding-x, var(--panneau-space-3));
28
29
  font-size: var(--panneau-font-size-md);
29
- font-weight: var(--panneau-font-weight-medium);
30
- color: var(--panneau-color-text-muted);
30
+ font-weight: var(--panneau-tabs-tab-font-weight, var(--panneau-font-weight-medium));
31
+ color: var(--panneau-tabs-tab-color, var(--panneau-color-text-muted));
31
32
  white-space: nowrap;
32
33
  cursor: pointer;
33
34
  outline: none;
34
35
  -webkit-tap-highlight-color: transparent;
35
36
  }
36
37
 
37
- .panneau-tab-dwPfFm::after {
38
+ .panneau-tabs-tab::after {
38
39
  position: absolute;
39
40
  inset-inline: var(--panneau-space-2);
40
41
  bottom: calc(-1 * var(--panneau-border-width));
41
- height: 2px;
42
+ height: var(--panneau-tabs-indicator-height, 2px);
42
43
  content: '';
43
44
  background-color: transparent;
44
45
  border-radius: 2px 2px 0 0;
45
46
  }
46
47
 
47
- .panneau-tab-dwPfFm[data-hovered] {
48
- color: var(--panneau-color-text);
48
+ .panneau-tabs-tab[data-hovered] {
49
+ color: var(--panneau-tabs-tab-color-selected, var(--panneau-color-text));
49
50
  }
50
51
 
51
- .panneau-tab-dwPfFm[data-selected] {
52
- color: var(--panneau-color-text);
52
+ .panneau-tabs-tab[data-selected] {
53
+ color: var(--panneau-tabs-tab-color-selected, var(--panneau-color-text));
53
54
  }
54
55
 
55
- .panneau-tab-dwPfFm[data-selected]::after {
56
- background-color: var(--panneau-color-accent);
56
+ .panneau-tabs-tab[data-selected]::after {
57
+ background-color: var(--panneau-tabs-indicator-color, var(--panneau-color-accent));
57
58
  }
58
59
 
59
- .panneau-tab-dwPfFm[data-disabled] {
60
+ .panneau-tabs-tab[data-disabled] {
60
61
  cursor: not-allowed;
61
62
  opacity: 0.5;
62
63
  }
63
64
 
64
- .panneau-tab-dwPfFm[data-focus-visible] {
65
+ .panneau-tabs-tab[data-focus-visible] {
65
66
  outline: var(--panneau-focus-width) solid var(--panneau-color-focus);
66
67
  outline-offset: -2px;
67
68
  border-radius: var(--panneau-radius-sm);
68
69
  }
69
70
 
70
- .panneau-panel-H3uAcq {
71
+ .panneau-tabs-panel {
71
72
  min-width: 0;
72
73
  outline: none;
73
74
  }
74
75
 
75
- .panneau-panel-H3uAcq[data-focus-visible] {
76
+ .panneau-tabs-panel[data-focus-visible] {
76
77
  outline: var(--panneau-focus-width) solid var(--panneau-color-focus);
77
78
  outline-offset: 2px;
78
79
  }
79
80
 
80
- .panneau-panel-H3uAcq[data-inert],
81
- .panneau-panel-H3uAcq[inert] {
81
+ .panneau-tabs-panel[data-inert],
82
+ .panneau-tabs-panel[inert] {
82
83
  display: none;
83
84
  }
package/dist/tabs/Tabs.js CHANGED
@@ -20,7 +20,7 @@ function Tabs$1(t0) {
20
20
  }
21
21
  let t1;
22
22
  if ($[3] !== className) {
23
- t1 = cx(Tabs_module_default.tabs, className);
23
+ t1 = cx("panneau-tabs", Tabs_module_default.tabs, className);
24
24
  $[3] = className;
25
25
  $[4] = t1;
26
26
  } else t1 = $[4];
@@ -52,7 +52,7 @@ function TabList$1(t0) {
52
52
  }
53
53
  let t1;
54
54
  if ($[3] !== className) {
55
- t1 = cx(Tabs_module_default.list, className);
55
+ t1 = cx("panneau-tab-list", Tabs_module_default.list, className);
56
56
  $[3] = className;
57
57
  $[4] = t1;
58
58
  } else t1 = $[4];
@@ -84,7 +84,7 @@ function Tab$1(t0) {
84
84
  }
85
85
  let t1;
86
86
  if ($[3] !== className) {
87
- t1 = cx(Tabs_module_default.tab, className);
87
+ t1 = cx("panneau-tab", Tabs_module_default.tab, className);
88
88
  $[3] = className;
89
89
  $[4] = t1;
90
90
  } else t1 = $[4];
@@ -119,7 +119,7 @@ function TabPanel$1(t0) {
119
119
  }
120
120
  let t1;
121
121
  if ($[3] !== className) {
122
- t1 = cx(Tabs_module_default.panel, className);
122
+ t1 = cx("panneau-tab-panel", Tabs_module_default.panel, className);
123
123
  $[3] = className;
124
124
  $[4] = t1;
125
125
  } else t1 = $[4];
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","names":["Tabs","_c","styles","AriaTabs","TabList","AriaTabList","Tab","AriaTab","TabPanel","AriaTabPanel"],"sources":["../../src/tabs/Tabs.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport {\n Tab as AriaTab,\n TabList as AriaTabList,\n type TabListProps as AriaTabListProps,\n TabPanel as AriaTabPanel,\n type TabPanelProps as AriaTabPanelProps,\n type TabProps as AriaTabProps,\n Tabs as AriaTabs,\n type TabsProps as AriaTabsProps,\n} from 'react-aria-components';\n\nimport { cx } from '../utils/cx';\nimport styles from './Tabs.module.css';\n\nexport interface TabsProps extends Omit<AriaTabsProps, 'className' | 'style'> {\n className?: string;\n}\n\n/** Tabs: a `TabList` of `Tab`s, then a `TabPanel` per tab, matched by `id`. */\nexport function Tabs({ className, ...props }: TabsProps) {\n return <AriaTabs {...props} className={cx(styles.tabs, className)} />;\n}\n\nexport interface TabListProps<T extends object> extends Omit<\n AriaTabListProps<T>,\n 'className' | 'style'\n> {\n className?: string;\n}\n\n/** The row of tabs. It scrolls sideways when the tabs don't fit, on phones. */\nexport function TabList<T extends object>({ className, ...props }: TabListProps<T>) {\n return <AriaTabList {...props} className={cx(styles.list, className)} />;\n}\n\nexport interface TabProps extends Omit<AriaTabProps, 'className' | 'style' | 'children'> {\n children?: ReactNode;\n className?: string;\n}\n\n/** A tab. Put a `Badge` in it for a count, such as the errors of the panel. */\nexport function Tab({ className, ...props }: TabProps) {\n return <AriaTab {...props} className={cx(styles.tab, className)} />;\n}\n\nexport interface TabPanelProps extends Omit<AriaTabPanelProps, 'className' | 'style'> {\n className?: string;\n}\n\n/**\n * The content of a tab. With `shouldForceMount`, the panel stays mounted (and hidden) when another\n * tab is selected, which keeps the state of its fields.\n */\nexport function TabPanel({ className, ...props }: TabPanelProps) {\n return <AriaTabPanel {...props} className={cx(styles.panel, className)} />;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Tabs.js","names":["Tabs","_c","styles","AriaTabs","TabList","AriaTabList","Tab","AriaTab","TabPanel","AriaTabPanel"],"sources":["../../src/tabs/Tabs.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport {\n Tab as AriaTab,\n TabList as AriaTabList,\n type TabListProps as AriaTabListProps,\n TabPanel as AriaTabPanel,\n type TabPanelProps as AriaTabPanelProps,\n type TabProps as AriaTabProps,\n Tabs as AriaTabs,\n type TabsProps as AriaTabsProps,\n} from 'react-aria-components';\n\nimport { cx } from '../utils/cx';\nimport styles from './Tabs.module.css';\n\nexport interface TabsProps extends Omit<AriaTabsProps, 'className' | 'style'> {\n className?: string;\n}\n\n/** Tabs: a `TabList` of `Tab`s, then a `TabPanel` per tab, matched by `id`. */\nexport function Tabs({ className, ...props }: TabsProps) {\n return <AriaTabs {...props} className={cx('panneau-tabs', styles.tabs, className)} />;\n}\n\nexport interface TabListProps<T extends object> extends Omit<\n AriaTabListProps<T>,\n 'className' | 'style'\n> {\n className?: string;\n}\n\n/** The row of tabs. It scrolls sideways when the tabs don't fit, on phones. */\nexport function TabList<T extends object>({ className, ...props }: TabListProps<T>) {\n return <AriaTabList {...props} className={cx('panneau-tab-list', styles.list, className)} />;\n}\n\nexport interface TabProps extends Omit<AriaTabProps, 'className' | 'style' | 'children'> {\n children?: ReactNode;\n className?: string;\n}\n\n/** A tab. Put a `Badge` in it for a count, such as the errors of the panel. */\nexport function Tab({ className, ...props }: TabProps) {\n return <AriaTab {...props} className={cx('panneau-tab', styles.tab, className)} />;\n}\n\nexport interface TabPanelProps extends Omit<AriaTabPanelProps, 'className' | 'style'> {\n className?: string;\n}\n\n/**\n * The content of a tab. With `shouldForceMount`, the panel stays mounted (and hidden) when another\n * tab is selected, which keeps the state of its fields.\n */\nexport function TabPanel({ className, ...props }: TabPanelProps) {\n return <AriaTabPanel {...props} className={cx('panneau-tab-panel', styles.panel, className)} />;\n}\n"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import "./Tabs.css";
2
2
  //#region src/tabs/Tabs.module.css
3
- var tabs = "panneau-tabs-JqDxcK";
4
- var list = "panneau-list-uiIzNm";
5
- var tab = "panneau-tab-dwPfFm";
6
- var panel = "panneau-panel-H3uAcq";
3
+ var tabs = "panneau-tabs";
4
+ var list = "panneau-tabs-list";
5
+ var tab = "panneau-tabs-tab";
6
+ var panel = "panneau-tabs-panel";
7
7
  var Tabs_module_default = {
8
8
  tabs,
9
9
  list,
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.module.js","names":[],"sources":["../../src/tabs/Tabs.module.css"],"sourcesContent":[".tabs {\n display: flex;\n flex-direction: column;\n gap: var(--panneau-space-4);\n min-width: 0;\n}\n\n.list {\n display: flex;\n gap: var(--panneau-space-1);\n overflow-x: auto;\n border-bottom: var(--panneau-border-width) solid var(--panneau-color-border);\n scrollbar-width: none;\n}\n\n.list::-webkit-scrollbar {\n display: none;\n}\n\n.tab {\n position: relative;\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n gap: var(--panneau-space-2);\n min-height: var(--panneau-control-height);\n padding: 0 var(--panneau-space-3);\n font-size: var(--panneau-font-size-md);\n font-weight: var(--panneau-font-weight-medium);\n color: var(--panneau-color-text-muted);\n white-space: nowrap;\n cursor: pointer;\n outline: none;\n -webkit-tap-highlight-color: transparent;\n}\n\n.tab::after {\n position: absolute;\n inset-inline: var(--panneau-space-2);\n bottom: calc(-1 * var(--panneau-border-width));\n height: 2px;\n content: '';\n background-color: transparent;\n border-radius: 2px 2px 0 0;\n}\n\n.tab[data-hovered] {\n color: var(--panneau-color-text);\n}\n\n.tab[data-selected] {\n color: var(--panneau-color-text);\n}\n\n.tab[data-selected]::after {\n background-color: var(--panneau-color-accent);\n}\n\n.tab[data-disabled] {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.tab[data-focus-visible] {\n outline: var(--panneau-focus-width) solid var(--panneau-color-focus);\n outline-offset: -2px;\n border-radius: var(--panneau-radius-sm);\n}\n\n.panel {\n min-width: 0;\n outline: none;\n}\n\n.panel[data-focus-visible] {\n outline: var(--panneau-focus-width) solid var(--panneau-color-focus);\n outline-offset: 2px;\n}\n\n.panel[data-inert],\n.panel[inert] {\n display: none;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Tabs.module.js","names":[],"sources":["../../src/tabs/Tabs.module.css"],"sourcesContent":[".tabs {\n display: flex;\n flex-direction: column;\n gap: var(--panneau-tabs-gap, var(--panneau-space-4));\n min-width: 0;\n}\n\n.list {\n display: flex;\n gap: var(--panneau-space-1);\n overflow-x: auto;\n border-bottom: var(--panneau-border-width) solid\n var(--panneau-tabs-border-color, var(--panneau-color-border));\n scrollbar-width: none;\n}\n\n.list::-webkit-scrollbar {\n display: none;\n}\n\n.tab {\n position: relative;\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n gap: var(--panneau-space-2);\n min-height: var(--panneau-control-height);\n padding: 0 var(--panneau-tabs-tab-padding-x, var(--panneau-space-3));\n font-size: var(--panneau-font-size-md);\n font-weight: var(--panneau-tabs-tab-font-weight, var(--panneau-font-weight-medium));\n color: var(--panneau-tabs-tab-color, var(--panneau-color-text-muted));\n white-space: nowrap;\n cursor: pointer;\n outline: none;\n -webkit-tap-highlight-color: transparent;\n}\n\n.tab::after {\n position: absolute;\n inset-inline: var(--panneau-space-2);\n bottom: calc(-1 * var(--panneau-border-width));\n height: var(--panneau-tabs-indicator-height, 2px);\n content: '';\n background-color: transparent;\n border-radius: 2px 2px 0 0;\n}\n\n.tab[data-hovered] {\n color: var(--panneau-tabs-tab-color-selected, var(--panneau-color-text));\n}\n\n.tab[data-selected] {\n color: var(--panneau-tabs-tab-color-selected, var(--panneau-color-text));\n}\n\n.tab[data-selected]::after {\n background-color: var(--panneau-tabs-indicator-color, var(--panneau-color-accent));\n}\n\n.tab[data-disabled] {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.tab[data-focus-visible] {\n outline: var(--panneau-focus-width) solid var(--panneau-color-focus);\n outline-offset: -2px;\n border-radius: var(--panneau-radius-sm);\n}\n\n.panel {\n min-width: 0;\n outline: none;\n}\n\n.panel[data-focus-visible] {\n outline: var(--panneau-focus-width) solid var(--panneau-color-focus);\n outline-offset: 2px;\n}\n\n.panel[data-inert],\n.panel[inert] {\n display: none;\n}\n"],"mappings":""}
@@ -0,0 +1,3 @@
1
+ /** Tokens of Tabs. */
2
+ export declare const tabsTokens: import("..").ComponentTokens<"tabs", "panneau-tabs-gap" | "panneau-tabs-border-color" | "panneau-tabs-tab-padding-x" | "panneau-tabs-tab-font-weight" | "panneau-tabs-tab-color" | "panneau-tabs-indicator-height" | "panneau-tabs-tab-color-selected" | "panneau-tabs-indicator-color">;
3
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/tabs/tokens.ts"],"names":[],"mappings":"AAEA,sBAAsB;AACtB,eAAO,MAAM,UAAU,0RAiBrB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { defineComponentTokens } from "../theme/componentTokens.js";
2
+ //#region src/tabs/tokens.ts
3
+ /** Tokens of Tabs. */
4
+ var tabsTokens = defineComponentTokens("tabs", {
5
+ /** Space between the tab list and the panel. */
6
+ gap: "var(--panneau-space-4)",
7
+ /** Color of the line under the tab list. */
8
+ "border-color": "var(--panneau-color-border)",
9
+ /** Horizontal padding of a tab. */
10
+ "tab-padding-x": "var(--panneau-space-3)",
11
+ /** Font weight of a tab. */
12
+ "tab-font-weight": "var(--panneau-font-weight-medium)",
13
+ /** Text color of a tab. */
14
+ "tab-color": "var(--panneau-color-text-muted)",
15
+ /** Height of the indicator under the selected tab. */
16
+ "indicator-height": "2px",
17
+ /** Text color of a hovered or selected tab. */
18
+ "tab-color-selected": "var(--panneau-color-text)",
19
+ /** Color of the indicator under the selected tab. */
20
+ "indicator-color": "var(--panneau-color-accent)"
21
+ });
22
+ //#endregion
23
+ export { tabsTokens };
24
+
25
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","names":[],"sources":["../../src/tabs/tokens.ts"],"sourcesContent":["import { defineComponentTokens } from '../theme/componentTokens';\n\n/** Tokens of Tabs. */\nexport const tabsTokens = defineComponentTokens('tabs', {\n /** Space between the tab list and the panel. */\n gap: 'var(--panneau-space-4)',\n /** Color of the line under the tab list. */\n 'border-color': 'var(--panneau-color-border)',\n /** Horizontal padding of a tab. */\n 'tab-padding-x': 'var(--panneau-space-3)',\n /** Font weight of a tab. */\n 'tab-font-weight': 'var(--panneau-font-weight-medium)',\n /** Text color of a tab. */\n 'tab-color': 'var(--panneau-color-text-muted)',\n /** Height of the indicator under the selected tab. */\n 'indicator-height': '2px',\n /** Text color of a hovered or selected tab. */\n 'tab-color-selected': 'var(--panneau-color-text)',\n /** Color of the indicator under the selected tab. */\n 'indicator-color': 'var(--panneau-color-accent)',\n});\n"],"mappings":";;;AAGA,IAAa,aAAa,sBAAsB,QAAQ;;CAEpD,KAAK;;CAEL,gBAAgB;;CAEhB,iBAAiB;;CAEjB,mBAAmB;;CAEnB,aAAa;;CAEb,oBAAoB;;CAEpB,sBAAsB;;CAEtB,mBAAmB;AACvB,CAAC"}
@@ -0,0 +1,74 @@
1
+ /* Text: sizes, weights and families of the theme, as modifiers. */
2
+
3
+ .panneau-text {
4
+ margin: 0;
5
+ }
6
+
7
+ .panneau-text-size-xs {
8
+ font-size: var(--panneau-font-size-xs);
9
+ }
10
+
11
+ .panneau-text-size-sm {
12
+ font-size: var(--panneau-font-size-sm);
13
+ }
14
+
15
+ .panneau-text-size-md {
16
+ font-size: var(--panneau-font-size-md);
17
+ }
18
+
19
+ .panneau-text-size-lg {
20
+ font-size: var(--panneau-font-size-lg);
21
+ }
22
+
23
+ .panneau-text-size-xl {
24
+ font-size: var(--panneau-font-size-xl);
25
+ }
26
+
27
+ .panneau-text-weight-normal {
28
+ font-weight: var(--panneau-font-weight-normal);
29
+ }
30
+
31
+ .panneau-text-weight-medium {
32
+ font-weight: var(--panneau-font-weight-medium);
33
+ }
34
+
35
+ .panneau-text-weight-bold {
36
+ font-weight: var(--panneau-font-weight-bold);
37
+ }
38
+
39
+ .panneau-text-family-body {
40
+ font-family: var(--panneau-font-family-body);
41
+ }
42
+
43
+ .panneau-text-family-heading {
44
+ font-family: var(--panneau-font-family-heading);
45
+ }
46
+
47
+ .panneau-text-family-display {
48
+ font-family: var(--panneau-font-family-display);
49
+ }
50
+
51
+ .panneau-text-family-mono {
52
+ font-family: var(--panneau-font-family-mono);
53
+ }
54
+
55
+ .panneau-text-muted {
56
+ color: var(--panneau-text-muted-color, var(--panneau-color-text-muted));
57
+ }
58
+
59
+ /* A tone colors the text with the tone's text color, readable on surfaces. */
60
+ .panneau-text-toned {
61
+ color: var(--panneau-tone-text);
62
+ }
63
+
64
+ .panneau-text-numeric {
65
+ font-variant-numeric: var(--panneau-font-numeric);
66
+ }
67
+
68
+ /* One line, cut with an ellipsis: the element needs a constrained width (a block, a flex item). */
69
+ .panneau-text-truncate {
70
+ overflow: hidden;
71
+ min-width: 0;
72
+ text-overflow: ellipsis;
73
+ white-space: nowrap;
74
+ }
@@ -0,0 +1,27 @@
1
+ import type { HTMLAttributes } from 'react';
2
+ import type { Tone } from '../theme/tones';
3
+ /** A size of the font scale of the theme. */
4
+ export type TextSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
5
+ /** A font role of the theme. */
6
+ export type TextFamily = 'body' | 'heading' | 'display' | 'mono';
7
+ export interface TextProps extends HTMLAttributes<HTMLElement> {
8
+ /** Element to render. Defaults to `p`. */
9
+ as?: 'p' | 'span' | 'div' | 'small' | 'strong' | 'em';
10
+ /** Font size, from the scale of the theme. Inherited by default. */
11
+ size?: TextSize;
12
+ /** Inherited by default. */
13
+ weight?: 'normal' | 'medium' | 'bold';
14
+ /** Font role. Inherited by default. */
15
+ family?: TextFamily;
16
+ /** Colors the text with a tone (`success`, `danger`…), readable on surfaces. */
17
+ tone?: Tone;
18
+ /** The muted text color, for secondary information. */
19
+ muted?: boolean;
20
+ /** Digits of equal width, so that numbers line up: stats, dates, ids. */
21
+ numeric?: boolean;
22
+ /** Keeps the text on one line, cut with an ellipsis. */
23
+ truncate?: boolean;
24
+ }
25
+ /** Text in the sizes, weights and font roles of the theme. */
26
+ export declare function Text({ as: Element, size, weight, family, tone, muted, numeric, truncate, className, ...props }: TextProps): import("react").JSX.Element;
27
+ //# sourceMappingURL=Text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../src/text/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAI3C,6CAA6C;AAC7C,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAExD,gCAAgC;AAChC,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAEjE,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,WAAW,CAAC;IAC1D,0CAA0C;IAC1C,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;IACtD,oEAAoE;IACpE,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,uCAAuC;IACvC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,gFAAgF;IAChF,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,uDAAuD;IACvD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,8DAA8D;AAC9D,wBAAgB,IAAI,CAAC,EACjB,EAAE,EAAE,OAAa,EACjB,IAAI,EACJ,MAAM,EACN,MAAM,EACN,IAAI,EACJ,KAAa,EACb,OAAe,EACf,QAAgB,EAChB,SAAS,EACT,GAAG,KAAK,EACX,EAAE,SAAS,+BAmBX"}
@@ -0,0 +1,16 @@
1
+ import { cx } from "../utils/cx.js";
2
+ import { toneClass } from "../theme/toneClass.js";
3
+ import Text_module_default from "./Text.module.js";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/text/Text.tsx
6
+ /** Text in the sizes, weights and font roles of the theme. */
7
+ function Text({ as: Element = "p", size, weight, family, tone, muted = false, numeric = false, truncate = false, className, ...props }) {
8
+ return /* @__PURE__ */ jsx(Element, {
9
+ ...props,
10
+ className: cx("panneau-text", Text_module_default.text, size !== void 0 && Text_module_default[`size-${size}`], weight !== void 0 && Text_module_default[`weight-${weight}`], family !== void 0 && Text_module_default[`family-${family}`], tone !== void 0 && toneClass(tone), tone !== void 0 && Text_module_default.toned, muted && Text_module_default.muted, numeric && Text_module_default.numeric, truncate && Text_module_default.truncate, className)
11
+ });
12
+ }
13
+ //#endregion
14
+ export { Text };
15
+
16
+ //# sourceMappingURL=Text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Text.js","names":["styles"],"sources":["../../src/text/Text.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\n\nimport { toneClass } from '../theme/toneClass';\nimport type { Tone } from '../theme/tones';\nimport { cx } from '../utils/cx';\nimport styles from './Text.module.css';\n\n/** A size of the font scale of the theme. */\nexport type TextSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/** A font role of the theme. */\nexport type TextFamily = 'body' | 'heading' | 'display' | 'mono';\n\nexport interface TextProps extends HTMLAttributes<HTMLElement> {\n /** Element to render. Defaults to `p`. */\n as?: 'p' | 'span' | 'div' | 'small' | 'strong' | 'em';\n /** Font size, from the scale of the theme. Inherited by default. */\n size?: TextSize;\n /** Inherited by default. */\n weight?: 'normal' | 'medium' | 'bold';\n /** Font role. Inherited by default. */\n family?: TextFamily;\n /** Colors the text with a tone (`success`, `danger`…), readable on surfaces. */\n tone?: Tone;\n /** The muted text color, for secondary information. */\n muted?: boolean;\n /** Digits of equal width, so that numbers line up: stats, dates, ids. */\n numeric?: boolean;\n /** Keeps the text on one line, cut with an ellipsis. */\n truncate?: boolean;\n}\n\n/** Text in the sizes, weights and font roles of the theme. */\nexport function Text({\n as: Element = 'p',\n size,\n weight,\n family,\n tone,\n muted = false,\n numeric = false,\n truncate = false,\n className,\n ...props\n}: TextProps) {\n return (\n <Element\n {...props}\n className={cx(\n 'panneau-text',\n styles.text,\n size !== undefined && styles[`size-${size}`],\n weight !== undefined && styles[`weight-${weight}`],\n family !== undefined && styles[`family-${family}`],\n tone !== undefined && toneClass(tone),\n tone !== undefined && styles.toned,\n muted && styles.muted,\n numeric && styles.numeric,\n truncate && styles.truncate,\n className,\n )}\n />\n );\n}\n"],"mappings":";;;;;;AAiCA,SAAgB,KAAK,EACjB,IAAI,UAAU,KACd,MACA,QACA,QACA,MACA,QAAQ,OACR,UAAU,OACV,WAAW,OACX,WACA,GAAG,SACO;CACV,OACI,oBAAC,SAAD;EACI,GAAI;EACJ,WAAW,GACP,gBACAA,oBAAO,MACP,SAAS,KAAA,KAAaA,oBAAO,QAAQ,SACrC,WAAW,KAAA,KAAaA,oBAAO,UAAU,WACzC,WAAW,KAAA,KAAaA,oBAAO,UAAU,WACzC,SAAS,KAAA,KAAa,UAAU,IAAI,GACpC,SAAS,KAAA,KAAaA,oBAAO,OAC7B,SAASA,oBAAO,OAChB,WAAWA,oBAAO,SAClB,YAAYA,oBAAO,UACnB,SACJ;CAAE,CAAA;AAGd"}
@@ -0,0 +1,30 @@
1
+ import "./Text.css";
2
+ //#region src/text/Text.module.css
3
+ var text = "panneau-text";
4
+ var muted = "panneau-text-muted";
5
+ var toned = "panneau-text-toned";
6
+ var numeric = "panneau-text-numeric";
7
+ var truncate = "panneau-text-truncate";
8
+ var Text_module_default = {
9
+ text,
10
+ "size-xs": "panneau-text-size-xs",
11
+ "size-sm": "panneau-text-size-sm",
12
+ "size-md": "panneau-text-size-md",
13
+ "size-lg": "panneau-text-size-lg",
14
+ "size-xl": "panneau-text-size-xl",
15
+ "weight-normal": "panneau-text-weight-normal",
16
+ "weight-medium": "panneau-text-weight-medium",
17
+ "weight-bold": "panneau-text-weight-bold",
18
+ "family-body": "panneau-text-family-body",
19
+ "family-heading": "panneau-text-family-heading",
20
+ "family-display": "panneau-text-family-display",
21
+ "family-mono": "panneau-text-family-mono",
22
+ muted,
23
+ toned,
24
+ numeric,
25
+ truncate
26
+ };
27
+ //#endregion
28
+ export { Text_module_default as default, muted, numeric, text, toned, truncate };
29
+
30
+ //# sourceMappingURL=Text.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Text.module.js","names":[],"sources":["../../src/text/Text.module.css"],"sourcesContent":["/* Text: sizes, weights and families of the theme, as modifiers. */\n\n.text {\n margin: 0;\n}\n\n.size-xs {\n font-size: var(--panneau-font-size-xs);\n}\n\n.size-sm {\n font-size: var(--panneau-font-size-sm);\n}\n\n.size-md {\n font-size: var(--panneau-font-size-md);\n}\n\n.size-lg {\n font-size: var(--panneau-font-size-lg);\n}\n\n.size-xl {\n font-size: var(--panneau-font-size-xl);\n}\n\n.weight-normal {\n font-weight: var(--panneau-font-weight-normal);\n}\n\n.weight-medium {\n font-weight: var(--panneau-font-weight-medium);\n}\n\n.weight-bold {\n font-weight: var(--panneau-font-weight-bold);\n}\n\n.family-body {\n font-family: var(--panneau-font-family-body);\n}\n\n.family-heading {\n font-family: var(--panneau-font-family-heading);\n}\n\n.family-display {\n font-family: var(--panneau-font-family-display);\n}\n\n.family-mono {\n font-family: var(--panneau-font-family-mono);\n}\n\n.muted {\n color: var(--panneau-text-muted-color, var(--panneau-color-text-muted));\n}\n\n/* A tone colors the text with the tone's text color, readable on surfaces. */\n.toned {\n color: var(--panneau-tone-text);\n}\n\n.numeric {\n font-variant-numeric: var(--panneau-font-numeric);\n}\n\n/* One line, cut with an ellipsis: the element needs a constrained width (a block, a flex item). */\n.truncate {\n overflow: hidden;\n min-width: 0;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n"],"mappings":""}
@@ -0,0 +1,3 @@
1
+ /** Tokens of Text. */
2
+ export declare const textTokens: import("..").ComponentTokens<"text", "panneau-text-muted-color">;
3
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/text/tokens.ts"],"names":[],"mappings":"AAEA,sBAAsB;AACtB,eAAO,MAAM,UAAU,kEAGrB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { defineComponentTokens } from "../theme/componentTokens.js";
2
+ //#region src/text/tokens.ts
3
+ /** Tokens of Text. */
4
+ var textTokens = defineComponentTokens("text", {
5
+ /** Color of muted text. */
6
+ "muted-color": "var(--panneau-color-text-muted)" });
7
+ //#endregion
8
+ export { textTokens };
9
+
10
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","names":[],"sources":["../../src/text/tokens.ts"],"sourcesContent":["import { defineComponentTokens } from '../theme/componentTokens';\n\n/** Tokens of Text. */\nexport const textTokens = defineComponentTokens('text', {\n /** Color of muted text. */\n 'muted-color': 'var(--panneau-color-text-muted)',\n});\n"],"mappings":";;;AAGA,IAAa,aAAa,sBAAsB,QAAQ;;AAEpD,eAAe,kCACnB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /* Doubled class: overrides the shared control, whatever the CSS order. */
2
- .panneau-textArea-ET01uE.panneau-textArea-ET01uE {
2
+ .panneau-text-area.panneau-text-area {
3
3
  display: block;
4
4
  min-height: calc(var(--panneau-control-height) * 2);
5
5
  padding: var(--panneau-space-2) var(--panneau-space-3);
@@ -12,7 +12,7 @@ function TextArea$1({ label, description, errors = [], placeholder, rows = 4, cl
12
12
  isRequired,
13
13
  isInvalid: errors.length > 0,
14
14
  validationBehavior: "aria",
15
- className: cx(Field_module_default.field, className),
15
+ className: cx("panneau-text-area", Field_module_default.field, className),
16
16
  children: [
17
17
  /* @__PURE__ */ jsx(FieldLabel, {
18
18
  isRequired,
@@ -1 +1 @@
1
- {"version":3,"file":"TextArea.js","names":["TextArea","fieldStyles","AriaTextArea","styles"],"sources":["../../src/text-area/TextArea.tsx"],"sourcesContent":["import {\n TextArea as AriaTextArea,\n type TextFieldProps as AriaTextFieldProps,\n TextField,\n} from 'react-aria-components';\n\nimport {\n type FieldChromeProps,\n FieldDescription,\n FieldErrors,\n FieldLabel,\n fieldStyles,\n} from '../field/FieldParts';\nimport { cx } from '../utils/cx';\nimport styles from './TextArea.module.css';\n\nexport interface TextAreaProps\n extends\n Omit<AriaTextFieldProps, 'className' | 'style' | 'children' | 'isInvalid' | 'validate'>,\n FieldChromeProps {\n placeholder?: string;\n /** Visible lines of text. Defaults to 4. */\n rows?: number;\n textAreaClassName?: string;\n}\n\n/** A multi-line text input with its label, description and errors. */\nexport function TextArea({\n label,\n description,\n errors = [],\n placeholder,\n rows = 4,\n className,\n labelClassName,\n descriptionClassName,\n errorsClassName,\n textAreaClassName,\n isRequired,\n ...props\n}: TextAreaProps) {\n return (\n <TextField\n {...props}\n isRequired={isRequired}\n isInvalid={errors.length > 0}\n validationBehavior=\"aria\"\n className={cx(fieldStyles.field, className)}\n >\n <FieldLabel isRequired={isRequired} className={labelClassName}>\n {label}\n </FieldLabel>\n <AriaTextArea\n placeholder={placeholder}\n rows={rows}\n className={cx(fieldStyles.control, styles.textArea, textAreaClassName)}\n />\n <FieldDescription className={descriptionClassName}>{description}</FieldDescription>\n <FieldErrors errors={errors} className={errorsClassName} />\n </TextField>\n );\n}\n"],"mappings":";;;;;;;;AA2BA,SAAgBA,WAAS,EACrB,OACA,aACA,SAAS,CAAA,GACT,aACA,OAAO,GACP,WACA,gBACA,sBACA,iBACA,mBACA,YACA,GAAG,SACW;CACd,OACI,qBAAC,WAAD;EACI,GAAI;EACQ;EACZ,WAAW,OAAO,SAAS;EAC3B,oBAAmB;EACnB,WAAW,GAAGC,qBAAY,OAAO,SAAS;EAL9C,UAAA;GAOI,oBAAC,YAAD;IAAwB;IAAY,WAAW;IAC1C,UAAA;GACO,CAAA;GACZ,oBAACC,UAAD;IACiB;IACP;IACN,WAAW,GAAGD,qBAAY,SAASE,wBAAO,UAAU,iBAAiB;GAAE,CAAA;GAE3E,oBAAC,kBAAD;IAAkB,WAAW;IAAuB,UAAA;GAA8B,CAAA;GAClF,oBAAC,aAAD;IAAqB;IAAQ,WAAW;GAAgB,CAAA;EACjD;;AAEnB"}
1
+ {"version":3,"file":"TextArea.js","names":["TextArea","fieldStyles","AriaTextArea","styles"],"sources":["../../src/text-area/TextArea.tsx"],"sourcesContent":["import {\n TextArea as AriaTextArea,\n type TextFieldProps as AriaTextFieldProps,\n TextField,\n} from 'react-aria-components';\n\nimport {\n type FieldChromeProps,\n FieldDescription,\n FieldErrors,\n FieldLabel,\n fieldStyles,\n} from '../field/FieldParts';\nimport { cx } from '../utils/cx';\nimport styles from './TextArea.module.css';\n\nexport interface TextAreaProps\n extends\n Omit<AriaTextFieldProps, 'className' | 'style' | 'children' | 'isInvalid' | 'validate'>,\n FieldChromeProps {\n placeholder?: string;\n /** Visible lines of text. Defaults to 4. */\n rows?: number;\n textAreaClassName?: string;\n}\n\n/** A multi-line text input with its label, description and errors. */\nexport function TextArea({\n label,\n description,\n errors = [],\n placeholder,\n rows = 4,\n className,\n labelClassName,\n descriptionClassName,\n errorsClassName,\n textAreaClassName,\n isRequired,\n ...props\n}: TextAreaProps) {\n return (\n <TextField\n {...props}\n isRequired={isRequired}\n isInvalid={errors.length > 0}\n validationBehavior=\"aria\"\n className={cx('panneau-text-area', fieldStyles.field, className)}\n >\n <FieldLabel isRequired={isRequired} className={labelClassName}>\n {label}\n </FieldLabel>\n <AriaTextArea\n placeholder={placeholder}\n rows={rows}\n className={cx(fieldStyles.control, styles.textArea, textAreaClassName)}\n />\n <FieldDescription className={descriptionClassName}>{description}</FieldDescription>\n <FieldErrors errors={errors} className={errorsClassName} />\n </TextField>\n );\n}\n"],"mappings":";;;;;;;;AA2BA,SAAgBA,WAAS,EACrB,OACA,aACA,SAAS,CAAA,GACT,aACA,OAAO,GACP,WACA,gBACA,sBACA,iBACA,mBACA,YACA,GAAG,SACW;CACd,OACI,qBAAC,WAAD;EACI,GAAI;EACQ;EACZ,WAAW,OAAO,SAAS;EAC3B,oBAAmB;EACnB,WAAW,GAAG,qBAAqBC,qBAAY,OAAO,SAAS;EALnE,UAAA;GAOI,oBAAC,YAAD;IAAwB;IAAY,WAAW;IAC1C,UAAA;GACO,CAAA;GACZ,oBAACC,UAAD;IACiB;IACP;IACN,WAAW,GAAGD,qBAAY,SAASE,wBAAO,UAAU,iBAAiB;GAAE,CAAA;GAE3E,oBAAC,kBAAD;IAAkB,WAAW;IAAuB,UAAA;GAA8B,CAAA;GAClF,oBAAC,aAAD;IAAqB;IAAQ,WAAW;GAAgB,CAAA;EACjD;;AAEnB"}
@@ -1,6 +1,6 @@
1
1
  import "./TextArea.css";
2
2
  //#region src/text-area/TextArea.module.css
3
- var textArea = "panneau-textArea-ET01uE";
3
+ var textArea = "panneau-text-area";
4
4
  var TextArea_module_default = { textArea };
5
5
  //#endregion
6
6
  export { TextArea_module_default as default, textArea };
@@ -14,7 +14,7 @@ function TextInput({ label, description, errors = [], placeholder, prefix, suffi
14
14
  isReadOnly,
15
15
  isInvalid: invalid,
16
16
  validationBehavior: "aria",
17
- className: cx(Field_module_default.field, className),
17
+ className: cx("panneau-text-input", Field_module_default.field, className),
18
18
  children: [
19
19
  /* @__PURE__ */ jsx(FieldLabel, {
20
20
  isRequired,
@@ -1 +1 @@
1
- {"version":3,"file":"TextInput.js","names":["styles"],"sources":["../../src/text-input/TextInput.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport {\n type TextFieldProps as AriaTextFieldProps,\n Group,\n Input,\n TextField,\n} from 'react-aria-components';\n\nimport {\n type FieldChromeProps,\n FieldDescription,\n FieldErrors,\n FieldLabel,\n fieldStyles as styles,\n} from '../field/FieldParts';\nimport { cx } from '../utils/cx';\n\nexport interface TextInputProps\n extends\n Omit<\n AriaTextFieldProps,\n 'className' | 'style' | 'children' | 'isInvalid' | 'validate' | 'type'\n >,\n FieldChromeProps {\n type?: 'text' | 'email' | 'url' | 'tel' | 'password' | 'search';\n placeholder?: string;\n /** Content before the text, inside the control: a unit, a URL prefix, an icon. */\n prefix?: ReactNode;\n /** Content after the text, inside the control. */\n suffix?: ReactNode;\n /** Class name of the control (the box around the text). */\n controlClassName?: string;\n inputClassName?: string;\n}\n\n/** A single-line text input with its label, description and errors. */\nexport function TextInput({\n label,\n description,\n errors = [],\n placeholder,\n prefix,\n suffix,\n className,\n labelClassName,\n descriptionClassName,\n errorsClassName,\n controlClassName,\n inputClassName,\n isRequired,\n isReadOnly,\n ...props\n}: TextInputProps) {\n const invalid = errors.length > 0;\n const adorned = prefix !== undefined || suffix !== undefined;\n return (\n <TextField\n {...props}\n isRequired={isRequired}\n isReadOnly={isReadOnly}\n isInvalid={invalid}\n validationBehavior=\"aria\"\n className={cx(styles.field, className)}\n >\n <FieldLabel isRequired={isRequired} className={labelClassName}>\n {label}\n </FieldLabel>\n {adorned ? (\n <Group\n className={cx(styles.control, controlClassName)}\n data-invalid={invalid || undefined}\n data-readonly={isReadOnly || undefined}\n isDisabled={props.isDisabled}\n >\n {prefix !== undefined ? (\n <span className={styles.adornment}>{prefix}</span>\n ) : null}\n <Input placeholder={placeholder} className={cx(styles.bare, inputClassName)} />\n {suffix !== undefined ? (\n <span className={styles.adornment}>{suffix}</span>\n ) : null}\n </Group>\n ) : (\n <Input\n placeholder={placeholder}\n className={cx(styles.control, controlClassName, inputClassName)}\n />\n )}\n <FieldDescription className={descriptionClassName}>{description}</FieldDescription>\n <FieldErrors errors={errors} className={errorsClassName} />\n </TextField>\n );\n}\n"],"mappings":";;;;;;;AAoCA,SAAgB,UAAU,EACtB,OACA,aACA,SAAS,CAAA,GACT,aACA,QACA,QACA,WACA,gBACA,sBACA,iBACA,kBACA,gBACA,YACA,YACA,GAAG,SACY;CACf,MAAM,UAAU,OAAO,SAAS;CAChC,MAAM,UAAU,WAAW,KAAA,KAAa,WAAW,KAAA;CACnD,OACI,qBAAC,WAAD;EACI,GAAI;EACQ;EACA;EACZ,WAAW;EACX,oBAAmB;EACnB,WAAW,GAAGA,qBAAO,OAAO,SAAS;EANzC,UAAA;GAQI,oBAAC,YAAD;IAAwB;IAAY,WAAW;IAC1C,UAAA;GACO,CAAA;GACX,UACG,qBAAC,OAAD;IACI,WAAW,GAAGA,qBAAO,SAAS,gBAAgB;IAC9C,gBAAc,WAAW,KAAA;IACzB,iBAAe,cAAc,KAAA;IAC7B,YAAY,MAAM;IAJtB,UAAA;KAMK,WAAW,KAAA,IACR,oBAAC,QAAD;MAAM,WAAWA,qBAAO;MAAY,UAAA;KAAa,CAAA,IACjD;KACJ,oBAAC,OAAD;MAAoB;MAAa,WAAW,GAAGA,qBAAO,MAAM,cAAc;KAAE,CAAA;KAC3E,WAAW,KAAA,IACR,oBAAC,QAAD;MAAM,WAAWA,qBAAO;MAAY,UAAA;KAAa,CAAA,IACjD;IACD;GAEP,CAAA,IAAA,oBAAC,OAAD;IACiB;IACb,WAAW,GAAGA,qBAAO,SAAS,kBAAkB,cAAc;GAAE,CAAA;GAGxE,oBAAC,kBAAD;IAAkB,WAAW;IAAuB,UAAA;GAA8B,CAAA;GAClF,oBAAC,aAAD;IAAqB;IAAQ,WAAW;GAAgB,CAAA;EACjD;;AAEnB"}
1
+ {"version":3,"file":"TextInput.js","names":["styles"],"sources":["../../src/text-input/TextInput.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport {\n type TextFieldProps as AriaTextFieldProps,\n Group,\n Input,\n TextField,\n} from 'react-aria-components';\n\nimport {\n type FieldChromeProps,\n FieldDescription,\n FieldErrors,\n FieldLabel,\n fieldStyles as styles,\n} from '../field/FieldParts';\nimport { cx } from '../utils/cx';\n\nexport interface TextInputProps\n extends\n Omit<\n AriaTextFieldProps,\n 'className' | 'style' | 'children' | 'isInvalid' | 'validate' | 'type'\n >,\n FieldChromeProps {\n type?: 'text' | 'email' | 'url' | 'tel' | 'password' | 'search';\n placeholder?: string;\n /** Content before the text, inside the control: a unit, a URL prefix, an icon. */\n prefix?: ReactNode;\n /** Content after the text, inside the control. */\n suffix?: ReactNode;\n /** Class name of the control (the box around the text). */\n controlClassName?: string;\n inputClassName?: string;\n}\n\n/** A single-line text input with its label, description and errors. */\nexport function TextInput({\n label,\n description,\n errors = [],\n placeholder,\n prefix,\n suffix,\n className,\n labelClassName,\n descriptionClassName,\n errorsClassName,\n controlClassName,\n inputClassName,\n isRequired,\n isReadOnly,\n ...props\n}: TextInputProps) {\n const invalid = errors.length > 0;\n const adorned = prefix !== undefined || suffix !== undefined;\n return (\n <TextField\n {...props}\n isRequired={isRequired}\n isReadOnly={isReadOnly}\n isInvalid={invalid}\n validationBehavior=\"aria\"\n className={cx('panneau-text-input', styles.field, className)}\n >\n <FieldLabel isRequired={isRequired} className={labelClassName}>\n {label}\n </FieldLabel>\n {adorned ? (\n <Group\n className={cx(styles.control, controlClassName)}\n data-invalid={invalid || undefined}\n data-readonly={isReadOnly || undefined}\n isDisabled={props.isDisabled}\n >\n {prefix !== undefined ? (\n <span className={styles.adornment}>{prefix}</span>\n ) : null}\n <Input placeholder={placeholder} className={cx(styles.bare, inputClassName)} />\n {suffix !== undefined ? (\n <span className={styles.adornment}>{suffix}</span>\n ) : null}\n </Group>\n ) : (\n <Input\n placeholder={placeholder}\n className={cx(styles.control, controlClassName, inputClassName)}\n />\n )}\n <FieldDescription className={descriptionClassName}>{description}</FieldDescription>\n <FieldErrors errors={errors} className={errorsClassName} />\n </TextField>\n );\n}\n"],"mappings":";;;;;;;AAoCA,SAAgB,UAAU,EACtB,OACA,aACA,SAAS,CAAA,GACT,aACA,QACA,QACA,WACA,gBACA,sBACA,iBACA,kBACA,gBACA,YACA,YACA,GAAG,SACY;CACf,MAAM,UAAU,OAAO,SAAS;CAChC,MAAM,UAAU,WAAW,KAAA,KAAa,WAAW,KAAA;CACnD,OACI,qBAAC,WAAD;EACI,GAAI;EACQ;EACA;EACZ,WAAW;EACX,oBAAmB;EACnB,WAAW,GAAG,sBAAsBA,qBAAO,OAAO,SAAS;EAN/D,UAAA;GAQI,oBAAC,YAAD;IAAwB;IAAY,WAAW;IAC1C,UAAA;GACO,CAAA;GACX,UACG,qBAAC,OAAD;IACI,WAAW,GAAGA,qBAAO,SAAS,gBAAgB;IAC9C,gBAAc,WAAW,KAAA;IACzB,iBAAe,cAAc,KAAA;IAC7B,YAAY,MAAM;IAJtB,UAAA;KAMK,WAAW,KAAA,IACR,oBAAC,QAAD;MAAM,WAAWA,qBAAO;MAAY,UAAA;KAAa,CAAA,IACjD;KACJ,oBAAC,OAAD;MAAoB;MAAa,WAAW,GAAGA,qBAAO,MAAM,cAAc;KAAE,CAAA;KAC3E,WAAW,KAAA,IACR,oBAAC,QAAD;MAAM,WAAWA,qBAAO;MAAY,UAAA;KAAa,CAAA,IACjD;IACD;GAEP,CAAA,IAAA,oBAAC,OAAD;IACiB;IACb,WAAW,GAAGA,qBAAO,SAAS,kBAAkB,cAAc;GAAE,CAAA;GAGxE,oBAAC,kBAAD;IAAkB,WAAW;IAAuB,UAAA;GAA8B,CAAA;GAClF,oBAAC,aAAD;IAAqB;IAAQ,WAAW;GAAgB,CAAA;EACjD;;AAEnB"}
@@ -0,0 +1,70 @@
1
+ /*
2
+ * Built-in tones (decision 0024): each one sets the local --panneau-tone-* variables that
3
+ * components read, from the semantic tokens of the theme, so they follow the theme and the color
4
+ * scheme. A theme's own tones are written by getThemeCss() with the same class names
5
+ * (panneau-tone-<name>), and can redefine these.
6
+ */
7
+
8
+ .panneau-tone-neutral {
9
+ --panneau-tone-text: var(--panneau-color-text);
10
+ --panneau-tone-subtle: var(--panneau-color-surface-sunken);
11
+ --panneau-tone-border: var(--panneau-color-border);
12
+ --panneau-tone-outline: var(--panneau-color-border-control);
13
+ --panneau-tone-solid: var(--panneau-color-text);
14
+ --panneau-tone-solid-hover: var(--panneau-color-text-muted);
15
+ --panneau-tone-solid-text: var(--panneau-color-bg);
16
+ }
17
+
18
+ .panneau-tone-accent {
19
+ --panneau-tone-text: var(--panneau-color-accent);
20
+ --panneau-tone-subtle: var(--panneau-color-accent-subtle);
21
+ --panneau-tone-border: color-mix(
22
+ in srgb,
23
+ var(--panneau-color-accent) 35%,
24
+ var(--panneau-color-surface)
25
+ );
26
+ --panneau-tone-outline: var(--panneau-color-accent);
27
+ --panneau-tone-solid: var(--panneau-color-accent);
28
+ --panneau-tone-solid-hover: var(--panneau-color-accent-hover);
29
+ --panneau-tone-solid-text: var(--panneau-color-accent-text);
30
+ }
31
+
32
+ .panneau-tone-success {
33
+ --panneau-tone-text: var(--panneau-color-success);
34
+ --panneau-tone-subtle: var(--panneau-color-success-subtle);
35
+ --panneau-tone-border: var(--panneau-color-success-border);
36
+ --panneau-tone-outline: var(--panneau-color-success);
37
+ --panneau-tone-solid: var(--panneau-color-success-solid);
38
+ --panneau-tone-solid-hover: var(--panneau-color-success-solid-hover);
39
+ --panneau-tone-solid-text: var(--panneau-color-success-solid-text);
40
+ }
41
+
42
+ .panneau-tone-warning {
43
+ --panneau-tone-text: var(--panneau-color-warning);
44
+ --panneau-tone-subtle: var(--panneau-color-warning-subtle);
45
+ --panneau-tone-border: var(--panneau-color-warning-border);
46
+ --panneau-tone-outline: var(--panneau-color-warning);
47
+ --panneau-tone-solid: var(--panneau-color-warning-solid);
48
+ --panneau-tone-solid-hover: var(--panneau-color-warning-solid-hover);
49
+ --panneau-tone-solid-text: var(--panneau-color-warning-solid-text);
50
+ }
51
+
52
+ .panneau-tone-danger {
53
+ --panneau-tone-text: var(--panneau-color-danger);
54
+ --panneau-tone-subtle: var(--panneau-color-danger-subtle);
55
+ --panneau-tone-border: var(--panneau-color-danger-border);
56
+ --panneau-tone-outline: var(--panneau-color-danger);
57
+ --panneau-tone-solid: var(--panneau-color-danger-solid);
58
+ --panneau-tone-solid-hover: var(--panneau-color-danger-solid-hover);
59
+ --panneau-tone-solid-text: var(--panneau-color-danger-solid-text);
60
+ }
61
+
62
+ .panneau-tone-info {
63
+ --panneau-tone-text: var(--panneau-color-info);
64
+ --panneau-tone-subtle: var(--panneau-color-info-subtle);
65
+ --panneau-tone-border: var(--panneau-color-info-border);
66
+ --panneau-tone-outline: var(--panneau-color-info);
67
+ --panneau-tone-solid: var(--panneau-color-info-solid);
68
+ --panneau-tone-solid-hover: var(--panneau-color-info-solid-hover);
69
+ --panneau-tone-solid-text: var(--panneau-color-info-solid-text);
70
+ }
@@ -0,0 +1,20 @@
1
+ import "./Tone.css";
2
+ //#region src/theme/Tone.module.css
3
+ var neutral = "panneau-tone-neutral";
4
+ var accent = "panneau-tone-accent";
5
+ var success = "panneau-tone-success";
6
+ var warning = "panneau-tone-warning";
7
+ var danger = "panneau-tone-danger";
8
+ var info = "panneau-tone-info";
9
+ var Tone_module_default = {
10
+ neutral,
11
+ accent,
12
+ success,
13
+ warning,
14
+ danger,
15
+ info
16
+ };
17
+ //#endregion
18
+ export { accent, danger, Tone_module_default as default, info, neutral, success, warning };
19
+
20
+ //# sourceMappingURL=Tone.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tone.module.js","names":[],"sources":["../../src/theme/Tone.module.css"],"sourcesContent":["/*\n * Built-in tones (decision 0024): each one sets the local --panneau-tone-* variables that\n * components read, from the semantic tokens of the theme, so they follow the theme and the color\n * scheme. A theme's own tones are written by getThemeCss() with the same class names\n * (panneau-tone-<name>), and can redefine these.\n */\n\n.neutral {\n --panneau-tone-text: var(--panneau-color-text);\n --panneau-tone-subtle: var(--panneau-color-surface-sunken);\n --panneau-tone-border: var(--panneau-color-border);\n --panneau-tone-outline: var(--panneau-color-border-control);\n --panneau-tone-solid: var(--panneau-color-text);\n --panneau-tone-solid-hover: var(--panneau-color-text-muted);\n --panneau-tone-solid-text: var(--panneau-color-bg);\n}\n\n.accent {\n --panneau-tone-text: var(--panneau-color-accent);\n --panneau-tone-subtle: var(--panneau-color-accent-subtle);\n --panneau-tone-border: color-mix(\n in srgb,\n var(--panneau-color-accent) 35%,\n var(--panneau-color-surface)\n );\n --panneau-tone-outline: var(--panneau-color-accent);\n --panneau-tone-solid: var(--panneau-color-accent);\n --panneau-tone-solid-hover: var(--panneau-color-accent-hover);\n --panneau-tone-solid-text: var(--panneau-color-accent-text);\n}\n\n.success {\n --panneau-tone-text: var(--panneau-color-success);\n --panneau-tone-subtle: var(--panneau-color-success-subtle);\n --panneau-tone-border: var(--panneau-color-success-border);\n --panneau-tone-outline: var(--panneau-color-success);\n --panneau-tone-solid: var(--panneau-color-success-solid);\n --panneau-tone-solid-hover: var(--panneau-color-success-solid-hover);\n --panneau-tone-solid-text: var(--panneau-color-success-solid-text);\n}\n\n.warning {\n --panneau-tone-text: var(--panneau-color-warning);\n --panneau-tone-subtle: var(--panneau-color-warning-subtle);\n --panneau-tone-border: var(--panneau-color-warning-border);\n --panneau-tone-outline: var(--panneau-color-warning);\n --panneau-tone-solid: var(--panneau-color-warning-solid);\n --panneau-tone-solid-hover: var(--panneau-color-warning-solid-hover);\n --panneau-tone-solid-text: var(--panneau-color-warning-solid-text);\n}\n\n.danger {\n --panneau-tone-text: var(--panneau-color-danger);\n --panneau-tone-subtle: var(--panneau-color-danger-subtle);\n --panneau-tone-border: var(--panneau-color-danger-border);\n --panneau-tone-outline: var(--panneau-color-danger);\n --panneau-tone-solid: var(--panneau-color-danger-solid);\n --panneau-tone-solid-hover: var(--panneau-color-danger-solid-hover);\n --panneau-tone-solid-text: var(--panneau-color-danger-solid-text);\n}\n\n.info {\n --panneau-tone-text: var(--panneau-color-info);\n --panneau-tone-subtle: var(--panneau-color-info-subtle);\n --panneau-tone-border: var(--panneau-color-info-border);\n --panneau-tone-outline: var(--panneau-color-info);\n --panneau-tone-solid: var(--panneau-color-info-solid);\n --panneau-tone-solid-hover: var(--panneau-color-info-solid-hover);\n --panneau-tone-solid-text: var(--panneau-color-info-solid-text);\n}\n"],"mappings":""}
@@ -1,4 +1,14 @@
1
1
  import type { Theme } from './theme';
2
+ import type { ToneValues } from './tones';
3
+ /**
4
+ * A tone from one of Bootstrap's theme colors, read from its CSS variables (`--bs-<color>`,
5
+ * `-text-emphasis`, `-bg-subtle`, `-border-subtle`), so that a site's custom colors carry over:
6
+ * `tones: { brand: bootstrapTone('brand') }`. Text on the subtle background uses the emphasis
7
+ * color, as Bootstrap's alerts do. Light colors need dark solid text: `{ solidText: 'var(--bs-dark)' }`.
8
+ */
9
+ export declare function bootstrapTone(color: string, { solidText }?: {
10
+ solidText?: string;
11
+ }): ToneValues;
2
12
  /**
3
13
  * Maps Panneau's tokens to the CSS variables of Bootstrap 5.3, for sites that use Bootstrap: Panneau
4
14
  * then follows the site's colors, fonts and radii, and its color mode (`data-bs-theme`), without