@seed-design/lynx-css 0.14.2 → 1.0.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.
- package/all.css +1078 -373
- package/all.min.css +1 -1
- package/base.css +10 -0
- package/base.min.css +1 -1
- package/package.json +1 -1
- package/recipes/alert-dialog.css +11 -0
- package/recipes/alert-dialog.d.ts +1 -1
- package/recipes/alert-dialog.mjs +8 -0
- package/recipes/app-bar.css +7 -3
- package/recipes/attachment-input-item.css +7 -0
- package/recipes/attachment-input.css +2 -1
- package/recipes/avatar-stack.css +69 -0
- package/recipes/avatar-stack.d.ts +24 -0
- package/recipes/avatar-stack.mjs +55 -0
- package/recipes/avatar.css +257 -0
- package/recipes/avatar.d.ts +28 -0
- package/recipes/avatar.mjs +82 -0
- package/recipes/badge.css +22 -23
- package/recipes/badge.d.ts +0 -4
- package/recipes/badge.mjs +1 -14
- package/recipes/bottom-sheet.css +33 -2
- package/recipes/bottom-sheet.d.ts +5 -1
- package/recipes/bottom-sheet.mjs +28 -2
- package/recipes/callout.css +1 -8
- package/recipes/checkbox.css +7 -1
- package/recipes/checkmark.css +17 -26
- package/recipes/checkmark.d.ts +1 -5
- package/recipes/checkmark.mjs +7 -60
- package/recipes/chip-tabs.css +12 -7
- package/recipes/chip.css +16 -11
- package/recipes/content-placeholder.css +29 -0
- package/recipes/content-placeholder.d.ts +21 -0
- package/recipes/content-placeholder.mjs +44 -0
- package/recipes/dialog.css +4 -2
- package/recipes/{input-button.css → field-button.css} +49 -49
- package/recipes/field-button.d.ts +40 -0
- package/recipes/{input-button.mjs → field-button.mjs} +20 -20
- package/recipes/floating-action-button.css +15 -8
- package/recipes/image-frame-icon.css +8 -0
- package/recipes/image-frame-icon.d.ts +19 -0
- package/recipes/image-frame-icon.mjs +22 -0
- package/recipes/image-frame-indicator.css +17 -0
- package/recipes/image-frame-indicator.d.ts +21 -0
- package/recipes/image-frame-indicator.mjs +36 -0
- package/recipes/image-frame-reaction-button.css +20 -0
- package/recipes/image-frame-reaction-button.d.ts +21 -0
- package/recipes/image-frame-reaction-button.mjs +40 -0
- package/recipes/image-frame.css +87 -0
- package/recipes/image-frame.d.ts +32 -0
- package/recipes/image-frame.mjs +72 -0
- package/recipes/list-item.css +0 -4
- package/recipes/list-item.d.ts +1 -1
- package/recipes/list-item.mjs +0 -4
- package/recipes/menu-sheet-item.css +5 -1
- package/recipes/menu-sheet.css +5 -0
- package/recipes/menu-sheet.d.ts +1 -1
- package/recipes/menu-sheet.mjs +4 -0
- package/recipes/menu.css +1 -13
- package/recipes/menu.d.ts +1 -1
- package/recipes/menu.mjs +0 -4
- package/recipes/progress-circle.css +61 -4
- package/recipes/progress-circle.d.ts +1 -1
- package/recipes/progress-circle.mjs +1 -0
- package/recipes/pull-to-refresh.css +14 -0
- package/recipes/pull-to-refresh.d.ts +21 -0
- package/recipes/pull-to-refresh.mjs +40 -0
- package/recipes/reaction-button.css +19 -19
- package/recipes/reaction-button.d.ts +0 -4
- package/recipes/reaction-button.mjs +0 -11
- package/recipes/scroll-fog.css +4 -17
- package/recipes/scroll-fog.d.ts +1 -1
- package/recipes/scroll-fog.mjs +0 -8
- package/recipes/segmented-control.css +24 -14
- package/recipes/segmented-control.d.ts +4 -4
- package/recipes/segmented-control.mjs +8 -8
- package/recipes/select-box-checkmark.css +4 -7
- package/recipes/select-box.css +10 -4
- package/recipes/select-item.css +13 -2
- package/recipes/select-item.d.ts +1 -1
- package/recipes/select-item.mjs +4 -0
- package/recipes/select-trigger.css +13 -2
- package/recipes/select-trigger.d.ts +1 -1
- package/recipes/select-trigger.mjs +4 -0
- package/recipes/select.css +1 -13
- package/recipes/select.d.ts +1 -1
- package/recipes/select.mjs +0 -4
- package/recipes/slider-marker.css +2 -2
- package/recipes/slider-tick.css +1 -1
- package/recipes/slider.css +2 -5
- package/recipes/tabs.css +11 -11
- package/recipes/wheel-picker.css +151 -0
- package/recipes/wheel-picker.d.ts +32 -0
- package/recipes/wheel-picker.mjs +90 -0
- package/recipes/input-button.d.ts +0 -40
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import './image-frame-reaction-button.css';
|
|
2
|
+
import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
|
|
3
|
+
|
|
4
|
+
const imageFrameReactionButtonSlotNames = [
|
|
5
|
+
[
|
|
6
|
+
"root",
|
|
7
|
+
"seed-image-frame-reaction-button__root"
|
|
8
|
+
],
|
|
9
|
+
[
|
|
10
|
+
"fillIcon",
|
|
11
|
+
"seed-image-frame-reaction-button__fillIcon"
|
|
12
|
+
],
|
|
13
|
+
[
|
|
14
|
+
"lineIcon",
|
|
15
|
+
"seed-image-frame-reaction-button__lineIcon"
|
|
16
|
+
]
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const defaultVariant = {};
|
|
20
|
+
|
|
21
|
+
const compoundVariants = [];
|
|
22
|
+
|
|
23
|
+
export const imageFrameReactionButtonVariantMap = {};
|
|
24
|
+
|
|
25
|
+
export const imageFrameReactionButtonVariantKeys = Object.keys(imageFrameReactionButtonVariantMap);
|
|
26
|
+
|
|
27
|
+
export function imageFrameReactionButton(props) {
|
|
28
|
+
return Object.fromEntries(
|
|
29
|
+
imageFrameReactionButtonSlotNames.map(([slot, className]) => {
|
|
30
|
+
return [
|
|
31
|
+
slot,
|
|
32
|
+
createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
|
|
33
|
+
];
|
|
34
|
+
}),
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
Object.assign(imageFrameReactionButton, { splitVariantProps: (props) => splitVariantProps(props, imageFrameReactionButtonVariantMap) });
|
|
39
|
+
|
|
40
|
+
// @recipe(seed): image-frame-reaction-button
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
.seed-image-frame__root {
|
|
2
|
+
position: relative;
|
|
3
|
+
overflow: hidden;
|
|
4
|
+
flex-shrink: 0;
|
|
5
|
+
aspect-ratio: var(--seed-image-frame-ratio)
|
|
6
|
+
}
|
|
7
|
+
.seed-image-frame__content {
|
|
8
|
+
position: absolute;
|
|
9
|
+
top: 0;
|
|
10
|
+
right: 0;
|
|
11
|
+
bottom: 0;
|
|
12
|
+
left: 0;
|
|
13
|
+
width: 100%;
|
|
14
|
+
height: 100%;
|
|
15
|
+
opacity: 0;
|
|
16
|
+
pointer-events: none
|
|
17
|
+
}
|
|
18
|
+
.seed-image-frame__fallback {
|
|
19
|
+
position: absolute;
|
|
20
|
+
top: 0;
|
|
21
|
+
right: 0;
|
|
22
|
+
bottom: 0;
|
|
23
|
+
left: 0
|
|
24
|
+
}
|
|
25
|
+
.seed-image-frame__stroke {
|
|
26
|
+
position: absolute;
|
|
27
|
+
top: 0;
|
|
28
|
+
right: 0;
|
|
29
|
+
bottom: 0;
|
|
30
|
+
left: 0;
|
|
31
|
+
border-radius: var(--seed-image-frame-radius);
|
|
32
|
+
pointer-events: none
|
|
33
|
+
}
|
|
34
|
+
.seed-image-frame__floater {
|
|
35
|
+
position: absolute;
|
|
36
|
+
display: flex
|
|
37
|
+
}
|
|
38
|
+
.seed-image-frame__stroke--stroke_true {
|
|
39
|
+
border-width: 1px;
|
|
40
|
+
border-style: solid;
|
|
41
|
+
border-color: var(--seed-color-stroke-neutral-subtle)
|
|
42
|
+
}
|
|
43
|
+
.seed-image-frame__content--loaded_true {
|
|
44
|
+
opacity: 1;
|
|
45
|
+
pointer-events: auto
|
|
46
|
+
}
|
|
47
|
+
.seed-image-frame__floater--placement_top-start {
|
|
48
|
+
top: var(--seed-image-frame-offset-y);
|
|
49
|
+
left: var(--seed-image-frame-offset-x)
|
|
50
|
+
}
|
|
51
|
+
.seed-image-frame__floater--placement_top-center {
|
|
52
|
+
top: var(--seed-image-frame-offset-y);
|
|
53
|
+
left: calc(50% + var(--seed-image-frame-offset-x));
|
|
54
|
+
transform: translateX(-50%)
|
|
55
|
+
}
|
|
56
|
+
.seed-image-frame__floater--placement_top-end {
|
|
57
|
+
top: var(--seed-image-frame-offset-y);
|
|
58
|
+
right: var(--seed-image-frame-offset-x)
|
|
59
|
+
}
|
|
60
|
+
.seed-image-frame__floater--placement_middle-start {
|
|
61
|
+
top: calc(50% + var(--seed-image-frame-offset-y));
|
|
62
|
+
left: var(--seed-image-frame-offset-x);
|
|
63
|
+
transform: translateY(-50%)
|
|
64
|
+
}
|
|
65
|
+
.seed-image-frame__floater--placement_middle-center {
|
|
66
|
+
top: calc(50% + var(--seed-image-frame-offset-y));
|
|
67
|
+
left: calc(50% + var(--seed-image-frame-offset-x));
|
|
68
|
+
transform: translate(-50%, -50%)
|
|
69
|
+
}
|
|
70
|
+
.seed-image-frame__floater--placement_middle-end {
|
|
71
|
+
top: calc(50% + var(--seed-image-frame-offset-y));
|
|
72
|
+
right: var(--seed-image-frame-offset-x);
|
|
73
|
+
transform: translateY(-50%)
|
|
74
|
+
}
|
|
75
|
+
.seed-image-frame__floater--placement_bottom-start {
|
|
76
|
+
bottom: var(--seed-image-frame-offset-y);
|
|
77
|
+
left: var(--seed-image-frame-offset-x)
|
|
78
|
+
}
|
|
79
|
+
.seed-image-frame__floater--placement_bottom-center {
|
|
80
|
+
bottom: var(--seed-image-frame-offset-y);
|
|
81
|
+
left: calc(50% + var(--seed-image-frame-offset-x));
|
|
82
|
+
transform: translateX(-50%)
|
|
83
|
+
}
|
|
84
|
+
.seed-image-frame__floater--placement_bottom-end {
|
|
85
|
+
bottom: var(--seed-image-frame-offset-y);
|
|
86
|
+
right: var(--seed-image-frame-offset-x)
|
|
87
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
declare interface ImageFrameVariant {
|
|
2
|
+
/**
|
|
3
|
+
* @default false
|
|
4
|
+
*/
|
|
5
|
+
stroke: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* @default false
|
|
8
|
+
*/
|
|
9
|
+
loaded: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* @default "bottom-end"
|
|
12
|
+
*/
|
|
13
|
+
placement: "top-start" | "top-center" | "top-end" | "middle-start" | "middle-center" | "middle-end" | "bottom-start" | "bottom-center" | "bottom-end";
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
declare type ImageFrameVariantMap = {
|
|
17
|
+
[key in keyof ImageFrameVariant]: Array<ImageFrameVariant[key]>;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export declare type ImageFrameVariantProps = Partial<ImageFrameVariant>;
|
|
21
|
+
|
|
22
|
+
export declare type ImageFrameSlotName = "root" | "content" | "fallback" | "stroke" | "floater";
|
|
23
|
+
|
|
24
|
+
export declare const imageFrameVariantMap: ImageFrameVariantMap;
|
|
25
|
+
|
|
26
|
+
export declare const imageFrame: ((
|
|
27
|
+
props?: ImageFrameVariantProps,
|
|
28
|
+
) => Record<ImageFrameSlotName, string>) & {
|
|
29
|
+
splitVariantProps: <T extends ImageFrameVariantProps>(
|
|
30
|
+
props: T,
|
|
31
|
+
) => [ImageFrameVariantProps, Omit<T, keyof ImageFrameVariantProps>];
|
|
32
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import './image-frame.css';
|
|
2
|
+
import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
|
|
3
|
+
|
|
4
|
+
const imageFrameSlotNames = [
|
|
5
|
+
[
|
|
6
|
+
"root",
|
|
7
|
+
"seed-image-frame__root"
|
|
8
|
+
],
|
|
9
|
+
[
|
|
10
|
+
"content",
|
|
11
|
+
"seed-image-frame__content"
|
|
12
|
+
],
|
|
13
|
+
[
|
|
14
|
+
"fallback",
|
|
15
|
+
"seed-image-frame__fallback"
|
|
16
|
+
],
|
|
17
|
+
[
|
|
18
|
+
"stroke",
|
|
19
|
+
"seed-image-frame__stroke"
|
|
20
|
+
],
|
|
21
|
+
[
|
|
22
|
+
"floater",
|
|
23
|
+
"seed-image-frame__floater"
|
|
24
|
+
]
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const defaultVariant = {
|
|
28
|
+
"stroke": false,
|
|
29
|
+
"loaded": false,
|
|
30
|
+
"placement": "bottom-end"
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const compoundVariants = [];
|
|
34
|
+
|
|
35
|
+
export const imageFrameVariantMap = {
|
|
36
|
+
"stroke": [
|
|
37
|
+
true,
|
|
38
|
+
false
|
|
39
|
+
],
|
|
40
|
+
"loaded": [
|
|
41
|
+
true,
|
|
42
|
+
false
|
|
43
|
+
],
|
|
44
|
+
"placement": [
|
|
45
|
+
"top-start",
|
|
46
|
+
"top-center",
|
|
47
|
+
"top-end",
|
|
48
|
+
"middle-start",
|
|
49
|
+
"middle-center",
|
|
50
|
+
"middle-end",
|
|
51
|
+
"bottom-start",
|
|
52
|
+
"bottom-center",
|
|
53
|
+
"bottom-end"
|
|
54
|
+
]
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const imageFrameVariantKeys = Object.keys(imageFrameVariantMap);
|
|
58
|
+
|
|
59
|
+
export function imageFrame(props) {
|
|
60
|
+
return Object.fromEntries(
|
|
61
|
+
imageFrameSlotNames.map(([slot, className]) => {
|
|
62
|
+
return [
|
|
63
|
+
slot,
|
|
64
|
+
createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
|
|
65
|
+
];
|
|
66
|
+
}),
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
Object.assign(imageFrame, { splitVariantProps: (props) => splitVariantProps(props, imageFrameVariantMap) });
|
|
71
|
+
|
|
72
|
+
// @recipe(seed): image-frame
|
package/recipes/list-item.css
CHANGED
package/recipes/list-item.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ declare type ListItemVariantMap = {
|
|
|
23
23
|
|
|
24
24
|
export declare type ListItemVariantProps = Partial<ListItemVariant>;
|
|
25
25
|
|
|
26
|
-
export declare type ListItemSlotName = "
|
|
26
|
+
export declare type ListItemSlotName = "root" | "highlightedOverlay" | "pressedOverlay" | "layout" | "content" | "title" | "detail" | "prefix" | "suffix" | "prefixIcon" | "suffixIcon";
|
|
27
27
|
|
|
28
28
|
export declare const listItemVariantMap: ListItemVariantMap;
|
|
29
29
|
|
package/recipes/list-item.mjs
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
flex-direction: row;
|
|
4
4
|
align-items: center;
|
|
5
5
|
justify-content: flex-start;
|
|
6
|
+
position: relative;
|
|
6
7
|
width: 100%;
|
|
7
8
|
min-height: 52px;
|
|
8
9
|
padding-top: var(--seed-dimension-x3_5);
|
|
@@ -48,7 +49,10 @@
|
|
|
48
49
|
height: 22px;
|
|
49
50
|
}
|
|
50
51
|
.seed-menu-sheet-item__divider {
|
|
51
|
-
|
|
52
|
+
position: absolute;
|
|
53
|
+
right: 0;
|
|
54
|
+
bottom: 0;
|
|
55
|
+
left: 0;
|
|
52
56
|
height: 1px;
|
|
53
57
|
background-color: var(--seed-color-stroke-neutral-muted);
|
|
54
58
|
}
|
package/recipes/menu-sheet.css
CHANGED
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
flex-direction: column;
|
|
46
46
|
align-items: center;
|
|
47
47
|
text-align: center;
|
|
48
|
+
flex-shrink: 0;
|
|
48
49
|
gap: var(--seed-dimension-x1);
|
|
49
50
|
padding-bottom: var(--seed-dimension-x4);
|
|
50
51
|
}
|
|
@@ -63,6 +64,9 @@
|
|
|
63
64
|
margin: 0;
|
|
64
65
|
}
|
|
65
66
|
.seed-menu-sheet__list {
|
|
67
|
+
flex-shrink: 1;
|
|
68
|
+
}
|
|
69
|
+
.seed-menu-sheet__listContent {
|
|
66
70
|
display: flex;
|
|
67
71
|
flex-direction: column;
|
|
68
72
|
align-items: stretch;
|
|
@@ -79,6 +83,7 @@
|
|
|
79
83
|
display: flex;
|
|
80
84
|
flex-direction: column;
|
|
81
85
|
align-items: stretch;
|
|
86
|
+
flex-shrink: 0;
|
|
82
87
|
padding-top: var(--seed-dimension-x2_5);
|
|
83
88
|
}
|
|
84
89
|
.seed-menu-sheet__closeButton {
|
package/recipes/menu-sheet.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ declare type MenuSheetVariantMap = {
|
|
|
15
15
|
|
|
16
16
|
export declare type MenuSheetVariantProps = Partial<MenuSheetVariant>;
|
|
17
17
|
|
|
18
|
-
export declare type MenuSheetSlotName = "positioner" | "backdrop" | "content" | "contentInner" | "header" | "title" | "description" | "list" | "group" | "footer" | "closeButton" | "closeButtonLabel";
|
|
18
|
+
export declare type MenuSheetSlotName = "positioner" | "backdrop" | "content" | "contentInner" | "header" | "title" | "description" | "list" | "listContent" | "group" | "footer" | "closeButton" | "closeButtonLabel";
|
|
19
19
|
|
|
20
20
|
export declare const menuSheetVariantMap: MenuSheetVariantMap;
|
|
21
21
|
|
package/recipes/menu-sheet.mjs
CHANGED
package/recipes/menu.css
CHANGED
|
@@ -1,17 +1,5 @@
|
|
|
1
1
|
.seed-menu__positioner {
|
|
2
|
-
|
|
3
|
-
top: 0;
|
|
4
|
-
left: 0;
|
|
5
|
-
width: 100%;
|
|
6
|
-
height: 100%;
|
|
7
|
-
z-index: 0
|
|
8
|
-
}
|
|
9
|
-
.seed-menu__backdrop {
|
|
10
|
-
position: absolute;
|
|
11
|
-
top: 0;
|
|
12
|
-
right: 0;
|
|
13
|
-
bottom: 0;
|
|
14
|
-
left: 0
|
|
2
|
+
z-index: 99
|
|
15
3
|
}
|
|
16
4
|
.seed-menu__content {
|
|
17
5
|
position: absolute;
|
package/recipes/menu.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ declare type MenuVariantMap = {
|
|
|
19
19
|
|
|
20
20
|
export declare type MenuVariantProps = Partial<MenuVariant>;
|
|
21
21
|
|
|
22
|
-
export declare type MenuSlotName = "positioner" | "
|
|
22
|
+
export declare type MenuSlotName = "positioner" | "content" | "scrollArea" | "scrollContent" | "group" | "groupLabel" | "separator";
|
|
23
23
|
|
|
24
24
|
export declare const menuVariantMap: MenuVariantMap;
|
|
25
25
|
|
package/recipes/menu.mjs
CHANGED
|
@@ -36,21 +36,78 @@
|
|
|
36
36
|
clip-path: path("M7 0 A7 7 0 1 1 7 14 A7 7 0 1 1 7 0 Z M7 2 A5 5 0 1 0 7 12 A5 5 0 1 0 7 2 Z");
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
.seed-progress-circle__track {
|
|
40
|
+
position: absolute;
|
|
41
|
+
top: 0;
|
|
42
|
+
left: 0;
|
|
43
|
+
width: 100%;
|
|
44
|
+
height: 100%;
|
|
45
|
+
}
|
|
46
|
+
|
|
39
47
|
.seed-progress-circle__cap {
|
|
40
48
|
position: absolute;
|
|
41
49
|
border-radius: 50%;
|
|
42
50
|
z-index: 1;
|
|
43
51
|
}
|
|
44
52
|
|
|
45
|
-
.seed-progress-
|
|
53
|
+
.seed-progress-circle__spinner,
|
|
54
|
+
.seed-progress-circle__indeterminate-range {
|
|
55
|
+
position: absolute;
|
|
56
|
+
top: 0;
|
|
57
|
+
left: 0;
|
|
58
|
+
width: 100%;
|
|
59
|
+
height: 100%;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.seed-progress-circle__range.seed-progress-circle__indeterminate-range {
|
|
63
|
+
background-color: transparent;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* Android는 clip-path를 가진 부모가 transform 애니메이션 중인 자식을 자르지 않는다.
|
|
67
|
+
반쪽 영역은 폭 50% 박스의 overflow로 자르고, 반원은 그 안에서 링 크기로 둔다. */
|
|
68
|
+
.seed-progress-circle__half {
|
|
69
|
+
position: absolute;
|
|
70
|
+
top: 0;
|
|
71
|
+
width: 50%;
|
|
72
|
+
height: 100%;
|
|
73
|
+
overflow: hidden;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.seed-progress-circle__half--first {
|
|
77
|
+
left: 50%;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.seed-progress-circle__half--second {
|
|
81
|
+
left: 0;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.seed-progress-circle__semicircle--first,
|
|
85
|
+
.seed-progress-circle__semicircle--second {
|
|
86
|
+
position: absolute;
|
|
87
|
+
top: 0;
|
|
88
|
+
width: 200%;
|
|
89
|
+
height: 100%;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.seed-progress-circle__semicircle--first {
|
|
93
|
+
left: -100%;
|
|
94
|
+
clip-path: inset(0 50% 0 0);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.seed-progress-circle__semicircle--second {
|
|
98
|
+
left: 0;
|
|
99
|
+
clip-path: inset(0 0 0 50%);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.seed-progress-circle__track--tone_neutral {
|
|
46
103
|
background-color: var(--seed-color-palette-gray-200);
|
|
47
104
|
}
|
|
48
105
|
|
|
49
|
-
.seed-progress-
|
|
106
|
+
.seed-progress-circle__track--tone_brand {
|
|
50
107
|
background-color: var(--seed-color-palette-carrot-200);
|
|
51
108
|
}
|
|
52
109
|
|
|
53
|
-
.seed-progress-
|
|
110
|
+
.seed-progress-circle__track--tone_staticWhite {
|
|
54
111
|
background-color: var(--seed-color-palette-static-white-alpha-300);
|
|
55
112
|
}
|
|
56
113
|
|
|
@@ -70,7 +127,7 @@
|
|
|
70
127
|
}
|
|
71
128
|
|
|
72
129
|
/* inherit: inherits --track-color / --range-color from parent (e.g. action-button) */
|
|
73
|
-
.seed-progress-
|
|
130
|
+
.seed-progress-circle__track--tone_inherit {
|
|
74
131
|
background-color: var(--track-color);
|
|
75
132
|
}
|
|
76
133
|
|
|
@@ -17,7 +17,7 @@ declare type ProgressCircleVariantMap = {
|
|
|
17
17
|
|
|
18
18
|
export declare type ProgressCircleVariantProps = Partial<ProgressCircleVariant>;
|
|
19
19
|
|
|
20
|
-
export declare type ProgressCircleSlotName = "root" | "range" | "cap";
|
|
20
|
+
export declare type ProgressCircleSlotName = "root" | "track" | "range" | "cap";
|
|
21
21
|
|
|
22
22
|
export declare const progressCircleVariantMap: ProgressCircleVariantMap;
|
|
23
23
|
|
|
@@ -4,6 +4,7 @@ import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs"
|
|
|
4
4
|
|
|
5
5
|
const progressCircleSlotNames = [
|
|
6
6
|
["root", "seed-progress-circle__root"],
|
|
7
|
+
["track", "seed-progress-circle__track"],
|
|
7
8
|
["range", "seed-progress-circle__range"],
|
|
8
9
|
["cap", "seed-progress-circle__cap"],
|
|
9
10
|
];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
.seed-pull-to-refresh__root {
|
|
2
|
+
height: 100%
|
|
3
|
+
}
|
|
4
|
+
.seed-pull-to-refresh__indicator {
|
|
5
|
+
display: flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
justify-content: center;
|
|
8
|
+
padding-top: var(--seed-dimension-x8);
|
|
9
|
+
padding-bottom: var(--seed-dimension-x8)
|
|
10
|
+
}
|
|
11
|
+
.seed-pull-to-refresh__content {
|
|
12
|
+
height: 100%;
|
|
13
|
+
width: 100%
|
|
14
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
declare interface PullToRefreshVariant {
|
|
2
|
+
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
declare type PullToRefreshVariantMap = {
|
|
6
|
+
[key in keyof PullToRefreshVariant]: Array<PullToRefreshVariant[key]>;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export declare type PullToRefreshVariantProps = Partial<PullToRefreshVariant>;
|
|
10
|
+
|
|
11
|
+
export declare type PullToRefreshSlotName = "root" | "indicator" | "content";
|
|
12
|
+
|
|
13
|
+
export declare const pullToRefreshVariantMap: PullToRefreshVariantMap;
|
|
14
|
+
|
|
15
|
+
export declare const pullToRefresh: ((
|
|
16
|
+
props?: PullToRefreshVariantProps,
|
|
17
|
+
) => Record<PullToRefreshSlotName, string>) & {
|
|
18
|
+
splitVariantProps: <T extends PullToRefreshVariantProps>(
|
|
19
|
+
props: T,
|
|
20
|
+
) => [PullToRefreshVariantProps, Omit<T, keyof PullToRefreshVariantProps>];
|
|
21
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import './pull-to-refresh.css';
|
|
2
|
+
import { createClassName, mergeVariants, splitVariantProps } from "./shared.mjs";
|
|
3
|
+
|
|
4
|
+
const pullToRefreshSlotNames = [
|
|
5
|
+
[
|
|
6
|
+
"root",
|
|
7
|
+
"seed-pull-to-refresh__root"
|
|
8
|
+
],
|
|
9
|
+
[
|
|
10
|
+
"indicator",
|
|
11
|
+
"seed-pull-to-refresh__indicator"
|
|
12
|
+
],
|
|
13
|
+
[
|
|
14
|
+
"content",
|
|
15
|
+
"seed-pull-to-refresh__content"
|
|
16
|
+
]
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const defaultVariant = {};
|
|
20
|
+
|
|
21
|
+
const compoundVariants = [];
|
|
22
|
+
|
|
23
|
+
export const pullToRefreshVariantMap = {};
|
|
24
|
+
|
|
25
|
+
export const pullToRefreshVariantKeys = Object.keys(pullToRefreshVariantMap);
|
|
26
|
+
|
|
27
|
+
export function pullToRefresh(props) {
|
|
28
|
+
return Object.fromEntries(
|
|
29
|
+
pullToRefreshSlotNames.map(([slot, className]) => {
|
|
30
|
+
return [
|
|
31
|
+
slot,
|
|
32
|
+
createClassName(className, mergeVariants(defaultVariant, props), compoundVariants),
|
|
33
|
+
];
|
|
34
|
+
}),
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
Object.assign(pullToRefresh, { splitVariantProps: (props) => splitVariantProps(props, pullToRefreshVariantMap) });
|
|
39
|
+
|
|
40
|
+
// @recipe(seed): pull-to-refresh
|
|
@@ -6,10 +6,13 @@
|
|
|
6
6
|
justify-content: center;
|
|
7
7
|
flex-shrink: 0;
|
|
8
8
|
background: var(--seed-color-bg-transparent);
|
|
9
|
-
|
|
9
|
+
border-width: var(--seed-reaction-button-stroke-width);
|
|
10
|
+
border-style: solid;
|
|
11
|
+
--seed-reaction-button-stroke-width: 1px;
|
|
12
|
+
border-color: var(--seed-color-stroke-neutral-muted);
|
|
10
13
|
--track-color: var(--seed-color-palette-gray-500);
|
|
11
14
|
--range-color: var(--seed-color-fg-neutral);
|
|
12
|
-
transition: background-color var(--seed-duration-color-transition) var(--seed-timing-function-easing),
|
|
15
|
+
transition: background-color var(--seed-duration-color-transition) var(--seed-timing-function-easing), border-color var(--seed-duration-color-transition) var(--seed-timing-function-easing)
|
|
13
16
|
}
|
|
14
17
|
.seed-reaction-button__content {
|
|
15
18
|
display: flex;
|
|
@@ -43,10 +46,10 @@
|
|
|
43
46
|
.seed-reaction-button__root--size_xsmall {
|
|
44
47
|
height: var(--seed-dimension-x8);
|
|
45
48
|
border-radius: var(--seed-radius-full);
|
|
46
|
-
padding-left: var(--seed-dimension-x3);
|
|
47
|
-
padding-right: var(--seed-dimension-x3);
|
|
48
|
-
padding-top: var(--seed-dimension-x1_5);
|
|
49
|
-
padding-bottom: var(--seed-dimension-x1_5)
|
|
49
|
+
padding-left: calc(var(--seed-dimension-x3) - var(--seed-reaction-button-stroke-width));
|
|
50
|
+
padding-right: calc(var(--seed-dimension-x3) - var(--seed-reaction-button-stroke-width));
|
|
51
|
+
padding-top: calc(var(--seed-dimension-x1_5) - var(--seed-reaction-button-stroke-width));
|
|
52
|
+
padding-bottom: calc(var(--seed-dimension-x1_5) - var(--seed-reaction-button-stroke-width))
|
|
50
53
|
}
|
|
51
54
|
.seed-reaction-button__content--size_xsmall {
|
|
52
55
|
gap: var(--seed-dimension-x1)
|
|
@@ -66,10 +69,10 @@
|
|
|
66
69
|
.seed-reaction-button__root--size_small {
|
|
67
70
|
height: var(--seed-dimension-x9);
|
|
68
71
|
border-radius: var(--seed-radius-full);
|
|
69
|
-
padding-left: var(--seed-dimension-x3_5);
|
|
70
|
-
padding-right: var(--seed-dimension-x3_5);
|
|
71
|
-
padding-top: var(--seed-dimension-x2);
|
|
72
|
-
padding-bottom: var(--seed-dimension-x2)
|
|
72
|
+
padding-left: calc(var(--seed-dimension-x3_5) - var(--seed-reaction-button-stroke-width));
|
|
73
|
+
padding-right: calc(var(--seed-dimension-x3_5) - var(--seed-reaction-button-stroke-width));
|
|
74
|
+
padding-top: calc(var(--seed-dimension-x2) - var(--seed-reaction-button-stroke-width));
|
|
75
|
+
padding-bottom: calc(var(--seed-dimension-x2) - var(--seed-reaction-button-stroke-width))
|
|
73
76
|
}
|
|
74
77
|
.seed-reaction-button__content--size_small {
|
|
75
78
|
gap: var(--seed-dimension-x1)
|
|
@@ -88,7 +91,8 @@
|
|
|
88
91
|
}
|
|
89
92
|
.seed-reaction-button__root--selected_true {
|
|
90
93
|
background: var(--seed-color-bg-transparent);
|
|
91
|
-
|
|
94
|
+
--seed-reaction-button-stroke-width: 1px;
|
|
95
|
+
border-color: var(--seed-color-stroke-brand-weak);
|
|
92
96
|
--track-color: var(--seed-color-palette-carrot-200);
|
|
93
97
|
--range-color: var(--seed-color-fg-brand)
|
|
94
98
|
}
|
|
@@ -101,12 +105,10 @@
|
|
|
101
105
|
.seed-reaction-button__prefixIcon--selected_true {
|
|
102
106
|
color: var(--seed-color-fg-brand)
|
|
103
107
|
}
|
|
104
|
-
.seed-reaction-button__root--pressed_true {
|
|
105
|
-
background: var(--seed-color-bg-transparent-pressed)
|
|
106
|
-
}
|
|
107
108
|
.seed-reaction-button__root--disabled_true {
|
|
108
109
|
background: var(--seed-color-bg-disabled);
|
|
109
|
-
|
|
110
|
+
--seed-reaction-button-stroke-width: 0px;
|
|
111
|
+
border-color: var(--seed-color-stroke-neutral-muted)
|
|
110
112
|
}
|
|
111
113
|
.seed-reaction-button__label--disabled_true {
|
|
112
114
|
color: var(--seed-color-fg-disabled)
|
|
@@ -123,9 +125,6 @@
|
|
|
123
125
|
.seed-reaction-button__content--loading_true {
|
|
124
126
|
opacity: 0
|
|
125
127
|
}
|
|
126
|
-
.seed-reaction-button__root--selected_true-pressed_true-disabled_false-loading_false {
|
|
127
|
-
background: var(--seed-color-bg-transparent-pressed)
|
|
128
|
-
}
|
|
129
128
|
.seed-reaction-button__root--selected_false-disabled_false-loading_false:active {
|
|
130
129
|
background: var(--seed-color-bg-transparent-pressed)
|
|
131
130
|
}
|
|
@@ -134,7 +133,8 @@
|
|
|
134
133
|
}
|
|
135
134
|
.seed-reaction-button__root--selected_true-loading_true {
|
|
136
135
|
background: var(--seed-color-bg-transparent-pressed);
|
|
137
|
-
|
|
136
|
+
--seed-reaction-button-stroke-width: 1px;
|
|
137
|
+
border-color: var(--seed-color-stroke-brand-weak);
|
|
138
138
|
--track-color: var(--seed-color-palette-carrot-200);
|
|
139
139
|
--range-color: var(--seed-color-fg-brand)
|
|
140
140
|
}
|