diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json index 308f4cb..9ee3ed5 100644 --- a/.eslintrc-auto-import.json +++ b/.eslintrc-auto-import.json @@ -99,6 +99,7 @@ "refAutoReset": true, "refDebounced": true, "refDefault": true, + "refManualReset": true, "refThrottled": true, "refWithControl": true, "resolveComponent": true, diff --git a/auto-imports.d.ts b/auto-imports.d.ts index 2ef36e0..899eee1 100644 --- a/auto-imports.d.ts +++ b/auto-imports.d.ts @@ -88,6 +88,7 @@ declare global { const refAutoReset: typeof import('@vueuse/core').refAutoReset const refDebounced: typeof import('@vueuse/core').refDebounced const refDefault: typeof import('@vueuse/core').refDefault + const refManualReset: typeof import('@vueuse/core').refManualReset const refThrottled: typeof import('@vueuse/core').refThrottled const refWithControl: typeof import('@vueuse/core').refWithControl const resolveComponent: typeof import('vue').resolveComponent @@ -396,6 +397,7 @@ declare module 'vue' { readonly refAutoReset: UnwrapRef readonly refDebounced: UnwrapRef readonly refDefault: UnwrapRef + readonly refManualReset: UnwrapRef readonly refThrottled: UnwrapRef readonly refWithControl: UnwrapRef readonly resolveComponent: UnwrapRef diff --git a/package.json b/package.json index 332d96b..c99efb1 100644 --- a/package.json +++ b/package.json @@ -109,34 +109,6 @@ "./scss/export": "./src/export.scss", "./base": "./dist/base.css", "./scss/base": "./src/base.scss", - "./props/typography": "./dist/props/typography.css", - "./scss/props/typography": "./src/props/typography.scss", - "./props/transitions": "./dist/props/transitions.css", - "./scss/props/transitions": "./src/props/transitions.scss", - "./props/spacing": "./dist/props/spacing.css", - "./scss/props/spacing": "./src/props/spacing.scss", - "./props/sizing": "./dist/props/sizing.css", - "./scss/props/sizing": "./src/props/sizing.scss", - "./props/media": "./dist/props/media.css", - "./scss/props/media": "./src/props/media.scss", - "./props/layout": "./dist/props/layout.css", - "./scss/props/layout": "./src/props/layout.scss", - "./props/input": "./dist/props/input.css", - "./scss/props/input": "./src/props/input.scss", - "./props": "./dist/props.css", - "./scss/props": "./src/props/index.scss", - "./props/filters": "./dist/props/filters.css", - "./scss/props/filters": "./src/props/filters.scss", - "./props/effects": "./dist/props/effects.css", - "./scss/props/effects": "./src/props/effects.scss", - "./props/colors": "./dist/props/colors.css", - "./scss/props/colors": "./src/props/colors.scss", - "./props/breakpoints": "./dist/props/breakpoints.css", - "./scss/props/breakpoints": "./src/props/breakpoints.scss", - "./props/borders": "./dist/props/borders.css", - "./scss/props/borders": "./src/props/borders.scss", - "./props/background": "./dist/props/background.css", - "./scss/props/background": "./src/props/background.scss", "./utilities/typography": "./dist/utilities/typography.css", "./scss/utilities/typography": "./src/utilities/typography.scss", "./utilities/transitions": "./dist/utilities/transitions.css", @@ -233,6 +205,34 @@ "./scss/components/vv-accordion-group": "./src/components/vv-accordion-group.scss", "./components": "./dist/components.css", "./scss/components": "./src/components/index.scss", + "./props/typography": "./dist/props/typography.css", + "./scss/props/typography": "./src/props/typography.scss", + "./props/transitions": "./dist/props/transitions.css", + "./scss/props/transitions": "./src/props/transitions.scss", + "./props/spacing": "./dist/props/spacing.css", + "./scss/props/spacing": "./src/props/spacing.scss", + "./props/sizing": "./dist/props/sizing.css", + "./scss/props/sizing": "./src/props/sizing.scss", + "./props/media": "./dist/props/media.css", + "./scss/props/media": "./src/props/media.scss", + "./props/layout": "./dist/props/layout.css", + "./scss/props/layout": "./src/props/layout.scss", + "./props/input": "./dist/props/input.css", + "./scss/props/input": "./src/props/input.scss", + "./props": "./dist/props.css", + "./scss/props": "./src/props/index.scss", + "./props/filters": "./dist/props/filters.css", + "./scss/props/filters": "./src/props/filters.scss", + "./props/effects": "./dist/props/effects.css", + "./scss/props/effects": "./src/props/effects.scss", + "./props/colors": "./dist/props/colors.css", + "./scss/props/colors": "./src/props/colors.scss", + "./props/breakpoints": "./dist/props/breakpoints.css", + "./scss/props/breakpoints": "./src/props/breakpoints.scss", + "./props/borders": "./dist/props/borders.css", + "./scss/props/borders": "./src/props/borders.scss", + "./props/background": "./dist/props/background.css", + "./scss/props/background": "./src/props/background.scss", "./themes/dark": "./dist/themes/dark/volver.css", "./scss/themes/dark": "./src/themes/dark/volver.scss", "./themes/dark/props": "./dist/themes/dark/props.css", diff --git a/src/components/vv-accordion-group.scss b/src/components/vv-accordion-group.scss index 960116f..f87defd 100644 --- a/src/components/vv-accordion-group.scss +++ b/src/components/vv-accordion-group.scss @@ -8,7 +8,7 @@ $component-map: $vv-accordion-group; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-accordion.scss b/src/components/vv-accordion.scss index fed4bd1..a0fdde8 100644 --- a/src/components/vv-accordion.scss +++ b/src/components/vv-accordion.scss @@ -8,7 +8,7 @@ $component-map: $vv-accordion; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-alert-group.scss b/src/components/vv-alert-group.scss index 8625a47..08bfc3a 100644 --- a/src/components/vv-alert-group.scss +++ b/src/components/vv-alert-group.scss @@ -8,7 +8,7 @@ $component-map: $vv-alert-group; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-alert.scss b/src/components/vv-alert.scss index 4c423ba..d1b0978 100644 --- a/src/components/vv-alert.scss +++ b/src/components/vv-alert.scss @@ -8,7 +8,7 @@ $component-map: $vv-alert; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-avatar-group.scss b/src/components/vv-avatar-group.scss index 860e60b..e6a8144 100644 --- a/src/components/vv-avatar-group.scss +++ b/src/components/vv-avatar-group.scss @@ -8,7 +8,7 @@ $component-map: $vv-avatar-group; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-avatar.scss b/src/components/vv-avatar.scss index 776a019..11ee4bc 100644 --- a/src/components/vv-avatar.scss +++ b/src/components/vv-avatar.scss @@ -8,7 +8,7 @@ $component-map: $vv-avatar; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-badge.scss b/src/components/vv-badge.scss index 877a67a..1b33f00 100644 --- a/src/components/vv-badge.scss +++ b/src/components/vv-badge.scss @@ -8,7 +8,7 @@ $component-map: $vv-badge; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-breadcrumb.scss b/src/components/vv-breadcrumb.scss index f0d570a..5fa4049 100644 --- a/src/components/vv-breadcrumb.scss +++ b/src/components/vv-breadcrumb.scss @@ -8,7 +8,7 @@ $component-map: $vv-breadcrumb; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-button-group.scss b/src/components/vv-button-group.scss index 262e966..d2dd601 100644 --- a/src/components/vv-button-group.scss +++ b/src/components/vv-button-group.scss @@ -11,7 +11,7 @@ $button-component-selector: '.' + $button-component-name; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-button.scss b/src/components/vv-button.scss index fdd99c92..e1c22ee 100644 --- a/src/components/vv-button.scss +++ b/src/components/vv-button.scss @@ -9,7 +9,7 @@ $component-selector: '.#{ $component-name}'; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $custom-block: true, $bps: $breakpoints @@ -29,7 +29,7 @@ $component-selector: '.#{ $component-name}'; @include spread-map-into-attrs( $map: $component-map, $prefix: $component-name, - $props: $use-custom-props-for-components + $use-custom-props: $use-custom-props-for-components ); } diff --git a/src/components/vv-card.scss b/src/components/vv-card.scss index eed999c..2f77a51 100644 --- a/src/components/vv-card.scss +++ b/src/components/vv-card.scss @@ -8,7 +8,7 @@ $component-map: $vv-card; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-checkbox-group.scss b/src/components/vv-checkbox-group.scss index e64facd..37541f2 100644 --- a/src/components/vv-checkbox-group.scss +++ b/src/components/vv-checkbox-group.scss @@ -8,7 +8,7 @@ $component-map: $vv-checkbox-group; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-checkbox.scss b/src/components/vv-checkbox.scss index 1f5bdc7..5569860 100644 --- a/src/components/vv-checkbox.scss +++ b/src/components/vv-checkbox.scss @@ -9,7 +9,7 @@ $component-selector: '.#{ $component-name}'; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-dialog.scss b/src/components/vv-dialog.scss index 8e1b5fc..abc736e 100644 --- a/src/components/vv-dialog.scss +++ b/src/components/vv-dialog.scss @@ -8,7 +8,7 @@ $component-map: $vv-dialog; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-dropdown-action.scss b/src/components/vv-dropdown-action.scss index 948e0da..f26ae1f 100644 --- a/src/components/vv-dropdown-action.scss +++ b/src/components/vv-dropdown-action.scss @@ -8,7 +8,7 @@ $component-map: $vv-dropdown-action; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-dropdown-optgroup.scss b/src/components/vv-dropdown-optgroup.scss index 633242c..5deda9d 100644 --- a/src/components/vv-dropdown-optgroup.scss +++ b/src/components/vv-dropdown-optgroup.scss @@ -8,7 +8,7 @@ $component-map: $vv-dropdown-optgroup; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-dropdown-option.scss b/src/components/vv-dropdown-option.scss index de00284..18bf62f 100644 --- a/src/components/vv-dropdown-option.scss +++ b/src/components/vv-dropdown-option.scss @@ -8,7 +8,7 @@ $component-map: $vv-dropdown-option; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-dropdown.scss b/src/components/vv-dropdown.scss index 580ab93..98f677a 100644 --- a/src/components/vv-dropdown.scss +++ b/src/components/vv-dropdown.scss @@ -8,7 +8,7 @@ $component-map: $vv-dropdown; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-input-file.scss b/src/components/vv-input-file.scss index 0e8de90..f93b358 100644 --- a/src/components/vv-input-file.scss +++ b/src/components/vv-input-file.scss @@ -10,7 +10,7 @@ $component-selector: '.#{$component-name}'; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-input-text.scss b/src/components/vv-input-text.scss index b98b6c8..b8747be 100644 --- a/src/components/vv-input-text.scss +++ b/src/components/vv-input-text.scss @@ -10,7 +10,7 @@ $component-selector: '.#{$component-name}'; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-nav.scss b/src/components/vv-nav.scss index 04ad3fc..00c9afc 100644 --- a/src/components/vv-nav.scss +++ b/src/components/vv-nav.scss @@ -8,7 +8,7 @@ $component-map: $vv-nav; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-progress.scss b/src/components/vv-progress.scss index 7718dd6..0fe65c9 100644 --- a/src/components/vv-progress.scss +++ b/src/components/vv-progress.scss @@ -8,7 +8,7 @@ $component-map: $vv-progress; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-radio-group.scss b/src/components/vv-radio-group.scss index 7d5d592..c49ede6 100644 --- a/src/components/vv-radio-group.scss +++ b/src/components/vv-radio-group.scss @@ -8,7 +8,7 @@ $component-map: $vv-radio-group; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-radio.scss b/src/components/vv-radio.scss index 10a37a4..3ccc06b 100644 --- a/src/components/vv-radio.scss +++ b/src/components/vv-radio.scss @@ -9,7 +9,7 @@ $component-selector: '.#{ $component-name}'; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-select.scss b/src/components/vv-select.scss index dd9eef8..b6cf9cf 100644 --- a/src/components/vv-select.scss +++ b/src/components/vv-select.scss @@ -10,7 +10,7 @@ $component-selector: '.#{ $component-name}'; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-skeleton.scss b/src/components/vv-skeleton.scss index 8ff705b..980aeaf 100644 --- a/src/components/vv-skeleton.scss +++ b/src/components/vv-skeleton.scss @@ -9,7 +9,7 @@ $component-selector: '.#{ $component-name}'; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-tab.scss b/src/components/vv-tab.scss index 14e0dfc..243cfc1 100644 --- a/src/components/vv-tab.scss +++ b/src/components/vv-tab.scss @@ -8,7 +8,7 @@ $component-map: $vv-tab; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-table.scss b/src/components/vv-table.scss index 50ccfa6..07ebb8f 100644 --- a/src/components/vv-table.scss +++ b/src/components/vv-table.scss @@ -8,7 +8,7 @@ $component-map: $vv-table; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-text.scss b/src/components/vv-text.scss index f17cf5d..2d763ac 100644 --- a/src/components/vv-text.scss +++ b/src/components/vv-text.scss @@ -8,7 +8,7 @@ $component-map: $vv-text; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-textarea.scss b/src/components/vv-textarea.scss index 0741b09..d7a8c58 100644 --- a/src/components/vv-textarea.scss +++ b/src/components/vv-textarea.scss @@ -10,7 +10,7 @@ $component-selector: '.#{ $component-name}'; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/components/vv-tooltip.scss b/src/components/vv-tooltip.scss index 2f1e333..0bac1fa 100644 --- a/src/components/vv-tooltip.scss +++ b/src/components/vv-tooltip.scss @@ -9,7 +9,7 @@ $component-selector: '.#{ $component-name}'; @include spread-map-into-bem( $map: $component-map, $block: $component-name, - $props: $use-custom-props-for-components, + $use-custom-props: $use-custom-props-for-components, $zero-specificity: $zero-specificity-for-components, $bps: $breakpoints ); diff --git a/src/settings/components/_vv-dialog.scss b/src/settings/components/_vv-dialog.scss index 2003589..a020bae 100644 --- a/src/settings/components/_vv-dialog.scss +++ b/src/settings/components/_vv-dialog.scss @@ -1,5 +1,6 @@ $vv-dialog: ( display: flex, + user-select: text, z-index: var(--z-modal-backdrop), position: fixed, inset: 0, diff --git a/src/themes/dark/components/_vv-alert.scss b/src/themes/dark/components/_vv-alert.scss index 0ff8482..b38903e 100644 --- a/src/themes/dark/components/_vv-alert.scss +++ b/src/themes/dark/components/_vv-alert.scss @@ -9,7 +9,8 @@ $component-name: map.get($components-names, vv-alert); $theme-map: $dark-vv-alert, $component-name: $component-name, $bps: $breakpoints, - $use-custom-props: $use-custom-props-for-components + $use-custom-props: $use-custom-props-for-components, + $zero-specificity: $zero-specificity-for-components ); } diff --git a/src/themes/dark/components/_vv-avatar.scss b/src/themes/dark/components/_vv-avatar.scss index df1599b..c224fff 100644 --- a/src/themes/dark/components/_vv-avatar.scss +++ b/src/themes/dark/components/_vv-avatar.scss @@ -9,7 +9,8 @@ $component-name: map.get($components-names, vv-avatar); $theme-map: $dark-vv-avatar, $component-name: $component-name, $bps: $breakpoints, - $use-custom-props: $use-custom-props-for-components + $use-custom-props: $use-custom-props-for-components, + $zero-specificity: $zero-specificity-for-components ); } diff --git a/src/themes/dark/components/_vv-badge.scss b/src/themes/dark/components/_vv-badge.scss index 1ebfcdc..229ed68 100644 --- a/src/themes/dark/components/_vv-badge.scss +++ b/src/themes/dark/components/_vv-badge.scss @@ -9,7 +9,8 @@ $component-name: map.get($components-names, vv-badge); $theme-map: $dark-vv-badge, $component-name: $component-name, $bps: $breakpoints, - $use-custom-props: $use-custom-props-for-components + $use-custom-props: $use-custom-props-for-components, + $zero-specificity: $zero-specificity-for-components ); } diff --git a/src/themes/dark/components/_vv-button.scss b/src/themes/dark/components/_vv-button.scss index 1dc75b7..2d1ffc0 100644 --- a/src/themes/dark/components/_vv-button.scss +++ b/src/themes/dark/components/_vv-button.scss @@ -9,7 +9,8 @@ $component-name: map.get($components-names, vv-button); $theme-map: $dark-vv-button, $component-name: $component-name, $bps: $breakpoints, - $use-custom-props: $use-custom-props-for-components + $use-custom-props: $use-custom-props-for-components, + $zero-specificity: $zero-specificity-for-components ); } diff --git a/src/themes/dark/components/_vv-dropdown-action.scss b/src/themes/dark/components/_vv-dropdown-action.scss index 9253954..26acf9d 100644 --- a/src/themes/dark/components/_vv-dropdown-action.scss +++ b/src/themes/dark/components/_vv-dropdown-action.scss @@ -9,7 +9,8 @@ $component-name: map.get($components-names, vv-dropdown-action); $theme-map: $dark-vv-dropdown-action, $component-name: $component-name, $bps: $breakpoints, - $use-custom-props: $use-custom-props-for-components + $use-custom-props: $use-custom-props-for-components, + $zero-specificity: $zero-specificity-for-components ); } diff --git a/src/themes/dark/components/_vv-dropdown-option.scss b/src/themes/dark/components/_vv-dropdown-option.scss index d3fe421..aaba3b2 100644 --- a/src/themes/dark/components/_vv-dropdown-option.scss +++ b/src/themes/dark/components/_vv-dropdown-option.scss @@ -9,7 +9,8 @@ $component-name: map.get($components-names, vv-dropdown-option); $theme-map: $dark-vv-dropdown-option, $component-name: $component-name, $bps: $breakpoints, - $use-custom-props: $use-custom-props-for-components + $use-custom-props: $use-custom-props-for-components, + $zero-specificity: $zero-specificity-for-components ); } diff --git a/src/themes/dark/components/_vv-nav.scss b/src/themes/dark/components/_vv-nav.scss index a4a7dba..ef17514 100644 --- a/src/themes/dark/components/_vv-nav.scss +++ b/src/themes/dark/components/_vv-nav.scss @@ -9,7 +9,8 @@ $component-name: map.get($components-names, vv-nav); $theme-map: $dark-vv-nav, $component-name: $component-name, $bps: $breakpoints, - $use-custom-props: $use-custom-props-for-components + $use-custom-props: $use-custom-props-for-components, + $zero-specificity: $zero-specificity-for-components ); } diff --git a/src/themes/dark/components/_vv-select.scss b/src/themes/dark/components/_vv-select.scss index 70d7e90..f4ca858 100644 --- a/src/themes/dark/components/_vv-select.scss +++ b/src/themes/dark/components/_vv-select.scss @@ -9,7 +9,8 @@ $component-name: map.get($components-names, vv-select); $theme-map: $dark-vv-select, $component-name: $component-name, $bps: $breakpoints, - $use-custom-props: $use-custom-props-for-components + $use-custom-props: $use-custom-props-for-components, + $zero-specificity: $zero-specificity-for-components ); } diff --git a/src/tools/mixin-modules/_attrs.scss b/src/tools/mixin-modules/_attrs.scss index 3805b0f..4b150db 100644 --- a/src/tools/mixin-modules/_attrs.scss +++ b/src/tools/mixin-modules/_attrs.scss @@ -64,7 +64,7 @@ $-pseudo-elements: ( // @param {String} $postfix - Postfix for CSS variable naming // @param {Bool} $deep - Whether to recurse into nested maps // @param {List} $ignore - Keys to ignore -// @param {Bool} $props - Whether to use CSS custom properties +// @param {Bool} $use-custom-props - Whether to use CSS custom properties // @param {Map} $bps - Breakpoints map @mixin spread-map-into-attrs( $original: (), @@ -74,7 +74,7 @@ $-pseudo-elements: ( $postfix: '', $deep: false, $ignore: (), - $props: true, + $use-custom-props: true, $bps: (xxs: 0) ) { @if meta.type-of($map) == 'map' and $prefix != '' { @@ -114,7 +114,7 @@ $-pseudo-elements: ( $variant: $variant, $postfix: $key, $deep: true, - $props: $props + $use-custom-props: $use-custom-props ); } } @@ -128,11 +128,11 @@ $-pseudo-elements: ( $variant: $variant, $postfix: $key, $deep: true, - $props: $props + $use-custom-props: $use-custom-props ); } } @else if meta.type-of($value) != 'map' and string.slice(meta.inspect($key), 1, 1) != '_' { - @if $props and + @if $use-custom-props and $key != 'content' and string.slice(meta.inspect($key), 1, 2) != '--' and string.slice(meta.inspect($key), 1, 1) != '[' diff --git a/src/tools/mixin-modules/_bem.scss b/src/tools/mixin-modules/_bem.scss index d2f0dc1..a935522 100644 --- a/src/tools/mixin-modules/_bem.scss +++ b/src/tools/mixin-modules/_bem.scss @@ -34,7 +34,7 @@ $-valid-states: ( // @param {String} $states-key - Key for states in map // @param {String} $breakpoints-key - Key for breakpoints in map // @param {String} $transitions-key - Key for transitions in map -// @param {Bool} $props - Whether to use CSS custom properties +// @param {Bool} $use-custom-props - Whether to use CSS custom properties // @param {Bool} $zero-specificity - Whether to wrap in :where() // @param {Bool} $custom-* - Flags to skip specific parts // @param {Map} $bps - Breakpoints map @@ -46,7 +46,7 @@ $-valid-states: ( $states-key: 'state', $breakpoints-key: 'breakpoint', $transitions-key: 'transition', - $props: true, + $use-custom-props: true, $zero-specificity: true, $custom-props: false, $custom-block: false, @@ -62,7 +62,7 @@ $-valid-states: ( // custom props @if not $custom-props { - @if $props { + @if $use-custom-props { :where(:host, :root, .theme) { @include spread-map-into-props( $map: $map, @@ -79,7 +79,7 @@ $-valid-states: ( @include spread-map-into-attrs( $map: $map, $prefix: $block, - $props: $props + $use-custom-props: $use-custom-props ); @content; @@ -100,7 +100,7 @@ $-valid-states: ( $prefix: $block, $key: $elements-key, $block: $selector, - $props: $props, + $use-custom-props: $use-custom-props, $zero-specificity: $zero-specificity, $bps: $bps ); @@ -115,7 +115,7 @@ $-valid-states: ( $prefix: $block, $key: $states-key, $block: $selector, - $props: $props, + $use-custom-props: $use-custom-props, $zero-specificity: $zero-specificity, $bps: $bps ); @@ -130,7 +130,7 @@ $-valid-states: ( $prefix: $block, $key: $modifiers-key, $block: $selector, - $props: $props, + $use-custom-props: $use-custom-props, $zero-specificity: $zero-specificity, $bps: $bps ); @@ -145,7 +145,7 @@ $-valid-states: ( $prefix: $block, $key: $transitions-key, $block: $selector, - $props: $props, + $use-custom-props: $use-custom-props, $zero-specificity: $zero-specificity, $bps: $bps ); @@ -160,7 +160,7 @@ $-valid-states: ( $prefix: $block, $key: $breakpoints-key, $block: $selector, - $props: $props, + $use-custom-props: $use-custom-props, $zero-specificity: $zero-specificity, $bps: $bps ); @@ -180,7 +180,7 @@ $-valid-states: ( $key: 'modifier', $block: null, $modifier: '', - $props: true, + $use-custom-props: true, $zero-specificity: true, $bps: (xxs: 0) ) { @@ -204,7 +204,7 @@ $-valid-states: ( $variant: #{$key}-#{$item}, $deep: true, $ignore: ('state', 'breakpoint', 'element', 'modifier'), - $props: $props + $use-custom-props: $use-custom-props ); } @@ -224,7 +224,7 @@ $-valid-states: ( $key: 'element', $block: $block, $modifier: $modifier + $selector, - $props: $props, + $use-custom-props: $use-custom-props, $zero-specificity: $zero-specificity, $bps: $bps ); @@ -239,7 +239,7 @@ $-valid-states: ( $key: 'state', $block: $block, $modifier: $modifier + $selector, - $props: $props, + $use-custom-props: $use-custom-props, $zero-specificity: $zero-specificity, $bps: $bps ); @@ -253,7 +253,7 @@ $-valid-states: ( $key: 'breakpoint', $block: $block, $modifier: $modifier + $selector, - $props: $props, + $use-custom-props: $use-custom-props, $zero-specificity: $zero-specificity, $bps: $bps ); @@ -268,7 +268,7 @@ $-valid-states: ( $key: 'modifier', $block: $block, $modifier: $modifier + $selector, - $props: $props, + $use-custom-props: $use-custom-props, $zero-specificity: $zero-specificity, $bps: $bps ); @@ -288,7 +288,7 @@ $-valid-states: ( $key: 'element', $block: null, $modifier: null, - $props: true, + $use-custom-props: true, $zero-specificity: true, $bps: (xxs: 0) ) { @@ -349,7 +349,7 @@ $-valid-states: ( $variant: #{$key}-#{$element}, $deep: true, $ignore: ('state', 'breakpoint'), - $props: $props + $use-custom-props: $use-custom-props ); } @@ -368,7 +368,7 @@ $-valid-states: ( $key: 'state', $block: $selector, $alias: $alias, - $props: $props, + $use-custom-props: $use-custom-props, $zero-specificity: $zero-specificity, $bps: $bps ); @@ -381,7 +381,7 @@ $-valid-states: ( $prefix: #{$prefix}-#{$key}-#{$element}, $key: 'breakpoint', $block: list-to-string(($selector, $alias)), - $props: $props, + $use-custom-props: $use-custom-props, $zero-specificity: $zero-specificity, $bps: $bps ); @@ -402,7 +402,7 @@ $-valid-states: ( $block: null, $modifier: '', $alias: null, - $props: true, + $use-custom-props: true, $zero-specificity: true, $bps: (xxs: 0) ) { @@ -449,7 +449,7 @@ $-valid-states: ( $variant: #{$key}-#{$state}, $ignore: ('element'), $deep: true, - $props: $props + $use-custom-props: $use-custom-props ); } @@ -466,7 +466,7 @@ $-valid-states: ( $key: 'element', $block: $block, $modifier: $selector, - $props: $props, + $use-custom-props: $use-custom-props, $zero-specificity: $zero-specificity, $bps: $bps ); @@ -481,7 +481,7 @@ $-valid-states: ( $key: 'breakpoint', $block: $block, $modifier: $selector, - $props: $props, + $use-custom-props: $use-custom-props, $zero-specificity: $zero-specificity, $bps: $bps ); @@ -584,7 +584,7 @@ $-valid-states: ( $key: 'breakpoint', $block: null, $modifier: '', - $props: true, + $use-custom-props: true, $zero-specificity: true, $bps: (xxs: 0) ) { @@ -612,7 +612,7 @@ $-valid-states: ( $prefix: $prefix, $variant: #{$key}-#{$breakpoint}, $deep: true, - $props: $props + $use-custom-props: $use-custom-props ); } } @@ -627,7 +627,7 @@ $-valid-states: ( $prefix: $prefix, $variant: #{$key}-#{$breakpoint}, $deep: true, - $props: $props + $use-custom-props: $use-custom-props ); } } @@ -642,7 +642,7 @@ $-valid-states: ( $prefix: $prefix, $variant: #{$key}-#{$breakpoint}, $deep: true, - $props: $props + $use-custom-props: $use-custom-props ); } } @@ -657,7 +657,7 @@ $-valid-states: ( $prefix: $prefix, $variant: #{$key}-#{$breakpoint}, $deep: true, - $props: $props + $use-custom-props: $use-custom-props ); } } @@ -675,7 +675,7 @@ $-valid-states: ( $prefix: '', $key: 'transition', $block: null, - $props: true, + $use-custom-props: true, $zero-specificity: true, $bps: (xxs: 0) ) { @@ -710,7 +710,7 @@ $-valid-states: ( $variant: #{$key}-#{$transition}-#{$state}, $deep: true, $ignore: ('element'), - $props: $props, + $use-custom-props: $use-custom-props, $bps: $bps ); } @@ -724,7 +724,7 @@ $-valid-states: ( $key: 'element', $block: $block, $modifier: $selector, - $props: $props, + $use-custom-props: $use-custom-props, $zero-specificity: $zero-specificity, $bps: $bps ); @@ -739,7 +739,7 @@ $-valid-states: ( $key: 'breakpoint', $block: $block, $modifier: $selector, - $props: $props, + $use-custom-props: $use-custom-props, $zero-specificity: $zero-specificity, $bps: $bps ); diff --git a/src/tools/mixin-modules/_theme.scss b/src/tools/mixin-modules/_theme.scss index c0437d3..ebc7c6f 100644 --- a/src/tools/mixin-modules/_theme.scss +++ b/src/tools/mixin-modules/_theme.scss @@ -3,6 +3,7 @@ @use 'sass:meta'; @use 'props' as *; @use 'attrs' as *; +@use 'helpers' as *; // ============================================ // Theme component utilities @@ -54,6 +55,7 @@ // @param {Bool} $use-custom-props - Whether to use CSS custom properties // @param {Bool} $generate-light-reset - Auto-generate light reset from base-map (default: true) // @param {String} $light-reset-selector - Selector for light reset (default: '.theme.theme--light') +// @param {Bool} $zero-specificity - Whether to wrap selectors in :where() @mixin spread-theme-component( $base-map, $theme-map, @@ -61,7 +63,8 @@ $bps: (xxs: 0), $use-custom-props: true, $generate-light-reset: true, - $light-reset-selector: '.theme.theme--light' + $light-reset-selector: '.theme.theme--light', + $zero-specificity: true ) { // Calculate light reset map from base-map if needed $light-reset-map: null; @@ -91,11 +94,11 @@ $selector: '.' + $component-name; // Block styles (base attributes, ignoring nested structures) - #{$selector} { + @include wrap-with-where($selector: $selector, $enabled: $zero-specificity) { @include spread-map-into-attrs( $map: $theme-map, $prefix: $component-name, - $props: false, + $use-custom-props: false, $ignore: (modifier, element, state, breakpoint, transition) ); } @@ -106,7 +109,8 @@ $map: map.get($theme-map, 'modifier'), $prefix: $component-name, $block: $selector, - $bps: $bps + $bps: $bps, + $zero-specificity: $zero-specificity ); } @@ -116,7 +120,8 @@ $map: map.get($theme-map, 'element'), $prefix: $component-name, $block: $selector, - $bps: $bps + $bps: $bps, + $zero-specificity: $zero-specificity ); } @@ -127,7 +132,8 @@ $prefix: $component-name, $block: $selector, $parent-selector: $selector, - $bps: $bps + $bps: $bps, + $zero-specificity: $zero-specificity ); } @@ -138,7 +144,8 @@ $map: $light-reset-map, $prefix: $component-name, $block: $selector, - $bps: $bps + $bps: $bps, + $zero-specificity: $zero-specificity ); } } @@ -146,13 +153,13 @@ } // Helper to generate all theme rules (block, modifiers, elements, states) -@mixin _theme-generate-all($map, $prefix, $block, $bps) { +@mixin _theme-generate-all($map, $prefix, $block, $bps, $zero-specificity: true) { // Block styles - #{$block} { + @include wrap-with-where($selector: $block, $enabled: $zero-specificity) { @include spread-map-into-attrs( $map: $map, $prefix: $prefix, - $props: false, + $use-custom-props: false, $ignore: (modifier, element, state, breakpoint, transition) ); } @@ -163,7 +170,8 @@ $map: map.get($map, 'modifier'), $prefix: $prefix, $block: $block, - $bps: $bps + $bps: $bps, + $zero-specificity: $zero-specificity ); } @@ -173,7 +181,8 @@ $map: map.get($map, 'element'), $prefix: $prefix, $block: $block, - $bps: $bps + $bps: $bps, + $zero-specificity: $zero-specificity ); } @@ -184,7 +193,8 @@ $prefix: $prefix, $block: $block, $parent-selector: $block, - $bps: $bps + $bps: $bps, + $zero-specificity: $zero-specificity ); } } @@ -194,7 +204,7 @@ // ============================================ // Spread modifiers for theme (no @extend) -@mixin _theme-spread-modifiers($map, $prefix, $block, $parent-selector: null, $bps: (xxs: 0)) { +@mixin _theme-spread-modifiers($map, $prefix, $block, $parent-selector: null, $bps: (xxs: 0), $zero-specificity: true) { @each $mod-name, $mod-value in $map { $mod-selector: '#{$block}#{$block}--#{$mod-name}'; @@ -203,11 +213,11 @@ } // Modifier base styles - #{$mod-selector} { + @include wrap-with-where($selector: $mod-selector, $enabled: $zero-specificity) { @include spread-map-into-attrs( $map: $mod-value, $prefix: $prefix, - $props: false, + $use-custom-props: false, $ignore: (modifier, element, state, breakpoint) ); } @@ -219,7 +229,8 @@ $prefix: $prefix, $block: $block, $parent-selector: $mod-selector, - $bps: $bps + $bps: $bps, + $zero-specificity: $zero-specificity ); } @@ -230,7 +241,8 @@ $prefix: $prefix, $block: $block, $parent-selector: $mod-selector, - $bps: $bps + $bps: $bps, + $zero-specificity: $zero-specificity ); } @@ -241,14 +253,15 @@ $prefix: $prefix, $block: $block, $parent-selector: $mod-selector, - $bps: $bps + $bps: $bps, + $zero-specificity: $zero-specificity ); } } } // Spread elements for theme (no @extend) -@mixin _theme-spread-elements($map, $prefix, $block, $parent-selector: null, $bps: (xxs: 0)) { +@mixin _theme-spread-elements($map, $prefix, $block, $parent-selector: null, $bps: (xxs: 0), $zero-specificity: true) { @each $el-name, $el-value in $map { $el-selector: '#{$block}__#{$el-name}'; $full-selector: $el-selector; @@ -258,11 +271,11 @@ } // Element base styles - #{$full-selector} { + @include wrap-with-where($selector: $full-selector, $enabled: $zero-specificity) { @include spread-map-into-attrs( $map: $el-value, $prefix: $prefix, - $props: false, + $use-custom-props: false, $ignore: (modifier, element, state, breakpoint) ); } @@ -274,14 +287,15 @@ $prefix: $prefix, $block: $el-selector, $parent-selector: $parent-selector, - $bps: $bps + $bps: $bps, + $zero-specificity: $zero-specificity ); } } } // Spread states for theme (no @extend) -@mixin _theme-spread-states($map, $prefix, $block, $parent-selector: null, $bps: (xxs: 0)) { +@mixin _theme-spread-states($map, $prefix, $block, $parent-selector: null, $bps: (xxs: 0), $zero-specificity: true) { $state-list: ( active, focus, hover, focus-within, target, visited, focus-visible, disabled, checked, checked-within, multiple, selected, readonly, @@ -298,42 +312,46 @@ } // BEM modifier style: .block--state - #{$base}#{$block}--#{$state-name}, // Class style: .block.state - #{$base}.#{$state-name} { + $state-selectors: ( + '#{$base}#{$block}--#{$state-name}', + '#{$base}.#{$state-name}' + ); + + @include wrap-with-where($selector: $state-selectors, $enabled: $zero-specificity) { @include spread-map-into-attrs( $map: $state-value, $prefix: $prefix, - $props: false, + $use-custom-props: false, $ignore: (modifier, element, state, breakpoint) ); } // Pseudo-class style based on state type @if $state-name == 'disabled' or $state-name == 'readonly' or $state-name == 'multiple' { - #{$base}[#{$state-name}] { + @include wrap-with-where($selector: '#{$base}[#{$state-name}]', $enabled: $zero-specificity) { @include spread-map-into-attrs( $map: $state-value, $prefix: $prefix, - $props: false, + $use-custom-props: false, $ignore: (modifier, element, state, breakpoint) ); } } @else if $state-name == 'focus-visible' { - #{$base}:not(:active):not([disabled]):not([tabindex="-1"]):not([aria-disabled="true"]):#{$state-name} { + @include wrap-with-where($selector: '#{$base}:not(:active):not([disabled]):not([tabindex="-1"]):not([aria-disabled="true"]):#{$state-name}', $enabled: $zero-specificity) { @include spread-map-into-attrs( $map: $state-value, $prefix: $prefix, - $props: false, + $use-custom-props: false, $ignore: (modifier, element, state, breakpoint) ); } } @else if $state-name != 'current' { - #{$base}:not([disabled]):#{$state-name} { + @include wrap-with-where($selector: '#{$base}:not([disabled]):#{$state-name}', $enabled: $zero-specificity) { @include spread-map-into-attrs( $map: $state-value, $prefix: $prefix, - $props: false, + $use-custom-props: false, $ignore: (modifier, element, state, breakpoint) ); } @@ -346,7 +364,8 @@ $prefix: $prefix, $block: $block, $parent-selector: '#{$base}#{$block}--#{$state-name}', - $bps: $bps + $bps: $bps, + $zero-specificity: $zero-specificity ); } }