@toife/vue 3.0.4 → 3.0.6

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.
Files changed (36) hide show
  1. package/package.json +1 -1
  2. package/src/components/action/action.composable.ts +0 -1
  3. package/src/components/action/action.scss +4 -3
  4. package/src/components/app/app.scss +4 -4
  5. package/src/components/avatar/avatar.scss +10 -2
  6. package/src/components/avatar/avatar.type.ts +2 -0
  7. package/src/components/avatar/avatar.vue +11 -3
  8. package/src/components/button/button.scss +26 -26
  9. package/src/components/card/card/card.scss +5 -4
  10. package/src/components/card/card-body/card-body.scss +4 -4
  11. package/src/components/card/card-footer/card-footer.scss +7 -6
  12. package/src/components/card/card-header/card-header.scss +7 -6
  13. package/src/components/checkbox/checkbox.html +0 -1
  14. package/src/components/checkbox/checkbox.scss +34 -22
  15. package/src/components/checkbox/checkbox.vue +2 -2
  16. package/src/components/collapse/collapse.scss +7 -7
  17. package/src/components/decision-modal/decision-modal.scss +5 -4
  18. package/src/components/divider/divider.scss +4 -4
  19. package/src/components/field/outline/outline.scss +14 -12
  20. package/src/components/gesture-indicator/gesture-indicator.scss +2 -2
  21. package/src/components/gesture-indicator/gesture-indicator.type.ts +1 -0
  22. package/src/components/gesture-indicator/gesture-indicator.vue +3 -1
  23. package/src/components/image/image.vue +0 -1
  24. package/src/components/modal/modal.scss +2 -2
  25. package/src/components/present/present.scss +3 -3
  26. package/src/components/radio/radio/radio.scss +31 -21
  27. package/src/components/radio/radio/radio.vue +9 -23
  28. package/src/components/segmented-field/segmented-field.scss +4 -3
  29. package/src/components/skeleton/skeleton.scss +14 -9
  30. package/src/components/switch/switch.html +0 -1
  31. package/src/components/switch/switch.scss +21 -18
  32. package/src/components/switch/switch.vue +2 -2
  33. package/src/components/tabs/tabs/tabs.scss +14 -15
  34. package/src/components/toast/toast-content/toast-content.scss +8 -8
  35. package/src/components/toolbar/toolbar.scss +2 -2
  36. package/src/components/image/image.scss +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toife/vue",
3
- "version": "3.0.4",
3
+ "version": "3.0.6",
4
4
  "description": "A Frontend framework for Vue",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -7,7 +7,6 @@ const visible = ref(false);
