fulldev-ui 0.3.0-beta.2 → 0.3.2

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 (88) hide show
  1. package/.astro/settings.json +1 -1
  2. package/package.json +10 -5
  3. package/src/components/_Block.astro +0 -5
  4. package/src/components/_Component.astro +10 -8
  5. package/src/components/_archive/Body.astro +2 -2
  6. package/src/components/_archive/Nav.astro +12 -0
  7. package/src/components/_todo/Form.astro +1 -1
  8. package/src/components/_todo/Prose.astro +7 -7
  9. package/src/components/base/Badge.astro +20 -16
  10. package/src/components/base/Button.astro +21 -34
  11. package/src/components/base/Icon.astro +3 -2
  12. package/src/components/base/Image.astro +116 -42
  13. package/src/components/base/Logo.astro +1 -1
  14. package/src/components/base/Rating.astro +27 -25
  15. package/src/components/base/checkbox/Checkbox.astro +52 -0
  16. package/src/components/base/checkbox/CheckboxElement.astro +31 -0
  17. package/src/components/base/input/Input.astro +79 -0
  18. package/src/components/base/input/InputElement.astro +60 -0
  19. package/src/components/base/radio/Radio.astro +66 -0
  20. package/src/components/base/radio/RadioElement.astro +34 -0
  21. package/src/components/base/select/Select.astro +90 -0
  22. package/src/components/base/select/SelectElement.astro +56 -0
  23. package/src/components/base/select/SelectOption.astro +32 -0
  24. package/src/components/base/switch/Switch.astro +55 -0
  25. package/src/components/base/{Switch.astro → switch/SwitchElement.astro} +15 -13
  26. package/src/components/base/table/Table.astro +55 -0
  27. package/src/components/base/table/TableBody.astro +39 -0
  28. package/src/components/base/table/TableCell.astro +30 -0
  29. package/src/components/base/table/TableFooter.astro +48 -0
  30. package/src/components/base/table/TableHead.astro +31 -0
  31. package/src/components/base/table/TableHeader.astro +44 -0
  32. package/src/components/base/table/TableRow.astro +46 -0
  33. package/src/components/base/textarea/Textarea.astro +79 -0
  34. package/src/components/base/textarea/TextareaElement.astro +61 -0
  35. package/src/components/segment/Card.astro +28 -4
  36. package/src/components/segment/Footer.astro +88 -0
  37. package/src/components/segment/Header.astro +43 -13
  38. package/src/components/segment/Section.astro +60 -25
  39. package/src/components/segment/_regels.md +32 -0
  40. package/src/components/structure/Bento.astro +38 -0
  41. package/src/components/{segment → structure}/Box.astro +2 -12
  42. package/src/components/structure/Carousel.astro +55 -0
  43. package/src/components/structure/Column.astro +46 -0
  44. package/src/components/structure/Grid.astro +33 -0
  45. package/src/components/structure/Masonry.astro +42 -0
  46. package/src/components/structure/Row.astro +44 -0
  47. package/src/components/structure/Split.astro +54 -0
  48. package/src/components/structure/Spread.astro +45 -0
  49. package/src/components/structure/Wrap.astro +44 -0
  50. package/src/components/typography/Heading.astro +37 -28
  51. package/src/components/typography/Label.astro +4 -8
  52. package/src/components/typography/Link.astro +40 -12
  53. package/src/components/typography/List.astro +12 -13
  54. package/src/components/typography/ListItem.astro +11 -10
  55. package/src/components/typography/Paragraph.astro +4 -9
  56. package/src/components/typography/Tagline.astro +11 -10
  57. package/src/components/typography/Text.astro +5 -9
  58. package/src/css/color.scss +289 -0
  59. package/src/css/size.scss +293 -0
  60. package/src/css/space.scss +94 -0
  61. package/src/css/styles.css +1 -2
  62. package/src/index.ts +29 -11
  63. package/src/integration/tailwind.ts +34 -0
  64. package/src/integration/unocss.ts +38 -0
  65. package/src/schemas/collection.ts +2 -0
  66. package/src/components/_archive/Row.astro +0 -26
  67. package/src/components/_todo/Footer.astro +0 -66
  68. package/src/components/_todo/todo.md +0 -10
  69. package/src/components/base/Checkbox.astro +0 -41
  70. package/src/components/base/Input.astro +0 -59
  71. package/src/components/base/Radio.astro +0 -39
  72. package/src/components/base/Select.astro +0 -69
  73. package/src/components/base/SelectOption.astro +0 -27
  74. package/src/components/base/Textarea.astro +0 -34
  75. package/src/components/base/todo.md +0 -7
  76. package/src/components/segment/Deck.astro +0 -40
  77. package/src/components/segment/Group.astro +0 -29
  78. package/src/components/typography/todo.md +0 -3
  79. package/src/css/color.css +0 -88
  80. package/src/css/props/align.scss +0 -20
  81. package/src/css/props/frame.scss +0 -153
  82. package/src/css/props/mask +0 -1
  83. package/src/css/props/position.scss +0 -33
  84. package/src/css/props/ratio +0 -1
  85. package/src/css/props/structure.scss +0 -228
  86. package/src/css/props/variant.scss +0 -130
  87. package/src/css/radix.css +0 -281
  88. package/src/css/size.css +0 -334
