@seed-design/css 0.2.1 → 0.2.4

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 (56) hide show
  1. package/all.css +381 -212
  2. package/all.min.css +1 -1
  3. package/base.css +2 -2
  4. package/base.min.css +1 -1
  5. package/package.json +1 -1
  6. package/recipes/badge.css +1 -1
  7. package/recipes/checkbox.css +7 -114
  8. package/recipes/checkbox.d.ts +3 -7
  9. package/recipes/checkbox.mjs +4 -34
  10. package/recipes/checkmark.css +108 -0
  11. package/recipes/checkmark.d.ts +32 -0
  12. package/recipes/checkmark.mjs +86 -0
  13. package/recipes/chip-tabs.css +42 -10
  14. package/recipes/chip-tabs.d.ts +5 -1
  15. package/recipes/chip-tabs.mjs +6 -0
  16. package/recipes/list-item.css +102 -0
  17. package/recipes/list-item.d.ts +24 -0
  18. package/recipes/list-item.mjs +59 -0
  19. package/recipes/page-banner.css +5 -5
  20. package/recipes/radio.css +29 -50
  21. package/recipes/radio.d.ts +5 -1
  22. package/recipes/radio.mjs +8 -3
  23. package/recipes/radiomark.css +80 -0
  24. package/recipes/radiomark.d.ts +28 -0
  25. package/recipes/radiomark.mjs +48 -0
  26. package/recipes/select-box.css +0 -68
  27. package/recipes/select-box.d.ts +1 -1
  28. package/recipes/select-box.mjs +0 -16
  29. package/recipes/switch.css +15 -7
  30. package/recipes/switch.d.ts +4 -0
  31. package/recipes/switch.mjs +5 -0
  32. package/recipes/text-field.css +8 -9
  33. package/vars/component/badge.d.ts +1 -1
  34. package/vars/component/badge.mjs +1 -1
  35. package/vars/component/checkbox.d.ts +7 -125
  36. package/vars/component/checkbox.mjs +7 -125
  37. package/vars/component/checkmark.d.ts +155 -0
  38. package/vars/component/checkmark.mjs +155 -0
  39. package/vars/component/chip-tab.d.ts +70 -10
  40. package/vars/component/chip-tab.mjs +70 -10
  41. package/vars/component/chip-tablist.d.ts +10 -2
  42. package/vars/component/chip-tablist.mjs +10 -2
  43. package/vars/component/index.d.ts +3 -0
  44. package/vars/component/index.mjs +3 -0
  45. package/vars/component/list-item.d.ts +72 -0
  46. package/vars/component/list-item.mjs +72 -0
  47. package/vars/component/page-banner.d.ts +5 -5
  48. package/vars/component/page-banner.mjs +5 -5
  49. package/vars/component/radio.d.ts +28 -52
  50. package/vars/component/radio.mjs +28 -52
  51. package/vars/component/radiomark.d.ts +98 -0
  52. package/vars/component/radiomark.mjs +98 -0
  53. package/vars/component/select-box.d.ts +0 -47
  54. package/vars/component/select-box.mjs +0 -47
  55. package/vars/component/switch.d.ts +28 -10
  56. package/vars/component/switch.mjs +28 -10
@@ -46,18 +46,31 @@
46
46
  white-space: nowrap;
47
47
  font-family: inherit;
48
48
  border-radius: var(--seed-radius-full);
49
- padding: var(--seed-dimension-x2) var(--seed-dimension-x3_5);
49
+ padding-top: var(--seed-dimension-x2);
50
+ padding-bottom: var(--seed-dimension-x2);
51
+ font-weight: var(--seed-font-weight-medium);
52
+ }
53
+ .seed-chip-tabs__list--size_medium {
54
+ gap: 8px;
55
+ }
56
+ .seed-chip-tabs__trigger--size_medium {
50
57
  min-height: 36px;
51
58
  font-size: var(--seed-font-size-t4);
52
- font-weight: var(--seed-font-weight-bold);
59
+ padding-left: var(--seed-dimension-x3_5);
60
+ padding-right: var(--seed-dimension-x3_5);
53
61
  }
