@seed-design/lynx-css 0.11.1 → 0.12.1

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 (82) hide show
  1. package/all.css +3626 -1579
  2. package/all.min.css +1 -1
  3. package/base.css +16 -2
  4. package/base.min.css +1 -1
  5. package/package.json +1 -1
  6. package/recipes/alert-dialog.css +114 -0
  7. package/recipes/alert-dialog.d.ts +24 -0
  8. package/recipes/alert-dialog.mjs +67 -0
  9. package/recipes/app-bar.css +27 -21
  10. package/recipes/attachment-input-item.css +276 -0
  11. package/recipes/attachment-input-item.d.ts +40 -0
  12. package/recipes/attachment-input-item.mjs +128 -0
  13. package/recipes/attachment-input-trigger.css +53 -0
  14. package/recipes/attachment-input-trigger.d.ts +28 -0
  15. package/recipes/attachment-input-trigger.mjs +60 -0
  16. package/recipes/attachment-input.css +31 -0
  17. package/recipes/attachment-input.d.ts +21 -0
  18. package/recipes/attachment-input.mjs +44 -0
  19. package/recipes/callout.css +61 -56
  20. package/recipes/chip-tabs.css +136 -0
  21. package/recipes/chip-tabs.d.ts +52 -0
  22. package/recipes/chip-tabs.mjs +147 -0
  23. package/recipes/contextual-floating-button.css +131 -0
  24. package/recipes/contextual-floating-button.d.ts +40 -0
  25. package/recipes/contextual-floating-button.mjs +104 -0
  26. package/recipes/dialog.css +130 -0
  27. package/recipes/dialog.d.ts +28 -0
  28. package/recipes/dialog.mjs +76 -0
  29. package/recipes/floating-action-button.css +61 -0
  30. package/recipes/floating-action-button.d.ts +36 -0
  31. package/recipes/floating-action-button.mjs +67 -0
  32. package/recipes/help-bubble.css +112 -0
  33. package/recipes/help-bubble.d.ts +36 -0
  34. package/recipes/help-bubble.mjs +96 -0
  35. package/recipes/identity-placeholder.css +11 -0
  36. package/recipes/identity-placeholder.d.ts +24 -0
  37. package/recipes/identity-placeholder.mjs +43 -0
  38. package/recipes/input-button.css +20 -1
  39. package/recipes/input-button.d.ts +1 -1
  40. package/recipes/input-button.mjs +10 -1
  41. package/recipes/list-item.css +8 -9
  42. package/recipes/list-item.d.ts +4 -0
  43. package/recipes/list-item.mjs +11 -1
  44. package/recipes/menu-item.css +16 -2
  45. package/recipes/menu-item.d.ts +1 -1
  46. package/recipes/menu-item.mjs +4 -0
  47. package/recipes/menu-sheet-item.css +26 -15
  48. package/recipes/menu-sheet-item.d.ts +1 -1
  49. package/recipes/menu-sheet-item.mjs +4 -0
  50. package/recipes/menu-sheet.css +18 -13
  51. package/recipes/page-banner.css +8 -0
  52. package/recipes/page-banner.d.ts +1 -1
  53. package/recipes/page-banner.mjs +4 -0
  54. package/recipes/quantity-picker.css +213 -0
  55. package/recipes/quantity-picker.d.ts +44 -0
  56. package/recipes/quantity-picker.mjs +102 -0
  57. package/recipes/reaction-button.css +7 -12
  58. package/recipes/reaction-button.mjs +7 -8
  59. package/recipes/scroll-fog.css +66 -0
  60. package/recipes/scroll-fog.d.ts +36 -0
  61. package/recipes/scroll-fog.mjs +78 -0
  62. package/recipes/select-item.css +105 -0
  63. package/recipes/select-item.d.ts +36 -0
  64. package/recipes/select-item.mjs +83 -0
  65. package/recipes/select-trigger.css +147 -0
  66. package/recipes/select-trigger.d.ts +44 -0
  67. package/recipes/select-trigger.mjs +90 -0
  68. package/recipes/select.css +88 -0
  69. package/recipes/select.d.ts +32 -0
  70. package/recipes/select.mjs +81 -0
  71. package/recipes/skeleton.css +41 -0
  72. package/recipes/skeleton.d.ts +36 -0
  73. package/recipes/skeleton.mjs +50 -0
  74. package/recipes/slider-marker.css +44 -0
  75. package/recipes/slider-marker.d.ts +30 -0
  76. package/recipes/slider-marker.mjs +65 -0
  77. package/recipes/slider-tick.css +14 -0
  78. package/recipes/slider-tick.d.ts +22 -0
  79. package/recipes/slider-tick.mjs +29 -0
  80. package/recipes/slider.css +140 -0
  81. package/recipes/slider.d.ts +40 -0
  82. package/recipes/slider.mjs +99 -0