@@ -3,9 +3,8 @@ import type { HTMLTag, Polymorphic } from 'astro/types'
3
3
  import Component from '../_Component.astro'
4
4
 
5
5
  type Props<As extends HTMLTag = 'label'> = Polymorphic<{ as: As }> & {
6
- scheme?: 'light' | 'dark'
7
- color?: 'base' | 'brand'
8
6
  size?: 'sm' | 'md' | 'lg'
7
+ color?: 'base' | 'brand'
9
8
  contrast?: boolean
10
9
  html?: string
11
10
  text?: string
@@ -28,14 +27,11 @@ const { as = 'label', ...rest } = Astro.props
28
27
  @include component('label') {
29
28
  display: flex;
30
29
  flex-direction: column;
31
- color: var(--foreground);
30
+ color: var(--text);
32
31
  font-weight: var(--font-weight);
33
- font-size: var(--text-label);
32
+ font-size: var(--text-1);
33
+ line-height: 1;
34
34
  font-family: var(--font-family);
35
35
  text-align: left;
36
-
37
- &.contrast {
38
- color: var(--foreground-contrast);
39
- }
40
36
  }
41
37
  </style>
@@ -1,20 +1,23 @@
1
1
  ---
2
- import type { ComponentProps, HTMLTag, Polymorphic } from 'astro/types'
2
+ import type { HTMLTag, Polymorphic } from 'astro/types'
3
3
  import Component from '../_Component.astro'
4
4
 
5
- type Props<As extends HTMLTag = 'a'> = Polymorphic<{ as: As }> &
6
- ComponentProps<typeof Component> & {
7
- html?: string
8
- text?: string
9
- variant?: 'base' | 'muted' | 'accent'
10
- }
5
+ type Props<As extends HTMLTag = 'a'> = Polymorphic<{ as: As }> & {
6
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'
7
+ color?: 'base' | 'brand'
8
+ underline?: 'auto' | 'always' | 'hover' | 'none'
9
+ contrast?: boolean
10
+ html?: string
11
+ text?: string
12
+ }
11
13
 
12
- const { as = 'a', ...rest } = Astro.props
14
+ const { as = 'a', underline = 'auto', ...rest } = Astro.props
13
15
  ---
14
16
 
15
17
  <Component
16
18
  class:list={['link']}
17
19
  {as}
20
+ {underline}
18
21
  {...rest}
19
22
  >
20
23
  <slot />
@@ -28,16 +31,41 @@ const { as = 'a', ...rest } = Astro.props
28
31
  flex-wrap: wrap;
29
32
  align-items: center;
30
33
  gap: var(--space-2);
31
- color: var(--foreground);
34
+ cursor: pointer;
35
+ border: none;
36
+ background: none;
37
+ color: var(--text);
32
38
  font-weight: var(--font-weight);
33
- font-size: var(--text-body);
39
+ font-size: var(--text-2);
34
40
  font-family: var(--font-family);
35
- text-decoration: none;
36
- text-decoration-color: var(--border);
41
+ text-decoration-color: var(--border); // FIXME, werkt niet
37
42
  white-space: nowrap;
38
43
 
39
44
  &:hover {
45
+ color: var(--color-12);
46
+ }
47
+
48
+ &.underline-auto {
49
+ text-decoration: none;
50
+
51
+ &:is(p > &) {
52
+ text-decoration: underline;
53
+ }
54
+ }
55
+
56
+ &.underline-always {
40
57
  text-decoration: underline;
41
58
  }
59
+
60
+ &.underline-hover {
61
+ text-decoration: none;
62
+ &:hover {
63
+ text-decoration: underline;
64
+ }
65
+ }
66
+
67
+ &.underline-none {
68
+ text-decoration: none;
69
+ }
42
70
  }
