routie dev init since i didn't adhere to any proper guidance up until now
This commit is contained in:
+9
@@ -0,0 +1,9 @@
|
||||
@mixin absolute($pseudo: false)
|
||||
&
|
||||
@if ($pseudo)
|
||||
content: ''
|
||||
position: absolute
|
||||
top: 0
|
||||
left: 0
|
||||
width: 100%
|
||||
height: 100%
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
@mixin border($color: null, $style: null, $width: null, $thin-width: false)
|
||||
&
|
||||
border-color: $color
|
||||
border-style: $style
|
||||
border-width: $width
|
||||
|
||||
@if $thin-width
|
||||
&--border
|
||||
border-width: $thin-width
|
||||
box-shadow: none
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
@use '../settings'
|
||||
|
||||
@mixin density($name, $densities)
|
||||
@each $density, $multiplier in $densities
|
||||
.#{$name}--density-#{$density}
|
||||
@content($multiplier * settings.$spacer)
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
@use './functions' as *
|
||||
@use '../settings' as *
|
||||
|
||||
=media-breakpoint-up($name, $breakpoints: $grid-breakpoints)
|
||||
$min: breakpoint-min($name, $breakpoints)
|
||||
@if $min
|
||||
@media (min-width: $min)
|
||||
@content
|
||||
@else
|
||||
@content
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
@use 'sass:map'
|
||||
@use '../settings'
|
||||
|
||||
@mixin elevation($z)
|
||||
&
|
||||
box-shadow: map.get(settings.$shadow-key, $z), map.get(settings.$shadow-ambient, $z)
|
||||
--v-elevation-overlay: color-mix(in srgb, var(--v-elevation-overlay-color) #{$z * settings.$elevation-overlay-step}, transparent)
|
||||
|
||||
@mixin elevationTransition($duration: 280ms, $easing: cubic-bezier(0.4, 0, 0.2, 1))
|
||||
&
|
||||
transition: $duration $easing
|
||||
transition-property: box-shadow, --v-elevation-overlay
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
@use 'sass:list'
|
||||
@use 'sass:map'
|
||||
@use 'sass:math'
|
||||
@use 'sass:meta'
|
||||
|
||||
@function map-deep-set($map, $keys, $value)
|
||||
$maps: ($map,)
|
||||
$result: null
|
||||
|
||||
// If the last key is a map already
|
||||
// Warn the user we will be overriding it with $value
|
||||
@if meta.type-of(list.nth($keys, -1)) == "map"
|
||||
@warn "The last key you specified is a map; it will be override with `#{$value}`."
|
||||
|
||||
// If $keys is a single key
|
||||
// Just merge and return
|
||||
@if list.length($keys) == 1
|
||||
@return map.merge($map, ( $keys: $value ))
|
||||
|
||||
// Loop from the first to the second to last key from $keys
|
||||
// Store the associated map to this key in the $maps list
|
||||
// If the key doesn't exist, throw an error
|
||||
@for $i from 1 through list.length($keys) - 1
|
||||
$current-key: list.nth($keys, $i)
|
||||
$current-map: list.nth($maps, -1)
|
||||
$current-get: map.get($current-map, $current-key)
|
||||
|
||||
@if $current-get == null
|
||||
@error "Key `#{$current-key}` doesn't exist at current level in map."
|
||||
|
||||
$maps: list.append($maps, $current-get)
|
||||
|
||||
// Loop from the last map to the first one
|
||||
// Merge it with the previous one
|
||||
@for $i from list.length($maps) through 1
|
||||
$current-map: list.nth($maps, $i)
|
||||
$current-key: list.nth($keys, $i)
|
||||
@if $i == list.length($maps)
|
||||
$result: map.merge($current-map, ($current-key: $value))
|
||||
@else
|
||||
$result: map.merge($current-map, ($current-key: $result))
|
||||
|
||||
// Return result
|
||||
@return $result
|
||||
|
||||
@function map-deep-get($map, $keys...)
|
||||
@each $key in $keys
|
||||
$map: map.get($map, $key)
|
||||
|
||||
@return $map
|
||||
|
||||
@function breakpoint-min($name, $breakpoints)
|
||||
$min: map.get($breakpoints, $name)
|
||||
@if $min != 0
|
||||
@return $min
|
||||
@else
|
||||
@return null
|
||||
|
||||
@function breakpoint-infix($name, $breakpoints)
|
||||
@if breakpoint-min($name, $breakpoints) == null
|
||||
@return ''
|
||||
@else
|
||||
@return '-#{$name}'
|
||||
|
||||
// Adapted from https://gist.github.com/pentzzsolt/4949bbd7691d43d00616dc4f1451cae9#file-non-destructive-map-merge-4-scss
|
||||
@function map-deep-merge($parent-map, $child-map)
|
||||
$result: $parent-map
|
||||
|
||||
@each $key, $child in $child-map
|
||||
$parent-has-key: map.has-key($result, $key)
|
||||
$parent-value: map.get($result, $key)
|
||||
$parent-type: meta.type-of($parent-value)
|
||||
$child-type: meta.type-of($child)
|
||||
$parent-is-map: $parent-type == map
|
||||
$child-is-map: $child-type == map
|
||||
|
||||
@if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map))
|
||||
$result: map.merge($result, ( $key: $child ))
|
||||
|
||||
@else
|
||||
$result: map.merge($result, ( $key: map-deep-merge($parent-value, $child) ))
|
||||
|
||||
@return $result
|
||||
|
||||
@function theme-color($color, $opacity: 1)
|
||||
$color: rgb(var(--v-theme-#{$color}))
|
||||
$color: color-mix(in srgb, $color calc($opacity * 100%), transparent)
|
||||
@return $color
|
||||
|
||||
@function roundEven($val)
|
||||
@return 2 * math.round($val * .5)
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
@forward '_absolute'
|
||||
@forward '_functions'
|
||||
@forward '_border'
|
||||
@forward '_density'
|
||||
@forward '_elevation'
|
||||
@forward '_layer'
|
||||
@forward '_position'
|
||||
@forward '_rounded'
|
||||
@forward '_rtl'
|
||||
@forward '_states'
|
||||
@forward '_theme'
|
||||
@forward '_typography'
|
||||
@forward '_utilities'
|
||||
@forward '_variant'
|
||||
@forward '_display'
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
@use '../settings';
|
||||
|
||||
@mixin layer ($name) {
|
||||
@if ($name == 'transitions' or $name == 'trumps') {
|
||||
$name: 'final.' + $name;
|
||||
}
|
||||
@at-root (without: layer) {
|
||||
@layer vuetify-#{$name} {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
@mixin position($positions)
|
||||
@each $position in $positions
|
||||
&--#{$position}
|
||||
position: #{$position}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
@mixin rounded($radius: null)
|
||||
&
|
||||
border-radius: $radius
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
@use 'sass:selector'
|
||||
|
||||
@mixin rtl()
|
||||
@at-root #{selector.append('.v-locale--is-rtl', &)},
|
||||
.v-locale--is-rtl &
|
||||
@content
|
||||
|
||||
@mixin ltr()
|
||||
@at-root #{selector.append('.v-locale--is-ltr', &)},
|
||||
.v-locale--is-ltr &
|
||||
@content
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
@use 'sass:map'
|
||||
@use 'sass:string'
|
||||
@use '../settings'
|
||||
|
||||
@mixin states ($selector: '&::before', $active: true)
|
||||
@if string.slice(string.unquote($selector), 1, 1) != '&'
|
||||
$selector: #{'>'} #{$selector}
|
||||
|
||||
&:hover
|
||||
#{$selector}
|
||||
opacity: calc(#{map.get(settings.$states, 'hover')} * var(--v-theme-overlay-multiplier))
|
||||
|
||||
&:focus-visible
|
||||
#{$selector}
|
||||
opacity: calc(#{map.get(settings.$states, 'focus')} * var(--v-theme-overlay-multiplier))
|
||||
|
||||
@supports not selector(:focus-visible)
|
||||
&:focus
|
||||
#{$selector}
|
||||
opacity: calc(#{map.get(settings.$states, 'focus')} * var(--v-theme-overlay-multiplier))
|
||||
|
||||
@if ($active)
|
||||
&--active,
|
||||
&[aria-haspopup="menu"][aria-expanded="true"]
|
||||
@include active-states($selector)
|
||||
|
||||
@mixin active-states ($selector, $base: map.get(settings.$states, 'activated'))
|
||||
#{$selector}
|
||||
opacity: calc(#{$base} * var(--v-theme-overlay-multiplier))
|
||||
|
||||
&:hover
|
||||
#{$selector}
|
||||
opacity: calc((#{$base} + #{map.get(settings.$states, 'hover')}) * var(--v-theme-overlay-multiplier))
|
||||
|
||||
&:focus-visible
|
||||
#{$selector}
|
||||
opacity: calc((#{$base} + #{map.get(settings.$states, 'focus')}) * var(--v-theme-overlay-multiplier))
|
||||
|
||||
@supports not selector(:focus-visible)
|
||||
&:focus
|
||||
#{$selector}
|
||||
opacity: calc((#{$base} + #{map.get(settings.$states, 'focus')}) * var(--v-theme-overlay-multiplier))
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
@mixin theme ($background, $color)
|
||||
&
|
||||
background: $background
|
||||
color: $color
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
@mixin typography ($font-size, $font-weight, $letter-spacing, $line-height, $text-transform)
|
||||
&
|
||||
font-size: $font-size
|
||||
font-weight: $font-weight
|
||||
letter-spacing: $letter-spacing
|
||||
line-height: $line-height
|
||||
text-transform: $text-transform
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
@use 'sass:list'
|
||||
@use 'sass:map'
|
||||
@use 'sass:meta'
|
||||
|
||||
=generate-utility($utility, $infix, $forceDir)
|
||||
$values: map.get($utility, values)
|
||||
|
||||
// If the values are a list or string, convert it into a map
|
||||
@if meta.type-of($values) == "string" or meta.type-of(list.nth($values, 1)) != "list"
|
||||
$values: list.zip($values, $values)
|
||||
|
||||
@each $value in $values
|
||||
$properties: map.get($utility, property)
|
||||
|
||||
// Multiple properties are possible, for example with vertical or horizontal margins or paddings
|
||||
@if meta.type-of($properties) == 'string'
|
||||
$properties: list.append((), $properties)
|
||||
|
||||
// Property can be a map, where the key is a mixin to include
|
||||
@if meta.type-of($properties) == 'map'
|
||||
@each $dir in $properties
|
||||
$mixin: list.nth($dir, 1)
|
||||
// SASS doesn't support dynamic mixin invocation
|
||||
// https://github.com/sass/sass/issues/626
|
||||
@if $mixin == 'ltr'
|
||||
.v-locale--is-ltr
|
||||
@include generate-utility-body($utility, list.nth($dir, 2), $value, $infix)
|
||||
@else if $mixin == 'rtl'
|
||||
.v-locale--is-rtl
|
||||
@include generate-utility-body($utility, list.nth($dir, 2), $value, $infix)
|
||||
@else
|
||||
@error 'Only RTL and LTR are supported'
|
||||
@else
|
||||
@if $forceDir == 'ltr'
|
||||
.v-locale--is-ltr
|
||||
@include generate-utility-body($utility, $properties, $value, $infix)
|
||||
@else if $forceDir == 'rtl'
|
||||
.v-locale--is-rtl
|
||||
@include generate-utility-body($utility, $properties, $value, $infix)
|
||||
@else
|
||||
@include generate-utility-body($utility, $properties, $value, $infix)
|
||||
|
||||
=generate-utility-body($utility, $properties, $value, $infix)
|
||||
// Use custom class if present
|
||||
$property-class: map.get($utility, class)
|
||||
@if not $property-class
|
||||
$property-class: list.nth($properties, 1)
|
||||
|
||||
// Don't prefix if value key is null (eg. with shadow class)
|
||||
$property-class-modifier: ''
|
||||
@if list.nth($value, 1)
|
||||
$property-class-modifier: '-' + list.nth($value, 1)
|
||||
|
||||
$value: list.nth($value, 2)
|
||||
|
||||
.#{$property-class + $infix + $property-class-modifier}
|
||||
@for $i from 1 through list.length($properties)
|
||||
$property: list.nth($properties, $i)
|
||||
$val: $value
|
||||
@if meta.type-of($value) == 'list' and list.length($properties) == list.length($value)
|
||||
$val: list.nth($value, $i)
|
||||
@if $val != false
|
||||
#{$property}: #{meta.inspect($val)}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
@use "./absolute" as *
|
||||
@use "./elevation" as *
|
||||
@use "../settings/variables" as *
|
||||
|
||||
@mixin variant($contained-background, $contained-color, $contained-elevation, $plain-opacity, $name)
|
||||
&--variant-plain,
|
||||
&--variant-outlined,
|
||||
&--variant-text,
|
||||
&--variant-tonal
|
||||
background: transparent
|
||||
color: inherit
|
||||
|
||||
&--variant-plain
|
||||
opacity: $plain-opacity
|
||||
|
||||
&:focus,
|
||||
&:hover
|
||||
opacity: 1
|
||||
|
||||
&--variant-plain
|
||||
.#{$name}__overlay
|
||||
display: none
|
||||
|
||||
&--variant-elevated,
|
||||
&--variant-flat
|
||||
background: $contained-background
|
||||
color: $contained-color
|
||||
|
||||
@if ($contained-elevation > 0)
|
||||
&--variant-elevated
|
||||
@include elevation($contained-elevation)
|
||||
|
||||
&--variant-flat
|
||||
@include elevation(0)
|
||||
|
||||
&--variant-outlined
|
||||
border: $border-width-root solid currentColor
|
||||
|
||||
&--variant-text
|
||||
.#{$name}__overlay
|
||||
background: currentColor
|
||||
|
||||
&--variant-tonal
|
||||
.#{$name}__underlay
|
||||
background: currentColor
|
||||
opacity: var(--v-activated-opacity)
|
||||
border-radius: inherit
|
||||
top: 0
|
||||
right: 0
|
||||
bottom: 0
|
||||
left: 0
|
||||
pointer-events: none
|
||||
|
||||
.#{$name}__underlay
|
||||
position: absolute
|
||||
Reference in New Issue
Block a user