@warp-ds/elements 2.3.0-next.9 → 2.3.1
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/dist/custom-elements.json +156 -3728
- package/dist/index.d.ts +34 -717
- package/dist/packages/affix/index.js.map +2 -2
- package/dist/packages/alert/index.js.map +2 -2
- package/dist/packages/attention/attention.stories.js +4 -1
- package/dist/packages/attention/index.js +55 -19
- package/dist/packages/attention/index.js.map +3 -3
- package/dist/packages/attention/styles.js +1 -1
- package/dist/packages/badge/index.js.map +2 -2
- package/dist/packages/box/index.js.map +2 -2
- package/dist/packages/breadcrumbs/index.js.map +2 -2
- package/dist/packages/button/button.react.stories.d.ts +1 -1
- package/dist/packages/button/button.stories.d.ts +4 -4
- package/dist/packages/button/button.stories.js +4 -4
- package/dist/packages/button/button.test.js +30 -1
- package/dist/packages/button/index.d.ts +2 -0
- package/dist/packages/button/index.js +49 -13
- package/dist/packages/button/index.js.map +3 -3
- package/dist/packages/card/index.js.map +2 -2
- package/dist/packages/datepicker/datepicker.d.ts +1 -0
- package/dist/packages/datepicker/datepicker.js +439 -2732
- package/dist/packages/datepicker/datepicker.react.stories.d.ts +1 -1
- package/dist/packages/datepicker/datepicker.test.js +27 -0
- package/dist/packages/datepicker/index.js +2785 -1
- package/dist/packages/datepicker/{datepicker.js.map → index.js.map} +3 -3
- package/dist/packages/expandable/index.js.map +2 -2
- package/dist/packages/link/index.d.ts +2 -8
- package/dist/packages/link/index.js +43 -7
- package/dist/packages/link/index.js.map +4 -4
- package/dist/packages/link/link.react.stories.d.ts +6 -4
- package/dist/packages/link/link.react.stories.js +22 -12
- package/dist/packages/link/link.stories.d.ts +5 -3
- package/dist/packages/link/link.stories.js +22 -12
- package/dist/packages/link/styles.js +36 -0
- package/dist/packages/modal/index.js.map +2 -2
- package/dist/packages/modal/modal-header.js.map +2 -2
- package/dist/packages/modal/modal.stories.d.ts +3 -3
- package/dist/packages/modal/modal.stories.js +32 -32
- package/dist/packages/pill/index.js.map +2 -2
- package/dist/packages/select/index.d.ts +26 -5
- package/dist/packages/select/index.js +17 -16
- package/dist/packages/select/index.js.map +3 -3
- package/dist/packages/select/select.react.stories.d.ts +1 -1
- package/dist/packages/select/select.stories.d.ts +1 -1
- package/dist/packages/select/select.stories.js +3 -4
- package/dist/packages/select/select.test.js +30 -0
- package/dist/packages/textfield/index.d.ts +4 -0
- package/dist/packages/textfield/index.js +20 -19
- package/dist/packages/textfield/index.js.map +3 -3
- package/dist/packages/textfield/textfield.react.stories.d.ts +1 -1
- package/dist/packages/textfield/textfield.stories.d.ts +1 -0
- package/dist/packages/textfield/textfield.stories.js +17 -0
- package/dist/web-types.json +44 -707
- package/package.json +11 -89
- package/dist/packages/combobox/combobox.react.stories.d.ts +0 -28
- package/dist/packages/combobox/combobox.react.stories.js +0 -90
- package/dist/packages/combobox/combobox.stories.d.ts +0 -18
- package/dist/packages/combobox/combobox.stories.js +0 -117
- package/dist/packages/combobox/index.d.ts +0 -85
- package/dist/packages/combobox/index.js +0 -2492
- package/dist/packages/combobox/index.js.map +0 -7
- package/dist/packages/combobox/locales/da/messages.d.mts +0 -1
- package/dist/packages/combobox/locales/da/messages.mjs +0 -1
- package/dist/packages/combobox/locales/en/messages.d.mts +0 -1
- package/dist/packages/combobox/locales/en/messages.mjs +0 -1
- package/dist/packages/combobox/locales/fi/messages.d.mts +0 -1
- package/dist/packages/combobox/locales/fi/messages.mjs +0 -1
- package/dist/packages/combobox/locales/nb/messages.d.mts +0 -1
- package/dist/packages/combobox/locales/nb/messages.mjs +0 -1
- package/dist/packages/combobox/locales/sv/messages.d.mts +0 -1
- package/dist/packages/combobox/locales/sv/messages.mjs +0 -1
- package/dist/packages/combobox/react.d.ts +0 -7
- package/dist/packages/combobox/react.js +0 -17
- package/dist/packages/combobox/styles.d.ts +0 -1
- package/dist/packages/combobox/styles.js +0 -2
- package/dist/packages/dead-toggle/dead-toggle.react.stories.d.ts +0 -15
- package/dist/packages/dead-toggle/dead-toggle.react.stories.js +0 -34
- package/dist/packages/dead-toggle/dead-toggle.stories.d.ts +0 -14
- package/dist/packages/dead-toggle/dead-toggle.stories.js +0 -45
- package/dist/packages/dead-toggle/dead-toggle.test.d.ts +0 -1
- package/dist/packages/dead-toggle/dead-toggle.test.js +0 -9
- package/dist/packages/dead-toggle/index.d.ts +0 -17
- package/dist/packages/dead-toggle/index.js +0 -2547
- package/dist/packages/dead-toggle/index.js.map +0 -7
- package/dist/packages/dead-toggle/react.d.ts +0 -2
- package/dist/packages/dead-toggle/react.js +0 -11
- package/dist/packages/pageindicator/index.d.ts +0 -10
- package/dist/packages/pageindicator/index.js +0 -32
- package/dist/packages/pageindicator/index.js.map +0 -7
- package/dist/packages/pageindicator/pageindicator.react.stories.d.ts +0 -19
- package/dist/packages/pageindicator/pageindicator.react.stories.js +0 -20
- package/dist/packages/pageindicator/pageindicator.stories.d.ts +0 -32
- package/dist/packages/pageindicator/pageindicator.stories.js +0 -71
- package/dist/packages/pageindicator/react.d.ts +0 -2
- package/dist/packages/pageindicator/react.js +0 -11
- package/dist/packages/pageindicator/style.d.ts +0 -1
- package/dist/packages/pageindicator/style.js +0 -26
- package/dist/packages/pagination/index.d.ts +0 -32
- package/dist/packages/pagination/index.js +0 -2500
- package/dist/packages/pagination/index.js.map +0 -7
- package/dist/packages/pagination/locales/da/messages.d.mts +0 -1
- package/dist/packages/pagination/locales/da/messages.mjs +0 -1
- package/dist/packages/pagination/locales/en/messages.d.mts +0 -1
- package/dist/packages/pagination/locales/en/messages.mjs +0 -1
- package/dist/packages/pagination/locales/fi/messages.d.mts +0 -1
- package/dist/packages/pagination/locales/fi/messages.mjs +0 -1
- package/dist/packages/pagination/locales/nb/messages.d.mts +0 -1
- package/dist/packages/pagination/locales/nb/messages.mjs +0 -1
- package/dist/packages/pagination/locales/sv/messages.d.mts +0 -1
- package/dist/packages/pagination/locales/sv/messages.mjs +0 -1
- package/dist/packages/pagination/pagination.react.stories.d.ts +0 -21
- package/dist/packages/pagination/pagination.react.stories.js +0 -45
- package/dist/packages/pagination/pagination.stories.d.ts +0 -14
- package/dist/packages/pagination/pagination.stories.js +0 -56
- package/dist/packages/pagination/pagination.test.d.ts +0 -1
- package/dist/packages/pagination/pagination.test.js +0 -76
- package/dist/packages/pagination/react.d.ts +0 -5
- package/dist/packages/pagination/react.js +0 -15
- package/dist/packages/pagination/styles.d.ts +0 -1
- package/dist/packages/pagination/styles.js +0 -2
- package/dist/packages/rip-and-tear-checkbox/checkbox-group.d.ts +0 -10
- package/dist/packages/rip-and-tear-checkbox/checkbox-group.js +0 -7
- package/dist/packages/rip-and-tear-checkbox/checkbox-group.js.map +0 -7
- package/dist/packages/rip-and-tear-checkbox/checkbox.d.ts +0 -66
- package/dist/packages/rip-and-tear-checkbox/checkbox.js +0 -2591
- package/dist/packages/rip-and-tear-checkbox/checkbox.js.map +0 -7
- package/dist/packages/rip-and-tear-checkbox/checkbox.stories.d.ts +0 -11
- package/dist/packages/rip-and-tear-checkbox/checkbox.stories.js +0 -25
- package/dist/packages/rip-and-tear-checkbox/index.d.ts +0 -1
- package/dist/packages/rip-and-tear-checkbox/index.js +0 -6
- package/dist/packages/rip-and-tear-checkbox/react.d.ts +0 -7
- package/dist/packages/rip-and-tear-checkbox/react.js +0 -20
- package/dist/packages/rip-and-tear-checkbox/rip-and-tear-checkbox.react.stories.d.ts +0 -12
- package/dist/packages/rip-and-tear-checkbox/rip-and-tear-checkbox.react.stories.js +0 -10
- package/dist/packages/rip-and-tear-checkbox/styles.d.ts +0 -0
- package/dist/packages/rip-and-tear-checkbox/styles.js +0 -0
- package/dist/packages/rip-and-tear-radio/base-element.d.ts +0 -46
- package/dist/packages/rip-and-tear-radio/base-element.js +0 -100
- package/dist/packages/rip-and-tear-radio/custom-error-validator.d.ts +0 -6
- package/dist/packages/rip-and-tear-radio/custom-error-validator.js +0 -22
- package/dist/packages/rip-and-tear-radio/form-associated-element.d.ts +0 -103
- package/dist/packages/rip-and-tear-radio/form-associated-element.js +0 -282
- package/dist/packages/rip-and-tear-radio/host-styles.d.ts +0 -1
- package/dist/packages/rip-and-tear-radio/host-styles.js +0 -12
- package/dist/packages/rip-and-tear-radio/index.d.ts +0 -1
- package/dist/packages/rip-and-tear-radio/index.js +0 -6
- package/dist/packages/rip-and-tear-radio/invalid.d.ts +0 -8
- package/dist/packages/rip-and-tear-radio/invalid.js +0 -5
- package/dist/packages/rip-and-tear-radio/math.d.ts +0 -1
- package/dist/packages/rip-and-tear-radio/math.js +0 -4
- package/dist/packages/rip-and-tear-radio/radio-group-styles.d.ts +0 -1
- package/dist/packages/rip-and-tear-radio/radio-group-styles.js +0 -59
- package/dist/packages/rip-and-tear-radio/radio-group-styles.js.map +0 -7
- package/dist/packages/rip-and-tear-radio/radio-group.d.ts +0 -72
- package/dist/packages/rip-and-tear-radio/radio-group.js +0 -2648
- package/dist/packages/rip-and-tear-radio/radio-group.js.map +0 -7
- package/dist/packages/rip-and-tear-radio/radio-styles.d.ts +0 -0
- package/dist/packages/rip-and-tear-radio/radio-styles.js +0 -1
- package/dist/packages/rip-and-tear-radio/radio-styles.js.map +0 -7
- package/dist/packages/rip-and-tear-radio/radio.d.ts +0 -38
- package/dist/packages/rip-and-tear-radio/radio.js +0 -2562
- package/dist/packages/rip-and-tear-radio/radio.js.map +0 -7
- package/dist/packages/rip-and-tear-radio/radio.stories.d.ts +0 -8
- package/dist/packages/rip-and-tear-radio/radio.stories.js +0 -2653
- package/dist/packages/rip-and-tear-radio/radio.stories.js.map +0 -7
- package/dist/packages/rip-and-tear-radio/react.d.ts +0 -9
- package/dist/packages/rip-and-tear-radio/react.js +0 -22
- package/dist/packages/rip-and-tear-radio/required-validator.d.ts +0 -11
- package/dist/packages/rip-and-tear-radio/required-validator.js +0 -34
- package/dist/packages/rip-and-tear-radio/rip-and-tear-radio.react.stories.d.ts +0 -9
- package/dist/packages/rip-and-tear-radio/rip-and-tear-radio.react.stories.js +0 -10
- package/dist/packages/rip-and-tear-radio/slot.d.ts +0 -20
- package/dist/packages/rip-and-tear-radio/slot.js +0 -71
- package/dist/packages/rip-and-tear-radio/watch.d.ts +0 -26
- package/dist/packages/rip-and-tear-radio/watch.js +0 -39
- package/dist/packages/slider/Slider.d.ts +0 -2
- package/dist/packages/slider/Slider.js +0 -8
- package/dist/packages/slider/SliderThumb.d.ts +0 -2
- package/dist/packages/slider/SliderThumb.js +0 -8
- package/dist/packages/slider/index.d.ts +0 -2
- package/dist/packages/slider/index.js +0 -2
- package/dist/packages/slider/oddbird-css-anchor-positioning.d.ts +0 -2
- package/dist/packages/slider/oddbird-css-anchor-positioning.js +0 -3
- package/dist/packages/slider/react.d.ts +0 -8
- package/dist/packages/slider/react.js +0 -20
- package/dist/packages/slider/slider-thumb.d.ts +0 -57
- package/dist/packages/slider/slider-thumb.js +0 -2705
- package/dist/packages/slider/slider-thumb.js.map +0 -7
- package/dist/packages/slider/slider.d.ts +0 -46
- package/dist/packages/slider/slider.js +0 -2587
- package/dist/packages/slider/slider.js.map +0 -7
- package/dist/packages/slider/slider.react.stories.d.ts +0 -18
- package/dist/packages/slider/slider.react.stories.js +0 -118
- package/dist/packages/slider/slider.stories.d.ts +0 -18
- package/dist/packages/slider/slider.stories.js +0 -197
- package/dist/packages/slider/slider.test.d.ts +0 -4
- package/dist/packages/slider/slider.test.js +0 -83
- package/dist/packages/slider/styles/w-slider-thumb.styles.d.ts +0 -1
- package/dist/packages/slider/styles/w-slider-thumb.styles.js +0 -167
- package/dist/packages/slider/styles/w-slider.styles.d.ts +0 -1
- package/dist/packages/slider/styles/w-slider.styles.js +0 -134
- package/dist/packages/slider/styles.d.ts +0 -1
- package/dist/packages/slider/styles.js +0 -2
- package/dist/packages/steps/index.d.ts +0 -36
- package/dist/packages/steps/index.js +0 -2465
- package/dist/packages/steps/index.js.map +0 -7
- package/dist/packages/steps/locales/da/messages.d.mts +0 -1
- package/dist/packages/steps/locales/da/messages.mjs +0 -1
- package/dist/packages/steps/locales/en/messages.d.mts +0 -1
- package/dist/packages/steps/locales/en/messages.mjs +0 -1
- package/dist/packages/steps/locales/fi/messages.d.mts +0 -1
- package/dist/packages/steps/locales/fi/messages.mjs +0 -1
- package/dist/packages/steps/locales/nb/messages.d.mts +0 -1
- package/dist/packages/steps/locales/nb/messages.mjs +0 -1
- package/dist/packages/steps/locales/sv/messages.d.mts +0 -1
- package/dist/packages/steps/locales/sv/messages.mjs +0 -1
- package/dist/packages/steps/react.d.ts +0 -3
- package/dist/packages/steps/react.js +0 -16
- package/dist/packages/steps/steps.react.stories.d.ts +0 -15
- package/dist/packages/steps/steps.react.stories.js +0 -112
- package/dist/packages/steps/steps.stories.d.ts +0 -12
- package/dist/packages/steps/steps.stories.js +0 -172
- package/dist/packages/steps/styles.d.ts +0 -1
- package/dist/packages/steps/styles.js +0 -2
- package/dist/packages/switch/index.d.ts +0 -15
- package/dist/packages/switch/index.js +0 -2455
- package/dist/packages/switch/index.js.map +0 -7
- package/dist/packages/switch/react.d.ts +0 -5
- package/dist/packages/switch/react.js +0 -15
- package/dist/packages/switch/styles.d.ts +0 -1
- package/dist/packages/switch/styles.js +0 -2
- package/dist/packages/switch/switch.react.stories.d.ts +0 -15
- package/dist/packages/switch/switch.react.stories.js +0 -29
- package/dist/packages/switch/switch.stories.d.ts +0 -9
- package/dist/packages/switch/switch.stories.js +0 -34
- package/dist/packages/tabs/index.d.ts +0 -4
- package/dist/packages/tabs/index.js +0 -3
- package/dist/packages/tabs/react.d.ts +0 -12
- package/dist/packages/tabs/react.js +0 -31
- package/dist/packages/tabs/styles.d.ts +0 -1
- package/dist/packages/tabs/styles.js +0 -2
- package/dist/packages/tabs/tab-panel.d.ts +0 -20
- package/dist/packages/tabs/tab-panel.js +0 -51
- package/dist/packages/tabs/tab.d.ts +0 -18
- package/dist/packages/tabs/tab.js +0 -2464
- package/dist/packages/tabs/tab.js.map +0 -7
- package/dist/packages/tabs/tabs.d.ts +0 -40
- package/dist/packages/tabs/tabs.js +0 -2448
- package/dist/packages/tabs/tabs.js.map +0 -7
- package/dist/packages/tabs/tabs.react.stories.d.ts +0 -15
- package/dist/packages/tabs/tabs.react.stories.js +0 -51
- package/dist/packages/tabs/tabs.stories.d.ts +0 -11
- package/dist/packages/tabs/tabs.stories.js +0 -93
- package/dist/packages/textarea/index.d.ts +0 -1
- package/dist/packages/textarea/index.js +0 -1
- package/dist/packages/textarea/locales/da/messages.d.mts +0 -1
- package/dist/packages/textarea/locales/da/messages.mjs +0 -1
- package/dist/packages/textarea/locales/en/messages.d.mts +0 -1
- package/dist/packages/textarea/locales/en/messages.mjs +0 -1
- package/dist/packages/textarea/locales/fi/messages.d.mts +0 -1
- package/dist/packages/textarea/locales/fi/messages.mjs +0 -1
- package/dist/packages/textarea/locales/nb/messages.d.mts +0 -1
- package/dist/packages/textarea/locales/nb/messages.mjs +0 -1
- package/dist/packages/textarea/locales/sv/messages.d.mts +0 -1
- package/dist/packages/textarea/locales/sv/messages.mjs +0 -1
- package/dist/packages/textarea/react.d.ts +0 -11
- package/dist/packages/textarea/react.js +0 -21
- package/dist/packages/textarea/styles.d.ts +0 -1
- package/dist/packages/textarea/styles.js +0 -2
- package/dist/packages/textarea/textarea.d.ts +0 -48
- package/dist/packages/textarea/textarea.js +0 -2475
- package/dist/packages/textarea/textarea.js.map +0 -7
- package/dist/packages/textarea/textarea.react.stories.d.ts +0 -33
- package/dist/packages/textarea/textarea.react.stories.js +0 -41
- package/dist/packages/textarea/textarea.stories.d.ts +0 -19
- package/dist/packages/textarea/textarea.stories.js +0 -85
- package/dist/packages/textarea/textarea.test.d.ts +0 -1
- package/dist/packages/textarea/textarea.test.js +0 -49
- package/dist/packages/toggle-styles.d.ts +0 -1
- package/dist/packages/toggle-styles.js +0 -108
- package/dist/setup-tests.d.ts +0 -1
- package/dist/setup-tests.js +0 -1
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../packages/rip-and-tear-radio/radio.stories.ts", "../../../packages/rip-and-tear-radio/radio.ts", "../../../packages/rip-and-tear-radio/form-associated-element.ts", "../../../packages/rip-and-tear-radio/base-element.ts", "../../../packages/rip-and-tear-radio/host-styles.ts", "../../../packages/rip-and-tear-radio/custom-error-validator.ts", "../../../packages/rip-and-tear-radio/invalid.ts", "../../../packages/toggle-styles.ts", "../../../packages/styles.ts", "../../../packages/rip-and-tear-radio/radio-group.ts", "../../../node_modules/.pnpm/nanoid@5.1.6/node_modules/nanoid/url-alphabet/index.js", "../../../node_modules/.pnpm/nanoid@5.1.6/node_modules/nanoid/index.browser.js", "../../../packages/rip-and-tear-radio/math.ts", "../../../packages/rip-and-tear-radio/radio-group-styles.ts", "../../../packages/rip-and-tear-radio/required-validator.ts", "../../../packages/rip-and-tear-radio/slot.ts", "../../../packages/rip-and-tear-radio/index.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Meta, StoryObj } from '@storybook/web-components-vite';\nimport { html } from 'lit';\nimport './index';\n\nexport default {\n title: 'Forms/Radio',\n render: () => {\n return html`\n <w-radio-group label=\"Group\" name=\"foobar\" value=\"foo\">\n <w-radio value=\"foo\">foo</w-radio>\n <w-radio value=\"bar\">bar</w-radio>\n </w-radio-group>\n `;\n },\n} satisfies Meta;\n\nexport const Default: StoryObj = {};\n", "import type { PropertyValues } from 'lit';\nimport { html } from 'lit';\n\nimport { property, state } from 'lit/decorators.js';\n\nimport { BaseFormAssociatedElement } from './form-associated-element';\n// eslint-disable-next-line\n// @ts-ignore\nimport { toggleStyles } from '../toggle-styles';\nimport { reset } from '../styles';\n\nexport class WRadio extends BaseFormAssociatedElement {\n static css = [reset, toggleStyles];\n\n @state() checked = false;\n\n /** @internal Used by radio group to force disable radios while preserving their original disabled state. */\n @state() forceDisabled = false;\n\n /**\n * The string pointing to a form's id.\n */\n @property({ reflect: true }) form: string | null = null;\n\n /** The radio's value. When selected, the radio group will receive this value. */\n @property({ reflect: true }) value: string;\n\n /** The radio's value. When selected, the radio group will receive this value. */\n @property({ reflect: true }) appearance: 'default' | 'button' | 'clickable' = 'default';\n\n /**\n * The radio's size. When used inside a radio group, the size will be determined by the radio group's size so this\n * attribute can typically be omitted.\n */\n @property({ reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';\n\n /** Disables the radio. */\n @property({ type: Boolean }) disabled = false;\n\n constructor() {\n super();\n this.addEventListener('click', this.handleClick);\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.setInitialAttributes();\n }\n\n private setInitialAttributes() {\n this.setAttribute('role', 'radio');\n this.tabIndex = 0;\n this.setAttribute('aria-disabled', this.disabled || this.forceDisabled ? 'true' : 'false');\n }\n\n updated(changedProperties: PropertyValues<this>) {\n super.updated(changedProperties);\n\n if (changedProperties.has('checked')) {\n this.customStates.set('checked', this.checked);\n this[this.checked ? 'setAttribute' : 'removeAttribute']('checked-ui', '');\n this.setAttribute('aria-checked', this.checked ? 'true' : 'false');\n // Only set tabIndex if not disabled\n if (!this.disabled && !this.forceDisabled) {\n this.tabIndex = this.checked ? 0 : -1;\n }\n }\n\n if (changedProperties.has('disabled') || changedProperties.has('forceDisabled')) {\n const effectivelyDisabled = this.disabled || this.forceDisabled;\n this.customStates.set('disabled', effectivelyDisabled);\n this[effectivelyDisabled ? 'setAttribute' : 'removeAttribute']('disabled-ui', '');\n this.setAttribute('aria-disabled', effectivelyDisabled ? 'true' : 'false');\n\n // Set tabIndex based on disabled state\n if (effectivelyDisabled) {\n this.tabIndex = -1;\n } else {\n // Restore proper tabIndex - this will be managed by the radio group\n this.tabIndex = this.checked ? 0 : -1;\n }\n }\n }\n\n /**\n * @override\n */\n setValue(): void {\n // We override `setValue` because we don't want to set form values from here. We want to do that in \"RadioGroup\" itself.\n }\n\n // Update the handleClick method (around line 75)\n private handleClick = () => {\n if (!this.disabled && !this.forceDisabled) {\n this.checked = true;\n }\n };\n\n render() {\n return html`\n <div class=\"wrapper\">\n <div part=\"control\" class=\"control\"></div>\n <slot part=\"label\" class=\"label\"></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'w-radio': WRadio;\n }\n}\n", "import { isServer, LitElement } from 'lit';\n\nimport { property } from 'lit/decorators.js';\n\nimport BaseElement from './base-element.js';\nimport { CustomErrorValidator } from './custom-error-validator.js';\nimport { WInvalidEvent } from './invalid';\n\nexport interface Validator<T extends BaseFormAssociatedElement = BaseFormAssociatedElement> {\n observedAttributes?: string[];\n checkValidity: (element: T) => {\n message: string;\n isValid: boolean;\n invalidKeys: Exclude<keyof ValidityState, 'valid'>[];\n };\n message?: string | ((element: T) => string);\n}\n\nexport interface BaseFormControl extends BaseElement {\n // Form attributes\n name: null | string;\n disabled?: boolean;\n defaultValue?: unknown;\n defaultChecked?: boolean;\n checked?: boolean;\n defaultSelected?: boolean;\n selected?: boolean;\n form?: string | null;\n\n value?: unknown;\n\n // Constraint validation attributes\n pattern?: string;\n min?: number | string | Date;\n max?: number | string | Date;\n step?: number | 'any';\n required?: boolean;\n minlength?: number;\n maxlength?: number;\n\n // Form validation properties\n readonly validity: ValidityState;\n readonly validationMessage: string;\n\n // Form validation methods\n checkValidity: () => boolean;\n getForm: () => HTMLFormElement | null;\n reportValidity: () => boolean;\n setCustomValidity: (message: string) => void;\n\n // Form properties\n hasInteracted: boolean;\n valueHasChanged?: boolean;\n\n /** Convenience API for `setCustomValidity()` */\n customError: null | string;\n}\n\n// setFormValue omitted so that we can use `setValue`\nexport class BaseFormAssociatedElement\n extends BaseElement\n implements Omit<ElementInternals, 'form' | 'setFormValue'>, BaseFormControl\n{\n static formAssociated = true;\n\n /**\n * Validators are static because they have `observedAttributes`, essentially attributes to \"watch\"\n * for changes. Whenever these attributes change, we want to be notified and update the validator.\n */\n static get validators(): Validator[] {\n return [CustomErrorValidator()];\n }\n\n // Append all Validator \"observedAttributes\" into the \"observedAttributes\" so they can run.\n static get observedAttributes() {\n const parentAttrs = new Set(super.observedAttributes || []);\n\n for (const validator of this.validators) {\n if (!validator.observedAttributes) {\n continue;\n }\n\n for (const attr of validator.observedAttributes) {\n parentAttrs.add(attr);\n }\n }\n\n return [...parentAttrs];\n }\n\n // Form attributes\n /** The name of the input, submitted as a name/value pair with form data. */\n @property({ reflect: true }) name: string | null = null;\n\n /** Disables the form control. */\n @property({ type: Boolean }) disabled = false;\n\n required = false;\n\n assumeInteractionOn: string[] = ['input'];\n\n // Additional\n input?: (HTMLElement & { value: unknown }) | HTMLInputElement | HTMLTextAreaElement;\n\n validators: Validator[] = [];\n\n // Should these be private?\n @property({ state: true, attribute: false }) valueHasChanged = false;\n @property({ state: true, attribute: false }) hasInteracted = false;\n\n // This works around a limitation in Safari. It is a hacky way for us to preserve custom errors generated by the user.\n @property({ attribute: 'custom-error', reflect: true }) customError: string | null = null;\n\n private emittedEvents: string[] = [];\n\n constructor() {\n super();\n\n if (!isServer) {\n this.addEventListener('invalid', this.emitInvalid);\n }\n }\n // this bullshit makes no sense but tsc is angry about it\n // this needs both 'private' and 'typeof' or it will be angry and we don't know why\n // eslint-disable-next-line\n // @ts-ignore\n private states: typeof CustomStateSet;\n\n connectedCallback() {\n super.connectedCallback();\n this.updateValidity();\n\n // Lazily evaluate after the constructor to allow people to override the `assumeInteractionOn`\n this.assumeInteractionOn.forEach((event) => {\n this.addEventListener(event, this.handleInteraction);\n });\n }\n\n firstUpdated(...args: Parameters<LitElement['firstUpdated']>) {\n super.firstUpdated(...args);\n this.updateValidity();\n }\n\n emitInvalid = (e: Event) => {\n if (e.target !== this) return;\n\n // An \"invalid\" event counts as interacted, this is usually triggered by a button \"submitting\"\n this.hasInteracted = true;\n this.dispatchEvent(new WInvalidEvent());\n };\n\n protected willUpdate(changedProperties: Parameters<LitElement['willUpdate']>[0]) {\n if (!isServer && changedProperties.has('customError')) {\n // We use null because it we really don't want it to show up in the attributes because `custom-error` does reflect\n if (!this.customError) {\n this.customError = null;\n }\n this.setCustomValidity(this.customError || '');\n }\n\n if (changedProperties.has('value') || changedProperties.has('disabled')) {\n // @ts-expect-error Some components will use an accessors, other use a property, so we don't want to limit them.\n const value = this.value as unknown;\n\n // Accounts for the snowflake case on `<wa-select>`\n if (Array.isArray(value)) {\n if (this.name) {\n const formData = new FormData();\n for (const val of value) {\n formData.append(this.name, val as string);\n }\n this.setValue(formData, formData);\n }\n } else {\n this.setValue(value as FormData | string | File | null, value as FormData | string | File | null);\n }\n }\n\n if (changedProperties.has('disabled')) {\n this.customStates.set('disabled', this.disabled);\n\n if (this.hasAttribute('disabled') || (!isServer && !this.matches(':disabled'))) {\n this.toggleAttribute('disabled', this.disabled);\n }\n }\n\n this.updateValidity();\n super.willUpdate(changedProperties);\n }\n\n private handleInteraction = (event: Event) => {\n const emittedEvents = this.emittedEvents;\n if (!emittedEvents.includes(event.type)) {\n emittedEvents.push(event.type);\n }\n\n // Mark it as user-interacted as soon as all associated events have been emitted\n if (emittedEvents.length === this.assumeInteractionOn?.length) {\n this.hasInteracted = true;\n }\n };\n\n get labels() {\n return this.internals.labels;\n }\n\n getForm() {\n return this.internals.form;\n }\n\n @property({ attribute: false, state: true, type: Object })\n get validity() {\n return this.internals.validity;\n }\n\n // Not sure if this supports `novalidate`. Will need to test.\n get willValidate() {\n return this.internals.willValidate;\n }\n\n get validationMessage() {\n return this.internals.validationMessage;\n }\n\n checkValidity() {\n this.updateValidity();\n return this.internals.checkValidity();\n }\n\n reportValidity() {\n this.updateValidity();\n // This seems reasonable. `reportValidity()` is kind of like \"we expect you to have interacted\"\n this.hasInteracted = true;\n return this.internals.reportValidity();\n }\n\n /**\n * Override this to change where constraint validation popups are anchored.\n */\n get validationTarget(): undefined | HTMLElement {\n return (this.input || undefined) as undefined | HTMLElement;\n }\n\n setValidity(...args: Parameters<typeof this.internals.setValidity>) {\n const flags = args[0];\n const message = args[1];\n let anchor = args[2];\n\n if (!anchor) {\n anchor = this.validationTarget;\n }\n\n this.internals.setValidity(flags, message, anchor || undefined);\n this.requestUpdate('validity');\n this.setCustomStates();\n }\n\n setCustomStates() {\n const required = Boolean(this.required);\n const isValid = this.internals.validity.valid;\n const hasInteracted = this.hasInteracted;\n\n this.customStates.set('required', required);\n this.customStates.set('optional', !required);\n this.customStates.set('invalid', !isValid);\n this.customStates.set('valid', isValid);\n this.customStates.set('user-invalid', !isValid && hasInteracted);\n this.customStates.set('user-valid', isValid && hasInteracted);\n }\n\n /**\n * Do not use this when creating a \"Validator\". This is intended for end users of components.\n * We track manually defined custom errors so we don't clear them on accident in our validators.\n *\n */\n setCustomValidity(message: string) {\n if (!message) {\n // We use null because it we really don't want it to show up in the attributes because `custom-error` does reflect\n this.customError = null;\n this.setValidity({});\n return;\n }\n\n this.customError = message;\n this.setValidity({ customError: true }, message, this.validationTarget);\n }\n\n formResetCallback() {\n this.resetValidity();\n this.hasInteracted = false;\n this.valueHasChanged = false;\n this.emittedEvents = [];\n this.updateValidity();\n }\n\n formDisabledCallback(isDisabled: boolean) {\n this.disabled = isDisabled;\n\n this.updateValidity();\n }\n\n /**\n * Called when the browser is trying to restore element\u2019s state to state in which case reason is \"restore\", or when\n * the browser is trying to fulfill autofill on behalf of user in which case reason is \"autocomplete\". In the case of\n * \"restore\", state is a string, File, or FormData object previously set as the second argument to setFormValue.\n */\n formStateRestoreCallback(state: string | File | FormData | null, reason: 'autocomplete' | 'restore') {\n // @ts-expect-error We purposely do not have a value property. It makes things hard to extend.\n this.value = state;\n\n if (reason === 'restore') {\n this.resetValidity();\n }\n\n this.updateValidity();\n }\n\n setValue(...args: Parameters<typeof this.internals.setFormValue>) {\n const [value, state] = args;\n\n this.internals.setFormValue(value, state);\n }\n\n get allValidators() {\n const staticValidators = (this.constructor as typeof BaseFormAssociatedElement).validators || [];\n\n const validators = this.validators || [];\n return [...staticValidators, ...validators];\n }\n\n /**\n * Reset validity is a way of removing manual custom errors and native validation.\n */\n resetValidity() {\n this.setCustomValidity('');\n this.setValidity({});\n }\n\n updateValidity() {\n if (\n this.disabled ||\n this.hasAttribute('disabled') ||\n !this.willValidate //\n ) {\n this.resetValidity();\n\n return;\n }\n\n const validators = this.allValidators;\n\n if (!validators?.length) {\n // If there's no validators, we do nothing. We also don't want to mess with custom errors, so we just stop here.\n return;\n }\n\n type ValidityKey = { -readonly [P in keyof ValidityState]: ValidityState[P] };\n\n const flags: Partial<ValidityKey> = {\n // Don't trust custom errors from the Browser. Safari breaks the spec.\n customError: Boolean(this.customError),\n };\n\n const formControl = this.validationTarget || this.input || undefined;\n\n let finalMessage = '';\n\n for (const validator of validators) {\n const { isValid, message, invalidKeys } = validator.checkValidity(this);\n\n if (isValid) {\n continue;\n }\n\n if (!finalMessage) {\n finalMessage = message;\n }\n\n if (invalidKeys?.length >= 0) {\n (invalidKeys as (keyof ValidityState)[]).forEach((str) => (flags[str] = true));\n }\n }\n\n // This is a workaround for preserving custom errors\n if (!finalMessage) {\n finalMessage = this.validationMessage;\n }\n\n this.setValidity(flags, finalMessage, formControl);\n }\n}\n", "// eslint-disable-next-line\n// @ts-nocheck\nimport type { CSSResult, CSSResultGroup } from 'lit';\nimport { LitElement, unsafeCSS } from 'lit';\n\nimport { property } from 'lit/decorators.js';\n\nimport { styles as hostStyles } from './host-styles';\n\n// Augment Lit's module\ndeclare module 'lit' {\n interface PropertyDeclaration {\n /**\n * Specifies the property\u2019s default value\n */\n /* eslint-disable */\n default?: any;\n /* eslint-disable */\n initial?: any;\n }\n}\n\nexport default class BaseElement extends LitElement {\n /**\n * One or more CSS files to include in the component's shadow root. Host styles are automatically prepended. We use\n * this instead of Lit's styles property because we're importing CSS files as strings and need to convert them using\n * unsafeCSS.\n */\n static css?: CSSResultGroup | CSSResult | string | (CSSResult | string)[];\n\n /**\n * Override the default styles property to fetch and convert string CSS files. Components can override this behavior\n * by setting their own `static styles = []` property.\n */\n static get styles(): CSSResultGroup {\n const styles = Array.isArray(this.css) ? this.css : this.css ? [this.css] : [];\n return [hostStyles, ...styles].map((style) => (typeof style === 'string' ? unsafeCSS(style) : style));\n }\n\n #hasRecordedInitialProperties = false;\n initialReflectedProperties: Map<string, unknown> = new Map();\n internals: ElementInternals;\n\n // Make localization attributes reactive\n @property() dir: string;\n @property() lang: string;\n\n constructor() {\n super();\n\n try {\n this.internals = this.attachInternals();\n } catch {\n /* Need to tell people if they need a polyfill. */\n\n console.error('Element internals are not supported in your browser. Consider using a polyfill');\n }\n\n this.customStates.set('wa-defined', true);\n\n const Self = this.constructor as typeof BaseElement;\n for (const [property, spec] of Self.elementProperties) {\n if (spec.default === 'inherit' && spec.initial !== undefined && typeof property === 'string') {\n this.customStates.set(`initial-${property}-${spec.initial}`, true);\n }\n }\n }\n\n attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null) {\n if (!this.#hasRecordedInitialProperties) {\n (this.constructor as typeof BaseElement).elementProperties.forEach((obj, prop: keyof typeof this & string) => {\n if (obj.reflect && this[prop] != null) {\n this.initialReflectedProperties.set(prop, this[prop]);\n }\n });\n\n this.#hasRecordedInitialProperties = true;\n }\n\n super.attributeChangedCallback(name, oldValue, newValue);\n }\n\n protected willUpdate(changedProperties: Parameters<LitElement['willUpdate']>[0]): void {\n super.willUpdate(changedProperties);\n\n // Run the morph fixing *after* willUpdate.\n this.initialReflectedProperties.forEach((value, prop: string & keyof typeof this) => {\n // If a prop changes to `null`, we assume this happens via an attribute changing to `null`.\n\n if (changedProperties.has(prop) && this[prop] == null) {\n // Silly type gymnastics to appease the compiler.\n (this as Record<string, unknown>)[prop] = value;\n }\n });\n }\n\n /**\n * Methods for setting and checking custom states.\n */\n public customStates = {\n /** Adds or removes the specified custom state. */\n set: (customState: string, active: boolean) => {\n if (!this.internals?.states) return;\n if (active) {\n this.internals.states.add(customState);\n } else {\n this.internals.states.delete(customState);\n }\n },\n\n /** Determines whether or not the element currently has the specified state. */\n has: (customState: string) => {\n if (!this.internals?.states) return false;\n return this.internals.states.has(customState);\n },\n };\n\n /**\n * Given a native event, this function cancels it and dispatches it again from the host element using the desired\n * event options.\n */\n relayNativeEvent(event: Event, eventOptions?: EventInit) {\n event.stopImmediatePropagation();\n\n this.dispatchEvent(\n new (event.constructor as typeof Event)(event.type, {\n ...event,\n ...eventOptions,\n }),\n );\n }\n}\n", "import { css } from 'lit';\n\nexport const styles = css`\n :host {\n box-sizing: border-box !important;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: inherit !important;\n }\n`;\n", "import type { Validator } from './form-associated-element';\n\n/**\n * This validator is for if you have an exact copy of your element in the shadow DOM. Rather than needing\n * custom translations and error messages, you can simply rely on the element \"formControl\" in your shadow dom.\n */\nexport const CustomErrorValidator = (): Validator => {\n return {\n observedAttributes: ['custom-error'],\n checkValidity(element) {\n const validity: ReturnType<Validator['checkValidity']> = {\n message: '',\n isValid: true,\n invalidKeys: [],\n };\n\n if (element.customError) {\n validity.message = element.customError;\n validity.isValid = false;\n validity.invalidKeys = ['customError'];\n }\n\n return validity;\n },\n };\n};\n", "export class WInvalidEvent extends Event {\n constructor() {\n super('w-invalid', { bubbles: true, cancelable: false, composed: true });\n }\n}\n\ndeclare global {\n interface GlobalEventHandlersEventMap {\n 'wa-invalid': WInvalidEvent;\n }\n}\n", "import { css } from 'lit';\n\nexport const toggleStyles = css`\n [part~='label'] {\n display: block;\n font-size: var(--w-font-size-m);\n line-height: var(--w-line-height-m);\n user-select: none;\n cursor: pointer;\n }\n .wrapper {\n display: grid;\n grid-template-columns: 2rem max-content;\n gap: 8px;\n }\n .hide-toggle {\n position: absolute;\n padding: 0;\n margin: 0;\n opacity: 0;\n pointer-events: none;\n inset: 0;\n }\n .control {\n display: block;\n border-width: 1px;\n transition-property: all;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n cursor: pointer;\n appearance: none;\n user-select: none;\n flex-shrink: 0;\n height: 2rem;\n width: 2rem;\n background-color: var(--w-s-color-background);\n border-color: var(--w-s-color-border-strong);\n color: var(--w-s-color-icon-inverted);\n font-weight: 700;\n text-align: center;\n line-height: var(--w-line-height-xs);\n font-size: var(--w-font-size-m);\n }\n .checkbox {\n position: relative;\n }\n :host([type='checkbox']) .control {\n border-radius: 4px;\n }\n .checkbox:has(:checked, :indeterminate),\n :host([type='checkbox'][checked]) .control,\n :host([type='checkbox'][indeterminate]) .control {\n background-color: var(--w-s-color-background-primary);\n border-color: var(--w-s-color-border-primary);\n }\n .checkbox:has(:checked),\n :host([type='checkbox'][checked]) .control {\n background-image: var(--w-icon-toggle-checked);\n background-position: center;\n }\n :host([type='radio']) .control,\n :host([role='radio']) .control {\n border-radius: 50%;\n }\n :host([type='radio'][checked]) .control,\n /* :state is newly available, so we set an attribute in radio for compat */\n :host([role='radio'][checked-ui]) .control,\n :host([role='radio']:state(checked)) .control {\n border-color: var(--w-s-color-border-selected);\n border-width: 0.6rem;\n }\n .checkbox:has(:invalid),\n :host([invalid]) .control {\n border-color: var(--w-s-color-border-negative) !important;\n }\n /* handles invalid checkbox state inside w-checkbox */\n .checkbox:has(:checked, :indeterminate):has(:invalid),\n /* allows invalid to be set on the w-checkbox element */\n :host([invalid]) .checkbox:has(:checked, :indeterminate),\n :host([type='checkbox'][invalid][checked]) .control,\n :host([type='checkbox'][invalid][indeterminate]) .control {\n background-color: var(--w-s-color-background-negative);\n }\n\n :host(:focus-visible) {\n outline: none;\n }\n .checkbox:has(> input:focus-visible:not(:disabled)),\n :host(:focus-visible) .control {\n outline: 2px solid var(--w-s-color-border-focus);\n outline-offset: var(--w-outline-offset, 1px);\n }\n\n :host([type='radio'][disabled]) .control,\n /* :state is newly available, so we set an attribute in radio for compat */\n :host([role='radio'][disabled-ui]) .control,\n :host([role='radio']:state(disabled)) .control,\n :host([type='checkbox'][disabled]) .control,\n .checkbox:has(> input:disabled) {\n border-color: var(--w-s-color-border-disabled);\n background-color: var(--w-s-color-background-disabled-subtle);\n }\n\n :host([type='checkbox'][disabled][checked]) .control,\n :host([type='checkbox'][disabled][indeterminate]) .control,\n .checkbox:has(:checked, :indeterminate):has(> input:disabled) {\n background-color: var(--w-s-color-background-disabled);\n }\n`\n", "import { css } from 'lit';\n\nexport const reset = css`\n *,\n :before,\n :after {\n box-sizing: border-box;\n border-style: solid;\n border-width: 0;\n border-color: var(--w-s-color-border);\n }\n html {\n font-size: 62.5%;\n }\n body {\n background-color: var(--w-s-color-background);\n min-height: 100%;\n margin: 0;\n overflow-y: scroll;\n }\n body,\n :host {\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n -webkit-tap-highlight-color: transparent;\n font-family: var(--w-font-family);\n font-size: var(--w-font-size-m);\n line-height: var(--w-line-height-m);\n color: var(--w-s-color-text);\n }\n hr {\n color: inherit;\n border-top-width: 1px;\n height: 0;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-size: inherit;\n font-weight: 700;\n }\n a {\n cursor: pointer;\n color: var(--w-s-color-text-link);\n text-decoration: none;\n }\n a:hover,\n a:focus,\n a:active {\n text-decoration: underline;\n }\n a:focus-visible {\n outline: 2px solid var(--w-s-color-border-focus);\n outline-offset: 1px;\n }\n b,\n strong {\n font-weight: 700;\n }\n code,\n kbd,\n samp,\n pre {\n font-family:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n Liberation Mono,\n Courier New,\n monospace;\n font-size: 1em;\n }\n sub,\n sup {\n vertical-align: baseline;\n font-size: 75%;\n line-height: 0;\n position: relative;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n button,\n input,\n optgroup,\n select,\n textarea {\n font-family: inherit;\n font-size: 100%;\n font-weight: inherit;\n line-height: inherit;\n color: inherit;\n margin: 0;\n padding: 0;\n }\n button,\n select {\n text-transform: none;\n }\n button,\n [type='button'],\n [type='reset'],\n [type='submit'] {\n -webkit-appearance: button;\n }\n :-moz-focusring {\n outline: auto;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n progress {\n vertical-align: baseline;\n }\n ::-webkit-inner-spin-button {\n height: auto;\n }\n ::-webkit-outer-spin-button {\n height: auto;\n }\n [type='search'] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n }\n summary {\n display: list-item;\n }\n blockquote,\n dl,\n dd,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n hr,\n figure,\n p,\n pre {\n margin: 0;\n }\n fieldset {\n margin: 0;\n padding: 0;\n }\n legend {\n padding: 0;\n }\n ol,\n ul,\n menu {\n margin: 0;\n padding: 0;\n list-style: none;\n }\n textarea {\n resize: vertical;\n }\n input::placeholder,\n textarea::placeholder {\n opacity: 1;\n color: var(--w-s-color-text-placeholder);\n }\n button,\n [role='button'] {\n cursor: pointer;\n }\n :disabled {\n cursor: default;\n }\n img,\n svg,\n video,\n canvas,\n audio,\n iframe,\n embed,\n object {\n vertical-align: middle;\n display: block;\n }\n img,\n video {\n max-width: 100%;\n height: auto;\n }\n h1 {\n font-size: var(--w-font-size-xxl);\n line-height: var(--w-line-height-xxl);\n }\n h2 {\n font-size: var(--w-font-size-xl);\n line-height: var(--w-line-height-xl);\n }\n h3 {\n font-size: var(--w-font-size-l);\n line-height: var(--w-line-height-l);\n }\n h4 {\n font-size: var(--w-font-size-m);\n line-height: var(--w-line-height-m);\n }\n h5 {\n font-size: var(--w-font-size-s);\n line-height: var(--w-line-height-s);\n }\n dt,\n dd {\n margin: 0 16px;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n ul,\n ol,\n dl,\n p,\n blockquote {\n margin: 0 0 8px;\n }\n [hidden] {\n display: none !important;\n }\n [tabindex='-1']:focus:not(:focus-visible) {\n outline: none;\n }\n legend {\n float: left;\n width: 100%;\n margin: 0;\n padding: 0;\n display: table;\n }\n legend + * {\n clear: both;\n }\n fieldset {\n border: 0;\n min-width: 0;\n margin: 0;\n padding: 0.01em 0 0;\n }\n body:not(:-moz-handler-blocked) fieldset {\n display: table-cell;\n }\n svg {\n pointer-events: none;\n }\n`;\nexport const components = css`*, :before, :after {\n --w-rotate: 0;\n --w-rotate-x: 0;\n --w-rotate-y: 0;\n --w-rotate-z: 0;\n --w-scale-x: 1;\n --w-scale-y: 1;\n --w-scale-z: 1;\n --w-skew-x: 0;\n --w-skew-y: 0;\n --w-translate-x: 0;\n --w-translate-y: 0;\n --w-translate-z: 0\n }\n\n .h4, .t4 {\n font-weight: 700;\n font-size: var(--w-font-size-m);\n line-height: var(--w-line-height-m)\n }\n\n .t3 {\n font-weight: 700;\n font-size: var(--w-font-size-l);\n line-height: var(--w-line-height-l)\n }\n\n @media (min-width: 480px) {\n .sm\\\\:h3 {\n font-weight: 700;\n font-size: var(--w-font-size-l);\n line-height: var(--w-line-height-l)\n }\n }\n\n .text-center {\n text-align: center\n }\n\n .before\\\\:text-center:before {\n text-align: center\n }\n\n .text-left {\n text-align: left\n }\n\n .text-right {\n text-align: right\n }\n\n .align-middle {\n vertical-align: middle\n }\n\n .animate-inprogress {\n background-image: linear-gradient(135deg, rgba(0, 0, 0, .05) 25%, transparent 0, transparent 50%, rgba(0, 0, 0, .05) 0, rgba(0, 0, 0, .05) 75%, transparent 0, transparent) !important;\n background-size: 30px 30px;\n animation: animate-inprogress 3s linear infinite\n }\n\n @keyframes animate-inprogress {\n 0% {\n background-position: 0 0\n }\n to {\n background-position: 60px 0\n }\n }\n\n .\\\\[--w-modal-max-height\\\\:80\\\\%\\\\] {\n --w-modal-max-height: 80%\n }\n\n .\\\\[--w-modal-width\\\\:640px\\\\] {\n --w-modal-width: 640px\n }\n\n .focus\\\\:\\\\[--w-outline-offset\\\\:-2px\\\\]:focus {\n --w-outline-offset: -2px\n }\n\n .backdrop-blur {\n -webkit-backdrop-filter: blur(4px);\n backdrop-filter: blur(4px)\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:bg-center:before {\n background-position: center\n }\n\n .hover\\\\:bg-clip-padding:hover {\n -webkit-background-clip: padding-box;\n background-clip: padding-box\n }\n\n .bg-transparent, .group\\\\/steph:first-child .group-first\\\\/steph\\\\:bg-transparent, .group\\\\/steph:last-child .group-last\\\\/steph\\\\:bg-transparent {\n background-color: transparent\n }\n\n .bg-\\\\[--w-black\\\\/25\\\\] {\n background-color: rgba(var(--w-rgb-black), .25)\n }\n\n .bg-\\\\[--w-black\\\\/70\\\\], .bg-\\\\[var\\\\(--w-black\\\\)\\\\/70\\\\] {\n background-color: rgba(var(--w-rgb-black), .7)\n }\n\n .bg-\\\\[--w-color-badge-info-background\\\\] {\n background-color: var(--w-color-badge-info-background)\n }\n\n .bg-\\\\[--w-color-badge-negative-background\\\\] {\n background-color: var(--w-color-badge-negative-background)\n }\n\n .bg-\\\\[--w-color-badge-neutral-background\\\\] {\n background-color: var(--w-color-badge-neutral-background)\n }\n\n .bg-\\\\[--w-color-badge-positive-background\\\\] {\n background-color: var(--w-color-badge-positive-background)\n }\n\n .bg-\\\\[--w-color-badge-sponsored-background\\\\] {\n background-color: var(--w-color-badge-sponsored-background)\n }\n\n .bg-\\\\[--w-color-badge-warning-background\\\\] {\n background-color: var(--w-color-badge-warning-background)\n }\n\n .bg-\\\\[--w-color-button-primary-background\\\\] {\n background-color: var(--w-color-button-primary-background)\n }\n\n .bg-\\\\[--w-color-buttongroup-utility-background-selected\\\\] {\n background-color: var(--w-color-buttongroup-utility-background-selected)\n }\n\n .bg-\\\\[--w-color-callout-background\\\\] {\n background-color: var(--w-color-callout-background)\n }\n\n .bg-\\\\[--w-color-pill-suggestion-background\\\\] {\n background-color: var(--w-color-pill-suggestion-background)\n }\n\n .bg-\\\\[--w-color-switch-track-background\\\\] {\n background-color: var(--w-color-switch-track-background)\n }\n\n .bg-\\\\[--w-s-color-surface-elevated-100\\\\] {\n background-color: var(--w-s-color-surface-elevated-100)\n }\n\n .bg-\\\\[--w-s-color-surface-elevated-300\\\\] {\n background-color: var(--w-s-color-surface-elevated-300)\n }\n\n .bg-\\\\[--w-s-icon-selected\\\\] {\n background-color: var(--w-s-icon-selected)\n }\n\n .group:hover .group-hover\\\\:bg-\\\\[--w-color-switch-track-background-hover\\\\] {\n background-color: var(--w-color-switch-track-background-hover)\n }\n\n .hover\\\\:bg-\\\\[--w-color-button-pill-background-hover\\\\]:hover {\n background-color: var(--w-color-button-pill-background-hover)\n }\n\n .hover\\\\:bg-\\\\[--w-color-button-primary-background-hover\\\\]:hover {\n background-color: var(--w-color-button-primary-background-hover)\n }\n\n .hover\\\\:bg-\\\\[--w-color-buttongroup-utility-background-hover\\\\]:hover {\n background-color: var(--w-color-buttongroup-utility-background-hover)\n }\n\n .hover\\\\:bg-\\\\[--w-color-pill-suggestion-background-hover\\\\]:hover {\n background-color: var(--w-color-pill-suggestion-background-hover)\n }\n\n .hover\\\\:bg-\\\\[--w-s-icon-subtle\\\\]:hover {\n background-color: var(--w-s-icon-subtle)\n }\n\n .hover\\\\:bg-\\\\[var\\\\(--w-black\\\\)\\\\/85\\\\]:hover {\n background-color: rgba(var(--w-rgb-black), .85)\n }\n\n .active\\\\:bg-\\\\[--w-color-button-pill-background-active\\\\]:active {\n background-color: var(--w-color-button-pill-background-active)\n }\n\n .active\\\\:bg-\\\\[--w-color-button-primary-background-active\\\\]:active {\n background-color: var(--w-color-button-primary-background-active)\n }\n\n .active\\\\:bg-\\\\[--w-color-buttongroup-utility-background-selected\\\\]:active {\n background-color: var(--w-color-buttongroup-utility-background-selected)\n }\n\n .active\\\\:bg-\\\\[--w-color-pill-suggestion-background-active\\\\]:active {\n background-color: var(--w-color-pill-suggestion-background-active)\n }\n\n .active\\\\:bg-\\\\[var\\\\(--w-black\\\\)\\\\]:active {\n background-color: var(--w-black)\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:bg-\\\\[url\\\\(var\\\\(--w-icon-toggle-checked\\\\)\\\\)\\\\]:before {\n background-image: var(--w-icon-toggle-checked)\n }\n\n .appearance-none {\n -moz-appearance: none;\n appearance: none;\n -webkit-appearance: none\n }\n\n .will-change-height {\n will-change: height\n }\n\n .border, .border-1 {\n border-width: 1px\n }\n\n .border-b {\n border-bottom-width: 1px\n }\n\n .before\\\\:border:before {\n border-width: 1px\n }\n\n .border-0 {\n border-width: 0\n }\n\n .border-2 {\n border-width: 2px\n }\n\n .border-b-0 {\n border-bottom-width: 0\n }\n\n .border-b-4 {\n border-bottom-width: 4px\n }\n\n .border-l-4 {\n border-left-width: 4px\n }\n\n .border-r-0, .group:not(:last-of-type) .group-not-last-of-type\\\\:border-r-0 {\n border-right-width: 0\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:border-\\\\[6\\\\]:before {\n border-width: .6rem\n }\n\n .border-transparent {\n border-color: transparent\n }\n\n .border-\\\\[--w-color-buttongroup-utility-border\\\\] {\n border-color: var(--w-color-buttongroup-utility-border)\n }\n\n .border-\\\\[--w-color-callout-border\\\\] {\n border-color: var(--w-color-callout-border)\n }\n\n .border-\\\\[--w-s-color-background-inverted\\\\] {\n border-color: var(--w-s-color-background-inverted)\n }\n\n .border-\\\\[--w-s-color-surface-elevated-300\\\\] {\n border-color: var(--w-s-color-surface-elevated-300)\n }\n\n .active\\\\:border-\\\\[--w-color-buttongroup-utility-border-selected\\\\]:active {\n border-color: var(--w-color-buttongroup-utility-border-selected)\n }\n\n .divide-x > * + * {\n --w-divide-x-reverse: 0;\n border-left-width: calc(1px * calc(1 - var(--w-divide-x-reverse)));\n border-right-width: calc(1px * var(--w-divide-x-reverse))\n }\n\n .divide-y > * + * {\n --w-divide-y-reverse: 0;\n border-top-width: calc(1px * calc(1 - var(--w-divide-y-reverse)));\n border-bottom-width: calc(1px * var(--w-divide-y-reverse))\n }\n\n .rounded-4 {\n border-radius: 4px\n }\n\n .rounded-8 {\n border-radius: 8px\n }\n\n .rounded-full {\n border-radius: 9999px\n }\n\n .before\\\\:rounded-2:before {\n border-radius: 2px\n }\n\n .before\\\\:rounded-full:before {\n border-radius: 9999px\n }\n\n .rounded-b-0 {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0\n }\n\n .rounded-bl-0 {\n border-bottom-left-radius: 0\n }\n\n .rounded-br-0 {\n border-bottom-right-radius: 0\n }\n\n .rounded-l-0 {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0\n }\n\n .rounded-l-full {\n border-top-left-radius: 9999px;\n border-bottom-left-radius: 9999px\n }\n\n .rounded-r-0 {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0\n }\n\n .rounded-r-full {\n border-top-right-radius: 9999px;\n border-bottom-right-radius: 9999px\n }\n\n .rounded-tl-0 {\n border-top-left-radius: 0\n }\n\n .rounded-tl-4 {\n border-top-left-radius: 4px\n }\n\n .rounded-tr-0 {\n border-top-right-radius: 0\n }\n\n .group:first-of-type .group-first-of-type\\\\:rounded-bl-8 {\n border-bottom-left-radius: 8px\n }\n\n .group:first-of-type .group-first-of-type\\\\:rounded-tl-8 {\n border-top-left-radius: 8px\n }\n\n .first\\\\:rounded-lb-4:first-child {\n border-bottom-left-radius: 4px\n }\n\n .first\\\\:rounded-lt-4:first-child {\n border-top-left-radius: 4px\n }\n\n .first\\\\:rounded-rt-4:first-child {\n border-top-right-radius: 4px\n }\n\n .group:last-of-type .group-last-of-type\\\\:rounded-br-8 {\n border-bottom-right-radius: 8px\n }\n\n .group:last-of-type .group-last-of-type\\\\:rounded-tr-8 {\n border-top-right-radius: 8px\n }\n\n .last\\\\:rounded-lb-4:last-child {\n border-bottom-left-radius: 4px\n }\n\n .last\\\\:rounded-rb-4:last-child {\n border-bottom-right-radius: 4px\n }\n\n .last\\\\:rounded-rt-4:last-child {\n border-top-right-radius: 4px\n }\n\n .caret-current {\n caret-color: currentColor\n }\n\n .opacity-25 {\n opacity: 25%\n }\n\n .block {\n display: block\n }\n\n .before\\\\:block:before {\n display: block\n }\n\n .inline-block {\n display: inline-block\n }\n\n .inline {\n display: inline\n }\n\n .flex, .open\\\\:flex[open] {\n display: flex\n }\n\n .inline-flex {\n display: inline-flex\n }\n\n .grid {\n display: grid\n }\n\n .inline-grid {\n display: inline-grid\n }\n\n .hidden, .group\\\\/stepv:last-child .group-last\\\\/stepv\\\\:hidden {\n display: none\n }\n\n .before\\\\:hidden:before {\n display: none\n }\n\n .hover\\\\:underline:hover {\n text-decoration-line: underline\n }\n\n .focus\\\\:underline:focus {\n text-decoration-line: underline\n }\n\n .focus-visible\\\\:underline:focus-visible {\n text-decoration-line: underline\n }\n\n .active\\\\:underline:active {\n text-decoration-line: underline\n }\n\n .hover\\\\:no-underline:hover {\n text-decoration: none\n }\n\n .focus\\\\:no-underline:focus {\n text-decoration: none\n }\n\n .active\\\\:no-underline:active {\n text-decoration: none\n }\n\n .flex-1 {\n flex: 1 1 0%\n }\n\n .shrink {\n flex-shrink: 1\n }\n\n .shrink-0 {\n flex-shrink: 0\n }\n\n .shrink-0\\\\! {\n flex-shrink: 0 !important\n }\n\n .grow, .grow-1 {\n flex-grow: 1\n }\n\n .basis-auto {\n flex-basis: auto\n }\n\n .flex-col {\n flex-direction: column\n }\n\n .focus-within\\\\:focusable:focus-within {\n outline: 2px solid var(--w-s-color-border-focus);\n outline-offset: var(--w-outline-offset, 1px)\n }\n\n .focusable:focus, .focusable:focus-visible {\n outline: 2px solid var(--w-s-color-border-focus);\n outline-offset: var(--w-outline-offset, 1px)\n }\n\n .focusable:not(:focus-visible) {\n outline: none\n }\n\n .peer:focus ~ .peer-focus\\\\:focusable, .peer:focus-visible ~ .peer-focus\\\\:focusable {\n outline: 2px solid var(--w-s-color-border-focus);\n outline-offset: var(--w-outline-offset, 1px)\n }\n\n .peer:not(:focus-visible) ~ .peer-focus\\\\:focusable {\n outline: none\n }\n\n .focusable-inset {\n --w-outline-offset: -3px\n }\n\n .gap-12 {\n gap: 1.2rem\n }\n\n .gap-8 {\n gap: .8rem\n }\n\n .gap-x-16 {\n column-gap: 1.6rem\n }\n\n .gap-y-16 {\n row-gap: 1.6rem\n }\n\n .row-span-2 {\n grid-row: span 2/span 2\n }\n\n .col-span-2 {\n grid-column: span 2/span 2\n }\n\n .col-span-3 {\n grid-column: span 3/span 3\n }\n\n .row-start-1 {\n grid-row-start: 1\n }\n\n .row-start-2 {\n grid-row-start: 2\n }\n\n .col-start-2 {\n grid-column-start: 2\n }\n\n .auto-rows-auto {\n grid-auto-rows: auto\n }\n\n .grid-flow-col {\n grid-auto-flow: column\n }\n\n .grid-rows-\\\\[20px_auto\\\\] {\n grid-template-rows:20px auto\n }\n\n .grid-rows-\\\\[auto_20px\\\\] {\n grid-template-rows:auto 20px\n }\n\n .grid-cols-\\\\[1fr_20px_1fr\\\\] {\n grid-template-columns:1fr 20px 1fr\n }\n\n .grid-cols-\\\\[1fr_20px\\\\] {\n grid-template-columns:1fr 20px\n }\n\n .grid-cols-\\\\[20px_1fr\\\\] {\n grid-template-columns:20px 1fr\n }\n\n .grid-cols-\\\\[auto_1fr_auto\\\\] {\n grid-template-columns:auto 1fr auto\n }\n\n .grid-cols-1 {\n grid-template-columns:repeat(1, minmax(0, 1fr))\n }\n\n .grid-cols-2 {\n grid-template-columns:repeat(2, minmax(0, 1fr))\n }\n\n .grid-cols-3 {\n grid-template-columns:repeat(3, minmax(0, 1fr))\n }\n\n .grid-cols-4 {\n grid-template-columns:repeat(4, minmax(0, 1fr))\n }\n\n .grid-cols-5 {\n grid-template-columns:repeat(5, minmax(0, 1fr))\n }\n\n .grid-cols-6 {\n grid-template-columns:repeat(6, minmax(0, 1fr))\n }\n\n .grid-cols-7 {\n grid-template-columns:repeat(7, minmax(0, 1fr))\n }\n\n .grid-cols-8 {\n grid-template-columns:repeat(8, minmax(0, 1fr))\n }\n\n .grid-cols-9 {\n grid-template-columns:repeat(9, minmax(0, 1fr))\n }\n\n .overflow-hidden {\n overflow: hidden\n }\n\n .overflow-x-hidden {\n overflow-x: hidden\n }\n\n .overflow-y-auto {\n overflow-y: auto\n }\n\n .list-none {\n list-style-type: none\n }\n\n .outline-\\\\[--w-s-color-border-negative\\\\]\\\\! {\n outline-color: var(--w-s-color-border-negative) !important\n }\n\n .outline-none {\n outline: 2px solid transparent;\n outline-offset: 2px\n }\n\n .focus\\\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px\n }\n\n .items-start {\n align-items: flex-start\n }\n\n .items-end {\n align-items: flex-end\n }\n\n .items-center {\n align-items: center\n }\n\n .self-center {\n align-self: center\n }\n\n .inset-0 {\n top: 0rem;\n right: 0rem;\n bottom: 0rem;\n left: 0rem\n }\n\n .-bottom-0 {\n bottom: -0rem\n }\n\n .bottom-0 {\n bottom: 0rem\n }\n\n .bottom-10 {\n bottom: 1rem\n }\n\n .bottom-16 {\n bottom: 1.6rem\n }\n\n .left-0 {\n left: 0rem\n }\n\n .left-4 {\n left: .4rem\n }\n\n .right-0 {\n right: 0rem\n }\n\n .right-8 {\n right: .8rem\n }\n\n .top-\\\\[1\\\\.92rem\\\\] {\n top: 1.92rem\n }\n\n .top-0 {\n top: 0rem\n }\n\n .top-20 {\n top: 2rem\n }\n\n .top-4 {\n top: .4rem\n }\n\n .top-8 {\n top: .8rem\n }\n\n .before\\\\:bottom-0:before {\n bottom: 0rem\n }\n\n .before\\\\:left-0:before {\n left: 0rem\n }\n\n .before\\\\:right-0:before {\n right: 0rem\n }\n\n .before\\\\:top-2:before {\n top: .2rem\n }\n\n .-bottom-\\\\[8px\\\\] {\n bottom: -8px\n }\n\n .-left-\\\\[8px\\\\] {\n left: -8px\n }\n\n .-right-\\\\[8px\\\\] {\n right: -8px\n }\n\n .-top-\\\\[8px\\\\] {\n top: -8px\n }\n\n .top-\\\\[19px\\\\] {\n top: 19px\n }\n\n .top-\\\\[30\\\\%\\\\] {\n top: 30%\n }\n\n .justify-end {\n justify-content: flex-end\n }\n\n .justify-center {\n justify-content: center\n }\n\n .justify-between {\n justify-content: space-between\n }\n\n .justify-items-center {\n justify-items: center\n }\n\n .justify-self-start {\n justify-self: start\n }\n\n .justify-self-end {\n justify-self: end\n }\n\n .justify-self-center {\n justify-self: center\n }\n\n .absolute {\n position: absolute\n }\n\n .fixed {\n position: fixed\n }\n\n .relative {\n position: relative\n }\n\n .open\\\\:fixed[open] {\n position: fixed\n }\n\n .before\\\\:absolute:before {\n position: absolute\n }\n\n .z-10, .peer:checked ~ .peer-checked\\\\:z-10 {\n z-index: 10\n }\n\n .z-30 {\n z-index: 30\n }\n\n .z-50 {\n z-index: 50\n }\n\n .hover\\\\:z-30:hover {\n z-index: 30\n }\n\n .\\\\!s-bg-selected {\n background-color: var(--w-s-color-background-selected) !important\n }\n\n .s-bg {\n background-color: var(--w-s-color-background)\n }\n\n .s-bg-disabled {\n background-color: var(--w-s-color-background-disabled)\n }\n\n .s-bg-disabled-subtle {\n background-color: var(--w-s-color-background-disabled-subtle)\n }\n\n .s-bg-info-subtle {\n background-color: var(--w-s-color-background-info-subtle)\n }\n\n .s-bg-inverted {\n background-color: var(--w-s-color-background-inverted)\n }\n\n .s-bg-negative {\n background-color: var(--w-s-color-background-negative)\n }\n\n .s-bg-negative-subtle {\n background-color: var(--w-s-color-background-negative-subtle)\n }\n\n .s-bg-positive-subtle {\n background-color: var(--w-s-color-background-positive-subtle)\n }\n\n .s-bg-primary, .peer:checked ~ .peer-checked\\\\:s-bg-primary {\n background-color: var(--w-s-color-background-primary)\n }\n\n .s-bg-selected {\n background-color: var(--w-s-color-background-selected)\n }\n\n .s-bg-subtle {\n background-color: var(--w-s-color-background-subtle)\n }\n\n .s-bg-warning-subtle {\n background-color: var(--w-s-color-background-warning-subtle)\n }\n\n .peer:checked:hover ~ .peer-checked\\\\:peer-hover\\\\:before\\\\:s-bg-negative-hover:before {\n background-color: var(--w-s-color-background-negative-hover)\n }\n\n .peer:checked:hover ~ .peer-checked\\\\:peer-hover\\\\:before\\\\:s-bg-primary-hover:before {\n background-color: var(--w-s-color-background-primary-hover)\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:s-bg-disabled:before {\n background-color: var(--w-s-color-background-disabled)\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:s-bg-negative:before {\n background-color: var(--w-s-color-background-negative)\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:s-bg-primary:before {\n background-color: var(--w-s-color-background-primary)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:before\\\\:s-bg-disabled:before {\n background-color: var(--w-s-color-background-disabled)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:before\\\\:s-bg-negative:before {\n background-color: var(--w-s-color-background-negative)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:before\\\\:s-bg-primary:before {\n background-color: var(--w-s-color-background-primary)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:hover\\\\:before\\\\:s-bg-negative-hover:hover:before {\n background-color: var(--w-s-color-background-negative-hover)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:hover\\\\:before\\\\:s-bg-primary-hover:hover:before {\n background-color: var(--w-s-color-background-primary-hover)\n }\n\n .\\\\!hover\\\\:s-bg-selected-hover:hover {\n background-color: var(--w-s-color-background-selected-hover) !important\n }\n\n .group:hover .group-hover\\\\:s-bg-primary-hover {\n background-color: var(--w-s-color-background-primary-hover)\n }\n\n .hover\\\\:before\\\\:s-bg-hover:hover:before {\n background-color: var(--w-s-color-background-hover)\n }\n\n .hover\\\\:before\\\\:s-bg-negative-subtle-hover:hover:before {\n background-color: var(--w-s-color-background-negative-subtle-hover)\n }\n\n .hover\\\\:s-bg-hover:hover {\n background-color: var(--w-s-color-background-hover)\n }\n\n .hover\\\\:s-bg-negative-hover:hover {\n background-color: var(--w-s-color-background-negative-hover)\n }\n\n .hover\\\\:s-bg-negative-subtle-hover:hover {\n background-color: var(--w-s-color-background-negative-subtle-hover)\n }\n\n .hover\\\\:s-bg-primary-hover:hover {\n background-color: var(--w-s-color-background-primary-hover)\n }\n\n .hover\\\\:s-bg-selected-hover:hover {\n background-color: var(--w-s-color-background-selected-hover)\n }\n\n .peer:hover:not(:checked) ~ .peer-hover\\\\:peer-not-checked\\\\:s-bg-hover {\n background-color: var(--w-s-color-background-hover)\n }\n\n .peer:hover ~ .peer-hover\\\\:before\\\\:s-bg-hover:before {\n background-color: var(--w-s-color-background-hover)\n }\n\n .peer:hover ~ .peer-hover\\\\:before\\\\:s-bg-negative-subtle:before {\n background-color: var(--w-s-color-background-negative-subtle)\n }\n\n .focus\\\\:s-bg-primary-hover:focus {\n background-color: var(--w-s-color-background-primary-hover)\n }\n\n .\\\\!active\\\\:s-bg-selected-active:active {\n background-color: var(--w-s-color-background-selected-active) !important\n }\n\n .active\\\\:s-bg-active:active {\n background-color: var(--w-s-color-background-active)\n }\n\n .active\\\\:s-bg-negative-active:active {\n background-color: var(--w-s-color-background-negative-active)\n }\n\n .active\\\\:s-bg-negative-subtle-active:active {\n background-color: var(--w-s-color-background-negative-subtle-active)\n }\n\n .active\\\\:s-bg-primary-active:active {\n background-color: var(--w-s-color-background-primary-active)\n }\n\n .active\\\\:s-bg-selected-active:active {\n background-color: var(--w-s-color-background-selected-active)\n }\n\n .before\\\\:s-bg-disabled-subtle:before {\n background-color: var(--w-s-color-background-disabled-subtle)\n }\n\n .before\\\\:s-bg:before {\n background-color: var(--w-s-color-background)\n }\n\n .s-text {\n color: var(--w-s-color-text)\n }\n\n .s-text-disabled {\n color: var(--w-s-color-text-disabled)\n }\n\n .s-text-inverted, .peer:checked ~ .peer-checked\\\\:s-text-inverted {\n color: var(--w-s-color-text-inverted)\n }\n\n .s-text-inverted-static {\n color: var(--w-s-color-text-inverted-static)\n }\n\n .s-text-link {\n color: var(--w-s-color-text-link)\n }\n\n .s-text-negative {\n color: var(--w-s-color-text-negative)\n }\n\n .s-text-subtle {\n color: var(--w-s-color-text-subtle)\n }\n\n .hover\\\\:s-text-link:hover {\n color: var(--w-s-color-text-link)\n }\n\n .active\\\\:s-text:active {\n color: var(--w-s-color-text)\n }\n\n .placeholder\\\\:s-text-placeholder::placeholder {\n color: var(--w-s-color-text-placeholder)\n }\n\n .s-icon {\n color: var(--w-s-color-icon)\n }\n\n .s-icon-info {\n color: var(--w-s-color-icon-info)\n }\n\n .s-icon-inverted {\n color: var(--w-s-color-icon-inverted)\n }\n\n .s-icon-negative {\n color: var(--w-s-color-icon-negative)\n }\n\n .s-icon-positive {\n color: var(--w-s-color-icon-positive)\n }\n\n .s-icon-warning {\n color: var(--w-s-color-icon-warning)\n }\n\n .hover\\\\:s-icon-hover:hover {\n color: var(--w-s-color-icon-hover)\n }\n\n .active\\\\:s-icon-active:active {\n color: var(--w-s-color-icon-active)\n }\n\n .before\\\\:s-icon-inverted:before {\n color: var(--w-s-color-icon-inverted)\n }\n\n .s-border {\n border-color: var(--w-s-color-border)\n }\n\n .s-border-disabled {\n border-color: var(--w-s-color-border-disabled)\n }\n\n .s-border-info-subtle {\n border-color: var(--w-s-color-border-info-subtle)\n }\n\n .s-border-l-info {\n border-left-color: var(--w-s-color-border-info)\n }\n\n .s-border-l-negative {\n border-left-color: var(--w-s-color-border-negative)\n }\n\n .s-border-l-positive {\n border-left-color: var(--w-s-color-border-positive)\n }\n\n .s-border-l-warning {\n border-left-color: var(--w-s-color-border-warning)\n }\n\n .s-border-negative {\n border-color: var(--w-s-color-border-negative)\n }\n\n .s-border-negative-subtle {\n border-color: var(--w-s-color-border-negative-subtle)\n }\n\n .s-border-positive-subtle {\n border-color: var(--w-s-color-border-positive-subtle)\n }\n\n .s-border-primary, .peer:checked ~ .peer-checked\\\\:s-border-primary {\n border-color: var(--w-s-color-border-primary)\n }\n\n .s-border-selected {\n border-color: var(--w-s-color-border-selected)\n }\n\n .s-border-warning-subtle {\n border-color: var(--w-s-color-border-warning-subtle)\n }\n\n .peer:checked:hover ~ .peer-checked\\\\:peer-hover\\\\:before\\\\:s-border-negative-hover:before {\n border-color: var(--w-s-color-border-negative-hover)\n }\n\n .peer:checked:hover ~ .peer-checked\\\\:peer-hover\\\\:before\\\\:s-border-primary-hover:before {\n border-color: var(--w-s-color-border-primary-hover)\n }\n\n .peer:checked:hover ~ .peer-checked\\\\:peer-hover\\\\:before\\\\:s-border-selected-hover:before {\n border-color: var(--w-s-color-border-selected-hover)\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:s-border-disabled:before {\n border-color: var(--w-s-color-border-disabled)\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:s-border-negative:before {\n border-color: var(--w-s-color-border-negative)\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:s-border-primary:before {\n border-color: var(--w-s-color-border-primary)\n }\n\n .peer:checked ~ .peer-checked\\\\:before\\\\:s-border-selected:before {\n border-color: var(--w-s-color-border-selected)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:before\\\\:s-border-disabled:before {\n border-color: var(--w-s-color-border-disabled)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:before\\\\:s-border-negative:before {\n border-color: var(--w-s-color-border-negative)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:before\\\\:s-border-primary:before {\n border-color: var(--w-s-color-border-primary)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:hover\\\\:before\\\\:s-border-negative-hover:hover:before {\n border-color: var(--w-s-color-border-negative-hover)\n }\n\n .peer:indeterminate ~ .peer-indeterminate\\\\:hover\\\\:before\\\\:s-border-primary-hover:hover:before {\n border-color: var(--w-s-color-border-primary-hover)\n }\n\n .group:hover .group-hover\\\\:s-border-selected-hover {\n border-color: var(--w-s-color-border-selected-hover)\n }\n\n .hover\\\\:before\\\\:s-border-negative-hover:hover:before {\n border-color: var(--w-s-color-border-negative-hover)\n }\n\n .hover\\\\:before\\\\:s-border-primary:hover:before {\n border-color: var(--w-s-color-border-primary)\n }\n\n .hover\\\\:s-border-disabled:hover {\n border-color: var(--w-s-color-border-disabled)\n }\n\n .hover\\\\:s-border-hover:hover {\n border-color: var(--w-s-color-border-hover)\n }\n\n .hover\\\\:s-border-negative-hover:hover {\n border-color: var(--w-s-color-border-negative-hover)\n }\n\n .hover\\\\:s-border-primary-hover:hover {\n border-color: var(--w-s-color-border-primary-hover)\n }\n\n .hover\\\\:s-border-primary:hover {\n border-color: var(--w-s-color-border-primary)\n }\n\n .hover\\\\:s-border-selected-hover:hover {\n border-color: var(--w-s-color-border-selected-hover)\n }\n\n .peer:hover ~ .peer-hover\\\\:before\\\\:s-border-negative-hover:before {\n border-color: var(--w-s-color-border-negative-hover)\n }\n\n .peer:hover ~ .peer-hover\\\\:before\\\\:s-border-primary:before {\n border-color: var(--w-s-color-border-primary)\n }\n\n .focus\\\\:s-border-primary-hover:focus {\n border-color: var(--w-s-color-border-primary-hover)\n }\n\n .active\\\\:s-border-active:active {\n border-color: var(--w-s-color-border-active)\n }\n\n .active\\\\:s-border-disabled:active {\n border-color: var(--w-s-color-border-disabled)\n }\n\n .active\\\\:s-border-primary-active:active {\n border-color: var(--w-s-color-border-primary-active)\n }\n\n .active\\\\:s-border-selected-active:active {\n border-color: var(--w-s-color-border-selected-active)\n }\n\n .active\\\\:s-border-selected:active {\n border-color: var(--w-s-color-border-selected)\n }\n\n .group:active .group-active\\\\:s-border-active {\n border-color: var(--w-s-color-border-active)\n }\n\n .group:active .group-active\\\\:s-border-selected-active {\n border-color: var(--w-s-color-border-selected-active)\n }\n\n .before\\\\:s-border-disabled:before {\n border-color: var(--w-s-color-border-disabled)\n }\n\n .before\\\\:s-border-negative:before {\n border-color: var(--w-s-color-border-negative)\n }\n\n .s-surface-sunken {\n background-color: var(--w-s-color-surface-sunken)\n }\n\n .s-surface-elevated-200 {\n background-color: var(--w-s-color-surface-elevated-200);\n box-shadow: var(--w-s-shadow-surface-elevated-200)\n }\n\n .hover\\\\:s-surface-elevated-200-hover:hover {\n background-color: var(--w-s-color-surface-elevated-200-hover);\n box-shadow: var(--w-s-shadow-surface-elevated-200-hover)\n }\n\n .active\\\\:s-surface-elevated-200-active:active {\n background-color: var(--w-s-color-surface-elevated-200-active);\n box-shadow: var(--w-s-shadow-surface-elevated-200-active)\n }\n\n .drop-shadow-m {\n filter: drop-shadow(rgba(64, 64, 64, .24) 0 3px 8px) drop-shadow(rgba(64, 64, 64, .16) 0 3px 6px)\n }\n\n .shadow-m {\n box-shadow: var(--w-shadow-m)\n }\n\n .shadow-s {\n box-shadow: var(--w-shadow-s)\n }\n\n .shadow-\\\\[--w-shadow-slider\\\\] {\n box-shadow: var(--w-shadow-slider)\n }\n\n .hover\\\\:shadow-\\\\[--w-shadow-slider-handle-hover\\\\]:hover {\n box-shadow: var(--w-shadow-slider-handle-hover)\n }\n\n .focus\\\\:shadow-\\\\[--w-shadow-slider-handle-hover\\\\]:focus {\n box-shadow: var(--w-shadow-slider-handle-hover)\n }\n\n .active\\\\:shadow-\\\\[--w-shadow-slider-handle-active\\\\]:active {\n box-shadow: var(--w-shadow-slider-handle-active)\n }\n\n .h-0 {\n height: 0rem\n }\n\n .h-16 {\n height: 1.6rem\n }\n\n .h-2 {\n height: .2rem\n }\n\n .h-20 {\n height: 2rem\n }\n\n .h-24 {\n height: 2.4rem\n }\n\n .h-4 {\n height: .4rem\n }\n\n .h-44 {\n height: 4.4rem\n }\n\n .h-6 {\n height: .6rem\n }\n\n .h-8 {\n height: .8rem\n }\n\n .h-full {\n height: 100%\n }\n\n .h-unset {\n height: unset\n }\n\n .max-h-unset {\n max-height: unset\n }\n\n .max-w-full {\n max-width: 100%\n }\n\n .max-w-max {\n max-width: max-content\n }\n\n .max-w-unset {\n max-width: unset\n }\n\n .min-h-32 {\n min-height: 3.2rem\n }\n\n .min-h-40 {\n min-height: 4rem\n }\n\n .min-w-16 {\n min-width: 1.6rem\n }\n\n .min-w-32 {\n min-width: 3.2rem\n }\n\n .w-16 {\n width: 1.6rem\n }\n\n .w-2 {\n width: .2rem\n }\n\n .w-20 {\n width: 2rem\n }\n\n .w-24 {\n width: 2.4rem\n }\n\n .w-32 {\n width: 3.2rem\n }\n\n .w-40 {\n width: 4rem\n }\n\n .w-44 {\n width: 4.4rem\n }\n\n .w-8 {\n width: .8rem\n }\n\n .w-full {\n width: 100%\n }\n\n .w-max {\n width: max-content\n }\n\n .w-unset {\n width: unset\n }\n\n .before\\\\:h-20:before {\n height: 2rem\n }\n\n .before\\\\:h-full:before {\n height: 100%\n }\n\n .before\\\\:w-20:before {\n width: 2rem\n }\n\n .before\\\\:w-32:before {\n width: 3.2rem\n }\n\n .h-\\\\[--w-modal-height\\\\] {\n height: var(--w-modal-height)\n }\n\n .h-\\\\[14px\\\\] {\n height: 14px\n }\n\n .h-\\\\[16px\\\\] {\n height: 16px\n }\n\n .max-h-\\\\[--w-modal-max-height\\\\] {\n max-height: var(--w-modal-max-height)\n }\n\n .min-h-\\\\[--w-modal-min-height\\\\] {\n min-height: var(--w-modal-min-height)\n }\n\n .min-h-\\\\[32px\\\\] {\n min-height: 32px\n }\n\n .min-h-\\\\[40px\\\\] {\n min-height: 40px\n }\n\n .min-h-\\\\[42\\\\] {\n min-height: 4.2rem\n }\n\n .min-h-\\\\[44px\\\\] {\n min-height: 44px\n }\n\n .min-w-\\\\[32px\\\\] {\n min-width: 32px\n }\n\n .min-w-\\\\[40px\\\\] {\n min-width: 40px\n }\n\n .min-w-\\\\[44px\\\\] {\n min-width: 44px\n }\n\n .w-\\\\[--w-modal-width\\\\] {\n width: var(--w-modal-width)\n }\n\n .w-\\\\[14px\\\\] {\n width: 14px\n }\n\n .w-\\\\[16px\\\\] {\n width: 16px\n }\n\n .space-x-8 > :not([hidden]) ~ :not([hidden]) {\n --w-space-x-reverse: 0;\n margin-left: calc(.8rem * calc(1 - var(--w-space-x-reverse)));\n margin-right: calc(.8rem * var(--w-space-x-reverse))\n }\n\n .space-y-16 > :not([hidden]) ~ :not([hidden]) {\n --w-space-y-reverse: 0;\n margin-top: calc(1.6rem * calc(1 - var(--w-space-y-reverse)));\n margin-bottom: calc(1.6rem * var(--w-space-y-reverse))\n }\n\n .m-0 {\n margin: 0rem\n }\n\n .m-auto {\n margin: auto\n }\n\n .-mx-16 {\n margin-left: -1.6rem;\n margin-right: -1.6rem\n }\n\n .mx-0 {\n margin-left: 0rem;\n margin-right: 0rem\n }\n\n .mx-8 {\n margin-left: .8rem;\n margin-right: .8rem\n }\n\n .mx-auto {\n margin-left: auto;\n margin-right: auto\n }\n\n .-mb-1 {\n margin-bottom: -.1rem\n }\n\n .-ml-8 {\n margin-left: -.8rem\n }\n\n .-mr-1 {\n margin-right: -.1rem\n }\n\n .-mr-8 {\n margin-right: -.8rem\n }\n\n .-mt-2 {\n margin-top: -.2rem\n }\n\n .-mt-4 {\n margin-top: -.4rem\n }\n\n .last-child\\\\:mb-0 > :last-child, .mb-0 {\n margin-bottom: 0rem\n }\n\n .mb-32 {\n margin-bottom: 3.2rem\n }\n\n .ml-8 {\n margin-left: .8rem\n }\n\n .ml-auto {\n margin-left: auto\n }\n\n .mr-8 {\n margin-right: .8rem\n }\n\n .mt-16 {\n margin-top: 1.6rem\n }\n\n .mt-4 {\n margin-top: .4rem\n }\n\n .group:not(:first-child) .group-not-first\\\\:-ml-2 {\n margin-left: -.2rem\n }\n\n .last\\\\:mb-0:last-child {\n margin-bottom: 0rem\n }\n\n .last\\\\:mr-0:last-child {\n margin-right: 0rem\n }\n\n .m-\\\\[8px\\\\] {\n margin: 8px\n }\n\n .p-0 {\n padding: 0rem\n }\n\n .p-16 {\n padding: 1.6rem\n }\n\n .p-4 {\n padding: .4rem\n }\n\n .p-8 {\n padding: .8rem\n }\n\n .px-0 {\n padding-left: 0rem;\n padding-right: 0rem\n }\n\n .px-1 {\n padding-left: .1rem;\n padding-right: .1rem\n }\n\n .px-12 {\n padding-left: 1.2rem;\n padding-right: 1.2rem\n }\n\n .px-14 {\n padding-left: 1.4rem;\n padding-right: 1.4rem\n }\n\n .px-16 {\n padding-left: 1.6rem;\n padding-right: 1.6rem\n }\n\n .px-8 {\n padding-left: .8rem;\n padding-right: .8rem\n }\n\n .py-0 {\n padding-top: 0rem;\n padding-bottom: 0rem\n }\n\n .py-1 {\n padding-top: .1rem;\n padding-bottom: .1rem\n }\n\n .py-10 {\n padding-top: 1rem;\n padding-bottom: 1rem\n }\n\n .py-12 {\n padding-top: 1.2rem;\n padding-bottom: 1.2rem\n }\n\n .py-2 {\n padding-top: .2rem;\n padding-bottom: .2rem\n }\n\n .py-4 {\n padding-top: .4rem;\n padding-bottom: .4rem\n }\n\n .py-6 {\n padding-top: .6rem;\n padding-bottom: .6rem\n }\n\n .py-8 {\n padding-top: .8rem;\n padding-bottom: .8rem\n }\n\n .pb-0 {\n padding-bottom: 0rem\n }\n\n .pb-32 {\n padding-bottom: 3.2rem\n }\n\n .pb-4 {\n padding-bottom: .4rem\n }\n\n .pb-8 {\n padding-bottom: .8rem\n }\n\n .pl-0 {\n padding-left: 0rem\n }\n\n .pl-1 {\n padding-left: .1rem\n }\n\n .pl-12 {\n padding-left: 1.2rem\n }\n\n .pl-28 {\n padding-left: 2.8rem\n }\n\n .pl-4 {\n padding-left: .4rem\n }\n\n .pl-8 {\n padding-left: .8rem\n }\n\n .pr-12 {\n padding-right: 1.2rem\n }\n\n .pr-14 {\n padding-right: 1.4rem\n }\n\n .pr-2 {\n padding-right: .2rem\n }\n\n .pr-32 {\n padding-right: 3.2rem\n }\n\n .pr-40 {\n padding-right: 4rem\n }\n\n .pt-0 {\n padding-top: 0rem\n }\n\n .pt-1 {\n padding-top: .1rem\n }\n\n .pt-16 {\n padding-top: 1.6rem\n }\n\n .pt-24 {\n padding-top: 2.4rem\n }\n\n .pt-8 {\n padding-top: .8rem\n }\n\n .group\\\\/step:last-child .group-last\\\\/step\\\\:last\\\\:pb-0:last-child {\n padding-bottom: 0rem\n }\n\n .last\\\\:pb-1:last-child {\n padding-bottom: .1rem\n }\n\n .last\\\\:pr-1:last-child {\n padding-right: .1rem\n }\n\n .p-\\\\[8px\\\\] {\n padding: 8px\n }\n\n .px-\\\\[15px\\\\] {\n padding-left: 15px;\n padding-right: 15px\n }\n\n .px-\\\\[8px\\\\] {\n padding-left: 8px;\n padding-right: 8px\n }\n\n .py-\\\\[11px\\\\] {\n padding-top: 11px;\n padding-bottom: 11px\n }\n\n .py-\\\\[5px\\\\] {\n padding-top: 5px;\n padding-bottom: 5px\n }\n\n .py-\\\\[7px\\\\] {\n padding-top: 7px;\n padding-bottom: 7px\n }\n\n .pl-\\\\[var\\\\(--w-prefix-width\\\\,_40px\\\\)\\\\] {\n padding-left: var(--w-prefix-width, 40px)\n }\n\n .invisible {\n visibility: hidden\n }\n\n .backface-hidden {\n backface-visibility: hidden\n }\n\n .break-words {\n overflow-wrap: break-word\n }\n\n .before\\\\:content-\\\\[\\\\\"\u00E2\u20AC\u201C\\\\\"\\\\]:before {\n content: \"\u00E2\u20AC\u201C\"\n }\n\n .before\\\\:content-\\\\[\\\\\"\\\\\"\\\\]:before {\n content: \"\"\n }\n\n .cursor-default {\n cursor: default\n }\n\n .cursor-pointer {\n cursor: pointer\n }\n\n .antialiased {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n font-smoothing: grayscale\n }\n\n .font-bold {\n font-weight: 700\n }\n\n .before\\\\:font-bold:before {\n font-weight: 700\n }\n\n .font-normal {\n font-weight: 400\n }\n\n .pointer-events-auto {\n pointer-events: auto\n }\n\n .pointer-events-none {\n pointer-events: none\n }\n\n .before\\\\:pointer-events-none:before {\n pointer-events: none\n }\n\n .pb-safe-\\\\[32\\\\] {\n padding-bottom: calc(32px + env(safe-area-inset-bottom, 0px))\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0\n }\n\n .touch-pan-y {\n touch-action: pan-y\n }\n\n .select-none {\n -webkit-user-select: none;\n user-select: none\n }\n\n .translate-x-20 {\n --w-translate-x: 2rem;\n transform: translate(var(--w-translate-x)) translateY(var(--w-translate-y)) translateZ(var(--w-translate-z)) rotate(var(--w-rotate)) rotateX(var(--w-rotate-x)) rotateY(var(--w-rotate-y)) rotate(var(--w-rotate-z)) skew(var(--w-skew-x)) skewY(var(--w-skew-y)) scaleX(var(--w-scale-x)) scaleY(var(--w-scale-y)) scaleZ(var(--w-scale-z))\n }\n\n .translate-z-0 {\n --w-translate-z: 0rem;\n transform: translate(var(--w-translate-x)) translateY(var(--w-translate-y)) translateZ(var(--w-translate-z)) rotate(var(--w-rotate)) rotateX(var(--w-rotate-x)) rotateY(var(--w-rotate-y)) rotate(var(--w-rotate-z)) skew(var(--w-skew-x)) skewY(var(--w-skew-y)) scaleX(var(--w-scale-x)) scaleY(var(--w-scale-y)) scaleZ(var(--w-scale-z))\n }\n\n .-rotate-180, .part-\\\\[w-icon-chevron-down-16-part\\\\]\\\\:-rotate-180::part(w-icon-chevron-down-16-part) {\n --w-rotate-x: 0;\n --w-rotate-y: 0;\n --w-rotate-z: 0;\n --w-rotate: -180deg;\n transform: translate(var(--w-translate-x)) translateY(var(--w-translate-y)) translateZ(var(--w-translate-z)) rotate(var(--w-rotate)) rotateX(var(--w-rotate-x)) rotateY(var(--w-rotate-y)) rotate(var(--w-rotate-z)) skew(var(--w-skew-x)) skewY(var(--w-skew-y)) scaleX(var(--w-scale-x)) scaleY(var(--w-scale-y)) scaleZ(var(--w-scale-z))\n }\n\n .part-\\\\[w-icon-chevron-up-16-part\\\\]\\\\:rotate-180::part(w-icon-chevron-up-16-part), .rotate-180 {\n --w-rotate-x: 0;\n --w-rotate-y: 0;\n --w-rotate-z: 0;\n --w-rotate: 180deg;\n transform: translate(var(--w-translate-x)) translateY(var(--w-translate-y)) translateZ(var(--w-translate-z)) rotate(var(--w-rotate)) rotateX(var(--w-rotate-x)) rotateY(var(--w-rotate-y)) rotate(var(--w-rotate-z)) skew(var(--w-skew-x)) skewY(var(--w-skew-y)) scaleX(var(--w-scale-x)) scaleY(var(--w-scale-y)) scaleZ(var(--w-scale-z))\n }\n\n .rotate-90 {\n --w-rotate-x: 0;\n --w-rotate-y: 0;\n --w-rotate-z: 0;\n --w-rotate: 90deg;\n transform: translate(var(--w-translate-x)) translateY(var(--w-translate-y)) translateZ(var(--w-translate-z)) rotate(var(--w-rotate)) rotateX(var(--w-rotate-x)) rotateY(var(--w-rotate-y)) rotate(var(--w-rotate-z)) skew(var(--w-skew-x)) skewY(var(--w-skew-y)) scaleX(var(--w-scale-x)) scaleY(var(--w-scale-y)) scaleZ(var(--w-scale-z))\n }\n\n .part-\\\\[w-icon-chevron-down-16-part\\\\]\\\\:transform::part(w-icon-chevron-down-16-part), .part-\\\\[w-icon-chevron-up-16-part\\\\]\\\\:transform::part(w-icon-chevron-up-16-part), .transform {\n transform: translate(var(--w-translate-x)) translateY(var(--w-translate-y)) translateZ(var(--w-translate-z)) rotate(var(--w-rotate)) rotateX(var(--w-rotate-x)) rotateY(var(--w-rotate-y)) rotate(var(--w-rotate-z)) skew(var(--w-skew-x)) skewY(var(--w-skew-y)) scaleX(var(--w-scale-x)) scaleY(var(--w-scale-y)) scaleZ(var(--w-scale-z))\n }\n\n .part-\\\\[w-icon-chevron-down-16-part\\\\]\\\\:transform-gpu::part(w-icon-chevron-down-16-part), .part-\\\\[w-icon-chevron-up-16-part\\\\]\\\\:transform-gpu::part(w-icon-chevron-up-16-part), .transform-gpu {\n transform: translate3d(var(--w-translate-x), var(--w-translate-y), var(--w-translate-z)) rotate(var(--w-rotate)) rotateX(var(--w-rotate-x)) rotateY(var(--w-rotate-y)) rotate(var(--w-rotate-z)) skew(var(--w-skew-x)) skewY(var(--w-skew-y)) scaleX(var(--w-scale-x)) scaleY(var(--w-scale-y)) scaleZ(var(--w-scale-z))\n }\n\n .part-\\\\[w-icon-chevron-down-16-part\\\\]\\\\:transition-transform::part(w-icon-chevron-down-16-part), .part-\\\\[w-icon-chevron-up-16-part\\\\]\\\\:transition-transform::part(w-icon-chevron-up-16-part), .transition-transform {\n transition-property: transform;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n transition-duration: .15s\n }\n\n .transition-300 {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n transition-duration: .3s\n }\n\n .transition-all {\n transition-property: all;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n transition-duration: .15s\n }\n\n .transition-colors {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n transition-duration: .15s\n }\n\n .transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n transition-duration: .15s\n }\n\n .before\\\\:transition-all:before {\n transition-property: all;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n transition-duration: .15s\n }\n\n .duration-300 {\n transition-duration: .3s\n }\n\n .ease-in-out, .part-\\\\[w-icon-chevron-down-16-part\\\\]\\\\:ease-in-out::part(w-icon-chevron-down-16-part), .part-\\\\[w-icon-chevron-up-16-part\\\\]\\\\:ease-in-out::part(w-icon-chevron-up-16-part) {\n transition-timing-function: cubic-bezier(.4, 0, .2, 1)\n }\n\n .text-m {\n font-size: var(--w-font-size-m);\n line-height: var(--w-line-height-m)\n }\n\n .text-s {\n font-size: var(--w-font-size-s);\n line-height: var(--w-line-height-s)\n }\n\n .text-xs {\n font-size: var(--w-font-size-xs);\n line-height: var(--w-line-height-xs)\n }\n\n .leading-m {\n line-height: var(--w-line-height-m)\n }\n\n .before\\\\:leading-xs:before {\n line-height: var(--w-line-height-xs)\n }\n\n .leading-\\\\[24\\\\] {\n line-height: 2.4rem\n }\n\n @media (max-width: 479.9px) {\n .lt-sm\\\\:rounded-b-0 {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0\n }\n }\n @media (min-width: 480px) {\n .sm\\\\:border-b-0 {\n border-bottom-width: 0\n }\n\n .sm\\\\:rounded-8 {\n border-radius: 8px\n }\n\n .sm\\\\:rounded-b-8 {\n border-bottom-left-radius: 8px;\n border-bottom-right-radius: 8px\n }\n\n .sm\\\\:gap-16 {\n gap: 1.6rem\n }\n\n .sm\\\\:place-content-center {\n place-content: center\n }\n\n .sm\\\\:place-items-center {\n place-items: center\n }\n\n .sm\\\\:h-24 {\n height: 2.4rem\n }\n\n .sm\\\\:min-h-48 {\n min-height: 4.8rem\n }\n\n .sm\\\\:w-24 {\n width: 2.4rem\n }\n\n .sm\\\\:min-h-\\\\[32px\\\\] {\n min-height: 32px\n }\n\n .sm\\\\:min-h-\\\\[44px\\\\] {\n min-height: 44px\n }\n\n .sm\\\\:min-h-\\\\[45\\\\] {\n min-height: 4.5rem\n }\n\n .sm\\\\:min-w-\\\\[32px\\\\] {\n min-width: 32px\n }\n\n .sm\\\\:min-w-\\\\[44px\\\\] {\n min-width: 44px\n }\n\n .sm\\\\:mx-0 {\n margin-left: 0rem;\n margin-right: 0rem\n }\n\n .sm\\\\:mx-16 {\n margin-left: 1.6rem;\n margin-right: 1.6rem\n }\n\n .sm\\\\:-ml-12 {\n margin-left: -1.2rem\n }\n\n .sm\\\\:-mr-12 {\n margin-right: -1.2rem\n }\n\n .sm\\\\:-mt-8 {\n margin-top: -.8rem\n }\n\n .sm\\\\:px-32 {\n padding-left: 3.2rem;\n padding-right: 3.2rem\n }\n\n .sm\\\\:py-0 {\n padding-top: 0rem;\n padding-bottom: 0rem\n }\n\n .sm\\\\:pb-32 {\n padding-bottom: 3.2rem\n }\n\n .sm\\\\:pt-24 {\n padding-top: 2.4rem\n }\n\n .sm\\\\:pt-32 {\n padding-top: 3.2rem\n }\n }\n @media (min-width: 768px) {\n .md\\\\:block {\n display: block\n }\n\n .md\\\\:hidden {\n display: none\n }\n }\n `;\n", "import type { PropertyValues } from 'lit';\nimport { html } from 'lit';\n\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { BaseFormAssociatedElement } from './form-associated-element';\nimport { uniqueId } from './math';\nimport './radio';\nimport type { WRadio } from './radio';\n// eslint-disable-next-line\n// @ts-ignore\nimport { styles } from './radio-group-styles';\nimport { RequiredValidator } from './required-validator';\nimport { HasSlotController } from './slot';\n\n/**\n * @slot label - Alternative to the `label` attribute should you need custom HTML.\n */\nexport class WRadioGroup extends BaseFormAssociatedElement {\n static css = [styles];\n\n static get validators() {\n const validators = [\n RequiredValidator({\n validationElement: Object.assign(document.createElement('input'), {\n required: true,\n type: 'radio',\n // we need an id that's guaranteed to be unique; users will never see this\n name: uniqueId('__w-radio'),\n }),\n }),\n ];\n return [...super.validators, ...validators];\n }\n\n private readonly hasSlotController = new HasSlotController(this, 'hint', 'label');\n\n @state() hasRadioButtons = false;\n\n @query('slot:not([name])') defaultSlot: HTMLSlotElement;\n\n /**\n * The radio group's label. Required for proper accessibility. If you need to display HTML, use the `label` slot\n * instead.\n */\n @property() label = '';\n\n /** The radio groups's hint. If you need to display HTML, use the `hint` slot instead. */\n @property({ attribute: 'hint' }) hint = '';\n\n /** The name of the radio group, submitted as a name/value pair with form data. */\n @property({ reflect: true }) name: string | null = null;\n\n /** Disables the radio group and all child radios. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** The orientation in which to show radio items. */\n @property({ reflect: true }) orientation: 'horizontal' | 'vertical' = 'vertical';\n\n private _value: string | null = null;\n\n get value() {\n if (this.valueHasChanged) {\n return this._value;\n }\n\n return this._value ?? this.defaultValue;\n }\n\n /** The current value of the radio group, submitted as a name/value pair with form data. */\n @state()\n set value(val: string | number | null) {\n if (typeof val === 'number') val = String(val);\n this.valueHasChanged = true;\n this._value = val;\n }\n\n /** The default value of the form control. Primarily used for resetting the form control. */\n @property({ attribute: 'value', reflect: true }) defaultValue: string | null = this.getAttribute('value') || null;\n\n /** The radio group's size. This size will be applied to all child radios and radio buttons, except when explicitly overridden. */\n @property({ reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';\n\n /** Ensures a child radio is checked before allowing the containing form to submit. */\n @property({ type: Boolean, reflect: true }) required = false;\n\n /**\n * Used for SSR. if true, will show slotted label on initial render.\n */\n @property({ type: Boolean, attribute: 'with-label' }) withLabel = false;\n\n /**\n * Used for SSR. if true, will show slotted hint on initial render.\n */\n @property({ type: Boolean, attribute: 'with-hint' }) withHint = false;\n\n //\n // We need this because if we don't have it, FormValidation yells at us that it's \"not focusable\".\n // If we use `this.tabIndex = -1` we can't focus the radio inside.\n //\n static shadowRootOptions = { ...BaseFormAssociatedElement.shadowRootOptions, delegatesFocus: true };\n\n constructor() {\n super();\n this.addEventListener('keydown', this.handleKeyDown);\n this.addEventListener('click', this.handleRadioClick);\n }\n\n /**\n * We use the first available radio as the validationTarget similar to native HTML that shows the validation popup on\n * the first radio element.\n */\n get validationTarget() {\n const radio = this.querySelector<WRadio>(':is(w-radio):not([disabled])');\n if (!radio) return undefined;\n\n return radio;\n }\n\n updated(changedProperties: PropertyValues<this>) {\n if (changedProperties.has('disabled') || changedProperties.has('value')) {\n this.syncRadioElements();\n }\n }\n\n formResetCallback(...args: Parameters<BaseFormAssociatedElement['formResetCallback']>) {\n this.value = this.defaultValue;\n\n super.formResetCallback(...args);\n\n this.syncRadioElements();\n }\n\n private handleRadioClick = (e: Event) => {\n const clickedRadio = (e.target as HTMLElement).closest<WRadio>('w-radio');\n /* eslint-disable */\n if (!clickedRadio || clickedRadio.disabled || (clickedRadio as any).forceDisabled || this.disabled) {\n return;\n }\n\n const oldValue = this.value;\n this.value = clickedRadio.value;\n clickedRadio.checked = true;\n\n const radios = this.getAllRadios();\n for (const radio of radios) {\n if (clickedRadio === radio) {\n continue;\n }\n\n radio.checked = false;\n radio.setAttribute('tabindex', '-1');\n }\n\n if (this.value !== oldValue) {\n this.updateComplete.then(() => {\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n });\n }\n };\n\n private getAllRadios() {\n return [...this.querySelectorAll<WRadio>('w-radio')];\n }\n\n private handleLabelClick() {\n this.focus();\n }\n\n private async syncRadioElements() {\n const radios = this.getAllRadios();\n let hasRadioButtons = false;\n\n // Add data attributes to support styling\n radios.forEach((radio, index) => {\n if (radio.appearance === 'button') hasRadioButtons = true;\n radio.setAttribute('size', this.size);\n radio.toggleAttribute('data-w-radio-horizontal', this.orientation !== 'vertical');\n radio.toggleAttribute('data-w-radio-vertical', this.orientation === 'vertical');\n radio.toggleAttribute('data-w-radio-first', index === 0);\n radio.toggleAttribute('data-w-radio-inner', index !== 0 && index !== radios.length - 1);\n radio.toggleAttribute('data-w-radio-last', index === radios.length - 1);\n\n // Set forceDisabled state based on radio group's disabled state\n (radio as WRadio).forceDisabled = this.disabled;\n });\n\n // If at least one radio button exists, we assume it's a radio button group\n this.hasRadioButtons = hasRadioButtons;\n\n await Promise.all(\n radios.map(async (radio) => {\n await radio.updateComplete;\n\n if (!radio.disabled && radio.value === this.value) {\n radio.checked = true;\n } else {\n radio.checked = false;\n }\n }),\n );\n\n // Manage tabIndex based on disabled state and checked status\n if (this.disabled) {\n // If radio group is disabled, all radios should not be tabbable\n radios.forEach((radio) => {\n radio.tabIndex = -1;\n });\n } else {\n // Normal tabbing behavior\n const enabledRadios = radios.filter((radio) => !radio.disabled);\n const checkedRadio = enabledRadios.find((radio) => radio.checked);\n\n if (enabledRadios.length > 0) {\n if (checkedRadio) {\n // If there's a checked radio, it should be tabbable\n enabledRadios.forEach((radio) => {\n radio.tabIndex = radio.checked ? 0 : -1;\n });\n } else {\n // If no radio is checked, first enabled radio should be tabbable\n enabledRadios.forEach((radio, index) => {\n radio.tabIndex = index === 0 ? 0 : -1;\n });\n }\n }\n\n // Disabled radios should never be tabbable\n radios\n .filter((radio) => radio.disabled)\n .forEach((radio) => {\n radio.tabIndex = -1;\n });\n }\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n if (!['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', ' '].includes(event.key) || this.disabled) {\n return;\n }\n\n const radios = this.getAllRadios().filter((radio) => !radio.disabled);\n\n if (radios.length <= 0) {\n return;\n }\n\n event.preventDefault();\n\n const oldValue = this.value;\n\n const checkedRadio = radios.find((radio) => radio.checked) ?? radios[0];\n const incr = event.key === ' ' ? 0 : ['ArrowUp', 'ArrowLeft'].includes(event.key) ? -1 : 1;\n let index = radios.indexOf(checkedRadio) + incr;\n\n if (!index) index = 0;\n\n if (index < 0) {\n index = radios.length - 1;\n }\n\n if (index > radios.length - 1) {\n index = 0;\n }\n\n const hasRadioButtons = radios.some((radio) => radio.tagName.toLowerCase() === 'w-radio-button');\n\n this.getAllRadios().forEach((radio) => {\n radio.checked = false;\n\n if (!hasRadioButtons) {\n radio.setAttribute('tabindex', '-1');\n }\n });\n\n this.value = radios[index].value;\n radios[index].checked = true;\n\n if (!hasRadioButtons) {\n radios[index].setAttribute('tabindex', '0');\n radios[index].focus();\n } else {\n radios[index].shadowRoot?.querySelector('button')?.focus();\n }\n\n if (this.value !== oldValue) {\n this.updateComplete.then(() => {\n this.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n });\n }\n\n event.preventDefault();\n }\n\n /** Sets focus on the radio group. */\n public focus(options?: FocusOptions) {\n if (this.disabled) return;\n\n const radios = this.getAllRadios();\n const checked = radios.find((radio) => radio.checked);\n const firstEnabledRadio = radios.find((radio) => !radio.disabled);\n const radioToFocus = checked || firstEnabledRadio;\n\n // Call focus for the checked radio. If no radio is checked, focus the first one that isn't disabled.\n if (radioToFocus) {\n radioToFocus.focus(options);\n }\n }\n\n render() {\n const hasLabelSlot = this.hasUpdated ? this.hasSlotController.test('label') : this.withLabel;\n const hasHintSlot = this.hasUpdated ? this.hasSlotController.test('hint') : this.withHint;\n const hasLabel = this.label ? true : !!hasLabelSlot;\n const hasHint = this.hint ? true : !!hasHintSlot;\n\n return html`\n <fieldset\n part=\"form-control\"\n class=${classMap({\n 'form-control': true,\n 'form-control-radio-group': true,\n 'form-control-has-label': hasLabel,\n 'has-radio-buttons': this.hasRadioButtons,\n })}\n role=\"radiogroup\"\n aria-labelledby=\"label\"\n aria-describedby=\"hint\"\n aria-errormessage=\"error-message\"\n aria-orientation=${this.orientation}>\n <label\n part=\"form-control-label\"\n id=\"label\"\n class=\"label\"\n aria-hidden=${hasLabel ? 'false' : 'true'}\n @click=${this.handleLabelClick}>\n <slot name=\"label\">${this.label}</slot>\n </label>\n\n <slot part=\"form-control-input\" @slotchange=${this.syncRadioElements}></slot>\n\n <slot\n id=\"hint\"\n name=\"hint\"\n part=\"hint\"\n class=${classMap({\n 'has-slotted': hasHint,\n })}\n aria-hidden=${hasHint ? 'false' : 'true'}\n >${this.hint}</slot\n >\n </fieldset>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'w-radio-group': WRadioGroup;\n }\n}\n", "export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n", "/* @ts-self-types=\"./index.d.ts\" */\nimport { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << Math.log2(alphabet.length - 1)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step | 0\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length >= size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size | 0, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array((size |= 0)))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n", "import { nanoid } from 'nanoid';\n\nexport function uniqueId(prefix = '') {\n return `${prefix}${nanoid()}`;\n}\n", "import { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: block;\n }\n\n .form-control {\n position: relative;\n border: none;\n padding: 0;\n margin: 0;\n }\n\n .label {\n font-size: var(--w-font-size-s);\n line-height: var(--w-line-height-s);\n font-weight: 700;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n font-smoothing: grayscale;\n cursor: pointer;\n padding-bottom: 0.4rem;\n color: var(--w-s-color-text);\n display: block;\n }\n\n .radio-group-required .label::after {\n content: var(--wa-form-control-required-content);\n margin-inline-start: var(--wa-form-control-required-content-offset);\n }\n\n .button-group {\n display: flex;\n }\n\n [part~='form-control-input'] {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n }\n\n /* Horizontal */\n :host([orientation='horizontal']) [part~='form-control-input'] {\n flex-direction: row;\n gap: 1em;\n }\n\n /* Help text */\n [part~='hint'] {\n margin-block-start: 0.5em;\n }\n\n /* Radios have the \"button\" appearance */\n :host fieldset.has-radio-buttons {\n [part~='form-control-input'] {\n gap: 0;\n }\n }\n`;\n", "import type { Validator } from './form-associated-element';\n\nexport interface RequiredValidatorOptions {\n /** This is a cheap way for us to get translation strings for the user without having proper translations. */\n validationElement?: HTMLSelectElement | HTMLInputElement;\n\n /**\n * The property to check if its not null-ish. For most elements this will be \"value\".\n * For \"checkbox\" for example it will be \"checked\"\n */\n validationProperty?: string;\n}\n\nexport const RequiredValidator = (options: RequiredValidatorOptions = {}): Validator => {\n let { validationElement, validationProperty } = options;\n\n if (!validationElement) {\n validationElement = Object.assign(document.createElement('input'), { required: true });\n }\n\n if (!validationProperty) {\n validationProperty = 'value';\n }\n\n const obj: Validator = {\n observedAttributes: ['required'],\n message: validationElement.validationMessage, // @TODO: Add a translation.\n checkValidity(element) {\n const validity: ReturnType<Validator['checkValidity']> = {\n message: '',\n isValid: true,\n invalidKeys: [],\n };\n\n const isRequired = element.required ?? element.hasAttribute('required');\n\n // Always true if the element isn't required.\n if (!isRequired) {\n return validity;\n }\n\n const value = element[validationProperty as keyof typeof element];\n\n const isEmpty = !value;\n\n if (isEmpty) {\n validity.message = typeof obj.message === 'function' ? obj.message(element) : obj.message || '';\n validity.isValid = false;\n validity.invalidKeys.push('valueMissing');\n }\n\n return validity;\n },\n };\n\n return obj;\n};\n", "import type { ReactiveController, ReactiveControllerHost } from 'lit';\n\n/** A reactive controller that determines when slots exist. */\nexport class HasSlotController implements ReactiveController {\n host: ReactiveControllerHost & Element;\n slotNames: string[] = [];\n\n constructor(host: ReactiveControllerHost & Element, ...slotNames: string[]) {\n (this.host = host).addController(this);\n this.slotNames = slotNames;\n }\n\n private hasDefaultSlot() {\n return [...this.host.childNodes].some((node) => {\n if (node.nodeType === Node.TEXT_NODE && node.textContent?.trim() !== '') {\n return true;\n }\n\n if (node.nodeType === Node.ELEMENT_NODE) {\n const el = node as HTMLElement;\n const tagName = el.tagName.toLowerCase();\n\n // Ignore visually hidden elements since they aren't rendered\n if (tagName === 'w-visually-hidden') {\n return false;\n }\n\n // If it doesn't have a slot attribute, it's part of the default slot\n if (!el.hasAttribute('slot')) {\n return true;\n }\n }\n\n return false;\n });\n }\n\n private hasNamedSlot(name: string) {\n return this.host.querySelector(`:scope > [slot=\"${name}\"]`) !== null;\n }\n\n test(slotName: string) {\n return slotName === '[default]' ? this.hasDefaultSlot() : this.hasNamedSlot(slotName);\n }\n\n hostConnected() {\n this.host.shadowRoot?.addEventListener('slotchange', this.handleSlotChange);\n }\n\n hostDisconnected() {\n this.host.shadowRoot?.removeEventListener('slotchange', this.handleSlotChange);\n }\n\n private handleSlotChange = (event: Event) => {\n const slot = event.target as HTMLSlotElement;\n\n if ((this.slotNames.includes('[default]') && !slot.name) || (slot.name && this.slotNames.includes(slot.name))) {\n this.host.requestUpdate();\n }\n };\n}\n\n/**\n * Given a list of nodes, this function iterates over all of them and returns the concatenated\n * HTML as a string. This is useful for getting the HTML that corresponds to a slot\u2019s assigned nodes (since we can't use slot.innerHTML as an alternative).\n * @param nodes - The list of nodes to iterate over.\n * @param callback - A function that can be used to customize the HTML output for specific types of nodes. If the function returns undefined, the default HTML output will be used.\n */\nexport function getInnerHTML(nodes: Iterable<Node>, callback?: (node: Node) => string | undefined): string {\n let html = '';\n\n for (const node of nodes) {\n if (callback) {\n const customHTML = callback(node);\n\n if (customHTML !== undefined) {\n html += customHTML;\n continue;\n }\n }\n\n if (node.nodeType === Node.ELEMENT_NODE) {\n html += (node as HTMLElement).outerHTML;\n }\n\n if (node.nodeType === Node.TEXT_NODE) {\n html += node.textContent;\n }\n }\n\n return html;\n}\n", "import { WRadio } from './radio';\nimport { WRadioGroup } from './radio-group';\n\nif (!customElements.get('w-radio')) {\n customElements.define('w-radio', WRadio);\n customElements.define('w-radio-group', WRadioGroup);\n}\n"],
|
|
5
|
-
"mappings": "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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkRRE,GAAaF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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",
|
|
6
|
-
"names": ["html", "html", "property", "state", "isServer", "property", "LitElement", "unsafeCSS", "property", "css", "styles", "_hasRecordedInitialProperties", "BaseElement", "LitElement", "__privateAdd", "customState", "active", "_a", "e", "Self", "property", "spec", "styles", "style", "unsafeCSS", "name", "oldValue", "newValue", "__privateGet", "obj", "prop", "__privateSet", "changedProperties", "value", "event", "eventOptions", "__decorateClass", "CustomErrorValidator", "element", "validity", "WInvalidEvent", "BaseFormAssociatedElement", "BaseElement", "WInvalidEvent", "event", "_a", "emittedEvents", "isServer", "CustomErrorValidator", "parentAttrs", "validator", "attr", "args", "changedProperties", "value", "formData", "val", "flags", "message", "anchor", "required", "isValid", "hasInteracted", "isDisabled", "state", "reason", "staticValidators", "validators", "formControl", "finalMessage", "invalidKeys", "str", "__decorateClass", "property", "css", "toggleStyles", "css", "reset", "components", "WRadio", "BaseFormAssociatedElement", "changedProperties", "effectivelyDisabled", "html", "reset", "toggleStyles", "__decorateClass", "state", "property", "html", "property", "query", "state", "classMap", "urlAlphabet", "nanoid", "size", "id", "bytes", "urlAlphabet", "uniqueId", "prefix", "nanoid", "css", "styles", "RequiredValidator", "options", "validationElement", "validationProperty", "obj", "element", "_a", "validity", "HasSlotController", "host", "slotNames", "event", "slot", "node", "_a", "el", "name", "slotName", "WRadioGroup", "BaseFormAssociatedElement", "HasSlotController", "clickedRadio", "oldValue", "radios", "radio", "validators", "RequiredValidator", "uniqueId", "_a", "val", "changedProperties", "args", "hasRadioButtons", "index", "enabledRadios", "checkedRadio", "event", "_b", "_c", "incr", "options", "checked", "firstEnabledRadio", "radioToFocus", "hasLabelSlot", "hasHintSlot", "hasLabel", "hasHint", "html", "classMap", "styles", "__decorateClass", "state", "query", "property", "WRadio", "WRadioGroup", "radio_stories_default", "html", "Default"]
|
|
7
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { WRadio } from './radio.js';
|
|
2
|
-
import { WRadioGroup } from './radio-group.js';
|
|
3
|
-
export declare const Radio: import("@lit/react").ReactWebComponent<WRadio, {}>;
|
|
4
|
-
export declare const RadioGroup: import("@lit/react").ReactWebComponent<WRadioGroup, {
|
|
5
|
-
onInput: string;
|
|
6
|
-
oninput: string;
|
|
7
|
-
onChange: string;
|
|
8
|
-
onchange: string;
|
|
9
|
-
}>;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { LitElement } from 'lit';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { createComponent } from '@lit/react';
|
|
4
|
-
// decouple from CDN by providing a dummy class
|
|
5
|
-
class Component extends LitElement {
|
|
6
|
-
}
|
|
7
|
-
export const Radio = createComponent({
|
|
8
|
-
tagName: 'w-radio',
|
|
9
|
-
elementClass: Component,
|
|
10
|
-
react: React,
|
|
11
|
-
});
|
|
12
|
-
export const RadioGroup = createComponent({
|
|
13
|
-
tagName: 'w-radio-group',
|
|
14
|
-
elementClass: Component,
|
|
15
|
-
react: React,
|
|
16
|
-
events: {
|
|
17
|
-
onInput: 'input',
|
|
18
|
-
oninput: 'input',
|
|
19
|
-
onChange: 'change',
|
|
20
|
-
onchange: 'change',
|
|
21
|
-
},
|
|
22
|
-
});
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Validator } from './form-associated-element';
|
|
2
|
-
export interface RequiredValidatorOptions {
|
|
3
|
-
/** This is a cheap way for us to get translation strings for the user without having proper translations. */
|
|
4
|
-
validationElement?: HTMLSelectElement | HTMLInputElement;
|
|
5
|
-
/**
|
|
6
|
-
* The property to check if its not null-ish. For most elements this will be "value".
|
|
7
|
-
* For "checkbox" for example it will be "checked"
|
|
8
|
-
*/
|
|
9
|
-
validationProperty?: string;
|
|
10
|
-
}
|
|
11
|
-
export declare const RequiredValidator: (options?: RequiredValidatorOptions) => Validator;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
export const RequiredValidator = (options = {}) => {
|
|
2
|
-
let { validationElement, validationProperty } = options;
|
|
3
|
-
if (!validationElement) {
|
|
4
|
-
validationElement = Object.assign(document.createElement('input'), { required: true });
|
|
5
|
-
}
|
|
6
|
-
if (!validationProperty) {
|
|
7
|
-
validationProperty = 'value';
|
|
8
|
-
}
|
|
9
|
-
const obj = {
|
|
10
|
-
observedAttributes: ['required'],
|
|
11
|
-
message: validationElement.validationMessage, // @TODO: Add a translation.
|
|
12
|
-
checkValidity(element) {
|
|
13
|
-
const validity = {
|
|
14
|
-
message: '',
|
|
15
|
-
isValid: true,
|
|
16
|
-
invalidKeys: [],
|
|
17
|
-
};
|
|
18
|
-
const isRequired = element.required ?? element.hasAttribute('required');
|
|
19
|
-
// Always true if the element isn't required.
|
|
20
|
-
if (!isRequired) {
|
|
21
|
-
return validity;
|
|
22
|
-
}
|
|
23
|
-
const value = element[validationProperty];
|
|
24
|
-
const isEmpty = !value;
|
|
25
|
-
if (isEmpty) {
|
|
26
|
-
validity.message = typeof obj.message === 'function' ? obj.message(element) : obj.message || '';
|
|
27
|
-
validity.isValid = false;
|
|
28
|
-
validity.invalidKeys.push('valueMissing');
|
|
29
|
-
}
|
|
30
|
-
return validity;
|
|
31
|
-
},
|
|
32
|
-
};
|
|
33
|
-
return obj;
|
|
34
|
-
};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { StoryObj } from '@storybook/react';
|
|
2
|
-
import { Radio } from './react';
|
|
3
|
-
declare const _default: {
|
|
4
|
-
title: string;
|
|
5
|
-
component: import("@lit/react").ReactWebComponent<import("./radio").WRadio, {}>;
|
|
6
|
-
};
|
|
7
|
-
export default _default;
|
|
8
|
-
export type Story = StoryObj<typeof Radio>;
|
|
9
|
-
export declare const Primary: Story;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { ReactiveController, ReactiveControllerHost } from 'lit';
|
|
2
|
-
/** A reactive controller that determines when slots exist. */
|
|
3
|
-
export declare class HasSlotController implements ReactiveController {
|
|
4
|
-
host: ReactiveControllerHost & Element;
|
|
5
|
-
slotNames: string[];
|
|
6
|
-
constructor(host: ReactiveControllerHost & Element, ...slotNames: string[]);
|
|
7
|
-
private hasDefaultSlot;
|
|
8
|
-
private hasNamedSlot;
|
|
9
|
-
test(slotName: string): boolean;
|
|
10
|
-
hostConnected(): void;
|
|
11
|
-
hostDisconnected(): void;
|
|
12
|
-
private handleSlotChange;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Given a list of nodes, this function iterates over all of them and returns the concatenated
|
|
16
|
-
* HTML as a string. This is useful for getting the HTML that corresponds to a slot’s assigned nodes (since we can't use slot.innerHTML as an alternative).
|
|
17
|
-
* @param nodes - The list of nodes to iterate over.
|
|
18
|
-
* @param callback - A function that can be used to customize the HTML output for specific types of nodes. If the function returns undefined, the default HTML output will be used.
|
|
19
|
-
*/
|
|
20
|
-
export declare function getInnerHTML(nodes: Iterable<Node>, callback?: (node: Node) => string | undefined): string;
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/** A reactive controller that determines when slots exist. */
|
|
2
|
-
export class HasSlotController {
|
|
3
|
-
constructor(host, ...slotNames) {
|
|
4
|
-
this.slotNames = [];
|
|
5
|
-
this.handleSlotChange = (event) => {
|
|
6
|
-
const slot = event.target;
|
|
7
|
-
if ((this.slotNames.includes('[default]') && !slot.name) || (slot.name && this.slotNames.includes(slot.name))) {
|
|
8
|
-
this.host.requestUpdate();
|
|
9
|
-
}
|
|
10
|
-
};
|
|
11
|
-
(this.host = host).addController(this);
|
|
12
|
-
this.slotNames = slotNames;
|
|
13
|
-
}
|
|
14
|
-
hasDefaultSlot() {
|
|
15
|
-
return [...this.host.childNodes].some((node) => {
|
|
16
|
-
if (node.nodeType === Node.TEXT_NODE && node.textContent?.trim() !== '') {
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
20
|
-
const el = node;
|
|
21
|
-
const tagName = el.tagName.toLowerCase();
|
|
22
|
-
// Ignore visually hidden elements since they aren't rendered
|
|
23
|
-
if (tagName === 'w-visually-hidden') {
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
// If it doesn't have a slot attribute, it's part of the default slot
|
|
27
|
-
if (!el.hasAttribute('slot')) {
|
|
28
|
-
return true;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return false;
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
hasNamedSlot(name) {
|
|
35
|
-
return this.host.querySelector(`:scope > [slot="${name}"]`) !== null;
|
|
36
|
-
}
|
|
37
|
-
test(slotName) {
|
|
38
|
-
return slotName === '[default]' ? this.hasDefaultSlot() : this.hasNamedSlot(slotName);
|
|
39
|
-
}
|
|
40
|
-
hostConnected() {
|
|
41
|
-
this.host.shadowRoot?.addEventListener('slotchange', this.handleSlotChange);
|
|
42
|
-
}
|
|
43
|
-
hostDisconnected() {
|
|
44
|
-
this.host.shadowRoot?.removeEventListener('slotchange', this.handleSlotChange);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Given a list of nodes, this function iterates over all of them and returns the concatenated
|
|
49
|
-
* HTML as a string. This is useful for getting the HTML that corresponds to a slot’s assigned nodes (since we can't use slot.innerHTML as an alternative).
|
|
50
|
-
* @param nodes - The list of nodes to iterate over.
|
|
51
|
-
* @param callback - A function that can be used to customize the HTML output for specific types of nodes. If the function returns undefined, the default HTML output will be used.
|
|
52
|
-
*/
|
|
53
|
-
export function getInnerHTML(nodes, callback) {
|
|
54
|
-
let html = '';
|
|
55
|
-
for (const node of nodes) {
|
|
56
|
-
if (callback) {
|
|
57
|
-
const customHTML = callback(node);
|
|
58
|
-
if (customHTML !== undefined) {
|
|
59
|
-
html += customHTML;
|
|
60
|
-
continue;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
64
|
-
html += node.outerHTML;
|
|
65
|
-
}
|
|
66
|
-
if (node.nodeType === Node.TEXT_NODE) {
|
|
67
|
-
html += node.textContent;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return html;
|
|
71
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { LitElement } from 'lit';
|
|
2
|
-
type UpdateHandler = (prev?: unknown, next?: unknown) => void;
|
|
3
|
-
type NonUndefined<A> = A extends undefined ? never : A;
|
|
4
|
-
type UpdateHandlerFunctionKeys<T extends object> = {
|
|
5
|
-
[K in keyof T]-?: NonUndefined<T[K]> extends UpdateHandler ? K : never;
|
|
6
|
-
}[keyof T];
|
|
7
|
-
interface WatchOptions {
|
|
8
|
-
/**
|
|
9
|
-
* If true, will only start watching after the initial update/render
|
|
10
|
-
*/
|
|
11
|
-
waitUntilFirstUpdate?: boolean;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Runs when observed properties change, e.g. @property or @state, but before the component updates. To wait for an
|
|
15
|
-
* update to complete after a change occurs, use `await this.updateComplete` in the handler. To start watching after the
|
|
16
|
-
* initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.
|
|
17
|
-
*
|
|
18
|
-
* Usage:
|
|
19
|
-
*
|
|
20
|
-
* @watch('propName')
|
|
21
|
-
* handlePropChange(oldValue, newValue) {
|
|
22
|
-
* ...
|
|
23
|
-
* }
|
|
24
|
-
*/
|
|
25
|
-
export declare function watch(propertyName: string | string[], options?: WatchOptions): <ElemClass extends LitElement>(proto: ElemClass, decoratedFnName: UpdateHandlerFunctionKeys<ElemClass>) => void;
|
|
26
|
-
export {};
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Runs when observed properties change, e.g. @property or @state, but before the component updates. To wait for an
|
|
3
|
-
* update to complete after a change occurs, use `await this.updateComplete` in the handler. To start watching after the
|
|
4
|
-
* initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.
|
|
5
|
-
*
|
|
6
|
-
* Usage:
|
|
7
|
-
*
|
|
8
|
-
* @watch('propName')
|
|
9
|
-
* handlePropChange(oldValue, newValue) {
|
|
10
|
-
* ...
|
|
11
|
-
* }
|
|
12
|
-
*/
|
|
13
|
-
export function watch(propertyName, options) {
|
|
14
|
-
const resolvedOptions = {
|
|
15
|
-
waitUntilFirstUpdate: false,
|
|
16
|
-
...options,
|
|
17
|
-
};
|
|
18
|
-
return (proto, decoratedFnName) => {
|
|
19
|
-
// @ts-expect-error - update is a protected property
|
|
20
|
-
const { update } = proto;
|
|
21
|
-
const watchedProperties = Array.isArray(propertyName) ? propertyName : [propertyName];
|
|
22
|
-
// @ts-expect-error - update is a protected property
|
|
23
|
-
proto.update = function (changedProps) {
|
|
24
|
-
watchedProperties.forEach((property) => {
|
|
25
|
-
const key = property;
|
|
26
|
-
if (changedProps.has(key)) {
|
|
27
|
-
const oldValue = changedProps.get(key);
|
|
28
|
-
const newValue = this[key];
|
|
29
|
-
if (oldValue !== newValue) {
|
|
30
|
-
if (!resolvedOptions.waitUntilFirstUpdate || this.hasUpdated) {
|
|
31
|
-
this[decoratedFnName](oldValue, newValue);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
update.call(this, changedProps);
|
|
37
|
-
};
|
|
38
|
-
};
|
|
39
|
-
}
|