@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.
- package/README.md +276 -13
- package/bin/check-theme.js +5 -0
- package/dist/alert/Alert.css +28 -42
- package/dist/alert/Alert.d.ts +18 -4
- package/dist/alert/Alert.d.ts.map +1 -1
- package/dist/alert/Alert.js +4 -3
- package/dist/alert/Alert.js.map +1 -1
- package/dist/alert/Alert.module.js +14 -16
- package/dist/alert/Alert.module.js.map +1 -1
- package/dist/alert/tokens.d.ts +3 -0
- package/dist/alert/tokens.d.ts.map +1 -0
- package/dist/alert/tokens.js +21 -0
- package/dist/alert/tokens.js.map +1 -0
- package/dist/badge/Badge.css +24 -36
- package/dist/badge/Badge.d.ts +18 -3
- package/dist/badge/Badge.d.ts.map +1 -1
- package/dist/badge/Badge.js +3 -2
- package/dist/badge/Badge.js.map +1 -1
- package/dist/badge/Badge.module.js +9 -13
- package/dist/badge/Badge.module.js.map +1 -1
- package/dist/badge/tokens.d.ts +3 -0
- package/dist/badge/tokens.d.ts.map +1 -0
- package/dist/badge/tokens.js +23 -0
- package/dist/badge/tokens.js.map +1 -0
- package/dist/button/Button.css +58 -42
- package/dist/button/Button.d.ts +30 -3
- package/dist/button/Button.d.ts.map +1 -1
- package/dist/button/Button.js +27 -2
- package/dist/button/Button.js.map +1 -1
- package/dist/button/Button.module.js +14 -14
- package/dist/button/Button.module.js.map +1 -1
- package/dist/button/tokens.d.ts +3 -0
- package/dist/button/tokens.d.ts.map +1 -0
- package/dist/button/tokens.js +25 -0
- package/dist/button/tokens.js.map +1 -0
- package/dist/card/Card.css +27 -20
- package/dist/card/Card.js +1 -1
- package/dist/card/Card.js.map +1 -1
- package/dist/card/Card.module.js +5 -5
- package/dist/card/Card.module.js.map +1 -1
- package/dist/card/tokens.d.ts +3 -0
- package/dist/card/tokens.d.ts.map +1 -0
- package/dist/card/tokens.js +31 -0
- package/dist/card/tokens.js.map +1 -0
- package/dist/checkbox/Checkbox.css +22 -21
- package/dist/checkbox/Checkbox.d.ts.map +1 -1
- package/dist/checkbox/Checkbox.js +2 -1
- package/dist/checkbox/Checkbox.js.map +1 -1
- package/dist/checkbox/Checkbox.module.js +6 -6
- package/dist/checkbox/Checkbox.module.js.map +1 -1
- package/dist/checkbox/ChoiceChrome.d.ts +3 -1
- package/dist/checkbox/ChoiceChrome.d.ts.map +1 -1
- package/dist/checkbox/ChoiceChrome.js +2 -2
- package/dist/checkbox/ChoiceChrome.js.map +1 -1
- package/dist/checkbox/tokens.d.ts +3 -0
- package/dist/checkbox/tokens.d.ts.map +1 -0
- package/dist/checkbox/tokens.js +21 -0
- package/dist/checkbox/tokens.js.map +1 -0
- package/dist/combo-box/ComboBox.css +4 -4
- package/dist/combo-box/ComboBox.js +1 -1
- package/dist/combo-box/ComboBox.js.map +1 -1
- package/dist/combo-box/ComboBox.module.js +3 -3
- package/dist/container/Container.css +32 -0
- package/dist/container/Container.d.ts +15 -0
- package/dist/container/Container.d.ts.map +1 -0
- package/dist/container/Container.js +18 -0
- package/dist/container/Container.js.map +1 -0
- package/dist/container/Container.module.js +20 -0
- package/dist/container/Container.module.js.map +1 -0
- package/dist/container/tokens.d.ts +3 -0
- package/dist/container/tokens.d.ts.map +1 -0
- package/dist/container/tokens.js +19 -0
- package/dist/container/tokens.js.map +1 -0
- package/dist/date-picker/DatePicker.css +30 -30
- package/dist/date-picker/DatePicker.js +1 -1
- package/dist/date-picker/DatePicker.js.map +1 -1
- package/dist/date-picker/DatePicker.module.js +11 -11
- package/dist/date-picker/DatePicker.module.js.map +1 -1
- package/dist/date-picker/calendarTokens.d.ts +3 -0
- package/dist/date-picker/calendarTokens.d.ts.map +1 -0
- package/dist/date-picker/calendarTokens.js +17 -0
- package/dist/date-picker/calendarTokens.js.map +1 -0
- package/dist/dialog/Dialog.css +40 -36
- package/dist/dialog/Dialog.js +1 -1
- package/dist/dialog/Dialog.js.map +1 -1
- package/dist/dialog/Dialog.module.js +11 -11
- package/dist/dialog/Dialog.module.js.map +1 -1
- package/dist/dialog/tokens.d.ts +3 -0
- package/dist/dialog/tokens.d.ts.map +1 -0
- package/dist/dialog/tokens.js +29 -0
- package/dist/dialog/tokens.js.map +1 -0
- package/dist/disclosure/Disclosure.css +12 -12
- package/dist/disclosure/Disclosure.d.ts.map +1 -1
- package/dist/disclosure/Disclosure.js +1 -1
- package/dist/disclosure/Disclosure.js.map +1 -1
- package/dist/disclosure/Disclosure.module.js +7 -7
- package/dist/disclosure/Disclosure.module.js.map +1 -1
- package/dist/disclosure/tokens.d.ts +3 -0
- package/dist/disclosure/tokens.d.ts.map +1 -0
- package/dist/disclosure/tokens.js +15 -0
- package/dist/disclosure/tokens.js.map +1 -0
- package/dist/divider/Divider.css +17 -0
- package/dist/divider/Divider.d.ts +8 -0
- package/dist/divider/Divider.d.ts.map +1 -0
- package/dist/divider/Divider.js +21 -0
- package/dist/divider/Divider.js.map +1 -0
- package/dist/divider/Divider.module.js +12 -0
- package/dist/divider/Divider.module.js.map +1 -0
- package/dist/divider/tokens.d.ts +3 -0
- package/dist/divider/tokens.d.ts.map +1 -0
- package/dist/divider/tokens.js +13 -0
- package/dist/divider/tokens.js.map +1 -0
- package/dist/field/Field.css +40 -37
- package/dist/field/Field.module.js +11 -11
- package/dist/field/Field.module.js.map +1 -1
- package/dist/field/Fieldset.js +1 -1
- package/dist/field/Fieldset.js.map +1 -1
- package/dist/field/inputTokens.d.ts +3 -0
- package/dist/field/inputTokens.d.ts.map +1 -0
- package/dist/field/inputTokens.js +21 -0
- package/dist/field/inputTokens.js.map +1 -0
- package/dist/field/tokens.d.ts +3 -0
- package/dist/field/tokens.d.ts.map +1 -0
- package/dist/field/tokens.js +15 -0
- package/dist/field/tokens.js.map +1 -0
- package/dist/grid/Grid.css +174 -0
- package/dist/grid/Grid.d.ts +28 -0
- package/dist/grid/Grid.d.ts.map +1 -0
- package/dist/grid/Grid.js +31 -0
- package/dist/grid/Grid.js.map +1 -0
- package/dist/grid/Grid.module.js +12 -0
- package/dist/grid/Grid.module.js.map +1 -0
- package/dist/grid/GridItem.css +59 -0
- package/dist/grid/GridItem.module.js +7 -0
- package/dist/grid/GridItem.module.js.map +1 -0
- package/dist/grid/tokens.d.ts +3 -0
- package/dist/grid/tokens.d.ts.map +1 -0
- package/dist/grid/tokens.js +10 -0
- package/dist/grid/tokens.js.map +1 -0
- package/dist/heading/Heading.css +52 -0
- package/dist/heading/Heading.d.ts +17 -0
- package/dist/heading/Heading.d.ts.map +1 -0
- package/dist/heading/Heading.js +17 -0
- package/dist/heading/Heading.js.map +1 -0
- package/dist/heading/Heading.module.js +16 -0
- package/dist/heading/Heading.module.js.map +1 -0
- package/dist/heading/tokens.d.ts +6 -0
- package/dist/heading/tokens.d.ts.map +1 -0
- package/dist/heading/tokens.js +66 -0
- package/dist/heading/tokens.js.map +1 -0
- package/dist/icon/Icon.css +1 -1
- package/dist/icon/Icon.js +1 -1
- package/dist/icon/Icon.js.map +1 -1
- package/dist/icon/Icon.module.js +1 -1
- package/dist/icon/lucideIconLoader.d.ts +9 -0
- package/dist/icon/lucideIconLoader.d.ts.map +1 -0
- package/dist/icon/lucideIconLoader.js +22 -0
- package/dist/icon/lucideIconLoader.js.map +1 -0
- package/dist/icon/namedIcons.d.ts +15 -8
- package/dist/icon/namedIcons.d.ts.map +1 -1
- package/dist/icon/namedIcons.js +43 -29
- package/dist/icon/namedIcons.js.map +1 -1
- package/dist/icon-button/IconButton.css +2 -2
- package/dist/icon-button/IconButton.d.ts +1 -1
- package/dist/icon-button/IconButton.d.ts.map +1 -1
- package/dist/icon-button/IconButton.js +3 -3
- package/dist/icon-button/IconButton.js.map +1 -1
- package/dist/icon-button/IconButton.module.js +2 -2
- package/dist/index.d.ts +26 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -3
- package/dist/inline/Inline.css +142 -0
- package/dist/inline/Inline.d.ts +17 -0
- package/dist/inline/Inline.d.ts.map +1 -0
- package/dist/inline/Inline.js +21 -0
- package/dist/inline/Inline.js.map +1 -0
- package/dist/inline/Inline.module.js +12 -0
- package/dist/inline/Inline.module.js.map +1 -0
- package/dist/inline/tokens.d.ts +3 -0
- package/dist/inline/tokens.d.ts.map +1 -0
- package/dist/inline/tokens.js +10 -0
- package/dist/inline/tokens.js.map +1 -0
- package/dist/layout/responsive.d.ts +38 -0
- package/dist/layout/responsive.d.ts.map +1 -0
- package/dist/layout/responsive.js +49 -0
- package/dist/layout/responsive.js.map +1 -0
- package/dist/menu/Menu.js +2 -2
- package/dist/menu/Menu.js.map +1 -1
- package/dist/named-icons/index.d.ts +2 -0
- package/dist/named-icons/index.d.ts.map +1 -0
- package/dist/named-icons/index.js +1 -0
- package/dist/number-input/NumberInput.css +12 -12
- package/dist/number-input/NumberInput.js +1 -1
- package/dist/number-input/NumberInput.js.map +1 -1
- package/dist/number-input/NumberInput.module.js +4 -4
- package/dist/number-input/NumberInput.module.js.map +1 -1
- package/dist/number-input/tokens.d.ts +3 -0
- package/dist/number-input/tokens.d.ts.map +1 -0
- package/dist/number-input/tokens.js +10 -0
- package/dist/number-input/tokens.js.map +1 -0
- package/dist/popover/Popover.css +13 -12
- package/dist/popover/Popover.js +2 -2
- package/dist/popover/Popover.js.map +1 -1
- package/dist/popover/Popover.module.js +3 -3
- package/dist/popover/Popover.module.js.map +1 -1
- package/dist/popover/tokens.d.ts +3 -0
- package/dist/popover/tokens.d.ts.map +1 -0
- package/dist/popover/tokens.js +19 -0
- package/dist/popover/tokens.js.map +1 -0
- package/dist/prose/Prose.css +141 -0
- package/dist/prose/Prose.d.ts +11 -0
- package/dist/prose/Prose.d.ts.map +1 -0
- package/dist/prose/Prose.js +18 -0
- package/dist/prose/Prose.js.map +1 -0
- package/dist/prose/Prose.module.js +8 -0
- package/dist/prose/Prose.module.js.map +1 -0
- package/dist/prose/tokens.d.ts +3 -0
- package/dist/prose/tokens.d.ts.map +1 -0
- package/dist/prose/tokens.js +33 -0
- package/dist/prose/tokens.js.map +1 -0
- package/dist/radio-group/RadioGroup.css +21 -20
- package/dist/radio-group/RadioGroup.d.ts.map +1 -1
- package/dist/radio-group/RadioGroup.js +2 -2
- package/dist/radio-group/RadioGroup.js.map +1 -1
- package/dist/radio-group/RadioGroup.module.js +6 -6
- package/dist/radio-group/RadioGroup.module.js.map +1 -1
- package/dist/radio-group/tokens.d.ts +3 -0
- package/dist/radio-group/tokens.d.ts.map +1 -0
- package/dist/radio-group/tokens.js +19 -0
- package/dist/radio-group/tokens.js.map +1 -0
- package/dist/root/PanneauRoot.css +243 -20
- package/dist/root/PanneauRoot.d.ts +35 -4
- package/dist/root/PanneauRoot.d.ts.map +1 -1
- package/dist/root/PanneauRoot.js +107 -20
- package/dist/root/PanneauRoot.js.map +1 -1
- package/dist/root/PanneauRoot.module.js +11 -3
- package/dist/root/PanneauRoot.module.js.map +1 -1
- package/dist/root/ThemeScope.d.ts +24 -0
- package/dist/root/ThemeScope.d.ts.map +1 -0
- package/dist/root/ThemeScope.js +49 -0
- package/dist/root/ThemeScope.js.map +1 -0
- package/dist/select/ListBox.css +23 -22
- package/dist/select/ListBox.module.js +12 -12
- package/dist/select/ListBox.module.js.map +1 -1
- package/dist/select/Select.js +1 -1
- package/dist/select/Select.js.map +1 -1
- package/dist/select/listBoxTokens.d.ts +3 -0
- package/dist/select/listBoxTokens.d.ts.map +1 -0
- package/dist/select/listBoxTokens.js +19 -0
- package/dist/select/listBoxTokens.js.map +1 -0
- package/dist/spinner/Spinner.css +8 -8
- package/dist/spinner/Spinner.js +1 -1
- package/dist/spinner/Spinner.js.map +1 -1
- package/dist/spinner/Spinner.module.js +5 -5
- package/dist/spinner/Spinner.module.js.map +1 -1
- package/dist/spinner/tokens.d.ts +3 -0
- package/dist/spinner/tokens.d.ts.map +1 -0
- package/dist/spinner/tokens.js +10 -0
- package/dist/spinner/tokens.js.map +1 -0
- package/dist/stack/Stack.css +135 -0
- package/dist/stack/Stack.d.ts +15 -0
- package/dist/stack/Stack.d.ts.map +1 -0
- package/dist/stack/Stack.js +21 -0
- package/dist/stack/Stack.js.map +1 -0
- package/dist/stack/Stack.module.js +8 -0
- package/dist/stack/Stack.module.js.map +1 -0
- package/dist/stack/tokens.d.ts +3 -0
- package/dist/stack/tokens.d.ts.map +1 -0
- package/dist/stack/tokens.js +10 -0
- package/dist/stack/tokens.js.map +1 -0
- package/dist/switch/Switch.css +34 -25
- package/dist/switch/Switch.d.ts.map +1 -1
- package/dist/switch/Switch.js +2 -1
- package/dist/switch/Switch.js.map +1 -1
- package/dist/switch/Switch.module.js +6 -5
- package/dist/switch/Switch.module.js.map +1 -1
- package/dist/switch/tokens.d.ts +3 -0
- package/dist/switch/tokens.d.ts.map +1 -0
- package/dist/switch/tokens.js +25 -0
- package/dist/switch/tokens.js.map +1 -0
- package/dist/tabs/Tabs.css +24 -23
- package/dist/tabs/Tabs.js +4 -4
- package/dist/tabs/Tabs.js.map +1 -1
- package/dist/tabs/Tabs.module.js +4 -4
- package/dist/tabs/Tabs.module.js.map +1 -1
- package/dist/tabs/tokens.d.ts +3 -0
- package/dist/tabs/tokens.d.ts.map +1 -0
- package/dist/tabs/tokens.js +25 -0
- package/dist/tabs/tokens.js.map +1 -0
- package/dist/text/Text.css +74 -0
- package/dist/text/Text.d.ts +27 -0
- package/dist/text/Text.d.ts.map +1 -0
- package/dist/text/Text.js +16 -0
- package/dist/text/Text.js.map +1 -0
- package/dist/text/Text.module.js +30 -0
- package/dist/text/Text.module.js.map +1 -0
- package/dist/text/tokens.d.ts +3 -0
- package/dist/text/tokens.d.ts.map +1 -0
- package/dist/text/tokens.js +10 -0
- package/dist/text/tokens.js.map +1 -0
- package/dist/text-area/TextArea.css +1 -1
- package/dist/text-area/TextArea.js +2 -2
- package/dist/text-area/TextArea.js.map +1 -1
- package/dist/text-area/TextArea.module.js +3 -3
- package/dist/text-area/TextArea.module.js.map +1 -1
- package/dist/text-input/TextInput.js +1 -1
- package/dist/text-input/TextInput.js.map +1 -1
- package/dist/theme/Tone.css +70 -0
- package/dist/theme/Tone.module.js +20 -0
- package/dist/theme/Tone.module.js.map +1 -0
- package/dist/theme/bootstrap.d.ts +10 -0
- package/dist/theme/bootstrap.d.ts.map +1 -1
- package/dist/theme/bootstrap.js +48 -5
- package/dist/theme/bootstrap.js.map +1 -1
- package/dist/theme/chartColors.d.ts +23 -0
- package/dist/theme/chartColors.d.ts.map +1 -0
- package/dist/theme/chartColors.js +27 -0
- package/dist/theme/chartColors.js.map +1 -0
- package/dist/theme/checkTheme.d.ts +39 -0
- package/dist/theme/checkTheme.d.ts.map +1 -0
- package/dist/theme/checkTheme.js +132 -0
- package/dist/theme/checkTheme.js.map +1 -0
- package/dist/theme/cli.d.ts +14 -0
- package/dist/theme/cli.d.ts.map +1 -0
- package/dist/theme/cli.js +61 -0
- package/dist/theme/cli.js.map +1 -0
- package/dist/theme/color.d.ts +30 -0
- package/dist/theme/color.d.ts.map +1 -0
- package/dist/theme/color.js +94 -0
- package/dist/theme/color.js.map +1 -0
- package/dist/theme/colorVision.d.ts +23 -0
- package/dist/theme/colorVision.d.ts.map +1 -0
- package/dist/theme/colorVision.js +140 -0
- package/dist/theme/colorVision.js.map +1 -0
- package/dist/theme/componentTokens.d.ts +24 -0
- package/dist/theme/componentTokens.d.ts.map +1 -0
- package/dist/theme/componentTokens.js +20 -0
- package/dist/theme/componentTokens.js.map +1 -0
- package/dist/theme/components.d.ts +38 -0
- package/dist/theme/components.d.ts.map +1 -0
- package/dist/theme/components.js +65 -0
- package/dist/theme/components.js.map +1 -0
- package/dist/theme/defineTheme.d.ts +85 -0
- package/dist/theme/defineTheme.d.ts.map +1 -0
- package/dist/theme/defineTheme.js +130 -0
- package/dist/theme/defineTheme.js.map +1 -0
- package/dist/theme/fonts.d.ts +32 -0
- package/dist/theme/fonts.d.ts.map +1 -0
- package/dist/theme/fonts.js +36 -0
- package/dist/theme/fonts.js.map +1 -0
- package/dist/theme/index.d.ts +13 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +10 -0
- package/dist/theme/semanticTokens.d.ts +9 -0
- package/dist/theme/semanticTokens.d.ts.map +1 -0
- package/dist/theme/semanticTokens.js +110 -0
- package/dist/theme/semanticTokens.js.map +1 -0
- package/dist/theme/theme.d.ts +61 -7
- package/dist/theme/theme.d.ts.map +1 -1
- package/dist/theme/theme.js +100 -10
- package/dist/theme/theme.js.map +1 -1
- package/dist/theme/toneClass.d.ts +8 -0
- package/dist/theme/toneClass.d.ts.map +1 -0
- package/dist/theme/toneClass.js +15 -0
- package/dist/theme/toneClass.js.map +1 -0
- package/dist/theme/tones.d.ts +89 -0
- package/dist/theme/tones.d.ts.map +1 -0
- package/dist/theme/tones.js +127 -0
- package/dist/theme/tones.js.map +1 -0
- package/dist/time-input/TimeInput.js +1 -1
- package/dist/time-input/TimeInput.js.map +1 -1
- package/dist/toast/Toast.css +22 -44
- package/dist/toast/Toast.d.ts +5 -3
- package/dist/toast/Toast.d.ts.map +1 -1
- package/dist/toast/Toast.js +4 -3
- package/dist/toast/Toast.js.map +1 -1
- package/dist/toast/Toast.module.js +10 -16
- package/dist/toast/Toast.module.js.map +1 -1
- package/dist/toast/tokens.d.ts +3 -0
- package/dist/toast/tokens.d.ts.map +1 -0
- package/dist/toast/tokens.js +21 -0
- package/dist/toast/tokens.js.map +1 -0
- package/dist/tooltip/Tooltip.css +12 -11
- package/dist/tooltip/Tooltip.js +1 -1
- package/dist/tooltip/Tooltip.js.map +1 -1
- package/dist/tooltip/Tooltip.module.js +2 -2
- package/dist/tooltip/Tooltip.module.js.map +1 -1
- package/dist/tooltip/tokens.d.ts +3 -0
- package/dist/tooltip/tokens.d.ts.map +1 -0
- package/dist/tooltip/tokens.js +21 -0
- package/dist/tooltip/tokens.js.map +1 -0
- package/dist/utils/cx.d.ts +1 -1
- package/dist/utils/cx.d.ts.map +1 -1
- package/dist/utils/cx.js +2 -2
- package/dist/utils/cx.js.map +1 -1
- 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
|
|
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
|
-
/*
|
|
53
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
/*
|
|
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
|
|
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
|
|
355
|
+
:where(.panneau-root) {
|
|
194
356
|
--panneau-duration: 0ms;
|
|
195
357
|
}
|
|
196
358
|
}
|
|
197
359
|
|
|
198
|
-
/* Base stylesheet, scoped to the root,
|
|
360
|
+
/* Base stylesheet, scoped to the root, with less weight than any class: components and projects override it. */
|
|
199
361
|
|
|
200
|
-
.panneau-root
|
|
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
|
-
|
|
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
|
|
387
|
+
:where(.panneau-root) :where(*, *::before, *::after) {
|
|
217
388
|
box-sizing: border-box;
|
|
218
389
|
}
|
|
219
390
|
|
|
220
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
443
|
+
:where(.panneau-root) :is(a):is(a) {
|
|
236
444
|
color: var(--panneau-color-link);
|
|
237
445
|
}
|
|
238
446
|
|
|
239
|
-
:where(.panneau-root
|
|
447
|
+
:where(.panneau-root) :where(img, svg, video) {
|
|
240
448
|
max-width: 100%;
|
|
241
449
|
}
|
|
242
450
|
|
|
243
|
-
:where(.panneau-root
|
|
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
|
|
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
|
|
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
|
-
/**
|
|
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,
|
|
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"}
|
package/dist/root/PanneauRoot.js
CHANGED
|
@@ -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
|
|
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
|
|
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: [
|
|
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(
|
|
60
|
-
value:
|
|
61
|
-
children: /* @__PURE__ */ jsx(
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
|
4
|
-
var
|
|
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
|