7
7
  export const useAction = () => {
8
8
  const open = (props: ActionComposableProps) => {
9
9
  data.value = props;
10
- // Defer showing one frame so Present/transition hooks see a clean open cycle
11
10
  setTimeout(() => {
12
11
  visible.value = true;
13
12
  }, 50);
@@ -4,7 +4,9 @@
4
4
  $action: sass.fn-naming-prefix("action");
5
5
  $button: sass.fn-naming-prefix("button");
6
6
 
7
- // Property name
7
+ // Property name - layer: action
8
+ $action-border-color: sass.fn-naming-var("action", "border-color");
9
+
8
10
  $margin-y: sass.fn-naming-var("spacing", "y");
9
11
  $margin-x: sass.fn-naming-var("spacing", "x");
10
12
  $width: sass.fn-naming-var("viewport", "width");
@@ -17,7 +19,6 @@ $safe-area-top: sass.fn-naming-var("safe-area", "top");
17
19
  $safe-area-left: sass.fn-naming-var("safe-area", "left");
18
20
  $safe-area-right: sass.fn-naming-var("safe-area", "right");
19
21
  $border-width: sass.fn-naming-var("stroke", "width");
20
- $border-color: sass.fn-naming-var("action", "border-color");
21
22
 
22
23
  .#{$action} {
23
24
  // Styles
@@ -70,7 +71,7 @@ $border-color: sass.fn-naming-var("action", "border-color");
70
71
  &.divider {
71
72
  :deep(.#{$button}) {
72
73
  border-color: transparent;
73
- border-bottom-color: rgb(#{$border-color});
74
+ border-bottom-color: rgb(#{$action-border-color});
74
75
  }
75
76
  }
76
77
 
@@ -4,8 +4,8 @@
4
4
  $app: sass.fn-naming-prefix("app");
5
5
 
6
6
  // Property name - layer: app
7
- $background-color: sass.fn-naming-var("app", "background-color");
8
- $color: sass.fn-naming-var("app", "color");
7
+ $app-background-color: sass.fn-naming-var("app", "background-color");
8
+ $app-color: sass.fn-naming-var("app", "color");
9
9
  $transition-duration: sass.fn-naming-var("motion", "duration");
10
10
 
11
11
  .#{$app} {
@@ -13,8 +13,8 @@ $transition-duration: sass.fn-naming-var("motion", "duration");
13
13
  max-width: #{sass.fn-naming-var("viewport", "max-width")};
14
14
  height: #{sass.fn-naming-var("viewport", "height")};
15
15
  max-height: #{sass.fn-naming-var("viewport", "max-height")};
16
- background-color: rgb(#{$background-color});
17
- color: rgb(#{$color});
16
+ background-color: rgb(#{$app-background-color});
17
+ color: rgb(#{$app-color});
18
18
  transition:
19
19
  background-color #{$transition-duration} ease,
20
20
  color #{$transition-duration} ease,
@@ -6,16 +6,19 @@ $shape-pill: sass.fn-naming-prefix("shape-pill");
6
6
 
7
7
  // Property - layer: avatar
8
8
  $border-radius: sass.fn-naming-var("border-radius");
9
- $background-color: sass.fn-naming-var("avatar", "background-color");
9
+ $border-width: sass.fn-naming-var("stroke", "width");
10
10
  $width: sass.fn-naming-var("width");
11
11
  $transition-duration: sass.fn-naming-var("motion", "duration");
12
12
 
13
+ $avatar-background-color: sass.fn-naming-var("avatar", "background-color");
14
+ $avatar-border-color: sass.fn-naming-var("avatar", "border-color");
15
+
13
16
  // Avatar default is circle
14
17
  // With props square then is square
15
18
  .#{$avatar} {
16
19
  position: relative;
17
20
  overflow: hidden;
18
- background-color: rgb(#{$background-color});
21
+ background-color: rgb(#{$avatar-background-color});
19
22
  width: #{$width};
20
23
  aspect-ratio: 1/1;
21
24
  border-radius: #{$border-radius};
@@ -28,8 +31,13 @@ $transition-duration: sass.fn-naming-var("motion", "duration");
28
31
  box-shadow #{$transition-duration} ease,
29
32
  border-radius #{$transition-duration} ease;
30
33
  display: inline-block;
34
+ border: #{$border-width} solid transparent;
31
35
 
32
36
  &.#{$shape-pill} {
33
37
  border-radius: 50%;
34
38
  }
39
+
40
+ &.divider {
41
+ border: #{$border-width} solid rgb(#{$avatar-border-color});
42
+ }
35
43
  }
@@ -3,4 +3,6 @@ export type AvatarProps = {
3
3
  shape?: string;
4
4
  size?: string | number;
5
5
  src?: string;
6
+ role?: string;
7
+ divider?: boolean;
6
8
  };
@@ -11,6 +11,8 @@ import { type AppProviderState, APP_PROVIDER_STATE_KEY } from "../app";
11
11
  const props = withDefaults(defineProps<AvatarProps>(), {
12
12
  size: "22px",
13
13
  src: "",
14
+ role: undefined,
15
+ divider: undefined,
14
16
  });
15
17
  const appState = inject<AppProviderState>(APP_PROVIDER_STATE_KEY);
16
18
 
@@ -18,7 +20,10 @@ const appState = inject<AppProviderState>(APP_PROVIDER_STATE_KEY);
18
20
  // ----------------------------------------------------------------------------
19
21
  const avatarAttrs = computed(() => {
20
22
  const shape = props?.shape || appState?.shape.value || "";
21
- const role = appState?.role.value || "";
23
+ const role = props?.role || appState?.role.value || "";
24
+ const divider = (props?.divider !== undefined ? props.divider : appState?.divider.value) ?? false;
25
+ const size = props.size + (typeof props.size === "number" ? "px" : "");
26
+ const backgroundImage = `url(${props.src})`;
22
27
 
23
28
  return {
24
29
  class: [
@@ -26,10 +31,13 @@ const avatarAttrs = computed(() => {
26
31
  withPrefix(["role", role]),
27
32
  withPrefix(["shape", shape]),
28
33
  withPrefix("avatar"),
34
+ {
35
+ divider: divider,
36
+ },
29
37
  ],
30
38
  style: {
31
- [property("width")]: props.size + (typeof props.size === "number" ? "px" : ""),
32
- backgroundImage: `url(${props.src})`,
39
+ [property("width")]: size,
40
+ backgroundImage: backgroundImage,
33
41
  },
34
42
  };
35
43
  });
@@ -11,14 +11,21 @@ $transition-duration: sass.fn-naming-var("motion", "duration");
11
11
  $spacing-x: sass.fn-naming-var("spacing", "x");
12
12
  $spacing-y: sass.fn-naming-var("spacing", "y");
13
13
 
14
- $color: sass.fn-naming-var("button", "color");
14
+ $button-color: sass.fn-naming-var("button", "color");
15
15
 
16
- $border-color: sass.fn-naming-var("button", "border-color");
17
- $border-color-hover: sass.fn-naming-var("button", "border-color", "strong");
18
- $border-color-focus: sass.fn-naming-var("button", "border-color", "heavy");
19
- $border-color-active: sass.fn-naming-var("button", "border-color", "heavy");
20
- $border-color-disabled: sass.fn-naming-var("button", "border-color");
21
- $border-color-inactive: sass.fn-naming-var("button", "border-color", "soft");
16
+ $button-border-color: sass.fn-naming-var("button", "border-color");
17
+ $button-border-color-hover: sass.fn-naming-var("button", "border-color", "hover");
18
+ $button-border-color-focus: sass.fn-naming-var("button", "border-color", "focus");
19
+ $button-border-color-active: sass.fn-naming-var("button", "border-color", "active");
20
+ $button-border-color-disabled: sass.fn-naming-var("button", "border-color", "disabled");
21
+
22
+ $button-background-color: sass.fn-naming-var("button", "background-color");
23
+ $button-background-color-hover: sass.fn-naming-var("button", "background-color", "hover");
24
+ $button-background-color-focus: sass.fn-naming-var("button", "background-color", "focus");
25
+ $button-background-color-active: sass.fn-naming-var("button", "background-color", "active");
26
+ $button-background-color-disabled: sass.fn-naming-var("button", "background-color", "disabled");
27
+
28
+ $button-box-shadow-color-focus: sass.fn-naming-var("button", "box-shadow-color", "focus");
22
29
 
23
30
  $size-font-size: sass.fn-naming-var("font-size");
24
31
  $size-height: sass.fn-naming-var("height");
@@ -26,22 +33,15 @@ $size-coefficient-x: sass.fn-naming-var("coefficient-x");
26
33
  $size-coefficient-y: sass.fn-naming-var("coefficient-y");
27
34
  $size-line-height: sass.fn-naming-var("line-height");
28
35
 
29
- $background-color: sass.fn-naming-var("button", "background-color");
30
- $background-color-hover: sass.fn-naming-var("button", "background-color", "strong");
31
- $background-color-focus: sass.fn-naming-var("button", "background-color", "heavy");
32
- $background-color-active: sass.fn-naming-var("button", "background-color", "heavy");
33
- $background-color-disabled: sass.fn-naming-var("button", "background-color");
34
- $background-color-inactive: sass.fn-naming-var("button", "background-color", "soft");
35
-
36
36
  .#{$button} {
37
37
  display: inline-flex;
38
38
  justify-content: center;
39
39
  align-items: center;
40
40
  position: relative;
41
41
  overflow: hidden;
42
- color: rgb(#{$color});
43
- background: rgb(#{$background-color});
44
- border-color: rgb(#{$border-color});
42
+ color: rgb(#{$button-color});
43
+ background: rgb(#{$button-background-color});
44
+ border-color: rgb(#{$button-border-color});
45
45
  border-style: solid;
46
46
  border-width: #{$border-width};
47
47
  white-space: nowrap;
@@ -61,30 +61,30 @@ $background-color-inactive: sass.fn-naming-var("button", "background-color", "so
61
61
  line-height: #{$size-line-height};
62
62
 
63
63
  &:hover {
64
- border-color: rgb(#{$border-color-hover});
65
- background-color: rgb(#{$background-color-hover});
64
+ border-color: rgb(#{$button-border-color-hover});
65
+ background-color: rgb(#{$button-background-color-hover});
66
66
  }
67
67
 
68
68
  &.focus,
69
69
  &:focus {
70
- border-color: rgb(#{$border-color-focus});
71
- background-color: rgb(#{$background-color-focus});
70
+ border-color: rgb(#{$button-border-color-focus});
71
+ background-color: rgb(#{$button-background-color-focus});
72
72
 
73
73
  &.shadow {
74
- box-shadow: 0 0 0 0.25rem rgb(#{$border-color}, 0.25);
74
+ box-shadow: 0 0 0 0.25rem rgb(#{$button-box-shadow-color-focus}, 0.25);
75
75
  }
76
76
  }
77
77
 
78
78
  &:active,
79
79
  &.active {
80
- border-color: rgb(#{$border-color-active});
81
- background-color: rgb(#{$background-color-active});
80
+ border-color: rgb(#{$button-border-color-active});
81
+ background-color: rgb(#{$button-background-color-active});
82
82
  }
83
83
 
84
84
  &:disabled,
85
85
  &.disabled {
86
- border-color: rgba(#{$border-color-disabled}, 0.5);
87
- background-color: rgba(#{$background-color-disabled}, 0.5);
86
+ border-color: rgba(#{$button-border-color-disabled}, 0.5);
87
+ background-color: rgba(#{$button-background-color-disabled}, 0.5);
88
88
  cursor: not-allowed;
89
89
  }
90
90
 
@@ -4,14 +4,15 @@
4
4
  $card: sass.fn-naming-prefix("card");
5
5
 
6
6
  // Property name - layer: card
7
- $background-color: sass.fn-naming-var("card", "background-color");
8
- $color: sass.fn-naming-var("card", "color");
7
+ $card-background-color: sass.fn-naming-var("card", "background-color");
8
+ $card-color: sass.fn-naming-var("card", "color");
9
+
9
10
  $border-radius: sass.fn-naming-var("border-radius");
10
11
  $transition-duration: sass.fn-naming-var("motion", "duration");
11
12
 
12
13
  .#{$card} {
13
- background-color: rgb(#{$background-color});
14
- color: rgb(#{$color});
14
+ background-color: rgb(#{$card-background-color});
15
+ color: rgb(#{$card-color});
15
16
  border-radius: #{$border-radius};
16
17
  transition:
17
18
  box-shadow #{$transition-duration} ease,
@@ -4,15 +4,15 @@
4
4
  $card-body: sass.fn-naming-prefix("card-body");
5
5
 
6
6
  // Property name - layer: card
7
- $background-color: sass.fn-naming-var("card", "background-color");
8
- $color: sass.fn-naming-var("card", "color");
7
+ $card-background-color: sass.fn-naming-var("card", "background-color");
8
+ $card-color: sass.fn-naming-var("card", "color");
9
9
  $padding-y: sass.fn-naming-var("spacing", "y");
10
10
  $padding-x: sass.fn-naming-var("spacing", "x");
11
11
  $transition-duration: sass.fn-naming-var("motion", "duration");
12
12
 
13
13
  .#{$card-body} {
14
- background-color: rgb(#{$background-color});
15
- color: rgb(#{$color});
14
+ background-color: rgb(#{$card-background-color});
15
+ color: rgb(#{$card-color});
16
16
  padding: calc(#{$padding-y} * 4) calc(#{$padding-x} * 4);
17
17
  transition:
18
18
  box-shadow #{$transition-duration} ease,
@@ -4,18 +4,19 @@
4
4
  $card-footer: sass.fn-naming-prefix("card-footer");
5
5
 
6
6
  // Property name - layer: card
7
- $background-color: sass.fn-naming-var("card", "background-color");
8
- $color: sass.fn-naming-var("card", "color");
7
+ $card-background-color: sass.fn-naming-var("card", "background-color");
8
+ $card-color: sass.fn-naming-var("card", "color");
9
+ $card-border-color: sass.fn-naming-var("card", "border-color");
10
+
9
11
  $padding-y: sass.fn-naming-var("spacing", "y");
10
12
  $padding-x: sass.fn-naming-var("spacing", "x");
11
- $border-color: sass.fn-naming-var("card", "border-color");
12
13
  $border-width: sass.fn-naming-var("stroke", "width");
13
14
  $border: #{$border-width} solid transparent;
14
15
  $transition-duration: sass.fn-naming-var("motion", "duration");
15
16
 
16
17
  .#{$card-footer} {
17
- background-color: rgb(#{$background-color});
18
- color: rgb(#{$color});
18
+ background-color: rgb(#{$card-background-color});
19
+ color: rgb(#{$card-color});
19
20
  padding: calc(#{$padding-y} * 4) calc(#{$padding-x} * 4);
20
21
  border-top: #{$border};
21
22
  transition:
@@ -26,6 +27,6 @@ $transition-duration: sass.fn-naming-var("motion", "duration");
26
27
  border-radius #{$transition-duration} ease;
27
28
 
28
29
  &.divider {
29
- border-color: rgb(#{$border-color});
30
+ border-color: rgb(#{$card-border-color});
30
31
  }
31
32
  }
@@ -4,18 +4,19 @@
4
4
  $card-header: sass.fn-naming-prefix("card-header");
5
5
 
6
6
  // Property name - layer: card
7
- $background-color: sass.fn-naming-var("card", "background-color");
8
- $color: sass.fn-naming-var("card", "color");
7
+ $card-background-color: sass.fn-naming-var("card", "background-color");
8
+ $card-color: sass.fn-naming-var("card", "color");
9
+ $card-border-color: sass.fn-naming-var("card", "border-color");
10
+
9
11
  $padding-y: sass.fn-naming-var("spacing", "y");
10
12
  $padding-x: sass.fn-naming-var("spacing", "x");
11
- $border-color: sass.fn-naming-var("card", "border-color");
12
13
  $border-width: sass.fn-naming-var("stroke", "width");
13
14
  $border: #{$border-width} solid transparent;
14
15
  $transition-duration: sass.fn-naming-var("motion", "duration");
15
16
 
16
17
  .#{$card-header} {
17
- background-color: rgb(#{$background-color});
18
- color: rgb(#{$color});
18
+ background-color: rgb(#{$card-background-color});
19
+ color: rgb(#{$card-color});
19
20
  padding: calc(#{$padding-y} * 4) calc(#{$padding-x} * 4);
20
21
  border-bottom: #{$border};
21
22
  transition:
@@ -26,6 +27,6 @@ $transition-duration: sass.fn-naming-var("motion", "duration");
26
27
  border-radius #{$transition-duration} ease;
27
28
 
28
29
  &.divider {
29
- border-color: rgb(#{$border-color});
30
+ border-color: rgb(#{$card-border-color});
30
31
  }
31
32
  }
@@ -1,7 +1,6 @@
1
1
  <div
2
2
  v-bind="checkboxAttrs"
3
3
  :tabindex="disabled ? -1 : 0"
4
- role="checkbox"
5
4
  :aria-checked="props.modelValue"
6
5
  @click="onCheckbox"
7
6
  @focus="onFocus"
@@ -7,16 +7,25 @@ $shape-rounded: sass.fn-naming-prefix("shape-rounded");
7
7
  $shape-pill: sass.fn-naming-prefix("shape-pill");
8
8
 
9
9
  // Properties - layer: item
10
- $background-color: sass.fn-naming-var("checkbox", "background-color");
11
- $background-color-hover: sass.fn-naming-var("checkbox", "background-color", "soft");
12
- $background-color-inactive: sass.fn-naming-var("checkbox", "background-color", "soft");
13
- $background-color-contrast: sass.fn-naming-var("checkbox", "background-color", "contrast");
14
- $background-color-disabled: sass.fn-naming-var("checkbox", "background-color", "subtle");
15
-
16
- $color: sass.fn-naming-var("checkbox", "color");
17
-
18
- $border-color: sass.fn-naming-var("checkbox", "border-color");
19
- $border-color-inactive: sass.fn-naming-var("checkbox", "border-color", "subtle");
10
+ $checkbox-background-color-hover: sass.fn-naming-var("checkbox", "background-color", "hover");
11
+ $checkbox-background-color-focus: sass.fn-naming-var("checkbox", "background-color", "focus");
12
+ $checkbox-background-color-unchecked: sass.fn-naming-var(
13
+ "checkbox",
14
+ "background-color",
15
+ "unchecked"
16
+ );
17
+ $checkbox-background-color-checked: sass.fn-naming-var("checkbox", "background-color", "checked");
18
+ $checkbox-background-color-disabled: sass.fn-naming-var("checkbox", "background-color", "disabled");
19
+
20
+ $checkbox-color: sass.fn-naming-var("checkbox", "color");
21
+
22
+ $checkbox-border-color-hover: sass.fn-naming-var("checkbox", "border-color", "hover");
23
+ $checkbox-border-color-focus: sass.fn-naming-var("checkbox", "border-color", "focus");
24
+ $checkbox-border-color-checked: sass.fn-naming-var("checkbox", "border-color", "checked");
25
+ $checkbox-border-color-unchecked: sass.fn-naming-var("checkbox", "border-color", "unchecked");
26
+ $checkbox-border-color-disabled: sass.fn-naming-var("checkbox", "border-color", "disabled");
27
+
28
+ $checkbox-box-shadow-color-focus: sass.fn-naming-var("checkbox", "box-shadow-color", "focus");
20
29
 
21
30
  $transition-duration: sass.fn-naming-var("motion", "duration");
22
31
  $border-radius: sass.fn-naming-var("border-radius");
@@ -37,7 +46,7 @@ $border-radius: sass.fn-naming-var("border-radius");
37
46
  display: flex;
38
47
  align-items: center;
39
48
  justify-content: center;
40
- border: 1px solid rgb(#{$border-color-inactive});
49
+ border: 1px solid rgb(#{$checkbox-color});
41
50
  background-color: transparent;
42
51
  transition:
43
52
  box-shadow #{$transition-duration} ease,
@@ -53,7 +62,7 @@ $border-radius: sass.fn-naming-var("border-radius");
53
62
  content: "";
54
63
  width: 0.2rem;
55
64
  height: 0.5rem;
56
- border: solid rgb(#{$background-color-contrast});
65
+ border: solid rgb(#{$checkbox-color});
57
66
  border-width: 0 2px 2px 0;
58
67
  transform: rotate(45deg) scale(0);
59
68
  transform-origin: center;
@@ -77,13 +86,12 @@ $border-radius: sass.fn-naming-var("border-radius");
77
86
  &:not(.on) {
78
87
  .#{$checkbox-icon} {
79
88
  background-color: transparent;
80
- border-color: rgb(#{$border-color-inactive});
89
+ border-color: rgb(#{$checkbox-border-color-unchecked});
81
90
  }
82
91
 
83
92
  &:not(.disabled):not(.readonly):hover {
84
93
  .#{$checkbox-icon} {
85
- border-color: rgb(#{$border-color});
86
- background-color: rgba(#{$background-color-hover}, 0.2);
94
+ border-color: rgb(#{$checkbox-border-color-hover});
87
95
  }
88
96
  }
89
97
  }
@@ -91,8 +99,8 @@ $border-radius: sass.fn-naming-var("border-radius");
91
99
  &.on {
92
100
  &.fill {
93
101
  .#{$checkbox-icon} {
94
- background-color: rgb(#{$background-color});
95
- border-color: rgb(#{$background-color});
102
+ background-color: rgb(#{$checkbox-background-color-checked});
103
+ border-color: rgb(#{$checkbox-border-color-checked});
96
104
 
97
105
  &::after {
98
106
  transform: rotate(45deg) scale(1);
@@ -102,11 +110,11 @@ $border-radius: sass.fn-naming-var("border-radius");
102
110
 
103
111
  &.outline {
104
112
  .#{$checkbox-icon} {
105
- border-color: rgb(#{$background-color});
113
+ border-color: rgb(#{$checkbox-border-color-checked});
106
114
 
107
115
  &::after {
108
116
  transform: rotate(45deg) scale(1);
109
- border-color: rgb(#{$background-color});
117
+ border-color: rgb(#{$checkbox-background-color-checked});
110
118
  }
111
119
  }
112
120
  }
@@ -118,8 +126,8 @@ $border-radius: sass.fn-naming-var("border-radius");
118
126
 
119
127
  &.on {
120
128
  .#{$checkbox-icon} {
121
- background-color: rgb(#{$background-color-disabled});
122
- border-color: rgb(#{$background-color-disabled});
129
+ background-color: rgb(#{$checkbox-background-color-disabled});
130
+ border-color: rgb(#{$checkbox-border-color-disabled});
123
131
  }
124
132
  }
125
133
  }
@@ -131,8 +139,12 @@ $border-radius: sass.fn-naming-var("border-radius");
131
139
  &.focus {
132
140
  &.shadow {
133
141
  .#{$checkbox-icon} {
134
- box-shadow: 0 0 0 0.25rem rgb(#{$border-color}, 0.25);
142
+ box-shadow: 0 0 0 0.25rem rgb(#{$checkbox-box-shadow-color-focus}, 0.25);
135
143
  }
136
144
  }
145
+
146
+ .#{$checkbox-icon} {
147
+ border-color: rgb(#{$checkbox-border-color-focus});
148
+ }
137
149
  }
138
150
  }
@@ -32,7 +32,7 @@ const checkboxAttrs = computed(() => {
32
32
  return {
33
33
  class: [
34
34
  withPrefix(["layer", "checkbox"]),
35
- withPrefix(["role", props.modelValue && !props.disabled ? role : baseRole]),
35
+ withPrefix(["role", role]),
36
36
  withPrefix(["shape", shape]),
37
37
  withPrefix("checkbox"),
38
38
  props.variant,
@@ -40,7 +40,7 @@ const checkboxAttrs = computed(() => {
40
40
  on: props.modelValue,
41
41
  disabled: props.disabled,
42
42
  readonly: props.readonly,
43
- shadow,
43
+ shadow: shadow && !props.disabled && isFocused.value,
44
44
  focus: isFocused.value,
45
45
  },
46
46
  ],
@@ -6,21 +6,21 @@ $collapse-trigger: sass.fn-naming-prefix("collapse-trigger");
6
6
  $collapse-content: sass.fn-naming-prefix("collapse-content");
7
7
  $collapse-content-inner: sass.fn-naming-prefix("collapse-content-inner");
8
8
 
9
- // Property
10
- $collapse-height: sass.fn-naming-dvar("collapse-height", 0);
9
+ // Property name - layer: collapse
10
+ $collapse-height: sass.fn-naming-dvar(("collapse", "height"), 0);
11
11
  $collapse-duration: sass.fn-naming-dvar(
12
- "collapse-duration",
12
+ ("collapse", "duration"),
13
13
  sass.fn-naming-var("motion", "duration")
14
14
  );
15
15
 
16
- $background-color: sass.fn-naming-var("collapse", "background-color");
17
- $color: sass.fn-naming-var("collapse", "color");
16
+ $collapse-background-color: sass.fn-naming-var("collapse", "background-color");
17
+ $collapse-color: sass.fn-naming-var("collapse", "color");
18
18
  $transition-duration: sass.fn-naming-var("motion", "duration");
19
19
 
20
20
  // Collapse
21
21
  .#{$collapse} {
22
- background-color: rgb(#{$background-color});
23
- color: rgb(#{$color});
22
+ background-color: rgb(#{$collapse-background-color});
23
+ color: rgb(#{$collapse-color});
24
24
  transition:
25
25
  background-color #{$transition-duration} ease,
26
26
  color #{$transition-duration} ease;
@@ -9,8 +9,10 @@ $button: sass.fn-naming-prefix("button");
9
9
  $shape-pill: sass.fn-naming-prefix("shape-pill");
10
10
 
11
11
  // Property name - layer: decision-modal
12
+ $decision-modal-background-color: sass.fn-naming-var("decision-modal", "background-color");
13
+ $decision-modal-border-color: sass.fn-naming-var("decision-modal", "border-color");
14
+
12
15
  $border-radius: sass.fn-naming-var("border-radius");
13
- $background-color: sass.fn-naming-var("decision-modal", "background-color");
14
16
  $width: sass.fn-naming-var("viewport", "width");
15
17
  $max-width: sass.fn-naming-var("overlay", "max-width");
16
18
  $padding-y: sass.fn-naming-var("spacing", "y");
@@ -19,12 +21,11 @@ $margin-y: sass.fn-naming-var("spacing", "y");
19
21
  $margin-x: sass.fn-naming-var("spacing", "x");
20
22
  $animation-duration: sass.fn-naming-var("motion", "duration");
21
23
  $border-width: sass.fn-naming-var("stroke", "width");
22
- $border-color: sass.fn-naming-var("decision-modal", "border-color");
23
24
  $transition-duration: sass.fn-naming-var("motion", "duration");
24
25
 
25
26
  .#{$decision-modal} {
26
27
  // Styles
27
- background-color: rgb(#{$background-color});
28
+ background-color: rgb(#{$decision-modal-background-color});
28
29
  width: #{$width};
29
30
  max-width: #{$max-width};
30
31
  overflow: hidden;
@@ -103,7 +104,7 @@ $transition-duration: sass.fn-naming-var("motion", "duration");
103
104
  &.divider {
104
105
  .#{$decision-modal-header},
105
106
  .#{$decision-modal-footer} {
106
- border-color: rgb(#{$border-color});
107
+ border-color: rgb(#{$decision-modal-border-color});
107
108
  }
108
109
  }
109
110
 
@@ -3,8 +3,8 @@
3
3
  // Class
4
4
  $divider: sass.fn-naming-prefix("divider");
5
5
 
6
- // Property - layer: stroke
7
- $border-color: sass.fn-naming-var("divider", "border-color");
6
+ // Property name - layer: divider
7
+ $divider-border-color: sass.fn-naming-var("divider", "border-color");
8
8
  $border-width: sass.fn-naming-var("stroke", "width");
9
9
  $transition-duration: sass.fn-naming-var("motion", "duration");
10
10
 
@@ -19,11 +19,11 @@ $transition-duration: sass.fn-naming-var("motion", "duration");
19
19
 
20
20
  &.horizontal {
21
21
  width: 100%;
22
- border-bottom: #{$border-width} solid rgb(#{$border-color});
22
+ border-bottom: #{$border-width} solid rgb(#{$divider-border-color});
23
23
  }
24
24
 
25
25
  &.vertical {
26
26
  height: 100%;
27
- border-right: #{$border-width} solid rgb(#{$border-color});
27
+ border-right: #{$border-width} solid rgb(#{$divider-border-color});
28
28
  }
29
29
  }
@@ -9,14 +9,15 @@ $field-help: sass.fn-naming-prefix("field-help");
9
9
  $field-direction-left: sass.fn-naming-prefix("direction", "left");
10
10
  $field-direction-right: sass.fn-naming-prefix("direction", "right");
11
11
 
12
- // Property name
12
+ // Property name - layer: field
13
+ $field-border-color: sass.fn-naming-var("field", "border-color");
14
+ $field-background-color: sass.fn-naming-var("field", "background-color");
15
+ $field-line: sass.fn-naming-var("field", "line");
16
+ $field-max-line: sass.fn-naming-var("field", "max-line");
17
+
13
18
  $border-radius: sass.fn-naming-var("border-radius");
14
19
  $border-width: sass.fn-naming-var("stroke", "width");
15
- $border-color: sass.fn-naming-var("field", "border-color");
16
- $role-color: sass.fn-naming-var("field", "background-color");
17
20
  $app-color: sass.fn-naming-var("app", "color");
18
- $line: sass.fn-naming-var("field", "line");
19
- $max-line: sass.fn-naming-var("field", "max-line");
20
21
 
21
22
  $spacing-x: sass.fn-naming-var("spacing", "x");
22
23
  $spacing-y: sass.fn-naming-var("spacing", "y");
@@ -41,7 +42,7 @@ $transition-duration: sass.fn-naming-var("motion", "duration");
41
42
  background-color #{$transition-duration} ease,
42
43
  color #{$transition-duration} ease,
43
44
  border-radius #{$transition-duration} ease;
44
- border-color: rgb(#{$border-color});
45
+ border-color: rgb(#{$field-border-color});
45
46
  border-radius: #{$border-radius};
46
47
  border-width: #{$border-width};
47
48
  border-style: solid;
@@ -58,8 +59,8 @@ $transition-duration: sass.fn-naming-var("motion", "duration");
58
59
  position: relative;
59
60
  background-color: transparent;
60
61
  z-index: 2;
61
- min-height: calc(#{$line} * #{$size-height} - 2 * #{$border-width});
62
- max-height: calc(#{$max-line} * #{$size-height} - 2 * #{$border-width});
62
+ min-height: calc(#{$field-line} * #{$size-height} - 2 * #{$border-width});
63
+ max-height: calc(#{$field-max-line} * #{$size-height} - 2 * #{$border-width});
63
64
  color: rgb(#{$app-color});
64
65
  caret-color: rgb(#{$app-color});
65
66
  border: none;
@@ -67,6 +68,7 @@ $transition-duration: sass.fn-naming-var("motion", "duration");
67
68
  font-size: #{$size-font-size};
68
69
  line-height: #{$size-line-height};
69
70
  box-sizing: border-box;
71
+ width: 100%;
70
72
  transition:
71
73
  box-shadow #{$transition-duration} ease,
72
74
  border-color #{$transition-duration} ease,
@@ -99,7 +101,7 @@ $transition-duration: sass.fn-naming-var("motion", "duration");
99
101
 
100
102
  // Message
101
103
  .#{$field-message} {
102
- color: rgb(#{$role-color});
104
+ color: rgb(#{$field-background-color});
103
105
  font-size: 0.9em;
104
106
  line-height: 1.5;
105
107
  transition:
@@ -126,15 +128,15 @@ $transition-duration: sass.fn-naming-var("motion", "duration");
126
128
  // State
127
129
  &.active {
128
130
  .#{$field-content} {
129
- border-color: rgb(#{$border-color});
130
- box-shadow: 0 0 0 calc(#{$border-width} * 1.5) rgb(#{$border-color});
131
+ border-color: rgb(#{$field-border-color});
132
+ box-shadow: 0 0 0 calc(#{$border-width} * 1.5) rgb(#{$field-border-color});
131
133
  }
132
134
  }
133
135
 
134
136
  &.focus {
135
137
  &.shadow {
136
138
  .#{$field-content} {
137
- box-shadow: 0 0 0 0.25rem rgb(#{$border-color}, 0.25);
139
+ box-shadow: 0 0 0 0.25rem rgb(#{$field-border-color}, 0.25);
138
140
  }
139
141
  }
140
142
  }
@@ -4,11 +4,11 @@
4
4
  $gesture-indicator: sass.fn-naming-prefix("gesture-indicator");
5
5
 
6
6
  // Property name - layer: gesture-indicator
7
- $border-color: sass.fn-naming-var("gesture-indicator", "border-color");
7
+ $gesture-indicator-border-color: sass.fn-naming-var("gesture-indicator", "border-color");
8
8
  $transition-duration: sass.fn-naming-var("motion", "duration");
9
9
 
10
10
  .#{$gesture-indicator} {
11
- background-color: rgb(#{$border-color});
11
+ background-color: rgb(#{$gesture-indicator-border-color});
12
12
  transition:
13
13
  box-shadow #{$transition-duration} ease,
14
14
  border-color #{$transition-duration} ease,
@@ -1,4 +1,5 @@
1
1
  // Type definitions
2
2
  export type GestureIndicatorProps = {
3
3
  placement?: string;
4
+ role?: string;
4
5
  };
@@ -10,13 +10,15 @@ import { type AppProviderState, APP_PROVIDER_STATE_KEY } from "../app";
10
10
  // ----------------------------------------------------------------------------
11
11
  const props = withDefaults(defineProps<GestureIndicatorProps>(), {
12
12
  placement: "bottom",
13
+ role: undefined,
13
14
  });
14
15
  const appState = inject<AppProviderState>(APP_PROVIDER_STATE_KEY);
15
16
 
16
17
  // Computed properties
17
18
  // ----------------------------------------------------------------------------
18
19
  const gestureIndicatorAttrs = computed(() => {
19
- const role = appState?.role.value || "";
20
+ const role = props.role || appState?.role.value || "";
21
+
20
22
  return {
21
23
  class: [
22
24
  withPrefix(["layer", "gesture-indicator"]),
@@ -1,4 +1,3 @@
1
- <style lang="scss" src="./image.scss" scoped></style>
2
1
  <template src="./image.html"></template>
3
2
  <script setup lang="ts">
4
3
  import { ref } from "vue";
@@ -4,7 +4,7 @@
4
4
  $modal: sass.fn-naming-prefix("modal");
5
5
 
6
6
  // Property name - layer: modal
7
- $background-color: sass.fn-naming-var("modal", "background-color");
7
+ $modal-background-color: sass.fn-naming-var("modal", "background-color");
8
8
  $viewport-width: sass.fn-naming-var("viewport", "width");
9
9
  $viewport-max-width: sass.fn-naming-var("viewport", "max-width");
10
10
  $viewport-height: sass.fn-naming-var("viewport", "height");
@@ -17,7 +17,7 @@ $safe-area-right: sass.fn-naming-var("safe-area", "right");
17
17
  $transition-duration: sass.fn-naming-var("motion", "duration");
18
18
 
19
19
  .#{$modal} {
20
- background: rgb(#{$background-color});
20
+ background: rgb(#{$modal-background-color});
21
21
  transition:
22
22
  box-shadow #{$transition-duration} ease,
23
23
  border-color #{$transition-duration} ease,
@@ -9,8 +9,8 @@ $transition-duration: sass.fn-naming-dvar(
9
9
  ("transition", "duration"),
10
10
  sass.fn-naming-var("motion", "duration")
11
11
  );
12
- // layer: backdrop
13
- $backdrop-bg: sass.fn-naming-var("backdrop", "background-color");
12
+
13
+ $backdrop-background-color: sass.fn-naming-var("backdrop", "background-color");
14
14
  $backdrop-opacity: sass.fn-naming-var("backdrop", "opacity");
15
15
 
16
16
  $present-translate-plus: sass.fn-naming-dvar(("translate"), "100%");
@@ -30,7 +30,7 @@ $present-opacity: sass.fn-naming-dvar(("present", "opacity"), 1);
30
30
  color #{$transition-duration} ease,
31
31
  border-radius #{$transition-duration} ease,
32
32
  opacity #{$transition-duration} ease;
33
- background-color: rgb(#{$backdrop-bg});
33
+ background-color: rgb(#{$backdrop-background-color});
34
34
  opacity: #{$backdrop-opacity};
35
35
  }
36
36
 
@@ -5,14 +5,21 @@ $radio: sass.fn-naming-prefix("radio");
5
5
  $radio-icon: sass.fn-naming-prefix("radio-icon");
6
6
 
7
7
  // Properties - layer: item
8
- $background-color: sass.fn-naming-var("radio", "background-color");
9
- $background-color-hover: sass.fn-naming-var("radio", "background-color", "subtle");
10
- $background-color-inactive: sass.fn-naming-var("radio", "background-color", "soft");
11
- $background-color-contrast: sass.fn-naming-var("radio", "background-color", "contrast");
12
- $background-color-disabled: sass.fn-naming-var("radio", "background-color", "subtle");
8
+ $radio-background-color-hover: sass.fn-naming-var("radio", "background-color", "hover");
9
+ $radio-background-color-focus: sass.fn-naming-var("radio", "background-color", "focus");
10
+ $radio-background-color-unchecked: sass.fn-naming-var("radio", "background-color", "unchecked");
11
+ $radio-background-color-checked: sass.fn-naming-var("radio", "background-color", "checked");
12
+ $radio-background-color-disabled: sass.fn-naming-var("radio", "background-color", "disabled");
13
13
 
14
- $border-color: sass.fn-naming-var("radio", "border-color");
15
- $border-color-inactive: sass.fn-naming-var("radio", "border-color", "subtle");
14
+ $radio-color: sass.fn-naming-var("radio", "color");
15
+
16
+ $radio-border-color-hover: sass.fn-naming-var("radio", "border-color", "hover");
17
+ $radio-border-color-focus: sass.fn-naming-var("radio", "border-color", "focus");
18
+ $radio-border-color-checked: sass.fn-naming-var("radio", "border-color", "checked");
19
+ $radio-border-color-unchecked: sass.fn-naming-var("radio", "border-color", "unchecked");
20
+ $radio-border-color-disabled: sass.fn-naming-var("radio", "border-color", "disabled");
21
+
22
+ $radio-box-shadow-color-focus: sass.fn-naming-var("radio", "box-shadow-color", "focus");
16
23
 
17
24
  $transition-duration: sass.fn-naming-var("motion", "duration");
18
25
  $border-radius: sass.fn-naming-var("border-radius");
@@ -33,7 +40,7 @@ $border-radius: sass.fn-naming-var("border-radius");
33
40
  display: flex;
34
41
  align-items: center;
35
42
  justify-content: center;
36
- border: 1px solid rgb(#{$border-color-inactive});
43
+ border: 1px solid rgb(#{$radio-color});
37
44
  background-color: transparent;
38
45
  transition:
39
46
  box-shadow #{$transition-duration} ease,
@@ -50,8 +57,9 @@ $border-radius: sass.fn-naming-var("border-radius");
50
57
  width: 0.5rem;
51
58
  height: 0.5rem;
52
59
  border-radius: 50%;
53
- background-color: rgb(#{$background-color-contrast});
60
+ background-color: rgb(#{$radio-color});
54
61
  transform: scale(0);
62
+ transform-origin: center;
55
63
  transition:
56
64
  transform #{$transition-duration} ease,
57
65
  background-color #{$transition-duration} ease,
@@ -63,13 +71,12 @@ $border-radius: sass.fn-naming-var("border-radius");
63
71
  &:not(.on) {
64
72
  .#{$radio-icon} {
65
73
  background-color: transparent;
66
- border-color: rgb(#{$border-color-inactive});
74
+ border-color: rgb(#{$radio-border-color-unchecked});
67
75
  }
68
76
 
69
77
  &:not(.disabled):not(.readonly):hover {
70
78
  .#{$radio-icon} {
71
- border-color: rgb(#{$border-color});
72
- background-color: rgba(#{$background-color-hover}, 0.2);
79
+ border-color: rgb(#{$radio-border-color-hover});
73
80
  }
74
81
  }
75
82
  }
@@ -77,8 +84,8 @@ $border-radius: sass.fn-naming-var("border-radius");
77
84
  &.on {
78
85
  &.fill {
79
86
  .#{$radio-icon} {
80
- background-color: rgb(#{$background-color});
81
- border-color: rgb(#{$background-color});
87
+ background-color: rgb(#{$radio-background-color-checked});
88
+ border-color: rgb(#{$radio-border-color-checked});
82
89
 
83
90
  &::after {
84
91
  transform: scale(1);
@@ -88,12 +95,11 @@ $border-radius: sass.fn-naming-var("border-radius");
88
95
 
89
96
  &.outline {
90
97
  .#{$radio-icon} {
91
- background-color: transparent;
92
- border-color: rgb(#{$background-color});
98
+ border-color: rgb(#{$radio-border-color-checked});
93
99
 
94
100
  &::after {
95
- transform: scale(1.5);
96
- background-color: rgb(#{$background-color});
101
+ transform: scale(1);
102
+ background-color: rgb(#{$radio-background-color-checked});
97
103
  }
98
104
  }
99
105
  }
@@ -105,8 +111,8 @@ $border-radius: sass.fn-naming-var("border-radius");
105
111
 
106
112
  &.on {
107
113
  .#{$radio-icon} {
108
- background-color: rgb(#{$background-color-disabled});
109
- border-color: rgb(#{$background-color-disabled});
114
+ background-color: rgb(#{$radio-background-color-disabled});
115
+ border-color: rgb(#{$radio-border-color-disabled});
110
116
  }
111
117
  }
112
118
  }
@@ -118,8 +124,12 @@ $border-radius: sass.fn-naming-var("border-radius");
118
124
  &.focus {
119
125
  &.shadow {
120
126
  .#{$radio-icon} {
121
- box-shadow: 0 0 0 0.25rem rgb(#{$border-color}, 0.25);
127
+ box-shadow: 0 0 0 0.25rem rgb(#{$radio-box-shadow-color-focus}, 0.25);
122
128
  }
123
129
  }
130
+
131
+ .#{$radio-icon} {
132
+ border-color: rgb(#{$radio-border-color-focus});
133
+ }
124
134
  }
125
135
  }
@@ -25,14 +25,6 @@ const isFocused = ref(false);
25
25
 
26
26
  // Computed properties
27
27
  // ----------------------------------------------------------------------------
28
- const role = computed(() => {
29
- return props.role || radioGroupState?.role.value || appState?.role.value || "";
30
- });
31
-
32
- const variant = computed(() => {
33
- return props.variant || radioGroupState?.variant.value || "";
34
- });
35
-
36
28
  const disabled = computed(() => {
37
29
  return props.disabled || (radioGroupState?.disabled.value ?? false);
38
30
  });
@@ -41,29 +33,23 @@ const readonly = computed(() => {
41
33
  return props.readonly || (radioGroupState?.readonly.value ?? false);
42
34
  });
43
35
 
44
- const isChecked = computed(() => {
45
- return radioGroupState?.modelValue.value === props.value;
46
- });
47
-
48
36
  const radioAttrs = computed(() => {
49
- const shadow =
50
- (props?.shadow !== undefined ? props.shadow : radioGroupState?.shadow.value) ?? false;
37
+ const shadow = (props?.shadow !== undefined ? props.shadow : appState?.shadow.value) ?? false;
38
+ const role = props.role || radioGroupState?.role.value || appState?.role.value || "";
39
+ const variant = props.variant || radioGroupState?.variant.value || "";
40
+ const isChecked = radioGroupState?.modelValue.value === props.value;
41
+
51
42
  return {
52
43
  class: [
53
44
  withPrefix(["layer", "radio"]),
54
- withPrefix([
55
- "role",
56
- (isChecked.value && !disabled.value
57
- ? role.value || radioGroupState?.role.value
58
- : appState?.role.value) ?? "",
59
- ]),
45
+ withPrefix(["role", role]),
60
46
  withPrefix("radio"),
61
- variant.value,
47
+ variant,
62
48
  {
63
- on: isChecked.value,
49
+ on: isChecked,
64
50
  disabled: disabled.value,
65
51
  readonly: readonly.value,
66
- shadow,
52
+ shadow: shadow && !props.disabled && isFocused.value,
67
53
  focus: isFocused.value,
68
54
  },
69
55
  ],
@@ -6,10 +6,11 @@ $segmented-field-content: sass.fn-naming-prefix("segmented-field-content");
6
6
  $segmented-field-message: sass.fn-naming-prefix("segmented-field-message");
7
7
  $segmented-field-help: sass.fn-naming-prefix("segmented-field-help");
8
8
 
9
- // Property name
9
+ // Property name - layer: segmented-field
10
+ $segmented-field-color: sass.fn-naming-var("segmented-field", "color");
11
+
10
12
  $spacing-x: sass.fn-naming-var("spacing", "x");
11
13
  $transition-duration: sass.fn-naming-var("motion", "duration");
12
- $role-color: sass.fn-naming-var("segmented-field", "background-color");
13
14
  $app-color: sass.fn-naming-var("app", "color");
14
15
 
15
16
  .#{$segmented-field-wrapper} {
@@ -20,7 +21,7 @@ $app-color: sass.fn-naming-var("app", "color");
20
21
 
21
22
  // Message
22
23
  .#{$segmented-field-message} {
23
- color: rgb(#{$role-color});
24
+ color: rgb(#{$segmented-field-color});
24
25
  font-size: 0.9em;
25
26
  line-height: 1.5;
26
27
  transition:
@@ -3,21 +3,21 @@
3
3
  // Classes
4
4
  $skeleton: sass.fn-naming-prefix("skeleton");
5
5
 
6
- // Properties - layer: skeleton
7
- $width: sass.fn-naming-var("skeleton", "width");
8
- $height: sass.fn-naming-var("skeleton", "height");
6
+ // Property name - layer: skeleton
7
+ $skeleton-width: sass.fn-naming-var("skeleton", "width");
8
+ $skeleton-height: sass.fn-naming-var("skeleton", "height");
9
+ $skeleton-background-color: sass.fn-naming-var("skeleton", "background-color");
10
+
9
11
  $border-radius: sass.fn-naming-var("border-radius");
10
- $background-color: sass.fn-naming-var("skeleton", "background-color");
11
- $background-color-subtle: sass.fn-naming-var("skeleton", "background-color", "subtle");
12
12
  $transition-duration: sass.fn-naming-var("motion", "duration");
13
13
 
14
14
  .#{$skeleton} {
15
- width: #{$width};
16
- height: #{$height};
15
+ width: #{$skeleton-width};
16
+ height: #{$skeleton-height};
17
17
  position: relative;
18
18
  overflow: hidden;
19
19
  border-radius: #{$border-radius};
20
- background-color: rgba(#{$background-color-subtle}, 0.2);
20
+ background-color: rgba(#{$skeleton-background-color}, 0.2);
21
21
  display: inline-block;
22
22
  line-height: 0;
23
23
  transition:
@@ -32,7 +32,12 @@ $transition-duration: sass.fn-naming-var("motion", "duration");
32
32
  position: absolute;
33
33
  inset: 0;
34
34
  transform: translateX(-100%);
35
- background: linear-gradient(90deg, transparent, rgba(#{$background-color}, 1), transparent);
35
+ background: linear-gradient(
36
+ 90deg,
37
+ transparent,
38
+ rgba(#{$skeleton-background-color}, 1),
39
+ transparent
40
+ );
36
41
  opacity: 0.2;
37
42
  animation: shimmer 1.2s infinite;
38
43
  }
@@ -1,7 +1,6 @@
1
1
  <div
2
2
  v-bind="switchWrapperAttrs"
3
3
  :tabindex="disabled ? -1 : 0"
4
- role="switch"
5
4
  :aria-checked="props.modelValue"
6
5
  @click="onSwitch"
7
6
  @focus="onFocus"
@@ -7,14 +7,17 @@ $shape-rounded: sass.fn-naming-prefix("shape-rounded");
7
7
  $shape-pill: sass.fn-naming-prefix("shape-pill");
8
8
  $switch-wrapper: sass.fn-naming-prefix("switch-wrapper");
9
9
 
10
- // Properties - switch track (inactive), switch icon (on)
11
- $background-color: sass.fn-naming-var("switch", "background-color");
12
- $background-color-hover: sass.fn-naming-var("switch", "background-color", "soft");
13
- $background-color-inactive: sass.fn-naming-var("switch", "background-color", "subtle");
14
- $background-color-disabled: sass.fn-naming-var("switch", "background-color", "subtle");
15
- $background-color-contrast: sass.fn-naming-var("switch", "background-color", "contrast");
16
- $border-color: sass.fn-naming-var("switch", "border-color");
17
- $color-hover: sass.fn-naming-var("switch", "color", "strong");
10
+ // Property name - layer: switch (track + thumb; states like button + inactive)
11
+ $switch-background-color-off: sass.fn-naming-var("switch", "background-color", "off");
12
+ $switch-background-color-on: sass.fn-naming-var("switch", "background-color", "on");
13
+ $switch-background-color-disabled: sass.fn-naming-var("switch", "background-color", "disabled");
14
+
15
+ $switch-color-on: sass.fn-naming-var("switch", "color", "on");
16
+ $switch-color-off: sass.fn-naming-var("switch", "color", "off");
17
+ $switch-color-disabled: sass.fn-naming-var("switch", "color", "disabled");
18
+
19
+ $switch-box-shadow-color-focus: sass.fn-naming-var("switch", "box-shadow-color", "focus");
20
+
18
21
  $transition-duration: sass.fn-naming-var("motion", "duration");
19
22
  $border-radius: sass.fn-naming-var("border-radius");
20
23
  $spacing-x: sass.fn-naming-var("spacing", "x");
@@ -30,7 +33,6 @@ $spacing-x: sass.fn-naming-var("spacing", "x");
30
33
  height: 1.5rem;
31
34
  aspect-ratio: 11/6;
32
35
  position: relative;
33
- overflow: hidden;
34
36
  transition:
35
37
  background-color #{$transition-duration} ease,
36
38
  color #{$transition-duration} ease,
@@ -43,7 +45,6 @@ $spacing-x: sass.fn-naming-var("spacing", "x");
43
45
  height: calc(100% - 0.3rem);
44
46
  position: absolute;
45
47
  top: 0;
46
- background-color: rgb(#{$background-color-contrast});
47
48
  border-radius: #{$border-radius};
48
49
  aspect-ratio: 1/1;
49
50
  margin: 0.15rem;
@@ -72,9 +73,13 @@ $spacing-x: sass.fn-naming-var("spacing", "x");
72
73
  cursor: not-allowed;
73
74
 
74
75
  .#{$switch} {
75
- background-color: rgb(#{$background-color-disabled});
76
+ background-color: rgb(#{$switch-background-color-disabled});
76
77
  cursor: not-allowed;
77
78
  opacity: 0.3;
79
+
80
+ .#{$switch-icon} {
81
+ background-color: rgb(#{$switch-color-disabled});
82
+ }
78
83
  }
79
84
  }
80
85
 
@@ -88,26 +93,24 @@ $spacing-x: sass.fn-naming-var("spacing", "x");
88
93
 
89
94
  &:not(.on) {
90
95
  .#{$switch} {
91
- background-color: rgb(#{$background-color-inactive});
96
+ background-color: rgb(#{$switch-background-color-off});
92
97
 
93
98
  .#{$switch-icon} {
99
+ background-color: rgb(#{$switch-color-off});
94
100
  left: 0;
95
101
  }
96
-
97
- &:not(.disabled):not(.readonly):hover {
98
- background-color: rgb(#{$background-color-hover});
99
- }
100
102
  }
101
103
  }
102
104
 
103
105
  &.on {
104
106
  .#{$switch} {
105
- background-color: rgb(#{$background-color});
107
+ background-color: rgb(#{$switch-background-color-on});
106
108
 
107
109
  .#{$switch-icon} {
108
110
  right: 0;
109
111
  animation: shrink #{$transition-duration} linear;
110
112
  animation-fill-mode: forwards;
113
+ background-color: rgb(#{$switch-color-on});
111
114
  }
112
115
  }
113
116
  }
@@ -115,7 +118,7 @@ $spacing-x: sass.fn-naming-var("spacing", "x");
115
118
  &.focus {
116
119
  &.shadow {
117
120
  .#{$switch} {
118
- box-shadow: 0 0 0 0.25rem rgb(#{$border-color}, 0.25);
121
+ box-shadow: 0 0 0 0.25rem rgb(#{$switch-box-shadow-color-focus}, 0.25);
119
122
  }
120
123
  }
121
124
  }
@@ -30,7 +30,7 @@ const switchWrapperAttrs = computed(() => {
30
30
  {
31
31
  disabled: props.disabled,
32
32
  readonly: props.readonly,
33
- shadow,
33
+ shadow: shadow && !props.disabled && isFocused.value,
34
34
  focus: isFocused.value,
35
35
  on: props.modelValue,
36
36
  },
@@ -45,7 +45,7 @@ const switchAttrs = computed(() => {
45
45
  return {
46
46
  class: [
47
47
  withPrefix(["layer", "switch"]),
48
- withPrefix(["role", props.modelValue && !props.disabled ? role : baseRole]),
48
+ withPrefix(["role", role]),
49
49
  withPrefix(["shape", shape]),
50
50
  withPrefix("switch"),
51
51
  ],
@@ -5,19 +5,18 @@ $tabs: sass.fn-naming-prefix("tabs");
5
5
  $tab: sass.fn-naming-prefix("tab");
6
6
  $button: sass.fn-naming-prefix("button");
7
7
 
8
- // Property name
8
+ // Property name - layer: tabs
9
+ $tabs-color: sass.fn-naming-var("tabs", "color");
10
+ $tabs-background-color: sass.fn-naming-var("tabs", "background-color");
11
+ $tabs-border-color: sass.fn-naming-var("tabs", "border-color");
12
+
9
13
  $space-x: sass.fn-naming-var("spacing", "x");
10
14
  $space-y: sass.fn-naming-var("spacing", "y");
11
-
12
- // layer: tabs
13
- $button-color: sass.fn-naming-var("tabs", "color");
14
15
  $border-radius: sass.fn-naming-var("border-radius");
15
16
  $border-width: sass.fn-naming-var("stroke", "width");
16
- $border-color: sass.fn-naming-var("tabs", "border-color");
17
-
18
17
  $transition-duration: sass.fn-naming-var("motion", "duration");
19
- $background-color: sass.fn-naming-var("tabs", "background-color");
20
18
 
19
+ // layer: highlight (indicator geometry)
21
20
  $highlight-top: sass.fn-naming-var("highlight", "top");
22
21
  $highlight-left: sass.fn-naming-var("highlight", "left");
23
22
  $highlight-width: sass.fn-naming-var("highlight", "width");
@@ -54,7 +53,7 @@ $highlight-space-y: sass.fn-naming-var("highlight", "space-y");
54
53
  height: #{$highlight-height};
55
54
  transform: translate(#{$highlight-left}, #{$highlight-top});
56
55
  box-sizing: border-box;
57
- background-color: rgb(#{$background-color});
56
+ background-color: rgb(#{$tabs-background-color});
58
57
  border-radius: #{$border-radius};
59
58
  }
60
59
 
@@ -114,25 +113,25 @@ $highlight-space-y: sass.fn-naming-var("highlight", "space-y");
114
113
  &.top-start,
115
114
  &.top-center,
116
115
  &.top-end {
117
- border-bottom-color: rgb(#{$border-color});
116
+ border-bottom-color: rgb(#{$tabs-border-color});
118
117
  }
119
118
 
120
119
  &.bottom-start,
121
120
  &.bottom-center,
122
121
  &.bottom-end {
123
- border-top-color: rgb(#{$border-color});
122
+ border-top-color: rgb(#{$tabs-border-color});
124
123
  }
125
124
 
126
125
  &.left-start,
127
126
  &.left-center,
128
127
  &.left-end {
129
- border-right-color: rgb(#{$border-color});
128
+ border-right-color: rgb(#{$tabs-border-color});
130
129
  }
131
130
 
132
131
  &.right-start,
133
132
  &.right-center,
134
133
  &.right-end {
135
- border-left-color: rgb(#{$border-color});
134
+ border-left-color: rgb(#{$tabs-border-color});
136
135
  }
137
136
  }
138
137
 
@@ -162,7 +161,7 @@ $highlight-space-y: sass.fn-naming-var("highlight", "space-y");
162
161
  :deep(.#{$tab}) {
163
162
  &.active {
164
163
  .#{$button} {
165
- color: rgb(#{$button-color}) !important;
164
+ color: rgb(#{$tabs-color}) !important;
166
165
  }
167
166
  }
168
167
  }
@@ -196,8 +195,8 @@ $highlight-space-y: sass.fn-naming-var("highlight", "space-y");
196
195
  :deep(.#{$tab}) {
197
196
  &.active {
198
197
  .#{$button} {
199
- color: rgb(#{$background-color});
200
- text-shadow: 0 0 rgb(#{$background-color});
198
+ color: rgb(#{$tabs-background-color});
199
+ text-shadow: 0 0 rgb(#{$tabs-background-color});
201
200
  }
202
201
  }
203
202
  }
@@ -3,13 +3,13 @@
3
3
  // Class name
4
4
  $toastContent: sass.fn-naming-prefix("toast-content");
5
5
 
6
- // Properties
6
+ // Property name - layer: toast
7
+ $toast-background-color: sass.fn-naming-var("toast", "background-color");
8
+ $toast-color: sass.fn-naming-var("toast", "color");
9
+ $toast-border-color: sass.fn-naming-var("toast", "border-color");
10
+
7
11
  $space-x: sass.fn-naming-var("spacing", "x");
8
12
  $transition-duration: sass.fn-naming-var("motion", "duration");
9
- // layer: toast-content
10
- $background-color: sass.fn-naming-var("toast", "background-color");
11
- $color: sass.fn-naming-var("toast", "color");
12
- $border-color: sass.fn-naming-var("toast", "border-color");
13
13
  $border-radius: sass.fn-naming-var("border-radius");
14
14
  $border-width: sass.fn-naming-var("stroke", "width");
15
15
  $max-height: sass.fn-naming-var("overlay", "max-height");
@@ -25,9 +25,9 @@ $max-height: sass.fn-naming-var("overlay", "max-height");
25
25
  border-radius #{$transition-duration} ease,
26
26
  opacity #{$transition-duration} ease;
27
27
 
28
- background-color: rgb(#{$background-color});
29
- color: rgb(#{$color});
30
- border-color: rgb(#{$border-color});
28
+ background-color: rgb(#{$toast-background-color});
29
+ color: rgb(#{$toast-color});
30
+ border-color: rgb(#{$toast-border-color});
31
31
  border-width: #{$border-width};
32
32
  border-style: solid;
33
33
  max-height: #{$max-height};
@@ -5,7 +5,7 @@ $toolbar: sass.fn-naming-prefix("toolbar");
5
5
 
6
6
  // Property name - layer: toolbar
7
7
  $toolbar-size: sass.fn-naming-var("toolbar", "size");
8
- $background-color: sass.fn-naming-var("toolbar", "background-color");
8
+ $toolbar-background-color: sass.fn-naming-var("toolbar", "background-color");
9
9
  $safe-area-right: sass.fn-naming-var("safe-area", "right");
10
10
  $safe-area-left: sass.fn-naming-var("safe-area", "left");
11
11
  $safe-area-bottom: sass.fn-naming-var("safe-area", "bottom");
@@ -13,7 +13,7 @@ $safe-area-top: sass.fn-naming-var("safe-area", "top");
13
13
  $transition-duration: sass.fn-naming-var("motion", "duration");
14
14
 
15
15
  .#{$toolbar} {
16
- background-color: rgb(#{$background-color});
16
+ background-color: rgb(#{$toolbar-background-color});
17
17
  transition:
18
18
  box-shadow #{$transition-duration} ease,
19
19
  border-color #{$transition-duration} ease,
@@ -1 +0,0 @@
1
- // Add styles here if needed