54
- .seed-chip-tabs__list--variant_neutralSolid {
55
- gap: 0px;
62
+ .seed-chip-tabs__list--size_large {
63
+ gap: 8px;
64
+ }
65
+ .seed-chip-tabs__trigger--size_large {
66
+ min-height: 40px;
67
+ font-size: var(--seed-font-size-t4);
68
+ padding-left: var(--seed-dimension-x4);
69
+ padding-right: var(--seed-dimension-x4);
56
70
  }
57
71
  .seed-chip-tabs__trigger--variant_neutralSolid {
58
- background-color: transparent;
72
+ background-color: var(--seed-color-bg-neutral-weak);
59
73
  color: var(--seed-color-fg-neutral);
60
- font-weight: var(--seed-font-weight-bold);
61
74
  }
62
75
  .seed-chip-tabs__trigger--variant_neutralSolid:is(:selected, [data-selected]) {
63
76
  background-color: var(--seed-color-bg-neutral-inverted);
@@ -77,18 +90,37 @@
77
90
  background-color: var(--seed-color-bg-disabled);
78
91
  color: var(--seed-color-fg-disabled);
79
92
  }
80
- .seed-chip-tabs__list--variant_brandSolid {
81
- gap: 8px;
93
+ .seed-chip-tabs__trigger--variant_neutralOutline {
94
+ background-color: transparent;
95
+ border: 1px solid var(--seed-color-stroke-neutral-muted);
96
+ color: var(--seed-color-fg-neutral);
97
+ }
98
+ .seed-chip-tabs__trigger--variant_neutralOutline:is(:selected, [data-selected]) {
99
+ background-color: var(--seed-color-bg-neutral-inverted);
100
+ border-color: transparent;
101
+ color: var(--seed-color-fg-neutral-inverted);
102
+ }
103
+ .seed-chip-tabs__trigger--variant_neutralOutline:is(:active, [data-active]) {
104
+ background-color: var(--seed-color-bg-layer-default-pressed);
105
+ }
106
+ .seed-chip-tabs__trigger--variant_neutralOutline:is(:selected, [data-selected]):is(:active, [data-active]) {
107
+ background-color: var(--seed-color-bg-neutral-inverted-pressed);
108
+ }
109
+ .seed-chip-tabs__trigger--variant_neutralOutline:is(:disabled, [disabled], [data-disabled]) {
110
+ cursor: not-allowed;
111
+ color: var(--seed-color-fg-disabled);
112
+ }
113
+ .seed-chip-tabs__trigger--variant_neutralOutline:is(:disabled, [disabled], [data-disabled]):is(:selected, [data-selected]) {
114
+ background-color: var(--seed-color-bg-disabled);
115
+ color: var(--seed-color-fg-disabled);
82
116
  }
83
117
  .seed-chip-tabs__trigger--variant_brandSolid {
84
118
  background-color: var(--seed-color-bg-neutral-weak);
85
119
  color: var(--seed-color-fg-neutral-muted);
86
- font-weight: var(--seed-font-weight-medium);
87
120
  }
88
121
  .seed-chip-tabs__trigger--variant_brandSolid:is(:selected, [data-selected]) {
89
122
  background-color: var(--seed-color-bg-brand-solid);
90
123
  color: var(--seed-color-palette-static-white);
91
- font-weight: var(--seed-font-weight-bold);
92
124
  }
93
125
  .seed-chip-tabs__trigger--variant_brandSolid:is(:active, [data-active]) {
94
126
  background-color: var(--seed-color-bg-neutral-weak-pressed);
@@ -1,8 +1,12 @@
1
1
  declare interface ChipTabsVariant {
2
2
  /**
3
+ * @default "medium"
4
+ */
5
+ size: "medium" | "large";
6
+ /**
3
7
  * @default "neutralSolid"
4
8
  */
5
- variant: "neutralSolid" | "brandSolid";
9
+ variant: "neutralSolid" | "neutralOutline" | "brandSolid";
6
10
  /**
7
11
  * @default "hug"
8
12
  */
@@ -29,6 +29,7 @@ const chipTabsSlotNames = [
29
29
  ];
30
30
 
31
31
  const defaultVariant = {
32
+ "size": "medium",
32
33
  "variant": "neutralSolid",
33
34
  "contentLayout": "hug",
34
35
  "stickyList": false
@@ -37,8 +38,13 @@ const defaultVariant = {
37
38
  const compoundVariants = [];
38
39
 
39
40
  export const chipTabsVariantMap = {
41
+ "size": [
42
+ "medium",
43
+ "large"
44
+ ],
40
45
  "variant": [
41
46
  "neutralSolid",
47
+ "neutralOutline",
42
48
  "brandSolid"
43
49
  ],
44
50
  "contentLayout": [
@@ -0,0 +1,102 @@
1
+ .seed-list-item__root {
2
+ box-sizing: border-box;
3
+ border: none;
4
+ font-family: inherit;
5
+ -webkit-font-smoothing: antialiased;
6
+ -moz-osx-font-smoothing: grayscale;
7
+ position: relative;
8
+ display: flex;
9
+ width: 100%;
10
+ z-index: 0;
11
+ padding-inline: var(--seed-dimension-spacing-x-global-gutter);
12
+ padding-block: var(--seed-dimension-x2_5);
13
+ --seed-box-align-items: center;
14
+ align-items: var(--seed-box-align-items);
15
+ transition-property: background-color;
16
+ transition-duration: var(--seed-duration-d3);
17
+ transition-timing-function: var(--seed-timing-function-easing);
18
+ }
19
+ .seed-list-item__prefix {
20
+ display: inline-flex;
21
+ align-items: center;
22
+ flex-shrink: 0;
23
+ --seed-box-padding-right: var(--seed-dimension-x3);
24
+ padding-right: var(--seed-box-padding-right);
25
+ --seed-icon-size: 22px;
26
+ --seed-icon-color: var(--seed-color-fg-neutral);
27
+ }
28
+ .seed-list-item__prefix:is(:disabled, [disabled], [data-disabled]) {
29
+ --seed-icon-color: var(--seed-color-fg-disabled);
30
+ }
31
+ .seed-list-item__suffix {
32
+ display: inline-flex;
33
+ align-items: center;
34
+ flex-shrink: 0;
35
+ --seed-box-position: initial;
36
+ position: var(--seed-box-position);
37
+ --seed-box-gap: var(--seed-dimension-x1);
38
+ gap: var(--seed-box-gap);
39
+ font-size: var(--seed-font-size-t5);
40
+ line-height: var(--seed-line-height-t5);
41
+ font-weight: var(--seed-font-weight-regular);
42
+ color: var(--seed-color-fg-neutral-subtle);
43
+ --seed-icon-size: 18px;
44
+ --seed-icon-color: var(--seed-color-fg-neutral-subtle);
45
+ }
46
+ .seed-list-item__suffix:is(:disabled, [disabled], [data-disabled]) {
47
+ --seed-icon-color: var(--seed-color-fg-disabled);
48
+ }
49
+ .seed-list-item__content {
50
+ display: inline-flex;
51
+ box-sizing: border-box;
52
+ text-align: start;
53
+ flex-direction: column;
54
+ align-items: flex-start;
55
+ flex-grow: 1;
56
+ --seed-box-gap: var(--seed-dimension-x0_5);
57
+ gap: var(--seed-box-gap);
58
+ --seed-box-padding-right: var(--seed-dimension-x2_5);
59
+ padding-right: var(--seed-box-padding-right);
60
+ }
61
+ .seed-list-item__content:after {
62
+ content: '';
63
+ position: absolute;
64
+ inset: 0;
65
+ }
66
+ .seed-list-item__content:before {
67
+ content: '';
68
+ position: absolute;
69
+ inset: 0;
70
+ z-index: -1;
71
+ transition-property: background-color;
72
+ transition-duration: var(--seed-duration-d3);
73
+ transition-timing-function: var(--seed-timing-function-easing);
74
+ }
75
+ .seed-list-item__content:is(button, a):not(:is(:disabled, [disabled], [data-disabled])):is(:active, [data-active]):before {
76
+ background-color: var(--seed-color-bg-layer-default-pressed);
77
+ }
78
+ .seed-list-item__content:not(:is(:disabled, [disabled], [data-disabled]))[data-active]:before {
79
+ background-color: var(--seed-color-bg-layer-default-pressed);
80
+ }
81
+ .seed-list-item__title {
82
+ flex-shrink: 0;
83
+ font-size: var(--seed-font-size-t5);
84
+ line-height: var(--seed-line-height-t5);
85
+ font-weight: var(--seed-font-weight-medium);
86
+ color: var(--seed-color-fg-neutral);
87
+ }
88
+ .seed-list-item__title:is(:disabled, [disabled], [data-disabled]) {
89
+ color: var(--seed-color-fg-disabled);
90
+ }
91
+ .seed-list-item__detail {
92
+ font-size: var(--seed-font-size-t3);
93
+ line-height: var(--seed-line-height-t3);
94
+ font-weight: var(--seed-font-weight-regular);
95
+ color: var(--seed-color-fg-neutral-subtle);
96
+ }
97
+ .seed-list-item__detail:is(:disabled, [disabled], [data-disabled]) {
98
+ color: var(--seed-color-fg-neutral-subtle);
99
+ }
100
+ .seed-list-item__root--highlighted_true {
101
+ background-color: var(--seed-color-palette-carrot-100);
102
+ }
@@ -0,0 +1,24 @@
1
+ declare interface ListItemVariant {
2
+ /**
3
+ * @default false
4
+ */
5
+ highlighted: boolean;
6
+ }
7
+
8
+ declare type ListItemVariantMap = {
9
+ [key in keyof ListItemVariant]: Array<ListItemVariant[key]>;
10
+ };
11
+
12
+ export declare type ListItemVariantProps = Partial<ListItemVariant>;
13
+
14
+ export declare type ListItemSlotName = "root" | "content" | "title" | "detail" | "prefix" | "suffix";
15
+
16
+ export declare const listItemVariantMap: ListItemVariantMap;
17
+
18
+ export declare const listItem: ((
19
+ props?: ListItemVariantProps,
20
+ ) => Record<ListItemSlotName, string>) & {
21
+ splitVariantProps: <T extends ListItemVariantProps>(
22
+ props: T,
23
+ ) => [ListItemVariantProps, Omit<T, keyof ListItemVariantProps>];
24
+ }
@@ -0,0 +1,59 @@
1
+ import './list-item.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const listItemSlotNames = [
5
+ [
6
+ "root",
7
+ "seed-list-item__root"
8
+ ],
9
+ [
10
+ "content",
11
+ "seed-list-item__content"
12
+ ],
13
+ [
14
+ "title",
15
+ "seed-list-item__title"
16
+ ],
17
+ [
18
+ "detail",
19
+ "seed-list-item__detail"
20
+ ],
21
+ [
22
+ "prefix",
23
+ "seed-list-item__prefix"
24
+ ],
25
+ [
26
+ "suffix",
27
+ "seed-list-item__suffix"
28
+ ]
29
+ ];
30
+
31
+ const defaultVariant = {
32
+ "highlighted": false
33
+ };
34
+
35
+ const compoundVariants = [];
36
+
37
+ export const listItemVariantMap = {
38
+ "highlighted": [
39
+ false,
40
+ true
41
+ ]
42
+ };
43
+
44
+ export const listItemVariantKeys = Object.keys(listItemVariantMap);
45
+
46
+ export function listItem(props) {
47
+ return Object.fromEntries(
48
+ listItemSlotNames.map(([slot, className]) => {
49
+ return [
50
+ slot,
51
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
52
+ ];
53
+ }),
54
+ );
55
+ }
56
+
57
+ Object.assign(listItem, { splitVariantProps: (props) => splitVariantProps(props, listItemVariantMap) });
58
+
59
+ // @recipe(seed): list-item
@@ -195,20 +195,20 @@
195
195
  }
196
196
  .seed-page-banner__root--tone_warning-variant_solid {
197
197
  background-color: var(--seed-color-bg-warning-solid);
198
- --seed-prefix-icon-color: var(--seed-color-fg-neutral);
199
- --seed-suffix-icon-color: var(--seed-color-fg-neutral);
198
+ --seed-prefix-icon-color: var(--seed-color-palette-static-black-alpha-900);
199
+ --seed-suffix-icon-color: var(--seed-color-palette-static-black-alpha-900);
200
200
  }
201
201
  .seed-page-banner__root--tone_warning-variant_solid:is(button):is(:active, [data-active]) {
202
202
  background-color: var(--seed-color-bg-warning-solid-pressed);
203
203
  }
204
204
  .seed-page-banner__title--tone_warning-variant_solid {
205
- color: var(--seed-color-fg-neutral);
205
+ color: var(--seed-color-palette-static-black-alpha-900);
206
206
  }
207
207
  .seed-page-banner__description--tone_warning-variant_solid {
208
- color: var(--seed-color-fg-neutral);
208
+ color: var(--seed-color-palette-static-black-alpha-900);
209
209
  }
210
210
  .seed-page-banner__button--tone_warning-variant_solid {
211
- color: var(--seed-color-fg-neutral);
211
+ color: var(--seed-color-palette-static-black-alpha-900);
212
212
  }
213
213
  .seed-page-banner__root--tone_critical-variant_weak {
214
214
  background-color: var(--seed-color-bg-critical-weak);
package/recipes/radio.css CHANGED
@@ -1,64 +1,43 @@
1
1
  .seed-radio__root {
2
- border-style: solid;
3
- box-sizing: border-box;
4
- display: flex;
5
- align-items: center;
6
- justify-content: center;
7
- flex: none;
8
- background-color: var(--seed-color-bg-layer-default);
9
- border-width: 1px;
10
- border-color: var(--seed-color-stroke-neutral-weak);
11
- border-radius: var(--seed-radius-full);
12
- }
13
- .seed-radio__root:is(:active, [data-active]) {
14
- background-color: var(--seed-color-bg-layer-default-pressed);
15
- }
16
- .seed-radio__root:is(:checked, [data-checked]) {
17
- background-color: var(--seed-color-bg-brand-solid);
18
- border-width: 0px;
19
- }
20
- .seed-radio__root:is(:active, [data-active]):is(:checked, [data-checked]) {
21
- background-color: var(--seed-color-bg-brand-solid-pressed);
2
+ display: inline-flex;
3
+ align-items: flex-start;
4
+ position: relative;
5
+ max-inline-size: 100%;
6
+ vertical-align: top;
7
+ isolation: isolate;
8
+ cursor: pointer;
9
+ gap: var(--seed-dimension-x2);
22
10
  }
23
11
  .seed-radio__root:is(:disabled, [disabled], [data-disabled]) {
24
- background-color: var(--seed-color-palette-gray-300);
12
+ cursor: not-allowed;
25
13
  }
26
- .seed-radio__root:is(:disabled, [disabled], [data-disabled]):is(:checked, [data-checked]) {
27
- background-color: none;
28
- border-color: var(--seed-color-palette-gray-300);
14
+ .seed-radio__label {
15
+ color: var(--seed-color-fg-neutral);
29
16
  }
30
- .seed-radio__icon {
31
- display: none;
32
- border-radius: var(--seed-radius-full);
17
+ .seed-radio__label:is(:disabled, [disabled], [data-disabled]) {
18
+ color: var(--seed-color-fg-disabled);
33
19
  }
34
- .seed-radio__icon:is(:checked, [data-checked]) {
35
- display: block;
36
- background-color: var(--seed-color-palette-static-white);
20
+ .seed-radio__label--weight_regular {
21
+ font-weight: var(--seed-font-weight-regular);
37
22
  }
38
- .seed-radio__icon:is(:disabled, [disabled], [data-disabled]):is(:checked, [data-checked]) {
39
- background-color: var(--seed-color-palette-gray-300);
23
+ .seed-radio__label--weight_bold {
24
+ font-weight: var(--seed-font-weight-bold);
40
25
  }
41
26
  .seed-radio__root--size_large {
42
- width: var(--seed-dimension-x6);
43
- height: var(--seed-dimension-x6);
27
+ min-height: var(--seed-dimension-x9);
28
+ --radiomark-margin-top: calc((var(--seed-dimension-x9) - var(--seed-dimension-x6)) / 2);
44
29
  }
45
- .seed-radio__icon--size_large {
46
- width: var(--seed-dimension-x2_5);
47
- height: var(--seed-dimension-x2_5);
48
- }
49
- .seed-radio__icon--size_large:is(:disabled, [disabled], [data-disabled]) {
50
- width: var(--seed-dimension-x3);
51
- height: var(--seed-dimension-x3);
30
+ .seed-radio__label--size_large {
31
+ font-size: var(--seed-font-size-t5);
32
+ line-height: var(--seed-line-height-t5);
33
+ margin-block-start: calc(18px - 0.65625rem);
52
34
  }
53
35
  .seed-radio__root--size_medium {
54
- width: var(--seed-dimension-x5);
55
- height: var(--seed-dimension-x5);
56
- }
57
- .seed-radio__icon--size_medium {
58
- width: var(--seed-dimension-x2);
59
- height: var(--seed-dimension-x2);
36
+ min-height: var(--seed-dimension-x8);
37
+ --radiomark-margin-top: calc((var(--seed-dimension-x8) - var(--seed-dimension-x5)) / 2);
60
38
  }
61
- .seed-radio__icon--size_medium:is(:disabled, [disabled], [data-disabled]) {
62
- width: var(--seed-dimension-x2_5);
63
- height: var(--seed-dimension-x2_5);
39
+ .seed-radio__label--size_medium {
40
+ font-size: var(--seed-font-size-t4);
41
+ line-height: var(--seed-line-height-t4);
42
+ margin-block-start: calc(16px - 0.59375rem);
64
43
  }
@@ -1,5 +1,9 @@
1
1
  declare interface RadioVariant {
2
2
  /**
3
+ * @default "regular"
4
+ */
5
+ weight: "regular" | "bold";
6
+ /**
3
7
  * @default "medium"
4
8
  */
5
9
  size: "large" | "medium";
@@ -11,7 +15,7 @@ declare type RadioVariantMap = {
11
15
 
12
16
  export declare type RadioVariantProps = Partial<RadioVariant>;
13
17
 
14
- export declare type RadioSlotName = "root" | "icon";
18
+ export declare type RadioSlotName = "root" | "label";
15
19
 
16
20
  export declare const radioVariantMap: RadioVariantMap;
17
21
 
package/recipes/radio.mjs CHANGED
@@ -7,18 +7,23 @@ const radioSlotNames = [
7
7
  "seed-radio__root"
8
8
  ],
9
9
  [
10
- "icon",
11
- "seed-radio__icon"
10
+ "label",
11
+ "seed-radio__label"
12
12
  ]
13
13
  ];
14
14
 
15
15
  const defaultVariant = {
16
- "size": "medium"
16
+ "size": "medium",
17
+ "weight": "regular"
17
18
  };
18
19
 
19
20
  const compoundVariants = [];
20
21
 
21
22
  export const radioVariantMap = {
23
+ "weight": [
24
+ "regular",
25
+ "bold"
26
+ ],
22
27
  "size": [
23
28
  "large",
24
29
  "medium"
@@ -0,0 +1,80 @@
1
+ .seed-radiomark__root {
2
+ border-style: solid;
3
+ box-sizing: border-box;
4
+ flex-shrink: 0;
5
+ position: relative;
6
+ display: flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+ flex: none;
10
+ border-width: 1px;
11
+ border-color: var(--seed-color-stroke-neutral-weak);
12
+ border-radius: var(--seed-radius-full);
13
+ margin-top: var(--radiomark-margin-top, 0);
14
+ }
15
+ .seed-radiomark__root:not(:is(:disabled, [disabled], [data-disabled])):is(:active, [data-active]) {
16
+ background-color: var(--seed-color-bg-layer-default-pressed);
17
+ }
18
+ .seed-radiomark__root:is(:checked, [data-checked]) {
19
+ border-width: 0px;
20
+ }
21
+ .seed-radiomark__root:is(:disabled, [disabled], [data-disabled]) {
22
+ background-color: var(--seed-color-palette-gray-300);
23
+ }
24
+ .seed-radiomark__root:is(:disabled, [disabled], [data-disabled]):is(:checked, [data-checked]) {
25
+ background: none;
26
+ border-width: 1px;
27
+ border-color: var(--seed-color-palette-gray-300);
28
+ }
29
+ .seed-radiomark__icon {
30
+ display: none;
31
+ border-radius: var(--seed-radius-full);
32
+ }
33
+ .seed-radiomark__icon:is(:checked, [data-checked]) {
34
+ display: block;
35
+ }
36
+ .seed-radiomark__icon:is(:disabled, [disabled], [data-disabled]):is(:checked, [data-checked]) {
37
+ color: var(--seed-color-palette-gray-300);
38
+ }
39
+ .seed-radiomark__root--tone_neutral:is(:checked, [data-checked]) {
40
+ background-color: var(--seed-color-bg-neutral-inverted);
41
+ }
42
+ .seed-radiomark__root--tone_neutral:not(:is(:disabled, [disabled], [data-disabled])):is(:checked, [data-checked]):is(:active, [data-active]) {
43
+ background-color: var(--seed-color-bg-neutral-inverted-pressed);
44
+ }
45
+ .seed-radiomark__icon--tone_neutral:is(:checked, [data-checked]) {
46
+ color: var(--seed-color-fg-neutral-inverted);
47
+ }
48
+ .seed-radiomark__root--tone_brand:is(:checked, [data-checked]) {
49
+ background-color: var(--seed-color-bg-brand-solid);
50
+ }
51
+ .seed-radiomark__root--tone_brand:not(:is(:disabled, [disabled], [data-disabled])):is(:checked, [data-checked]):is(:active, [data-active]) {
52
+ background-color: var(--seed-color-bg-brand-solid-pressed);
53
+ }
54
+ .seed-radiomark__icon--tone_brand:is(:checked, [data-checked]) {
55
+ color: var(--seed-color-palette-static-white);
56
+ }
57
+ .seed-radiomark__root--size_large {
58
+ width: var(--seed-dimension-x6);
59
+ height: var(--seed-dimension-x6);
60
+ }
61
+ .seed-radiomark__icon--size_large {
62
+ width: var(--seed-dimension-x2_5);
63
+ height: var(--seed-dimension-x2_5);
64
+ }
65
+ .seed-radiomark__icon--size_large:is(:disabled, [disabled], [data-disabled]) {
66
+ width: var(--seed-dimension-x3);
67
+ height: var(--seed-dimension-x3);
68
+ }
69
+ .seed-radiomark__root--size_medium {
70
+ width: var(--seed-dimension-x5);
71
+ height: var(--seed-dimension-x5);
72
+ }
73
+ .seed-radiomark__icon--size_medium {
74
+ width: var(--seed-dimension-x2);
75
+ height: var(--seed-dimension-x2);
76
+ }
77
+ .seed-radiomark__icon--size_medium:is(:disabled, [disabled], [data-disabled]) {
78
+ width: var(--seed-dimension-x2_5);
79
+ height: var(--seed-dimension-x2_5);
80
+ }
@@ -0,0 +1,28 @@
1
+ declare interface RadiomarkVariant {
2
+ /**
3
+ * @default "brand"
4
+ */
5
+ tone: "neutral" | "brand";
6
+ /**
7
+ * @default "medium"
8
+ */
9
+ size: "large" | "medium";
10
+ }
11
+
12
+ declare type RadiomarkVariantMap = {
13
+ [key in keyof RadiomarkVariant]: Array<RadiomarkVariant[key]>;
14
+ };
15
+
16
+ export declare type RadiomarkVariantProps = Partial<RadiomarkVariant>;
17
+
18
+ export declare type RadiomarkSlotName = "root" | "icon";
19
+
20
+ export declare const radiomarkVariantMap: RadiomarkVariantMap;
21
+
22
+ export declare const radiomark: ((
23
+ props?: RadiomarkVariantProps,
24
+ ) => Record<RadiomarkSlotName, string>) & {
25
+ splitVariantProps: <T extends RadiomarkVariantProps>(
26
+ props: T,
27
+ ) => [RadiomarkVariantProps, Omit<T, keyof RadiomarkVariantProps>];
28
+ }
@@ -0,0 +1,48 @@
1
+ import './radiomark.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const radiomarkSlotNames = [
5
+ [
6
+ "root",
7
+ "seed-radiomark__root"
8
+ ],
9
+ [
10
+ "icon",
11
+ "seed-radiomark__icon"
12
+ ]
13
+ ];
14
+
15
+ const defaultVariant = {
16
+ "tone": "brand",
17
+ "size": "medium"
18
+ };
19
+
20
+ const compoundVariants = [];
21
+
22
+ export const radiomarkVariantMap = {
23
+ "tone": [
24
+ "neutral",
25
+ "brand"
26
+ ],
27
+ "size": [
28
+ "large",
29
+ "medium"
30
+ ]
31
+ };
32
+
33
+ export const radiomarkVariantKeys = Object.keys(radiomarkVariantMap);
34
+
35
+ export function radiomark(props) {
36
+ return Object.fromEntries(
37
+ radiomarkSlotNames.map(([slot, className]) => {
38
+ return [
39
+ slot,
40
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
41
+ ];
42
+ }),
43
+ );
44
+ }
45
+
46
+ Object.assign(radiomark, { splitVariantProps: (props) => splitVariantProps(props, radiomarkVariantMap) });
47
+
48
+ // @recipe(seed): radiomark