43
71
  </style>
@@ -3,16 +3,15 @@ import type { ComponentProps, HTMLTag, Polymorphic } from 'astro/types'
3
3
  import Component from '../_Component.astro'
4
4
  import ListItem from './ListItem.astro'
5
5
 
6
- type Props<As extends HTMLTag = 'ul'> = Polymorphic<{ as: As }> &
7
- ComponentProps<typeof Component> & {
8
- html?: string
9
- text?: string
10
- variant?: 'base' | 'muted' | 'accent'
11
- items?: (
12
- | ComponentProps<typeof ListItem>
13
- | ComponentProps<typeof ListItem>['html']
14
- )[]
15
- }
6
+ type Props<As extends HTMLTag = 'ul'> = Polymorphic<{ as: As }> & {
7
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'
8
+ color?: 'base' | 'brand'
9
+ contrast?: boolean
10
+ items?: (
11
+ | ComponentProps<typeof ListItem>
12
+ | ComponentProps<typeof ListItem>['html']
13
+ )[]
14
+ }
16
15
 
17
16
  const { as = 'ul', items, ...rest } = Astro.props
18
17
  ---
@@ -37,10 +36,10 @@ const { as = 'ul', items, ...rest } = Astro.props
37
36
  @include component('list') {
38
37
  display: flex;
39
38
  flex-direction: column;
40
- padding-left: var(--space-4);
41
- color: var(--foreground);
39
+ padding-left: var(--space-5);
40
+ color: var(--text);
42
41
  font-weight: var(--font-weight);
43
- font-size: var(--text-body);
42
+ font-size: var(--text-2);
44
43
  line-height: 1.625;
45
44
  font-family: var(--font-family);
46
45
  list-style-type: disc;
@@ -1,13 +1,14 @@
1
1
  ---
2
- import type { ComponentProps, HTMLTag, Polymorphic } from 'astro/types'
2
+ import type { HTMLTag, Polymorphic } from 'astro/types'
3
3
  import Component from '../_Component.astro'
4
4
 
5
- type Props<As extends HTMLTag = 'li'> = Polymorphic<{ as: As }> &
6
- ComponentProps<typeof Component> & {
7
- html?: string
8
- text?: string
9
- variant?: 'base' | 'muted' | 'accent'
10
- }
5
+ type Props<As extends HTMLTag = 'li'> = Polymorphic<{ as: As }> & {
6
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'
7
+ color?: 'base' | 'brand'
8
+ contrast?: boolean
9
+ html?: string
10
+ text?: string
11
+ }
11
12
 
12
13
  const { as = 'li', ...rest } = Astro.props
13
14
  ---
@@ -25,10 +26,10 @@ const { as = 'li', ...rest } = Astro.props
25
26
 
26
27
  @include component('list-item') {
27
28
  align-items: center;
28
- max-width: calc(var(--element-3) * 36);
29
- color: var(--foreground);
29
+ max-width: calc(var(--space-4) * 36);
30
+ color: var(--text);
30
31
  font-weight: var(--font-weight);
31
- font-size: var(--text-body);
32
+ font-size: var(--text-2);
32
33
  line-height: 1.625;
33
34
  font-family: var(--font-family);
34
35
  }
@@ -3,9 +3,8 @@ import type { HTMLTag, Polymorphic } from 'astro/types'
3
3
  import Component from '../_Component.astro'
4
4
 
5
5
  type Props<As extends HTMLTag = 'p'> = Polymorphic<{ as: As }> & {
6
- scheme?: 'light' | 'dark'
6
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'
7
7
  color?: 'base' | 'brand'
8
- size?: 'sm' | 'md' | 'lg' | 'xl'
9
8
  contrast?: boolean
10
9
  html?: string
11
10
  text?: string
@@ -27,15 +26,11 @@ const { as = 'p', ...rest } = Astro.props
27
26
 
28
27
  @include component('paragraph') {
29
28
  margin: 0;
30
- max-width: calc(var(--element-3) * 36);
31
- color: var(--foreground);
29
+ max-width: calc(var(--space-4) * 36);
30
+ color: var(--text);
32
31
  font-weight: var(--font-weight);
33
- font-size: var(--text-body);
32
+ font-size: var(--text-2);
34
33
  line-height: 1.625;
35
34
  font-family: var(--font-family);
36
-
37
- &.contrast {
38
- color: var(--foreground-contrast);
39
- }
40
35
  }
41
36
  </style>
@@ -1,13 +1,14 @@
1
1
  ---
2
- import type { ComponentProps, HTMLTag, Polymorphic } from 'astro/types'
2
+ import type { HTMLTag, Polymorphic } from 'astro/types'
3
3
  import Component from '../_Component.astro'
4
4
 
5
- type Props<As extends HTMLTag = 'span'> = Polymorphic<{ as: As }> &
6
- ComponentProps<typeof Component> & {
7
- html?: string
8
- text?: string
9
- variant?: 'base' | 'muted' | 'accent'
10
- }
5
+ type Props<As extends HTMLTag = 'span'> = Polymorphic<{ as: As }> & {
6
+ size?: 'sm' | 'md' | 'lg'
7
+ color?: 'base' | 'brand'
8
+ contrast?: boolean
9
+ html?: string
10
+ text?: string
11
+ }
11
12
 
12
13
  const { as = 'span', ...rest } = Astro.props
13
14
  ---
@@ -25,10 +26,10 @@ const { as = 'span', ...rest } = Astro.props
25
26
 
26
27
  @include component('tagline') {
27
28
  margin: 0;
28
- max-width: calc(var(--element-3) * 36);
29
- color: var(--foreground);
29
+ max-width: calc(var(--space-4) * 36);
30
+ color: var(--text);
30
31
  font-weight: var(--font-weight);
31
- font-size: var(--text-label);
32
+ font-size: var(--text-1);
32
33
  line-height: 1.25;
33
34
  font-family: var(--font-family);
34
35
  }
@@ -3,9 +3,8 @@ import type { HTMLTag, Polymorphic } from 'astro/types'
3
3
  import Component from '../_Component.astro'
4
4
 
5
5
  type Props<As extends HTMLTag = 'p'> = Polymorphic<{ as: As }> & {
6
- scheme?: 'light' | 'dark'
6
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'
7
7
  color?: 'base' | 'brand'
8
- size?: 'sm' | 'md' | 'lg' | 'xl'
9
8
  contrast?: boolean
10
9
  html?: string
11
10
  text?: string
@@ -16,6 +15,7 @@ const { as = 'p', ...rest } = Astro.props
16
15
 
17
16
  <Component
18
17
  class:list={['text']}
18
+ {as}
19
19
  {...rest}
20
20
  >
21
21
  <slot />
@@ -26,15 +26,11 @@ const { as = 'p', ...rest } = Astro.props
26
26
 
27
27
  @include component('text') {
28
28
  margin: 0;
29
- max-width: calc(var(--element-3) * 36);
30
- color: var(--foreground);
29
+ max-width: calc(var(--space-4) * 36);
30
+ color: var(--text, var(--color-11));
31
31
  font-weight: var(--font-weight);
32
- font-size: var(--text-body);
32
+ font-size: var(--text-2);
33
33
  line-height: 1.625;
34
34
  font-family: var(--font-family);
35
-
36
- &.contrast {
37
- color: var(--foreground-contrast);
38
- }
39
35
  }
40
36
  </style>
@@ -0,0 +1,289 @@
1
+ :root,
2
+ .theme-light,
3
+ [data-theme='light'] {
4
+ --brand-1: #fbf9f8;
5
+ --brand-2: #fff1ec;
6
+ --brand-3: #ffe6db;
7
+ --brand-4: #ffd3c2;
8
+ --brand-5: #ffc4ad;
9
+ --brand-6: #ffb397;
10
+ --brand-7: #ff9e7e;
11
+ --brand-8: #f5845f;
12
+ --brand-9: #f50;
13
+ --brand-10: #ed4d00;
14
+ --brand-11: #ca4900;
15
+ --brand-12: #5b2a1a;
16
+ --brand-contrast: #fff;
17
+
18
+ --base-1: #f9f9fa;
19
+ --base-2: #f5f6f8;
20
+ --base-3: #ececf0;
21
+ --base-4: #e3e4e9;
22
+ --base-5: #dcdde2;
23
+ --base-6: #d4d5dc;
24
+ --base-7: #c8cad2;
25
+ --base-8: #b5b7c2;
26
+ --base-9: #878994;
27
+ --base-10: #7c7e89;
28
+ --base-11: #5e6068;
29
+ --base-12: #1e1f24;
30
+ --base-contrast: #ffffff;
31
+
32
+ color-scheme: light;
33
+ }
34
+
35
+ .theme-dark,
36
+ [data-theme='dark'] {
37
+ --brand-1: #160f0d;
38
+ --brand-2: #201511;
39
+ --brand-3: #38190f;
40
+ --brand-4: #4f1602;
41
+ --brand-5: #5e1e07;
42
+ --brand-6: #6f2c15;
43
+ --brand-7: #873c23;
44
+ --brand-8: #ae4d2c;
45
+ --brand-9: #f50;
46
+ --brand-10: #ed4d00;
47
+ --brand-11: #ff976f;
48
+ --brand-12: #ffd8c9;
49
+ --brand-contrast: #fff;
50
+
51
+ --base-1: #101113;
52
+ --base-2: #18191b;
53
+ --base-3: #212225;
54
+ --base-4: #282a2d;
55
+ --base-5: #2e3135;
56
+ --base-6: #373a3f;
57
+ --base-7: #44474e;
58
+ --base-8: #5c616a;
59
+ --base-9: #696e77;
60
+ --base-10: #777b84;
61
+ --base-11: #b0b4ba;
62
+ --base-12: #edeef0;
63
+ --base-contrast: #ffffff;
64
+
65
+ color-scheme: dark;
66
+ }
67
+
68
+ /* --------------------------- */
69
+ /* Generate colors */
70
+ /* --------------------------- */
71
+
72
+ @mixin selector($selector,
73
+ $selectors: $selector) {
74
+ #{$selectors},
75
+ #{$selector},
76
+ #{$selector}
77
+ :is(
78
+ [class*='theme-'],
79
+ [class*='color-'],
80
+ [class*='variant-'],
81
+ .contrast
82
+ ):not(
83
+ #{$selector}
84
+ [class*='color-']
85
+ :is([class*='theme-'], [class*='variant-'], .contrast)
86
+ )
87
+ :not(
88
+ #{$selector}
89
+ [class*='color-']:is([class*='theme-'], [class*='variant-'], .contrast)
90
+ ) {
91
+ @content;
92
+ }
93
+ }
94
+
95
+ :where(:root),
96
+ :where(.theme-light),
97
+ :where(.theme-dark),
98
+ .color-base,
99
+ .color-base
100
+ .full:not(.color-base [class*='color-']):not(
101
+ .color-base [class*='color-'] .full
102
+ ) {
103
+ --color-1: var(--base-1);
104
+ --color-2: var(--base-2);
105
+ --color-3: var(--base-3);
106
+ --color-4: var(--base-4);
107
+ --color-5: var(--base-5);
108
+ --color-6: var(--base-6);
109
+ --color-7: var(--base-7);
110
+ --color-8: var(--base-8);
111
+ --color-9: var(--base-9);
112
+ --color-10: var(--base-10);
113
+ --color-11: var(--base-11);
114
+ --color-12: var(--base-12);
115
+ --color-contrast: var(--base-contrast);
116
+ }
117
+
118
+ .color-brand,
119
+ .color-brand
120
+ .full:not(.color-brand [class*='color-']):not(
121
+ .color-brand [class*='color-'] .full
122
+ ) {
123
+ --color-1: var(--brand-1);
124
+ --color-2: var(--brand-2);
125
+ --color-3: var(--brand-3);
126
+ --color-4: var(--brand-4);
127
+ --color-5: var(--brand-5);
128
+ --color-6: var(--brand-6);
129
+ --color-7: var(--brand-7);
130
+ --color-8: var(--brand-8);
131
+ --color-9: var(--brand-9);
132
+ --color-10: var(--brand-10);
133
+ --color-11: var(--brand-11);
134
+ --color-12: var(--brand-12);
135
+ --color-contrast: var(--brand-contrast);
136
+ }
137
+
138
+ * {
139
+ --background: var(--color-1);
140
+ --border: var(--color-6);
141
+ --text: var(--color-11);
142
+
143
+ &:where(.contrast &, .contrast) {
144
+ --text: var(--color-12);
145
+ }
146
+ }
147
+
148
+ .variant-solid,
149
+ .variant-solid
150
+ .full:not(.variant-solid [class*='variant-']):not(
151
+ .variant-solid [class*='variant-'] .full
152
+ ) {
153
+ --background: var(--color-9);
154
+ --border: transparent;
155
+ --text: var(--color-contrast);
156
+
157
+ &:is(.contrast &, .contrast) {
158
+ --text: var(--color-1);
159
+ --background: var(--color-12);
160
+ }
161
+
162
+ &:is(a, button, [href]) {
163
+ &:hover {
164
+ --background: var(--color-10);
165
+
166
+ &:is(.contrast &, .contrast) {
167
+ --background: var(--color-12);
168
+ }
169
+ }
170
+ }
171
+ }
172
+
173
+ .variant-surface,
174
+ .variant-surface
175
+ .full:not(.variant-surface [class*='variant-']):not(
176
+ .variant-surface [class*='variant-'] .full
177
+ ) {
178
+ --background: var(--color-3);
179
+ --border: var(--color-7);
180
+ --text: var(--color-11);
181
+
182
+ &:is(.contrast &, .contrast) {
183
+ --text: var(--color-12);
184
+ }
185
+
186
+ &:is(a, button, [href]) {
187
+ &:hover {
188
+ --background: var(--color-4);
189
+ --border: var(--color-8);
190
+ }
191
+
192
+ &:active {
193
+ --background: var(--color-5);
194
+ }
195
+ }
196
+ }
197
+
198
+ .variant-soft,
199
+ .variant-soft
200
+ .full:not(.variant-soft [class*='variant-']):not(
201
+ .variant-soft [class*='variant-'] .full
202
+ ) {
203
+ --background: var(--color-3);
204
+ --border: transparent;
205
+ --text: var(--color-11);
206
+
207
+ &:is(.contrast &, .contrast) {
208
+ --text: var(--color-12);
209
+ }
210
+
211
+ &:is(a, button, [href]) {
212
+ &:hover {
213
+ --background: var(--color-4);
214
+ }
215
+
216
+ &:active {
217
+ --background: var(--color-5);
218
+ }
219
+ }
220
+ }
221
+
222
+ .variant-outline,
223
+ .variant-outline
224
+ .full:not(.variant-outline [class*='variant-']):not(
225
+ .variant-outline [class*='variant-'] .full
226
+ ) {
227
+ --background: transparent;
228
+ --border: var(--color-7);
229
+ --text: var(--color-11);
230
+
231
+ &:is(.contrast &, .contrast) {
232
+ --text: var(--color-12);
233
+ }
234
+
235
+ &:is(a, button, [href]) {
236
+ &:hover {
237
+ --background: var(--color-3);
238
+ --border: var(--color-8);
239
+ }
240
+
241
+ &:active {
242
+ --background: var(--color-5);
243
+ }
244
+ }
245
+ }
246
+
247
+ .variant-ghost,
248
+ .variant-ghost
249
+ .full:not(.variant-ghost [class*='variant-']):not(
250
+ .variant-ghost [class*='variant-'] .full
251
+ ) {
252
+ --background: transparent;
253
+ --border: transparent;
254
+ --text: var(--color-11);
255
+
256
+ &:is(.contrast &, .contrast) {
257
+ --text: var(--color-12);
258
+ }
259
+
260
+ &:is(a, button, [href]) {
261
+ &:hover {
262
+ --background: var(--color-3);
263
+ }
264
+
265
+ &:active {
266
+ --background: var(--color-4);
267
+ }
268
+ }
269
+ }
270
+
271
+ .variant-subtle,
272
+ .variant-subtle
273
+ .full:not(.variant-subtle [class*='variant-']):not(
274
+ .variant-subtle [class*='variant-'] .full
275
+ ) {
276
+ --background: var(--color-2);
277
+ --border: var(--color-6);
278
+ --text: var(--color-11);
279
+
280
+ &:is(.contrast &, .contrast) {
281
+ --text: var(--color-12);
282
+ }
283
+
284
+ &:is(a, button, [href]) {
285
+ &:hover {
286
+ --border: var(--color-8);
287
+ }
288
+ }
289
+ }