@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
|
@@ -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 @@
|
|
|
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-
|
|
2
|
+
.panneau-text-area-control.panneau-text-area-control {
|
|
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,
|
|
@@ -22,7 +22,7 @@ function TextArea$1({ label, description, errors = [], placeholder, rows = 4, cl
|
|
|
22
22
|
/* @__PURE__ */ jsx(TextArea, {
|
|
23
23
|
placeholder,
|
|
24
24
|
rows,
|
|
25
|
-
className: cx(Field_module_default.control, TextArea_module_default.
|
|
25
|
+
className: cx(Field_module_default.control, TextArea_module_default.control, textAreaClassName)
|
|
26
26
|
}),
|
|
27
27
|
/* @__PURE__ */ jsx(FieldDescription, {
|
|
28
28
|
className: descriptionClassName,
|
|
@@ -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.
|
|
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.control, 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,SAAS,iBAAiB;GAAE,CAAA;GAE1E,oBAAC,kBAAD;IAAkB,WAAW;IAAuB,UAAA;GAA8B,CAAA;GAClF,oBAAC,aAAD;IAAqB;IAAQ,WAAW;GAAgB,CAAA;EACjD;;AAEnB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./TextArea.css";
|
|
2
2
|
//#region src/text-area/TextArea.module.css
|
|
3
|
-
var
|
|
4
|
-
var TextArea_module_default = {
|
|
3
|
+
var control = "panneau-text-area-control";
|
|
4
|
+
var TextArea_module_default = { control };
|
|
5
5
|
//#endregion
|
|
6
|
-
export { TextArea_module_default as default
|
|
6
|
+
export { control, TextArea_module_default as default };
|
|
7
7
|
|
|
8
8
|
//# sourceMappingURL=TextArea.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextArea.module.js","names":[],"sources":["../../src/text-area/TextArea.module.css"],"sourcesContent":["/* Doubled class: overrides the shared control, whatever the CSS order. */\n.
|
|
1
|
+
{"version":3,"file":"TextArea.module.js","names":[],"sources":["../../src/text-area/TextArea.module.css"],"sourcesContent":["/* Doubled class: overrides the shared control, whatever the CSS order. */\n.control.control {\n display: block;\n min-height: calc(var(--panneau-control-height) * 2);\n padding: var(--panneau-space-2) var(--panneau-space-3);\n line-height: var(--panneau-line-height);\n resize: vertical;\n}\n"],"mappings":""}
|
|
@@ -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,
|
|
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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/theme/bootstrap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/theme/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;GAKG;AACH,wBAAgB,aAAa,CACzB,KAAK,EAAE,MAAM,EACb,EAAE,SAA6B,EAAE,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/D,UAAU,CAUZ;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,KAoFF,CAAC"}
|
package/dist/theme/bootstrap.js
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
//#region src/theme/bootstrap.ts
|
|
2
2
|
/**
|
|
3
|
+
* A tone from one of Bootstrap's theme colors, read from its CSS variables (`--bs-<color>`,
|
|
4
|
+
* `-text-emphasis`, `-bg-subtle`, `-border-subtle`), so that a site's custom colors carry over:
|
|
5
|
+
* `tones: { brand: bootstrapTone('brand') }`. Text on the subtle background uses the emphasis
|
|
6
|
+
* color, as Bootstrap's alerts do. Light colors need dark solid text: `{ solidText: 'var(--bs-dark)' }`.
|
|
7
|
+
*/
|
|
8
|
+
function bootstrapTone(color, { solidText = "var(--bs-white)" } = {}) {
|
|
9
|
+
return {
|
|
10
|
+
text: `var(--bs-${color}-text-emphasis)`,
|
|
11
|
+
subtle: `var(--bs-${color}-bg-subtle)`,
|
|
12
|
+
border: `var(--bs-${color}-border-subtle)`,
|
|
13
|
+
outline: `var(--bs-${color})`,
|
|
14
|
+
solid: `var(--bs-${color})`,
|
|
15
|
+
solidHover: `color-mix(in srgb, var(--bs-${color}), #000 15%)`,
|
|
16
|
+
solidText
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
3
20
|
* Maps Panneau's tokens to the CSS variables of Bootstrap 5.3, for sites that use Bootstrap: Panneau
|
|
4
21
|
* then follows the site's colors, fonts and radii, and its color mode (`data-bs-theme`), without
|
|
5
22
|
* using any Bootstrap class. Bootstrap's CSS must be loaded by the site.
|
|
@@ -32,16 +49,24 @@ var bootstrapTheme = {
|
|
|
32
49
|
"panneau-color-success": "var(--bs-success-text-emphasis)",
|
|
33
50
|
"panneau-color-success-subtle": "var(--bs-success-bg-subtle)",
|
|
34
51
|
"panneau-color-success-border": "var(--bs-success-border-subtle)",
|
|
52
|
+
"panneau-color-success-solid": "var(--bs-success)",
|
|
53
|
+
"panneau-color-success-solid-hover": "color-mix(in srgb, var(--bs-success), #000 15%)",
|
|
54
|
+
"panneau-color-success-solid-text": "var(--bs-white)",
|
|
35
55
|
"panneau-color-warning": "var(--bs-warning-text-emphasis)",
|
|
36
56
|
"panneau-color-warning-subtle": "var(--bs-warning-bg-subtle)",
|
|
37
57
|
"panneau-color-warning-border": "var(--bs-warning-border-subtle)",
|
|
58
|
+
"panneau-color-warning-solid": "var(--bs-warning)",
|
|
59
|
+
"panneau-color-warning-solid-hover": "color-mix(in srgb, var(--bs-warning), #000 10%)",
|
|
60
|
+
"panneau-color-warning-solid-text": "var(--bs-dark)",
|
|
38
61
|
"panneau-color-info": "var(--bs-info-text-emphasis)",
|
|
39
62
|
"panneau-color-info-subtle": "var(--bs-info-bg-subtle)",
|
|
40
63
|
"panneau-color-info-border": "var(--bs-info-border-subtle)",
|
|
41
|
-
"panneau-
|
|
64
|
+
"panneau-color-info-solid": "var(--bs-info)",
|
|
65
|
+
"panneau-color-info-solid-hover": "color-mix(in srgb, var(--bs-info), #000 10%)",
|
|
66
|
+
"panneau-color-info-solid-text": "var(--bs-dark)",
|
|
67
|
+
"panneau-font-family-body": "var(--bs-body-font-family)",
|
|
42
68
|
"panneau-font-family-mono": "var(--bs-font-monospace)",
|
|
43
69
|
"panneau-font-size-md": "var(--bs-body-font-size)",
|
|
44
|
-
"panneau-font-size-control": "var(--bs-body-font-size)",
|
|
45
70
|
"panneau-line-height": "var(--bs-body-line-height)",
|
|
46
71
|
"panneau-radius-sm": "var(--bs-border-radius-sm)",
|
|
47
72
|
"panneau-radius-md": "var(--bs-border-radius)",
|
|
@@ -51,11 +76,29 @@ var bootstrapTheme = {
|
|
|
51
76
|
"panneau-shadow-sm": "var(--bs-box-shadow-sm)",
|
|
52
77
|
"panneau-shadow-md": "var(--bs-box-shadow)",
|
|
53
78
|
"panneau-shadow-lg": "var(--bs-box-shadow-lg)",
|
|
79
|
+
"panneau-heading-color": "var(--bs-heading-color)",
|
|
80
|
+
"panneau-badge-radius": "var(--bs-border-radius)",
|
|
81
|
+
"panneau-card-radius": "var(--bs-border-radius)",
|
|
82
|
+
"panneau-card-border-color": "var(--bs-border-color-translucent)",
|
|
83
|
+
"panneau-popover-radius": "var(--bs-border-radius)",
|
|
84
|
+
"panneau-popover-border-color": "var(--bs-border-color-translucent)",
|
|
85
|
+
"panneau-tooltip-bg": "var(--bs-emphasis-color)",
|
|
86
|
+
"panneau-tooltip-color": "var(--bs-body-bg)",
|
|
87
|
+
"panneau-tooltip-radius": "var(--bs-border-radius)"
|
|
88
|
+
},
|
|
89
|
+
tones: {
|
|
90
|
+
accent: bootstrapTone("primary"),
|
|
91
|
+
primary: bootstrapTone("primary"),
|
|
92
|
+
secondary: bootstrapTone("secondary")
|
|
93
|
+
},
|
|
94
|
+
densities: { comfortable: {
|
|
95
|
+
"panneau-font-size-control": "var(--bs-body-font-size)",
|
|
54
96
|
"panneau-control-height": "calc(1.5em + 0.75rem + 2 * var(--bs-border-width))",
|
|
55
|
-
"panneau-control-height-sm": "calc(1.5em + 0.5rem + 2 * var(--bs-border-width))"
|
|
56
|
-
|
|
97
|
+
"panneau-control-height-sm": "calc(1.5em + 0.5rem + 2 * var(--bs-border-width))",
|
|
98
|
+
"panneau-control-padding-x": "0.75rem"
|
|
99
|
+
} }
|
|
57
100
|
};
|
|
58
101
|
//#endregion
|
|
59
|
-
export { bootstrapTheme };
|
|
102
|
+
export { bootstrapTheme, bootstrapTone };
|
|
60
103
|
|
|
61
104
|
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","names":[],"sources":["../../src/theme/bootstrap.ts"],"sourcesContent":["import type { Theme } from './theme';\n\n/**\n * Maps Panneau's tokens to the CSS variables of Bootstrap 5.3, for sites that use Bootstrap: Panneau\n * then follows the site's colors, fonts and radii, and its color mode (`data-bs-theme`), without\n * using any Bootstrap class. Bootstrap's CSS must be loaded by the site.\n */\nexport const bootstrapTheme: Theme = {\n label: 'Bootstrap',\n tokens: {\n 'panneau-color-bg': 'var(--bs-body-bg)',\n 'panneau-color-surface': 'var(--bs-body-bg)',\n 'panneau-color-surface-sunken': 'var(--bs-tertiary-bg)',\n 'panneau-color-surface-raised': 'var(--bs-body-bg)',\n 'panneau-color-hover': 'rgba(var(--bs-emphasis-color-rgb), 0.06)',\n 'panneau-color-pressed': 'rgba(var(--bs-emphasis-color-rgb), 0.1)',\n 'panneau-color-text': 'var(--bs-body-color)',\n 'panneau-color-text-muted': 'var(--bs-secondary-color)',\n 'panneau-color-link': 'var(--bs-link-color)',\n 'panneau-color-border': 'var(--bs-border-color)',\n 'panneau-color-border-control': 'var(--bs-border-color)',\n 'panneau-color-accent': 'var(--bs-primary)',\n 'panneau-color-accent-hover': 'color-mix(in srgb, var(--bs-primary), #000 15%)',\n 'panneau-color-accent-text': 'var(--bs-white)',\n 'panneau-color-accent-subtle': 'var(--bs-primary-bg-subtle)',\n 'panneau-color-focus': 'rgba(var(--bs-primary-rgb), 0.5)',\n 'panneau-color-danger': 'var(--bs-danger-text-emphasis)',\n 'panneau-color-danger-subtle': 'var(--bs-danger-bg-subtle)',\n 'panneau-color-danger-border': 'var(--bs-danger-border-subtle)',\n 'panneau-color-danger-solid': 'var(--bs-danger)',\n 'panneau-color-danger-solid-hover': 'color-mix(in srgb, var(--bs-danger), #000 15%)',\n 'panneau-color-danger-solid-text': 'var(--bs-white)',\n 'panneau-color-success': 'var(--bs-success-text-emphasis)',\n 'panneau-color-success-subtle': 'var(--bs-success-bg-subtle)',\n 'panneau-color-success-border': 'var(--bs-success-border-subtle)',\n 'panneau-color-warning': 'var(--bs-warning-text-emphasis)',\n 'panneau-color-warning-subtle': 'var(--bs-warning-bg-subtle)',\n 'panneau-color-warning-border': 'var(--bs-warning-border-subtle)',\n 'panneau-color-info': 'var(--bs-info-text-emphasis)',\n 'panneau-color-info-subtle': 'var(--bs-info-bg-subtle)',\n 'panneau-color-info-border': 'var(--bs-info-border-subtle)',\n 'panneau-
|
|
1
|
+
{"version":3,"file":"bootstrap.js","names":[],"sources":["../../src/theme/bootstrap.ts"],"sourcesContent":["import type { ThemeDefinition } from './defineTheme';\nimport type { Theme } from './theme';\nimport type { ToneValues } from './tones';\n\n/**\n * A tone from one of Bootstrap's theme colors, read from its CSS variables (`--bs-<color>`,\n * `-text-emphasis`, `-bg-subtle`, `-border-subtle`), so that a site's custom colors carry over:\n * `tones: { brand: bootstrapTone('brand') }`. Text on the subtle background uses the emphasis\n * color, as Bootstrap's alerts do. Light colors need dark solid text: `{ solidText: 'var(--bs-dark)' }`.\n */\nexport function bootstrapTone(\n color: string,\n { solidText = 'var(--bs-white)' }: { solidText?: string } = {},\n): ToneValues {\n return {\n text: `var(--bs-${color}-text-emphasis)`,\n subtle: `var(--bs-${color}-bg-subtle)`,\n border: `var(--bs-${color}-border-subtle)`,\n outline: `var(--bs-${color})`,\n solid: `var(--bs-${color})`,\n solidHover: `color-mix(in srgb, var(--bs-${color}), #000 15%)`,\n solidText,\n };\n}\n\n/**\n * Maps Panneau's tokens to the CSS variables of Bootstrap 5.3, for sites that use Bootstrap: Panneau\n * then follows the site's colors, fonts and radii, and its color mode (`data-bs-theme`), without\n * using any Bootstrap class. Bootstrap's CSS must be loaded by the site.\n */\nexport const bootstrapTheme: Theme = {\n label: 'Bootstrap',\n tokens: {\n 'panneau-color-bg': 'var(--bs-body-bg)',\n 'panneau-color-surface': 'var(--bs-body-bg)',\n 'panneau-color-surface-sunken': 'var(--bs-tertiary-bg)',\n 'panneau-color-surface-raised': 'var(--bs-body-bg)',\n 'panneau-color-hover': 'rgba(var(--bs-emphasis-color-rgb), 0.06)',\n 'panneau-color-pressed': 'rgba(var(--bs-emphasis-color-rgb), 0.1)',\n 'panneau-color-text': 'var(--bs-body-color)',\n 'panneau-color-text-muted': 'var(--bs-secondary-color)',\n 'panneau-color-link': 'var(--bs-link-color)',\n 'panneau-color-border': 'var(--bs-border-color)',\n 'panneau-color-border-control': 'var(--bs-border-color)',\n 'panneau-color-accent': 'var(--bs-primary)',\n 'panneau-color-accent-hover': 'color-mix(in srgb, var(--bs-primary), #000 15%)',\n 'panneau-color-accent-text': 'var(--bs-white)',\n 'panneau-color-accent-subtle': 'var(--bs-primary-bg-subtle)',\n 'panneau-color-focus': 'rgba(var(--bs-primary-rgb), 0.5)',\n 'panneau-color-danger': 'var(--bs-danger-text-emphasis)',\n 'panneau-color-danger-subtle': 'var(--bs-danger-bg-subtle)',\n 'panneau-color-danger-border': 'var(--bs-danger-border-subtle)',\n 'panneau-color-danger-solid': 'var(--bs-danger)',\n 'panneau-color-danger-solid-hover': 'color-mix(in srgb, var(--bs-danger), #000 15%)',\n 'panneau-color-danger-solid-text': 'var(--bs-white)',\n 'panneau-color-success': 'var(--bs-success-text-emphasis)',\n 'panneau-color-success-subtle': 'var(--bs-success-bg-subtle)',\n 'panneau-color-success-border': 'var(--bs-success-border-subtle)',\n 'panneau-color-success-solid': 'var(--bs-success)',\n 'panneau-color-success-solid-hover': 'color-mix(in srgb, var(--bs-success), #000 15%)',\n 'panneau-color-success-solid-text': 'var(--bs-white)',\n 'panneau-color-warning': 'var(--bs-warning-text-emphasis)',\n 'panneau-color-warning-subtle': 'var(--bs-warning-bg-subtle)',\n 'panneau-color-warning-border': 'var(--bs-warning-border-subtle)',\n 'panneau-color-warning-solid': 'var(--bs-warning)',\n 'panneau-color-warning-solid-hover': 'color-mix(in srgb, var(--bs-warning), #000 10%)',\n // Like Bootstrap's .btn-warning and .text-bg-warning: dark text on yellow.\n 'panneau-color-warning-solid-text': 'var(--bs-dark)',\n 'panneau-color-info': 'var(--bs-info-text-emphasis)',\n 'panneau-color-info-subtle': 'var(--bs-info-bg-subtle)',\n 'panneau-color-info-border': 'var(--bs-info-border-subtle)',\n 'panneau-color-info-solid': 'var(--bs-info)',\n 'panneau-color-info-solid-hover': 'color-mix(in srgb, var(--bs-info), #000 10%)',\n 'panneau-color-info-solid-text': 'var(--bs-dark)',\n 'panneau-font-family-body': 'var(--bs-body-font-family)',\n 'panneau-font-family-mono': 'var(--bs-font-monospace)',\n 'panneau-font-size-md': 'var(--bs-body-font-size)',\n 'panneau-line-height': 'var(--bs-body-line-height)',\n 'panneau-radius-sm': 'var(--bs-border-radius-sm)',\n 'panneau-radius-md': 'var(--bs-border-radius)',\n 'panneau-radius-lg': 'var(--bs-border-radius-lg)',\n 'panneau-radius-full': 'var(--bs-border-radius-pill)',\n 'panneau-border-width': 'var(--bs-border-width)',\n 'panneau-shadow-sm': 'var(--bs-box-shadow-sm)',\n 'panneau-shadow-md': 'var(--bs-box-shadow)',\n 'panneau-shadow-lg': 'var(--bs-box-shadow-lg)',\n // Bootstrap 5.3 declares its component variables (--bs-btn-*, --bs-card-*) on the classes\n // of its components, out of reach: components map to the root variables those default to.\n 'panneau-heading-color': 'var(--bs-heading-color)',\n 'panneau-badge-radius': 'var(--bs-border-radius)',\n 'panneau-card-radius': 'var(--bs-border-radius)',\n 'panneau-card-border-color': 'var(--bs-border-color-translucent)',\n 'panneau-popover-radius': 'var(--bs-border-radius)',\n 'panneau-popover-border-color': 'var(--bs-border-color-translucent)',\n 'panneau-tooltip-bg': 'var(--bs-emphasis-color)',\n 'panneau-tooltip-color': 'var(--bs-body-bg)',\n 'panneau-tooltip-radius': 'var(--bs-border-radius)',\n },\n // Bootstrap's theme colors as tones: accent is primary, and primary and secondary are there by\n // their Bootstrap names (declare them in PanneauTones to use them).\n tones: {\n accent: bootstrapTone('primary'),\n primary: bootstrapTone('primary'),\n secondary: bootstrapTone('secondary'),\n },\n // Bootstrap's sizes of controls are those of the comfortable density: the others keep Panneau's.\n densities: {\n comfortable: {\n 'panneau-font-size-control': 'var(--bs-body-font-size)',\n 'panneau-control-height': 'calc(1.5em + 0.75rem + 2 * var(--bs-border-width))',\n 'panneau-control-height-sm': 'calc(1.5em + 0.5rem + 2 * var(--bs-border-width))',\n 'panneau-control-padding-x': '0.75rem',\n },\n },\n} satisfies ThemeDefinition;\n"],"mappings":";;;;;;;AAUA,SAAgB,cACZ,OACA,EAAE,YAAY,sBAA8C,CAAC,GACnD;CACV,OAAO;EACH,MAAM,YAAY,MAAK;EACvB,QAAQ,YAAY,MAAK;EACzB,QAAQ,YAAY,MAAK;EACzB,SAAS,YAAY,MAAK;EAC1B,OAAO,YAAY,MAAK;EACxB,YAAY,+BAA+B,MAAK;EAChD;CACJ;AACJ;;;;;;AAOA,IAAa,iBAAwB;CACjC,OAAO;CACP,QAAQ;EACJ,oBAAoB;EACpB,yBAAyB;EACzB,gCAAgC;EAChC,gCAAgC;EAChC,uBAAuB;EACvB,yBAAyB;EACzB,sBAAsB;EACtB,4BAA4B;EAC5B,sBAAsB;EACtB,wBAAwB;EACxB,gCAAgC;EAChC,wBAAwB;EACxB,8BAA8B;EAC9B,6BAA6B;EAC7B,+BAA+B;EAC/B,uBAAuB;EACvB,wBAAwB;EACxB,+BAA+B;EAC/B,+BAA+B;EAC/B,8BAA8B;EAC9B,oCAAoC;EACpC,mCAAmC;EACnC,yBAAyB;EACzB,gCAAgC;EAChC,gCAAgC;EAChC,+BAA+B;EAC/B,qCAAqC;EACrC,oCAAoC;EACpC,yBAAyB;EACzB,gCAAgC;EAChC,gCAAgC;EAChC,+BAA+B;EAC/B,qCAAqC;EAErC,oCAAoC;EACpC,sBAAsB;EACtB,6BAA6B;EAC7B,6BAA6B;EAC7B,4BAA4B;EAC5B,kCAAkC;EAClC,iCAAiC;EACjC,4BAA4B;EAC5B,4BAA4B;EAC5B,wBAAwB;EACxB,uBAAuB;EACvB,qBAAqB;EACrB,qBAAqB;EACrB,qBAAqB;EACrB,uBAAuB;EACvB,wBAAwB;EACxB,qBAAqB;EACrB,qBAAqB;EACrB,qBAAqB;EAGrB,yBAAyB;EACzB,wBAAwB;EACxB,uBAAuB;EACvB,6BAA6B;EAC7B,0BAA0B;EAC1B,gCAAgC;EAChC,sBAAsB;EACtB,yBAAyB;EACzB,0BAA0B;CAC9B;CAGA,OAAO;EACH,QAAQ,cAAc,SAAS;EAC/B,SAAS,cAAc,SAAS;EAChC,WAAW,cAAc,WAAW;CACxC;CAEA,WAAW,EACP,aAAa;EACT,6BAA6B;EAC7B,0BAA0B;EAC1B,6BAA6B;EAC7B,6BAA6B;CACjC,EACJ;AACJ"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** The number of categorical chart colors: series beyond it reuse them in order. */
|
|
2
|
+
export declare const CHART_CATEGORICAL_COUNT = 8;
|
|
3
|
+
/** The number of steps of the sequential chart ramp. */
|
|
4
|
+
export declare const CHART_SEQUENTIAL_COUNT = 5;
|
|
5
|
+
/**
|
|
6
|
+
* The colors of charts, as CSS variables for `fill` and `stroke`: they follow the theme, the color
|
|
7
|
+
* scheme and the scope of the chart. Dashboard charts use only these.
|
|
8
|
+
*
|
|
9
|
+
* - `categorical(index)`: the color of a series, in a fixed order (`index` from 0), repeating after
|
|
10
|
+
* 8. Each one reaches 3:1 against the surface and stays distinct with color vision deficiencies.
|
|
11
|
+
* - `sequential(step)`: a step from 1 (low) to 5 (high) of a ramp, for quantities.
|
|
12
|
+
* - `diverging`: two colors around a neutral midpoint, for values above and below a reference.
|
|
13
|
+
*/
|
|
14
|
+
export declare const chartColors: Readonly<{
|
|
15
|
+
categorical: (index: number) => string;
|
|
16
|
+
sequential: (step: 1 | 2 | 3 | 4 | 5) => string;
|
|
17
|
+
diverging: Readonly<{
|
|
18
|
+
negative: "var(--panneau-chart-diverging-negative)";
|
|
19
|
+
neutral: "var(--panneau-chart-diverging-neutral)";
|
|
20
|
+
positive: "var(--panneau-chart-diverging-positive)";
|
|
21
|
+
}>;
|
|
22
|
+
}>;
|
|
23
|
+
//# sourceMappingURL=chartColors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chartColors.d.ts","sourceRoot":"","sources":["../../src/theme/chartColors.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,wDAAwD;AACxD,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW;yBACC,MAAM,KAAG,MAAM;uBAEjB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAG,MAAM;;;;;;EAM/C,CAAC"}
|