@@ -0,0 +1,78 @@
1
+ import './scroll-fog.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const scrollFogSlotNames = [
5
+ [
6
+ "root",
7
+ "seed-scroll-fog__root"
8
+ ],
9
+ [
10
+ "topMask",
11
+ "seed-scroll-fog__topMask"
12
+ ],
13
+ [
14
+ "bottomMask",
15
+ "seed-scroll-fog__bottomMask"
16
+ ],
17
+ [
18
+ "leftMask",
19
+ "seed-scroll-fog__leftMask"
20
+ ],
21
+ [
22
+ "rightMask",
23
+ "seed-scroll-fog__rightMask"
24
+ ],
25
+ [
26
+ "verticalScroll",
27
+ "seed-scroll-fog__verticalScroll"
28
+ ],
29
+ [
30
+ "horizontalScroll",
31
+ "seed-scroll-fog__horizontalScroll"
32
+ ]
33
+ ];
34
+
35
+ const defaultVariant = {
36
+ "top": false,
37
+ "bottom": false,
38
+ "left": false,
39
+ "right": false
40
+ };
41
+
42
+ const compoundVariants = [];
43
+
44
+ export const scrollFogVariantMap = {
45
+ "top": [
46
+ true,
47
+ false
48
+ ],
49
+ "bottom": [
50
+ true,
51
+ false
52
+ ],
53
+ "left": [
54
+ true,
55
+ false
56
+ ],
57
+ "right": [
58
+ true,
59
+ false
60
+ ]
61
+ };
62
+
63
+ export const scrollFogVariantKeys = Object.keys(scrollFogVariantMap);
64
+
65
+ export function scrollFog(props) {
66
+ return Object.fromEntries(
67
+ scrollFogSlotNames.map(([slot, className]) => {
68
+ return [
69
+ slot,
70
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
71
+ ];
72
+ }),
73
+ );
74
+ }
75
+
76
+ Object.assign(scrollFog, { splitVariantProps: (props) => splitVariantProps(props, scrollFogVariantMap) });
77
+
78
+ // @recipe(seed): scroll-fog
@@ -0,0 +1,105 @@
1
+ .seed-select-item__root {
2
+ position: relative;
3
+ display: flex;
4
+ flex-direction: row;
5
+ align-items: center;
6
+ flex-shrink: 0
7
+ }
8
+ .seed-select-item__pressedOverlay {
9
+ position: absolute;
10
+ top: 0;
11
+ right: var(--seed-dimension-x2);
12
+ bottom: 0;
13
+ left: var(--seed-dimension-x2);
14
+ border-radius: var(--seed-radius-r3);
15
+ background-color: var(--seed-color-bg-transparent-pressed);
16
+ opacity: 0;
17
+ transition-property: opacity;
18
+ transition-duration: var(--seed-duration-color-transition);
19
+ transition-timing-function: var(--seed-timing-function-easing);
20
+ pointer-events: none
21
+ }
22
+ .seed-select-item__body {
23
+ display: flex;
24
+ flex-direction: column;
25
+ flex-grow: 1;
26
+ min-width: 0;
27
+ gap: var(--seed-dimension-x0_5)
28
+ }
29
+ .seed-select-item__label {
30
+ color: var(--seed-color-fg-neutral);
31
+ font-weight: var(--seed-font-weight-regular)
32
+ }
33
+ .seed-select-item__description {
34
+ color: var(--seed-color-fg-neutral-subtle);
35
+ font-weight: var(--seed-font-weight-regular)
36
+ }
37
+ .seed-select-item__prefixIcon {
38
+ flex-shrink: 0;
39
+ color: var(--seed-color-fg-neutral)
40
+ }
41
+ .seed-select-item__indicator {
42
+ flex-shrink: 0;
43
+ color: var(--seed-color-fg-neutral)
44
+ }
45
+ .seed-select-item__root--size_large {
46
+ padding-top: var(--seed-dimension-x3);
47
+ padding-bottom: var(--seed-dimension-x3);
48
+ padding-left: var(--seed-dimension-x4);
49
+ padding-right: var(--seed-dimension-x4);
50
+ gap: var(--seed-dimension-x3)
51
+ }
52
+ .seed-select-item__prefixIcon--size_large {
53
+ width: 22px;
54
+ height: 22px
55
+ }
56
+ .seed-select-item__label--size_large {
57
+ font-size: var(--seed-font-size-t5);
58
+ line-height: var(--seed-line-height-t5)
59
+ }
60
+ .seed-select-item__description--size_large {
61
+ font-size: var(--seed-font-size-t3);
62
+ line-height: var(--seed-line-height-t3)
63
+ }
64
+ .seed-select-item__indicator--size_large {
65
+ width: var(--seed-dimension-x3_5);
66
+ height: var(--seed-dimension-x3_5)
67
+ }
68
+ .seed-select-item__root--size_medium {
69
+ padding-top: var(--seed-dimension-x2_5);
70
+ padding-bottom: var(--seed-dimension-x2_5);
71
+ padding-left: var(--seed-dimension-x4);
72
+ padding-right: var(--seed-dimension-x4);
73
+ gap: var(--seed-dimension-x2)
74
+ }
75
+ .seed-select-item__prefixIcon--size_medium {
76
+ width: var(--seed-dimension-x4_5);
77
+ height: var(--seed-dimension-x4_5)
78
+ }
79
+ .seed-select-item__label--size_medium {
80
+ font-size: var(--seed-font-size-t4);
81
+ line-height: var(--seed-line-height-t4)
82
+ }
83
+ .seed-select-item__description--size_medium {
84
+ font-size: var(--seed-font-size-t2);
85
+ line-height: var(--seed-line-height-t2)
86
+ }
87
+ .seed-select-item__indicator--size_medium {
88
+ width: var(--seed-dimension-x3);
89
+ height: var(--seed-dimension-x3)
90
+ }
91
+ .seed-select-item__prefixIcon--disabled_true {
92
+ color: var(--seed-color-fg-disabled)
93
+ }
94
+ .seed-select-item__label--disabled_true {
95
+ color: var(--seed-color-fg-disabled)
96
+ }
97
+ .seed-select-item__description--disabled_true {
98
+ color: var(--seed-color-fg-disabled)
99
+ }
100
+ .seed-select-item__indicator--disabled_true {
101
+ color: var(--seed-color-fg-disabled)
102
+ }
103
+ .seed-select-item__pressedOverlay--pressed_true-disabled_false {
104
+ opacity: 1
105
+ }
@@ -0,0 +1,36 @@
1
+ declare interface SelectItemVariant {
2
+ /**
3
+ * @default "large"
4
+ */
5
+ size: "large" | "medium";
6
+ /**
7
+ * @default false
8
+ */
9
+ disabled: boolean;
10
+ /**
11
+ * @default false
12
+ */
13
+ selected: boolean;
14
+ /**
15
+ * @default false
16
+ */
17
+ pressed: boolean;
18
+ }
19
+
20
+ declare type SelectItemVariantMap = {
21
+ [key in keyof SelectItemVariant]: Array<SelectItemVariant[key]>;
22
+ };
23
+
24
+ export declare type SelectItemVariantProps = Partial<SelectItemVariant>;
25
+
26
+ export declare type SelectItemSlotName = "root" | "pressedOverlay" | "body" | "label" | "description" | "prefixIcon" | "indicator";
27
+
28
+ export declare const selectItemVariantMap: SelectItemVariantMap;
29
+
30
+ export declare const selectItem: ((
31
+ props?: SelectItemVariantProps,
32
+ ) => Record<SelectItemSlotName, string>) & {
33
+ splitVariantProps: <T extends SelectItemVariantProps>(
34
+ props: T,
35
+ ) => [SelectItemVariantProps, Omit<T, keyof SelectItemVariantProps>];
36
+ }
@@ -0,0 +1,83 @@
1
+ import './select-item.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const selectItemSlotNames = [
5
+ [
6
+ "root",
7
+ "seed-select-item__root"
8
+ ],
9
+ [
10
+ "pressedOverlay",
11
+ "seed-select-item__pressedOverlay"
12
+ ],
13
+ [
14
+ "body",
15
+ "seed-select-item__body"
16
+ ],
17
+ [
18
+ "label",
19
+ "seed-select-item__label"
20
+ ],
21
+ [
22
+ "description",
23
+ "seed-select-item__description"
24
+ ],
25
+ [
26
+ "prefixIcon",
27
+ "seed-select-item__prefixIcon"
28
+ ],
29
+ [
30
+ "indicator",
31
+ "seed-select-item__indicator"
32
+ ]
33
+ ];
34
+
35
+ const defaultVariant = {
36
+ "size": "large",
37
+ "disabled": false,
38
+ "selected": false,
39
+ "pressed": false
40
+ };
41
+
42
+ const compoundVariants = [
43
+ {
44
+ "pressed": true,
45
+ "disabled": false
46
+ }
47
+ ];
48
+
49
+ export const selectItemVariantMap = {
50
+ "size": [
51
+ "large",
52
+ "medium"
53
+ ],
54
+ "disabled": [
55
+ true,
56
+ false
57
+ ],
58
+ "selected": [
59
+ true,
60
+ false
61
+ ],
62
+ "pressed": [
63
+ true,
64
+ false
65
+ ]
66
+ };
67
+
68
+ export const selectItemVariantKeys = Object.keys(selectItemVariantMap);
69
+
70
+ export function selectItem(props) {
71
+ return Object.fromEntries(
72
+ selectItemSlotNames.map(([slot, className]) => {
73
+ return [
74
+ slot,
75
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
76
+ ];
77
+ }),
78
+ );
79
+ }
80
+
81
+ Object.assign(selectItem, { splitVariantProps: (props) => splitVariantProps(props, selectItemVariantMap) });
82
+
83
+ // @recipe(seed): select-item
@@ -0,0 +1,147 @@
1
+ .seed-select-trigger__root {
2
+ position: relative;
3
+ display: flex;
4
+ flex-direction: row;
5
+ align-items: center;
6
+ width: 100%;
7
+ overflow: hidden;
8
+ background-color: var(--seed-color-bg-transparent);
9
+ border-style: solid;
10
+ border-width: 1px;
11
+ border-color: var(--seed-color-stroke-neutral-weak)
12
+ }
13
+ .seed-select-trigger__pressedOverlay {
14
+ position: absolute;
15
+ top: 0;
16
+ right: 0;
17
+ bottom: 0;
18
+ left: 0;
19
+ opacity: 0;
20
+ background-color: var(--seed-color-bg-transparent-pressed);
21
+ transition-property: opacity;
22
+ transition-duration: var(--seed-duration-color-transition);
23
+ transition-timing-function: var(--seed-timing-function-easing);
24
+ pointer-events: none
25
+ }
26
+ .seed-select-trigger__value {
27
+ flex-grow: 1;
28
+ min-width: 0;
29
+ overflow: hidden;
30
+ text-overflow: ellipsis;
31
+ white-space: nowrap;
32
+ color: var(--seed-color-fg-neutral);
33
+ font-weight: var(--seed-font-weight-regular);
34
+ pointer-events: none
35
+ }
36
+ .seed-select-trigger__placeholder {
37
+ flex-grow: 1;
38
+ min-width: 0;
39
+ overflow: hidden;
40
+ text-overflow: ellipsis;
41
+ white-space: nowrap;
42
+ color: var(--seed-color-fg-placeholder);
43
+ font-weight: var(--seed-font-weight-regular);
44
+ pointer-events: none
45
+ }
46
+ .seed-select-trigger__prefixIcon {
47
+ flex-shrink: 0;
48
+ color: var(--seed-color-fg-neutral-muted);
49
+ pointer-events: none
50
+ }
51
+ .seed-select-trigger__suffixIcon {
52
+ flex-shrink: 0;
53
+ color: var(--seed-color-fg-neutral-muted);
54
+ transform: rotate(0deg);
55
+ transition-property: transform;
56
+ transition-duration: var(--seed-duration-d2);
57
+ transition-timing-function: var(--seed-timing-function-easing);
58
+ pointer-events: none
59
+ }
60
+ .seed-select-trigger__root--size_large {
61
+ height: var(--seed-dimension-x13);
62
+ gap: var(--seed-dimension-x2_5);
63
+ padding-left: var(--seed-dimension-x4);
64
+ padding-right: var(--seed-dimension-x4);
65
+ border-radius: var(--seed-radius-r3)
66
+ }
67
+ .seed-select-trigger__pressedOverlay--size_large {
68
+ border-radius: var(--seed-radius-r3)
69
+ }
70
+ .seed-select-trigger__value--size_large {
71
+ font-size: var(--seed-font-size-t5);
72
+ line-height: var(--seed-line-height-t5)
73
+ }
74
+ .seed-select-trigger__placeholder--size_large {
75
+ font-size: var(--seed-font-size-t5);
76
+ line-height: var(--seed-line-height-t5)
77
+ }
78
+ .seed-select-trigger__prefixIcon--size_large {
79
+ width: var(--seed-dimension-x5);
80
+ height: var(--seed-dimension-x5)
81
+ }
82
+ .seed-select-trigger__suffixIcon--size_large {
83
+ width: var(--seed-dimension-x5);
84
+ height: var(--seed-dimension-x5)
85
+ }
86
+ .seed-select-trigger__root--size_medium {
87
+ height: var(--seed-dimension-x10);
88
+ gap: var(--seed-dimension-x2);
89
+ padding-left: var(--seed-dimension-x3_5);
90
+ padding-right: var(--seed-dimension-x3_5);
91
+ border-radius: var(--seed-radius-r2)
92
+ }
93
+ .seed-select-trigger__pressedOverlay--size_medium {
94
+ border-radius: var(--seed-radius-r2)
95
+ }
96
+ .seed-select-trigger__value--size_medium {
97
+ font-size: var(--seed-font-size-t4);
98
+ line-height: var(--seed-line-height-t4)
99
+ }
100
+ .seed-select-trigger__placeholder--size_medium {
101
+ font-size: var(--seed-font-size-t4);
102
+ line-height: var(--seed-line-height-t4)
103
+ }
104
+ .seed-select-trigger__prefixIcon--size_medium {
105
+ width: var(--seed-dimension-x4);
106
+ height: var(--seed-dimension-x4)
107
+ }
108
+ .seed-select-trigger__suffixIcon--size_medium {
109
+ width: var(--seed-dimension-x4);
110
+ height: var(--seed-dimension-x4)
111
+ }
112
+ .seed-select-trigger__root--disabled_true {
113
+ background-color: var(--seed-color-bg-disabled)
114
+ }
115
+ .seed-select-trigger__value--disabled_true {
116
+ color: var(--seed-color-fg-disabled)
117
+ }
118
+ .seed-select-trigger__placeholder--disabled_true {
119
+ color: var(--seed-color-fg-disabled)
120
+ }
121
+ .seed-select-trigger__prefixIcon--disabled_true {
122
+ color: var(--seed-color-fg-disabled)
123
+ }
124
+ .seed-select-trigger__suffixIcon--disabled_true {
125
+ color: var(--seed-color-fg-disabled)
126
+ }
127
+ .seed-select-trigger__root--readOnly_true {
128
+ background-color: var(--seed-color-bg-disabled)
129
+ }
130
+ .seed-select-trigger__value--readOnly_true {
131
+ color: var(--seed-color-fg-neutral)
132
+ }
133
+ .seed-select-trigger__placeholder--readOnly_true {
134
+ color: var(--seed-color-fg-placeholder)
135
+ }
136
+ .seed-select-trigger__root--invalid_true {
137
+ border-width: 2px;
138
+ border-color: var(--seed-color-stroke-critical-solid)
139
+ }
140
+ .seed-select-trigger__suffixIcon--open_true {
141
+ transform: rotate(180deg);
142
+ transition-duration: var(--seed-duration-d3);
143
+ transition-timing-function: var(--seed-timing-function-easing)
144
+ }
145
+ .seed-select-trigger__pressedOverlay--pressed_true-disabled_false-readOnly_false {
146
+ opacity: 1
147
+ }
@@ -0,0 +1,44 @@
1
+ declare interface SelectTriggerVariant {
2
+ /**
3
+ * @default "large"
4
+ */
5
+ size: "large" | "medium";
6
+ /**
7
+ * @default false
8
+ */
9
+ disabled: boolean;
10
+ /**
11
+ * @default false
12
+ */
13
+ readOnly: boolean;
14
+ /**
15
+ * @default false
16
+ */
17
+ invalid: boolean;
18
+ /**
19
+ * @default false
20
+ */
21
+ open: boolean;
22
+ /**
23
+ * @default false
24
+ */
25
+ pressed: boolean;
26
+ }
27
+
28
+ declare type SelectTriggerVariantMap = {
29
+ [key in keyof SelectTriggerVariant]: Array<SelectTriggerVariant[key]>;
30
+ };
31
+
32
+ export declare type SelectTriggerVariantProps = Partial<SelectTriggerVariant>;
33
+
34
+ export declare type SelectTriggerSlotName = "root" | "pressedOverlay" | "value" | "placeholder" | "prefixIcon" | "suffixIcon";
35
+
36
+ export declare const selectTriggerVariantMap: SelectTriggerVariantMap;
37
+
38
+ export declare const selectTrigger: ((
39
+ props?: SelectTriggerVariantProps,
40
+ ) => Record<SelectTriggerSlotName, string>) & {
41
+ splitVariantProps: <T extends SelectTriggerVariantProps>(
42
+ props: T,
43
+ ) => [SelectTriggerVariantProps, Omit<T, keyof SelectTriggerVariantProps>];
44
+ }
@@ -0,0 +1,90 @@
1
+ import './select-trigger.css';
2
+ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
3
+
4
+ const selectTriggerSlotNames = [
5
+ [
6
+ "root",
7
+ "seed-select-trigger__root"
8
+ ],
9
+ [
10
+ "pressedOverlay",
11
+ "seed-select-trigger__pressedOverlay"
12
+ ],
13
+ [
14
+ "value",
15
+ "seed-select-trigger__value"
16
+ ],
17
+ [
18
+ "placeholder",
19
+ "seed-select-trigger__placeholder"
20
+ ],
21
+ [
22
+ "prefixIcon",
23
+ "seed-select-trigger__prefixIcon"
24
+ ],
25
+ [
26
+ "suffixIcon",
27
+ "seed-select-trigger__suffixIcon"
28
+ ]
29
+ ];
30
+
31
+ const defaultVariant = {
32
+ "size": "large",
33
+ "disabled": false,
34
+ "readOnly": false,
35
+ "invalid": false,
36
+ "open": false,
37
+ "pressed": false
38
+ };
39
+
40
+ const compoundVariants = [
41
+ {
42
+ "pressed": true,
43
+ "disabled": false,
44
+ "readOnly": false
45
+ }
46
+ ];
47
+
48
+ export const selectTriggerVariantMap = {
49
+ "size": [
50
+ "large",
51
+ "medium"
52
+ ],
53
+ "disabled": [
54
+ true,
55
+ false
56
+ ],
57
+ "readOnly": [
58
+ true,
59
+ false
60
+ ],
61
+ "invalid": [
62
+ true,
63
+ false
64
+ ],
65
+ "open": [
66
+ true,
67
+ false
68
+ ],
69
+ "pressed": [
70
+ true,
71
+ false
72
+ ]
73
+ };
74
+
75
+ export const selectTriggerVariantKeys = Object.keys(selectTriggerVariantMap);
76
+
77
+ export function selectTrigger(props) {
78
+ return Object.fromEntries(
79
+ selectTriggerSlotNames.map(([slot, className]) => {
80
+ return [
81
+ slot,
82
+ createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
83
+ ];
84
+ }),
85
+ );
86
+ }
87
+
88
+ Object.assign(selectTrigger, { splitVariantProps: (props) => splitVariantProps(props, selectTriggerVariantMap) });
89
+
90
+ // @recipe(seed): select-trigger
@@ -0,0 +1,88 @@
1
+ .seed-select__positioner {
2
+ position: absolute;
3
+ top: 0;
4
+ left: 0;
5
+ width: 100%;
6
+ height: 100%;
7
+ z-index: 0
8
+ }
9
+ .seed-select__backdrop {
10
+ position: absolute;
11
+ top: 0;
12
+ right: 0;
13
+ bottom: 0;
14
+ left: 0
15
+ }
16
+ .seed-select__content {
17
+ position: absolute;
18
+ display: flex;
19
+ flex-direction: column;
20
+ border-radius: var(--seed-radius-r5);
21
+ background-color: var(--seed-color-bg-layer-floating);
22
+ box-shadow: var(--seed-shadow-s3);
23
+ overflow: hidden;
24
+ transition-property: opacity, transform
25
+ }
26
+ .seed-select__scrollArea {
27
+ width: 100%;
28
+ max-height: 480px
29
+ }
30
+ .seed-select__scrollContent {
31
+ display: flex;
32
+ flex-direction: column;
33
+ padding-top: var(--seed-dimension-x2);
34
+ padding-bottom: var(--seed-dimension-x2);
35
+ gap: var(--seed-dimension-x2)
36
+ }
37
+ .seed-select__group {
38
+ display: flex;
39
+ flex-direction: column;
40
+ flex-shrink: 0
41
+ }
42
+ .seed-select__groupLabel {
43
+ color: var(--seed-color-fg-neutral-subtle);
44
+ flex-shrink: 0
45
+ }
46
+ .seed-select__separator {
47
+ height: 1px;
48
+ flex-shrink: 0;
49
+ margin-left: var(--seed-dimension-x4);
50
+ margin-right: var(--seed-dimension-x4);
51
+ margin-bottom: var(--seed-dimension-x2);
52
+ background-color: var(--seed-color-stroke-neutral-muted)
53
+ }
54
+ .seed-select__groupLabel--size_large {
55
+ padding-top: var(--seed-dimension-x2_5);
56
+ padding-bottom: var(--seed-dimension-x2_5);
57
+ padding-left: var(--seed-dimension-x4);
58
+ padding-right: var(--seed-dimension-x4);
59
+ font-size: var(--seed-font-size-t4);
60
+ line-height: var(--seed-line-height-t4);
61
+ font-weight: var(--seed-font-weight-medium)
62
+ }
63
+ .seed-select__groupLabel--size_medium {
64
+ padding-top: var(--seed-dimension-x2);
65
+ padding-bottom: var(--seed-dimension-x2);
66
+ padding-left: var(--seed-dimension-x4);
67
+ padding-right: var(--seed-dimension-x4);
68
+ font-size: var(--seed-font-size-t3);
69
+ line-height: var(--seed-line-height-t3);
70
+ font-weight: var(--seed-font-weight-regular)
71
+ }
72
+ .seed-select__content--open_true {
73
+ opacity: 1;
74
+ transform: scale(1);
75
+ transition-duration: var(--seed-duration-d3);
76
+ transition-timing-function: var(--seed-timing-function-enter)
77
+ }
78
+ .seed-select__content--open_false {
79
+ opacity: 0;
80
+ transform: scale(0.95);
81
+ transition-duration: var(--seed-duration-d2);
82
+ transition-timing-function: var(--seed-timing-function-exit)
83
+ }
84
+ .seed-select__content--positioned_false {
85
+ opacity: 0;
86
+ transform: scale(0.95);
87
+ transition-duration: 0s
88
+ }
@@ -0,0 +1,32 @@
1
+ declare interface SelectVariant {
2
+ /**
3
+ * @default "large"
4
+ */
5
+ size: "large" | "medium";
6
+ /**
7
+ * @default false
8
+ */
9
+ open: boolean;
10
+ /**
11
+ * @default false
12
+ */
13
+ positioned: boolean;
14
+ }
15
+
16
+ declare type SelectVariantMap = {
17
+ [key in keyof SelectVariant]: Array<SelectVariant[key]>;
18
+ };
19
+
20
+ export declare type SelectVariantProps = Partial<SelectVariant>;
21
+
22
+ export declare type SelectSlotName = "positioner" | "backdrop" | "content" | "scrollArea" | "scrollContent" | "group" | "groupLabel" | "separator";
23
+
24
+ export declare const selectVariantMap: SelectVariantMap;
25
+
26
+ export declare const select: ((
27
+ props?: SelectVariantProps,
28
+ ) => Record<SelectSlotName, string>) & {
29
+ splitVariantProps: <T extends SelectVariantProps>(
30
+ props: T,
31
+ ) => [SelectVariantProps, Omit<T, keyof SelectVariantProps>];
32
+ }