@team-frieeren/components 1.0.18 → 1.0.19
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/dist/Button.js +4 -2
- package/dist/FloatingActionButton.js +85 -0
- package/dist/Switch.js +30 -0
- package/dist/Tabs.js +16 -52
- package/dist/components/Button/Button.d.ts +2 -0
- package/dist/components/Button/Button.stories.d.ts +4 -0
- package/dist/components/Button/Button.type.d.ts +1 -0
- package/dist/components/FloatingActionButton/FloatingActionButton.d.ts +2 -0
- package/dist/components/FloatingActionButton/FloatingActionButton.stories.d.ts +56 -0
- package/dist/components/FloatingActionButton/FloatingActionButton.type.d.ts +19 -0
- package/dist/components/FloatingActionButton/index.d.ts +1 -0
- package/dist/components/Switch/Switch.d.ts +2 -0
- package/dist/components/{Toggle/Toggle.stories.d.ts → Switch/Switch.stories.d.ts} +14 -4
- package/dist/components/Switch/Switch.type.d.ts +7 -0
- package/dist/components/Switch/index.d.ts +2 -0
- package/dist/components/Tabs/Tabs.d.ts +1 -2
- package/dist/components/Tabs/Tabs.stories.d.ts +7 -9
- package/dist/components/Tabs/Tabs.type.d.ts +6 -7
- package/dist/components/Tabs/index.d.ts +1 -0
- package/dist/index.css +2 -2
- package/dist/index.d.ts +2 -1
- package/dist/index.js +128 -76
- package/package.json +10 -5
- package/dist/Toggle.js +0 -24
- package/dist/components/Tabs/TabsBase.d.ts +0 -6
- package/dist/components/Toggle/Toggle.d.ts +0 -2
- package/dist/components/Toggle/Toggle.type.d.ts +0 -6
- package/dist/components/Toggle/index.d.ts +0 -1
package/dist/Button.js
CHANGED
|
@@ -72,7 +72,8 @@ var Button = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
72
72
|
color = _a.color,
|
|
73
73
|
backgroundColor = _a.backgroundColor,
|
|
74
74
|
borderColor = _a.borderColor,
|
|
75
|
-
|
|
75
|
+
borderRadius = _a.borderRadius,
|
|
76
|
+
rest = __rest(_a, ["type", "display", "disabled", "loading", "size", "className", "children", "color", "backgroundColor", "borderColor", "borderRadius"]);
|
|
76
77
|
return jsxs("button", _assign({
|
|
77
78
|
ref: ref,
|
|
78
79
|
"data-frieeren-component": "Button",
|
|
@@ -83,7 +84,8 @@ var Button = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
83
84
|
style: {
|
|
84
85
|
color: color,
|
|
85
86
|
backgroundColor: backgroundColor,
|
|
86
|
-
borderColor: borderColor
|
|
87
|
+
borderColor: borderColor,
|
|
88
|
+
borderRadius: borderRadius
|
|
87
89
|
}
|
|
88
90
|
}, rest, {
|
|
89
91
|
children: [jsx("span", {
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import cx from 'classnames';
|
|
4
|
+
|
|
5
|
+
function FloatingActionButton(_a) {
|
|
6
|
+
var _b = _a.disabled,
|
|
7
|
+
disabled = _b === void 0 ? false : _b,
|
|
8
|
+
className = _a.className,
|
|
9
|
+
_c = _a.position,
|
|
10
|
+
position = _c === void 0 ? "fixed" : _c,
|
|
11
|
+
top = _a.top,
|
|
12
|
+
left = _a.left,
|
|
13
|
+
_d = _a.bottom,
|
|
14
|
+
bottom = _d === void 0 ? 16 : _d,
|
|
15
|
+
_e = _a.right,
|
|
16
|
+
right = _e === void 0 ? 16 : _e,
|
|
17
|
+
_f = _a.actions,
|
|
18
|
+
actions = _f === void 0 ? [] : _f,
|
|
19
|
+
icon = _a.icon,
|
|
20
|
+
openIcon = _a.openIcon,
|
|
21
|
+
closeIcon = _a.closeIcon,
|
|
22
|
+
_onClick = _a.onClick;
|
|
23
|
+
var _g = useState(false),
|
|
24
|
+
isOpen = _g[0],
|
|
25
|
+
setIsOpen = _g[1];
|
|
26
|
+
var style = {
|
|
27
|
+
position: position
|
|
28
|
+
};
|
|
29
|
+
if (top !== undefined) style.top = top;
|
|
30
|
+
if (left !== undefined) style.left = left;
|
|
31
|
+
if (bottom !== undefined) style.bottom = bottom;
|
|
32
|
+
if (right !== undefined) style.right = right;
|
|
33
|
+
return jsxs("div", {
|
|
34
|
+
className: cx("floating-action-button", className),
|
|
35
|
+
"data-frieeren-component": "floating-action-button",
|
|
36
|
+
style: style,
|
|
37
|
+
children: [jsx("button", {
|
|
38
|
+
className: cx("floating-action-button--button"),
|
|
39
|
+
style: {
|
|
40
|
+
backgroundColor: "#3A8DFF"
|
|
41
|
+
},
|
|
42
|
+
disabled: disabled,
|
|
43
|
+
type: "button",
|
|
44
|
+
onClick: function onClick() {
|
|
45
|
+
setIsOpen(!isOpen);
|
|
46
|
+
_onClick === null || _onClick === void 0 ? void 0 : _onClick();
|
|
47
|
+
},
|
|
48
|
+
children: isOpen ? closeIcon !== null && closeIcon !== void 0 ? closeIcon : icon : openIcon !== null && openIcon !== void 0 ? openIcon : icon
|
|
49
|
+
}), jsx("div", {
|
|
50
|
+
style: {
|
|
51
|
+
position: "absolute",
|
|
52
|
+
display: "flex",
|
|
53
|
+
flexDirection: "column",
|
|
54
|
+
gap: "20px",
|
|
55
|
+
bottom: "76px",
|
|
56
|
+
right: "0",
|
|
57
|
+
opacity: isOpen ? 1 : 0,
|
|
58
|
+
visibility: isOpen ? "visible" : "hidden",
|
|
59
|
+
transition: "all 0.3s ease-in-out"
|
|
60
|
+
},
|
|
61
|
+
children: actions === null || actions === void 0 ? void 0 : actions.map(function (action, index) {
|
|
62
|
+
return jsx("div", {
|
|
63
|
+
style: {
|
|
64
|
+
transform: isOpen ? "translateY(0)" : "translateY(".concat(40 - index * 20, "px)"),
|
|
65
|
+
transition: "transform 0.3s ease-in-out",
|
|
66
|
+
transitionDelay: isOpen ? "".concat((index + 1) * 0.1, "s") : "0s"
|
|
67
|
+
},
|
|
68
|
+
children: jsx("button", {
|
|
69
|
+
className: cx("floating-action-button--button", "floating-action-button--action-button"),
|
|
70
|
+
disabled: action.disabled,
|
|
71
|
+
type: "button",
|
|
72
|
+
onClick: function onClick() {
|
|
73
|
+
var _a;
|
|
74
|
+
(_a = action.onClick) === null || _a === void 0 ? void 0 : _a.call(action);
|
|
75
|
+
setIsOpen(false);
|
|
76
|
+
},
|
|
77
|
+
children: action.icon
|
|
78
|
+
})
|
|
79
|
+
}, index);
|
|
80
|
+
})
|
|
81
|
+
})]
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export { FloatingActionButton };
|
package/dist/Switch.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
|
+
import { Switch as Switch$1 } from 'radix-ui';
|
|
4
|
+
import cx from 'classnames';
|
|
5
|
+
|
|
6
|
+
var Switch = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
7
|
+
var className = _a.className,
|
|
8
|
+
_b = _a.defaultValue,
|
|
9
|
+
defaultValue = _b === void 0 ? false : _b,
|
|
10
|
+
onChange = _a.onChange,
|
|
11
|
+
_c = _a.disabled,
|
|
12
|
+
disabled = _c === void 0 ? false : _c,
|
|
13
|
+
value = _a.value;
|
|
14
|
+
return jsx(Switch$1.Root, {
|
|
15
|
+
ref: ref,
|
|
16
|
+
defaultChecked: defaultValue,
|
|
17
|
+
onCheckedChange: onChange,
|
|
18
|
+
checked: value,
|
|
19
|
+
className: cx("switch", className),
|
|
20
|
+
"data-frieeren-component": "Switch",
|
|
21
|
+
disabled: disabled,
|
|
22
|
+
"aria-disabled": disabled,
|
|
23
|
+
children: jsx(Switch$1.Thumb, {
|
|
24
|
+
className: "switch-thumb"
|
|
25
|
+
})
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
Switch.displayName = "Switch";
|
|
29
|
+
|
|
30
|
+
export { Switch };
|
package/dist/Tabs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useState, useCallback, useEffect, useRef } from 'react';
|
|
3
3
|
import * as TabsBase from '@radix-ui/react-tabs';
|
|
4
4
|
|
|
@@ -25,35 +25,6 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
|
|
|
25
25
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
var Root = function Root(_a) {
|
|
29
|
-
var props = __rest(_a, []);
|
|
30
|
-
return jsx(TabsBase.Root, _assign({
|
|
31
|
-
"data-frieeren-component": "Tabs",
|
|
32
|
-
className: "tabs"
|
|
33
|
-
}, props));
|
|
34
|
-
};
|
|
35
|
-
var List = function List(_a) {
|
|
36
|
-
var props = __rest(_a, []);
|
|
37
|
-
return jsx(TabsBase.List, _assign({
|
|
38
|
-
"data-frieeren-component": "TabsList",
|
|
39
|
-
className: "tabs--list"
|
|
40
|
-
}, props));
|
|
41
|
-
};
|
|
42
|
-
var Trigger = function Trigger(_a) {
|
|
43
|
-
var props = __rest(_a, []);
|
|
44
|
-
return jsx(TabsBase.Trigger, _assign({
|
|
45
|
-
"data-frieeren-component": "TabsTrigger",
|
|
46
|
-
className: "tabs--trigger"
|
|
47
|
-
}, props));
|
|
48
|
-
};
|
|
49
|
-
var Content = function Content(_a) {
|
|
50
|
-
var props = __rest(_a, []);
|
|
51
|
-
return jsx(TabsBase.Content, _assign({
|
|
52
|
-
"data-frieeren-component": "TabsContent",
|
|
53
|
-
className: "tabs--content"
|
|
54
|
-
}, props));
|
|
55
|
-
};
|
|
56
|
-
|
|
57
28
|
/**
|
|
58
29
|
* 탭 인디케이터의 위치를 계산하고 관리하는 커스텀 훅
|
|
59
30
|
* @param {UseTabsIndicatorProps} props - 탭 인디케이터 설정
|
|
@@ -124,36 +95,29 @@ var Tabs = function Tabs(props) {
|
|
|
124
95
|
value = props.value,
|
|
125
96
|
rest = __rest(props, ["width", "tabItems", "value"]);
|
|
126
97
|
var listRef = useRef(null);
|
|
127
|
-
|
|
98
|
+
useTabsIndicator({
|
|
128
99
|
listRef: listRef
|
|
129
100
|
}).indicatorStyle;
|
|
130
|
-
return
|
|
101
|
+
return jsx(TabsBase.Root, _assign({
|
|
102
|
+
"data-frieeren-component": "Tabs",
|
|
103
|
+
className: "tabs",
|
|
131
104
|
value: value
|
|
132
105
|
}, rest, {
|
|
133
106
|
style: {
|
|
134
107
|
width: width
|
|
135
108
|
},
|
|
136
|
-
children:
|
|
109
|
+
children: jsx(TabsBase.List, {
|
|
137
110
|
ref: listRef,
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
className: "tabs--indicator",
|
|
149
|
-
style: indicatorStyle
|
|
150
|
-
})]
|
|
151
|
-
}), tabItems.map(function (item) {
|
|
152
|
-
return jsx(Content, {
|
|
153
|
-
value: item.value,
|
|
154
|
-
children: item.content
|
|
155
|
-
}, "tabContent_".concat(item.value));
|
|
156
|
-
})]
|
|
111
|
+
"data-orientation": "horizontal",
|
|
112
|
+
className: "tabs--list",
|
|
113
|
+
children: tabItems.map(function (item) {
|
|
114
|
+
return jsx(TabsBase.Trigger, {
|
|
115
|
+
value: item.value,
|
|
116
|
+
className: "tabs--trigger",
|
|
117
|
+
children: item.label
|
|
118
|
+
}, "tabTrigger_".concat(item.value));
|
|
119
|
+
})
|
|
120
|
+
})
|
|
157
121
|
}));
|
|
158
122
|
};
|
|
159
123
|
|
|
@@ -10,6 +10,7 @@ export declare const Button: React.ForwardRefExoticComponent<{
|
|
|
10
10
|
color?: string;
|
|
11
11
|
backgroundColor?: string;
|
|
12
12
|
borderColor?: string;
|
|
13
|
+
borderRadius?: React.CSSProperties["borderRadius"];
|
|
13
14
|
} & {
|
|
14
15
|
children?: React.ReactNode | undefined;
|
|
15
16
|
} & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -24,6 +25,7 @@ declare const LogButton: React.ForwardRefExoticComponent<{
|
|
|
24
25
|
color?: string;
|
|
25
26
|
backgroundColor?: string;
|
|
26
27
|
borderColor?: string;
|
|
28
|
+
borderRadius?: React.CSSProperties["borderRadius"];
|
|
27
29
|
} & {
|
|
28
30
|
children?: React.ReactNode | undefined;
|
|
29
31
|
} & {
|
|
@@ -12,6 +12,7 @@ declare const meta: {
|
|
|
12
12
|
color?: string;
|
|
13
13
|
backgroundColor?: string;
|
|
14
14
|
borderColor?: string;
|
|
15
|
+
borderRadius?: React.CSSProperties["borderRadius"];
|
|
15
16
|
} & {
|
|
16
17
|
children?: import("react").ReactNode | undefined;
|
|
17
18
|
} & {
|
|
@@ -37,6 +38,9 @@ declare const meta: {
|
|
|
37
38
|
disabled: {
|
|
38
39
|
description: string;
|
|
39
40
|
};
|
|
41
|
+
borderRadius: {
|
|
42
|
+
description: string;
|
|
43
|
+
};
|
|
40
44
|
};
|
|
41
45
|
};
|
|
42
46
|
export default meta;
|
|
@@ -14,6 +14,7 @@ export type ButtonProps = PropsWithChildren<{
|
|
|
14
14
|
color?: string;
|
|
15
15
|
backgroundColor?: string;
|
|
16
16
|
borderColor?: string;
|
|
17
|
+
borderRadius?: React.CSSProperties["borderRadius"];
|
|
17
18
|
}>;
|
|
18
19
|
export type LogButtonProps = ButtonProps & {
|
|
19
20
|
logParams?: Record<string, string>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { FloatingActionButtonProps } from "./FloatingActionButton.type";
|
|
2
|
+
export declare function FloatingActionButton({ disabled, className, position, top, left, bottom, right, actions, icon, openIcon, closeIcon, onClick }: FloatingActionButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { StoryObj } from "@storybook/react";
|
|
2
|
+
import { FloatingActionButton } from "./FloatingActionButton";
|
|
3
|
+
declare const meta: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: typeof FloatingActionButton;
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: string;
|
|
8
|
+
};
|
|
9
|
+
tags: string[];
|
|
10
|
+
argTypes: {
|
|
11
|
+
disabled: {
|
|
12
|
+
control: "boolean";
|
|
13
|
+
description: string;
|
|
14
|
+
};
|
|
15
|
+
position: {
|
|
16
|
+
control: "select";
|
|
17
|
+
options: string[];
|
|
18
|
+
description: string;
|
|
19
|
+
};
|
|
20
|
+
top: {
|
|
21
|
+
control: "number";
|
|
22
|
+
description: string;
|
|
23
|
+
};
|
|
24
|
+
left: {
|
|
25
|
+
control: "number";
|
|
26
|
+
description: string;
|
|
27
|
+
};
|
|
28
|
+
bottom: {
|
|
29
|
+
control: "number";
|
|
30
|
+
description: string;
|
|
31
|
+
};
|
|
32
|
+
right: {
|
|
33
|
+
control: "number";
|
|
34
|
+
description: string;
|
|
35
|
+
};
|
|
36
|
+
actions: {
|
|
37
|
+
control: "object";
|
|
38
|
+
description: string;
|
|
39
|
+
};
|
|
40
|
+
icon: {
|
|
41
|
+
control: "object";
|
|
42
|
+
description: string;
|
|
43
|
+
};
|
|
44
|
+
openIcon: {
|
|
45
|
+
control: "object";
|
|
46
|
+
description: string;
|
|
47
|
+
};
|
|
48
|
+
closeIcon: {
|
|
49
|
+
control: "object";
|
|
50
|
+
description: string;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
export default meta;
|
|
55
|
+
type Story = StoryObj<typeof meta>;
|
|
56
|
+
export declare const Base: Story;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type FloatingActionButtonAction = {
|
|
2
|
+
icon: React.ReactNode;
|
|
3
|
+
onClick?: () => void;
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export type FloatingActionButtonProps = {
|
|
7
|
+
className?: string;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
position?: "fixed" | "absolute";
|
|
10
|
+
top?: React.CSSProperties["top"];
|
|
11
|
+
left?: React.CSSProperties["left"];
|
|
12
|
+
bottom?: React.CSSProperties["bottom"];
|
|
13
|
+
right?: React.CSSProperties["right"];
|
|
14
|
+
actions?: FloatingActionButtonAction[];
|
|
15
|
+
icon?: React.ReactNode;
|
|
16
|
+
openIcon?: React.ReactNode;
|
|
17
|
+
closeIcon?: React.ReactNode;
|
|
18
|
+
onClick?: () => void;
|
|
19
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { FloatingActionButton } from "./FloatingActionButton";
|
|
@@ -1,22 +1,32 @@
|
|
|
1
1
|
import type { StoryObj } from "@storybook/react";
|
|
2
2
|
declare const meta: {
|
|
3
3
|
title: string;
|
|
4
|
-
component: import("react").ForwardRefExoticComponent<import("./
|
|
4
|
+
component: import("react").ForwardRefExoticComponent<import("./Switch.type").SwitchProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
5
5
|
parameters: {
|
|
6
6
|
layout: string;
|
|
7
7
|
};
|
|
8
8
|
tags: string[];
|
|
9
9
|
argTypes: {
|
|
10
|
-
|
|
11
|
-
control:
|
|
10
|
+
defaultValue: {
|
|
11
|
+
control: "boolean";
|
|
12
12
|
description: string;
|
|
13
13
|
};
|
|
14
14
|
onChange: {
|
|
15
15
|
action: string;
|
|
16
16
|
description: string;
|
|
17
17
|
};
|
|
18
|
+
disabled: {
|
|
19
|
+
control: "boolean";
|
|
20
|
+
description: string;
|
|
21
|
+
};
|
|
22
|
+
value: {
|
|
23
|
+
control: "boolean";
|
|
24
|
+
description: string;
|
|
25
|
+
};
|
|
18
26
|
};
|
|
19
27
|
};
|
|
20
28
|
export default meta;
|
|
21
29
|
type Story = StoryObj<typeof meta>;
|
|
22
|
-
export declare const
|
|
30
|
+
export declare const Base: Story;
|
|
31
|
+
export declare const Disabled: Story;
|
|
32
|
+
export declare const SwitchGroup: Story;
|
|
@@ -5,7 +5,7 @@ import type { StoryObj } from "@storybook/react";
|
|
|
5
5
|
*/
|
|
6
6
|
declare const meta: {
|
|
7
7
|
title: string;
|
|
8
|
-
component: import("
|
|
8
|
+
component: (props: import("./Tabs.type").TabsProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
9
|
parameters: {
|
|
10
10
|
layout: string;
|
|
11
11
|
};
|
|
@@ -16,13 +16,12 @@ declare const meta: {
|
|
|
16
16
|
options: string[];
|
|
17
17
|
description: string;
|
|
18
18
|
};
|
|
19
|
-
|
|
20
|
-
control: "object";
|
|
21
|
-
description: string;
|
|
22
|
-
};
|
|
23
|
-
dir: {
|
|
19
|
+
tabItems: {
|
|
24
20
|
control: "select";
|
|
25
|
-
options:
|
|
21
|
+
options: {
|
|
22
|
+
value: string;
|
|
23
|
+
label: import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
}[];
|
|
26
25
|
description: string;
|
|
27
26
|
};
|
|
28
27
|
defaultValue: {
|
|
@@ -34,5 +33,4 @@ declare const meta: {
|
|
|
34
33
|
};
|
|
35
34
|
export default meta;
|
|
36
35
|
type Story = StoryObj<typeof meta>;
|
|
37
|
-
export declare const
|
|
38
|
-
export declare function ControlledTabs(): import("react/jsx-runtime").JSX.Element;
|
|
36
|
+
export declare const Base: Story;
|
|
@@ -2,14 +2,13 @@ import * as TabsBase from "@radix-ui/react-tabs";
|
|
|
2
2
|
import { ReactNode, RefObject } from "react";
|
|
3
3
|
interface TabItem {
|
|
4
4
|
value: string;
|
|
5
|
-
|
|
6
|
-
content: ReactNode;
|
|
5
|
+
label: ReactNode;
|
|
7
6
|
}
|
|
8
|
-
interface
|
|
7
|
+
export interface UseTabsIndicatorProps {
|
|
8
|
+
listRef: RefObject<HTMLDivElement>;
|
|
9
|
+
}
|
|
10
|
+
export interface TabsProps extends Omit<TabsBase.TabsProps, "children" | "dir"> {
|
|
9
11
|
width?: string;
|
|
10
12
|
tabItems: TabItem[];
|
|
11
13
|
}
|
|
12
|
-
|
|
13
|
-
listRef: RefObject<HTMLDivElement>;
|
|
14
|
-
}
|
|
15
|
-
export { TabsProps, TabItem, UseTabsIndicatorProps };
|
|
14
|
+
export {};
|
package/dist/index.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
@charset "UTF-8";
|
|
2
|
-
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{-webkit-text-size-adjust:100%;line-height:1.15}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}:root{--seed-color-brand-primary:#3a8dff;--seed-color-brand-secondary:#637a99;--seed-color-brand-caution:#f3b132;--seed-color-brand-error:#ff6b6b;--seed-color-brand-success:#00c896;--seed-color-brand-warning:#ffb03a;--seed-color-neatural-neutral100:#f7f9fc;--seed-color-neatural-neutral200:#e3e8ef;--seed-color-neatural-neutral300:#cdd5df;--seed-color-neatural-neutral400:#a8b2bf;--seed-color-neatural-neutral500:#7c8899;--seed-color-neatural-neutral600:#5a6777;--seed-color-neatural-neutral700:#414c59;--seed-color-neatural-neutral800:#2a3038;--seed-font-weight-title1:700;--seed-font-weight-subtitle1:700;--seed-font-weight-body1:700;--seed-font-line-height-title1:140%;--seed-font-line-height-subtitle1:140%;--seed-font-line-height-body1:140%;--seed-font-letter-spacing-title1:-2%;--seed-font-letter-spacing-subtitle1:-2%;--seed-font-letter-spacing-body1:-2%;--seed-font-size-title1:24px;--seed-font-size-subtitle1:20px;--seed-font-size-body1:16px}.box{box-sizing:border-box}:root{--button-loading-dot-delay:0.2s;--button-loading-dot-duration:1.4s}.button{border:none;border-radius:var(--seed-spacing-300);box-sizing:border-box;cursor:pointer;font-weight:500;position:relative;transition:all .2s ease-in-out}.button:disabled{cursor:not-allowed}.button.button--loading{cursor:wait}.button--size-lg{font-size:16px;gap:var(--seed-spacing-300);height:52px;padding:var(--seed-spacing-500) var(--seed-spacing-700)}.button--size-lg>.button--content span{height:20px}.button--size-md{font-size:14px;gap:var(--seed-spacing-300);height:48px;padding:var(--seed-spacing-300) var(--seed-spacing-400)}.button--size-md>.button--content span{height:20px}.button--type-solid-green{background-color:var(--seed-brand-color-primary);color:var(--seed-ui-color-line-white)}.button--type-solid-green:active:not(:disabled),.button--type-solid-green:hover:not(:disabled){background-color:var(--seed-palette-color-green-700)}.button--type-solid-green.disabled{background-color:var(--seed-ui-color-background-guide);border-color:var(--seed-ui-color-background-guide);color:var(--seed-ui-color-text-disabled)}.button--type-solid-red{background-color:var(--seed-brand-color-point2);color:var(--seed-ui-color-line-white)}.button--type-solid-red:active:not(:disabled),.button--type-solid-red:hover:not(:disabled){background-color:var(--seed-palette-color-red-600)}.button--type-solid-red.disabled{background-color:var(--seed-ui-color-background-guide);border-color:var(--seed-ui-color-background-guide);color:var(--seed-ui-color-text-disabled)}.button--type-outline-green{background-color:var(--seed-ui-color-background-container);border:1px solid var(--seed-brand-color-primary);color:var(--seed-brand-color-primary)}.button--type-outline-green:active:not(:disabled),.button--type-outline-green:hover:not(:disabled){background-color:var(--seed-brand-color-secondary2)}.button--type-outline-green.disabled{background-color:var(--seed-ui-color-background-white);border-color:var(---seed-ui-color-line-lite);color:var(--seed-ui-color-text-disabled)}.button--type-outline-gray{background-color:var(--seed-ui-color-background-white);border:1px solid var(--seed-ui-color-line-dark);color:var(--seed-ui-color-text-black)}.button--type-outline-gray:active:not(:disabled),.button--type-outline-gray:hover:not(:disabled){background-color:var(--seed-ui-color-background-gray)}.button--type-outline-gray.disabled{background-color:var(--seed-ui-color-background-white);border-color:var(---seed-ui-color-line-lite);color:var(--seed-ui-color-text-disabled)}.button--type-text-none{background-color:transparent;color:var(--seed-ui-color-text-black)}.button--type-text-none:active:not(:disabled),.button--type-text-none:hover:not(:disabled){color:var(--seed-ui-color-text-lite)}.button--type-text-none.disabled{color:var(--seed-ui-color-text-disabled)}.button--display-inline{display:inline-flex}.button--display-block{display:flex}.button--content,.button--display-full{display:flex;width:100%}.button--content{align-items:center;flex-direction:row;justify-content:center;opacity:1;transition:opacity .2s}.button--content.button--content--hidden{opacity:0}.button--loading{align-items:center;display:flex;gap:12px;justify-content:center;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.button--loading-dot{animation:loadingDot var(--button-loading-dot-duration) infinite;background-color:currentColor;border-radius:50%;height:8px;opacity:0;width:8px}.button--loading-dot:nth-child(2){animation-delay:var(--button-loading-dot-delay)}.button--loading-dot:nth-child(3){animation-delay:calc(var(--button-loading-dot-delay)*2)}@keyframes loadingDot{0%,20%{opacity:0;transform:translateY(0)}50%{opacity:1;transform:translateY(-2px)}80%,to{opacity:0;transform:translateY(0)}}:root{--font-weight-regular:400;--font-weight-medium:500;--font-weight-bold:700;--font-size-heading:24px;--font-size-body:16px;--font-size-text:14px;--line-height-default:1.4;--font-display-block:block;--font-display-inline-block:inline-block;--font-display-inline:inline;--font-display-flex:flex;--font-display-inline-flex:inline-flex;--font-display-none:none}.text{box-sizing:border-box}.text--font-weight-regular{font-weight:var(--font-weight-regular)}.text--font-weight-medium{font-weight:var(--font-weight-medium)}.text--font-weight-bold{font-weight:var(--font-weight-bold)}.text--typography-heading{font-size:var(--font-size-heading);line-height:var(--line-height-default)}.text--typography-body{font-size:var(--font-size-body);line-height:var(--line-height-default)}.text--typography-text{font-size:var(--font-size-text);line-height:var(--line-height-default)}.text--single-line{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--multi-line{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.text--display-block{display:var(--font-display-block)}.text--display-inline-block{display:var(--font-display-inline-block)}.text--display-inline{display:var(--font-display-inline)}.text--display-flex{display:var(--font-display-flex)}.text--display-inline-flex{display:var(--font-display-inline-flex)}.text--display-none{display:var(--font-display-none)}:root{--seed-palette-color-base-900:#25292c}.overlay{animation:overlayShow .25s cubic-bezier(.3,0,0,1)}.dialog-content{animation:contentShow .3s cubic-bezier(.3,0,0,1);background-color:#fff;border-radius:6px;box-shadow:0 10px 38px -10px rgba(14,18,22,.35),0 10px 20px -15px rgba(14,18,22,.2);left:50%;max-height:85vh;max-width:450px;padding:25px;position:fixed;top:50%;transform:translate(-50%,-50%);width:90vw}.dialog-handle{margin-top:10px;width:45px}@keyframes overlayShow{0%{opacity:0}to{opacity:1}}@keyframes contentShow{0%{opacity:0;transform:translate(-50%,-48%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.dialog-content--theme-light{background-color:var(--seed-palette-color-base-100)}.dialog-content--theme-dark{background-color:var(--seed-palette-color-base-900)}.dialog-content--radius-none{border-radius:var(--seed-spacing-100)}.dialog-content--radius-small{border-radius:var(--seed-spacing-300)}.dialog-content--radius-medium{border-radius:var(--seed-spacing-600)}.dialog-content--radius-large{border-radius:var(--seed-spacing-900)}.popover-content{animation-duration:.4s;animation-timing-function:cubic-bezier(.16,1,.3,1);background-color:#fff;border-radius:4px;box-shadow:0 10px 38px -10px rgba(14,18,22,.35),0 10px 20px -15px rgba(14,18,22,.2);padding:20px;width:260px;will-change:transform,opacity}:root{--seed-palette-color-base-500:#c6ccd1;--seed-palette-color-base-1000:#191b1c;--seed-palette-color-blue-200:#e0f2fe;--seed-palette-color-blue-800:#0369a1;--seed-palette-color-blue-1000:#0c4a6e}.SelectTrigger{align-items:center;background-color:#fff;border-radius:4px;box-shadow:0 2px 10px var(--seed-palette-color-base-1000);color:var(--seed-palette-color-base-1000);display:inline-flex;font-size:13px;gap:5px;height:35px;justify-content:center;line-height:1;padding:0 15px}.SelectTrigger:hover{background-color:var(--seed-palette-color-blue-200)}.SelectTrigger:focus{box-shadow:0 0 0 2px #000}.SelectTrigger[data-placeholder]{color:var(--seed-palette-color-base-800)}.SelectIcon{color:var(--seed-palette-color-base-1000)}.SelectContent{background-color:#fff;border-radius:6px;box-shadow:0 10px 38px -10px rgba(22,23,24,.35),0 10px 20px -15px rgba(22,23,24,.2);overflow:hidden}.SelectViewport{padding:5px}.SelectItem{align-items:center;border-radius:3px;color:var(--seed-palette-color-base-1000);display:flex;font-size:13px;height:25px;line-height:1;padding:0 35px 0 25px;position:relative;user-select:none}.SelectItem[data-disabled]{color:var(--seed-palette-color-blue-800);pointer-events:none}.SelectItem[data-highlighted]{background-color:var(--seed-palette-color-base-800);color:var(--seed-color-violet-1);outline:none}.SelectLabel{color:var(--seed-palette-color-blue-1000);font-size:12px;line-height:25px;padding:0 25px}.SelectSeparator{background-color:var(--seed-palette-color-base-500);height:1px;margin:5px}.SelectItemIndicator{display:inline-flex;left:0;position:absolute;width:25px}.SelectItemIndicator,.SelectScrollButton{align-items:center;justify-content:center}.SelectScrollButton{background-color:#fff;color:var(--seed-palette-color-base-1000);cursor:default;display:flex;height:25px}.toggle{background-color:var(--seed-palette-color-base-400);border-radius:var(--seed-rounding-500);height:28px;position:relative;width:52px}.toggle[data-state=checked]{background-color:var(--seed-brand-color-primary)}.toggle-thumb{background-color:var(--seed-ui-color-icon-white);border-radius:var(--seed-rounding-400);box-shadow:0 4px 4px 0 rgba(0,0,0,.15);display:block;height:22px;transform:translateX(4px);transition:transform .1s;width:22px;will-change:transform}.toggle-thumb[data-state=checked]{transform:translateX(26px)}:root{--input-transition:0.2s ease-in-out}.input-wrapper{align-items:center;display:flex;position:relative;width:100%}.input-wrapper.input--display-line .input{border:1px solid var(--seed-ui-color-line-medium);border-radius:0}.input-wrapper.input--display-line .input:focus,.input-wrapper.input--display-line .input:hover:not(:disabled){border-bottom-color:var(--seed-brand-color-primary)}.input-wrapper.input--display-box .input{border:1px solid var(--seed-ui-color-line-medium);border-radius:var(--seed-spacing-300)}.input-wrapper.input--display-box .input:focus,.input-wrapper.input--display-box .input:hover:not(:disabled){border-color:var(--seed-brand-color-primary)}.input-wrapper.input--error .input,.input-wrapper.input--error .input:focus{border-color:var(--seed-brand-color-point2)}.input-wrapper.input--disabled{cursor:not-allowed;opacity:.5}.input-wrapper.input--disabled .input{border:1px solid var(--seed-ui-color-line-medium);color:var(--seed-ui-color-text-disabled)}.input{background:var(--seed-ui-color-background-white);color:var(--seed-ui-color-text-black);font-size:var(--seed-font-size-sm);height:var(--seed-font-line-height-lg);line-height:var(--seed-font-size-sm);padding:17px var(--seed-spacing-500);transition:all var(--input-transition);width:100%}.input:focus{outline:none}.input[type=file]{color:transparent;cursor:pointer}.input[type=file]::-webkit-file-upload-button{visibility:hidden;width:0}.input[type=file]:before{color:var(--seed-ui-color-text-lite);content:"파일 선택"}.input[type=file].has-file:before{color:var(--seed-ui-color-text-black);content:"파일 선택 완료"}.input[type=file]:disabled:before{background:var(--seed-ui-color-background-guide);color:var(--seed-ui-color-text-disabled);cursor:not-allowed}.input--action{background:none;border:none;color:var(--seed-ui-color-text-lite);cursor:pointer;position:absolute;right:var(--seed-spacing-500);top:50%;transform:translateY(-50%)}.input--action:hover:not(:disabled){color:var(--seed-ui-color-text-dark)}.input--action.input--action-link{height:24px}.input--action.input--close{height:16px}.tabs{display:flex;flex-direction:column;position:relative}.tabs--indicator,.tabs--list,.tabs--trigger{box-sizing:border-box}.tabs--list-wrapper{position:relative}.tabs--list{background-color:var(--seed-ui-color-background-chips);display:flex;gap:var(--seed-spacing-200);height:48px;padding:var(--seed-spacing-200)}.tabs--indicator,.tabs--list{border-radius:var(--seed-rounding-500)}.tabs--indicator{background-color:var(--seed-ui-color-background-white);box-shadow:4px 4px 20px 0 rgba(0,0,0,.08);height:calc(48px - var(--seed-spacing-200)*2);left:0;position:absolute;top:var(--seed-spacing-200);transition:all .2s ease-in-out;z-index:0}.tabs--trigger{align-items:center;border-radius:var(--seed-rounding-400);display:flex;flex:1;font-size:var(--seed-font-size-s);justify-content:center;position:relative;transition:all .2s ease-in-out;z-index:1}.tabs--trigger[data-state=inactive]{color:var(--seed-ui-color-text-lite);font-weight:var(--seed-font-weight-400)}.tabs--trigger[data-state=active]{color:var(--seed-ui-color-text-black);font-weight:var(--seed-font-weight-700)}:root{--seed-palette-color-base-100:#fff;--seed-palette-color-base-800:#494f54;--seed-spacing-100:0px;--seed-spacing-300:8px;--seed-spacing-600:20px;--seed-spacing-900:32px}.overlay{background-color:rgba(0,0,0,.4);inset:0;position:fixed}.drawer-content{background-color:#fff;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important;bottom:0;height:fit-content;left:0;max-height:calc(100dvh - 32px);outline:none;overflow-y:hidden;position:fixed;right:0}.drawer-content-inner{-webkit-overflow-scrolling:touch;max-height:calc(100dvh - 68px);overflow-y:auto}.bottomsheet-container--radius-none{border-top:var(--seed-spacing-100)}.bottomsheet-container--radius-small{border-radius:var(--seed-spacing-300)}.bottomsheet-container--radius-medium{border-radius:var(--seed-spacing-700)}.bottomsheet-container--radius-large{border-radius:var(--seed-spacing-900)}.bottomsheet-container--theme-light{background-color:var(--seed-palette-color-base-100)}.bottomsheet-container--theme-dark{background-color:var(--seed-palette-color-base-800)}.drawer-handle{height:36px;width:100%}@keyframes toast-enter-top{0%{opacity:.5;transform:translate3d(0,-200%,0) scale(.6)}to{opacity:1;transform:translateZ(0) scale(1)}}@keyframes toast-exit-top{0%{opacity:1;transform:translateZ(-1px) scale(1)}to{opacity:0;transform:translate3d(0,-150%,-1px) scale(.6)}}@keyframes toast-enter-bottom{0%{opacity:.5;transform:translate3d(0,200%,0) scale(.6)}to{opacity:1;transform:translateZ(0) scale(1)}}@keyframes toast-exit-bottom{0%{opacity:1;transform:translateZ(-1px) scale(1)}to{opacity:0;transform:translate3d(0,150%,-1px) scale(.6)}}@keyframes toast-fade-in{0%{opacity:0}to{opacity:1}}@keyframes toast-fade-out{0%{opacity:1}to{opacity:0}}.toast--content{align-items:center;background:var(--seed-ui-color-misc-black-70);border-radius:var(--seed-rounding-300);box-shadow:0 3px 10px rgba(0,0,0,.1),0 3px 3px rgba(0,0,0,.05);box-sizing:border-box;color:#363636;display:flex;gap:var(--seed-spacing-600);justify-content:space-between;min-height:56px;opacity:0;padding:var(--seed-spacing-500);pointer-events:auto;position:relative;transition:transform .23s cubic-bezier(.21,1.02,.73,1);will-change:transform}.toast--content.top.visible{animation:toast-enter-top .35s cubic-bezier(.21,1.02,.73,1) forwards}.toast--content.top.hidden{animation:toast-exit-top .4s cubic-bezier(.06,.71,.55,1) forwards}.toast--content.bottom.visible{animation:toast-enter-bottom .35s cubic-bezier(.21,1.02,.73,1) forwards}.toast--content.bottom.hidden{animation:toast-exit-bottom .4s cubic-bezier(.06,.71,.55,1) forwards}@media (prefers-reduced-motion:reduce){.toast--content.visible{animation:toast-fade-in .35s ease-in forwards}.toast--content.hidden{animation:toast-fade-out .4s ease-out forwards}}.toast--type-message{gap:var(--seed-spacing-300)}.toast--type-icon,.toast--type-message{align-items:center;display:flex}.toast--type-icon[data-toast-type=default]{display:none}.toast--message{color:var(--seed-ui-color-text-white);font-size:var(--seed-font-size-s);font-weight:var(--seed-font-weight-400);line-height:var(--seed-font-line-height-sm)}.toast--action-link{text-decoration:underline;text-underline-offset:2px}.toast--action-button,.toast--action-link{color:var(--seed-ui-color-text-white);cursor:pointer;flex-shrink:0;font-size:var(--seed-font-size-xs);font-weight:var(--seed-font-weight-400)}.toast--action-button{align-items:center;background-color:var(--seed-brand-color-primary);border-radius:var(--seed-rounding-400);display:flex;justify-content:center;padding:var(--seed-spacing-200) var(--seed-spacing-300)}.toaster-content{bottom:0;left:0;pointer-events:none;position:fixed;right:0;top:0;z-index:9999}.toast-wrapper{position:absolute}.toast-wrapper>*{transition:all .23s cubic-bezier(.21,1.02,.73,1)}.toast-wrapper.toast-wrapper--top-right{right:0}.toast-wrapper.toast-wrapper--top-left{left:0}.toast-wrapper.toast-wrapper--top-center{left:50%}.toast-wrapper.toast-wrapper--bottom-right{bottom:0;right:0}.toast-wrapper.toast-wrapper--bottom-left{bottom:0;left:0}.toast-wrapper.toast-wrapper--bottom-center{bottom:0;left:50%}.popup{animation:popup-content-show .15s cubic-bezier(.16,1,.3,1);background-color:var(--seed-ui-color-background-white);border-radius:16px;box-shadow:0 4px 16px 0 hsla(0,0%,43%,.07);left:50%;max-height:85vh;max-width:450px;overflow-y:auto;padding:24px 16px;position:fixed;top:50%;transform:translate(-50%,-50%);width:100%}.popup:focus{outline:none}.popup--actions{display:flex;gap:8px;justify-content:flex-end;margin-top:24px}.popup--actions>*{flex:1}.popup--actions-typeB{display:flex;gap:8px;justify-content:space-between}.popup--actions-left{flex:0 0 auto;min-width:76px}.popup--actions-right{flex:1 1 auto}@keyframes popup-overlay-show{0%{opacity:0}to{opacity:1}}@keyframes popup-content-show{0%{opacity:0;transform:translate(-50%,-48%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.visually-hidden{clip:rect(0 0 0 0);word-wrap:normal;border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}
|
|
1
|
+
@charset "UTF-8";@import url("https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.min.css");
|
|
2
|
+
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{-webkit-text-size-adjust:100%;line-height:1.15}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}:root{--seed-palette-color-base-200:#f6f7f9;--seed-palette-color-base-300:#edf0f3;--seed-palette-color-base-400:#e0e5ea;--seed-palette-color-base-600:#a6abaf;--seed-palette-color-base-700:#7b8287;--seed-palette-color-blue-100:#f0f9ff;--seed-palette-color-blue-300:#bae6fd;--seed-palette-color-blue-400:#7dd3fc;--seed-palette-color-blue-500:#38bdf8;--seed-palette-color-blue-600:#0ea5e9;--seed-palette-color-blue-700:#0284c7;--seed-palette-color-blue-900:#075985;--seed-palette-color-purple-100:#f9fafe;--seed-palette-color-purple-200:#ecedfc;--seed-palette-color-purple-300:#d0d2f7;--seed-palette-color-purple-400:#b5b8f2;--seed-palette-color-purple-500:#9a9eec;--seed-palette-color-purple-600:#7a82e4;--seed-palette-color-purple-700:#6167c9;--seed-palette-color-purple-800:#5756a6;--seed-palette-color-purple-900:#494582;--seed-palette-color-purple-1000:#38325d;--seed-palette-color-red-100:#fef2f2;--seed-palette-color-red-200:#fee2e2;--seed-palette-color-red-300:#fecaca;--seed-palette-color-red-400:#fca5a5;--seed-palette-color-red-500:#f87171;--seed-palette-color-red-600:#ef4444;--seed-palette-color-red-700:#dc2626;--seed-palette-color-red-800:#b91c1c;--seed-palette-color-red-900:#991b1b;--seed-palette-color-red-1000:#7f1d1d;--seed-palette-color-orange-100:#fff7ed;--seed-palette-color-orange-200:#ffedd5;--seed-palette-color-orange-300:#fed7aa;--seed-palette-color-orange-400:#fdba74;--seed-palette-color-orange-500:#fb923c;--seed-palette-color-orange-600:#f97316;--seed-palette-color-orange-700:#ea580c;--seed-palette-color-orange-800:#c2410c;--seed-palette-color-orange-900:#9a3412;--seed-palette-color-orange-1000:#7c2d12;--seed-palette-color-yellow-100:#fefce8;--seed-palette-color-yellow-200:#fef9c3;--seed-palette-color-yellow-300:#fef08a;--seed-palette-color-yellow-400:#fde047;--seed-palette-color-yellow-500:#facc15;--seed-palette-color-yellow-600:#eab308;--seed-palette-color-yellow-700:#ca8a04;--seed-palette-color-yellow-800:#a16207;--seed-palette-color-yellow-900:#854d0e;--seed-palette-color-yellow-1000:#713f12;--seed-palette-color-green-100:#e9ffe9;--seed-palette-color-green-200:#d5ffd5;--seed-palette-color-green-300:#bdffbd;--seed-palette-color-green-400:#89ee89;--seed-palette-color-green-500:#60e060;--seed-palette-color-green-600:#50bf50;--seed-palette-color-green-700:#2fa32f;--seed-palette-color-green-800:#1e861e;--seed-palette-color-green-900:#156015;--seed-palette-color-green-1000:#063f06;--seed-ui-color-text-white:#fff;--seed-ui-color-text-disabled:#c6ccd1;--seed-ui-color-text-lite:#a6abaf;--seed-ui-color-text-dark:#494f54;--seed-ui-color-text-black:#191b1c;--seed-ui-color-background-white:#fff;--seed-ui-color-background-container:#fff;--seed-ui-color-background-gray:#f6f7f9;--seed-ui-color-background-chips:#f6f7f9;--seed-ui-color-background-placeholder:#e0e5ea;--seed-ui-color-background-guide:#e0e5ea;--seed-ui-color-background-focus:#191b1c;--seed-ui-color-icon-white:#fff;--seed-ui-color-icon-lite:#a6abaf;--seed-ui-color-icon-dark:#494f54;--seed-ui-color-icon-black:#191b1c;--seed-ui-color-line-white:#fff;--seed-ui-color-line-lite:#edf0f3;--seed-ui-color-line-medium:#c6ccd1;--seed-ui-color-line-dark:#494f54;--seed-ui-color-line-focus:#25292c;--seed-ui-color-toast-complete:#50bf50;--seed-ui-color-toast-error:#ef4444;--seed-ui-color-toast-caution:#fef08a;--seed-ui-color-misc-black-70:rgba(0,0,0,.7);--seed-ui-color-misc-black-40:rgba(0,0,0,.4);--seed-brand-color-primary:#50bf50;--seed-brand-color-secondary1:#bdffbd;--seed-brand-color-secondary2:#e9ffe9;--seed-brand-color-point1:#ef4444;--seed-brand-color-point2:#f87171;--seed-brand-color-point3:#fb923c;--seed-brand-color-point4:#fef08a;--seed-font-family-head:pretendard;--seed-font-family-title:pretendard;--seed-font-family-body:pretendard;--seed-font-family-paragraph:pretendard;--seed-font-family-caption:pretendard;--seed-font-weight-400:regular;--seed-font-weight-500:medium;--seed-font-weight-700:bold;--seed-font-size-xs:12px;--seed-font-size-s:14px;--seed-font-size-sm:16px;--seed-font-size-md:18px;--seed-font-size-lg:20px;--seed-font-size-xl:22px;--seed-font-size-2xl:24px;--seed-font-size-4xl:32px;--seed-font-size-5xl:40px;--seed-font-size-6xl:48px;--seed-font-size-3xl:28px;--seed-font-line-height-sm:16px;--seed-font-line-height-2xl:24px;--seed-font-line-height-4xl:32px;--seed-font-line-height-5xl:40px;--seed-font-line-height-6xl:48px;--seed-font-line-height-lg:20px;--seed-font-line-height-3xl:28px;--seed-font-line-height-s:14px;--seed-spacing-200:4px;--seed-spacing-400:12px;--seed-spacing-500:16px;--seed-spacing-700:24px;--seed-spacing-800:28px;--seed-spacing-1000:40px;--seed-spacing-1100:48px;--seed-spacing-1200:56px;--seed-spacing-1300:64px;--seed-spacing-1400:72px;--seed-rounding-100:0px;--seed-rounding-200:4px;--seed-rounding-300:8px;--seed-rounding-400:12px;--seed-rounding-500:16px;--seed-rounding-600:20px;--seed-rounding-700:24px;--seed-rounding-800:28px;--seed-rounding-900:32px;--seed-rounding-1000:40px;--seed-rounding-1100:48px;--seed-rounding-1200:56px;--seed-rounding-1300:64px;--seed-rounding-1400:72px;--seed-color-brand-primary:#3a8dff;--seed-color-brand-secondary:#637a99;--seed-color-brand-caution:#f3b132;--seed-color-brand-error:#ff6b6b;--seed-color-brand-success:#00c896;--seed-color-brand-warning:#ffb03a;--seed-color-neatural-neutral100:#f7f9fc;--seed-color-neatural-neutral200:#e3e8ef;--seed-color-neatural-neutral300:#cdd5df;--seed-color-neatural-neutral400:#a8b2bf;--seed-color-neatural-neutral500:#7c8899;--seed-color-neatural-neutral600:#5a6777;--seed-color-neatural-neutral700:#414c59;--seed-color-neatural-neutral800:#2a3038;--seed-font-weight-title1:700;--seed-font-weight-subtitle1:700;--seed-font-weight-body1:700;--seed-font-line-height-title1:140%;--seed-font-line-height-subtitle1:140%;--seed-font-line-height-body1:140%;--seed-font-letter-spacing-title1:-2%;--seed-font-letter-spacing-subtitle1:-2%;--seed-font-letter-spacing-body1:-2%;--seed-font-size-title1:24px;--seed-font-size-subtitle1:20px;--seed-font-size-body1:16px}.box{box-sizing:border-box}:root{--button-loading-dot-delay:0.2s;--button-loading-dot-duration:1.4s}.button{border:none;border-radius:var(--seed-spacing-300);box-sizing:border-box;cursor:pointer;font-weight:500;position:relative;transition:all .2s ease-in-out}.button:disabled{cursor:not-allowed}.button.button--loading{cursor:wait}.button--size-lg{font-size:16px;gap:var(--seed-spacing-300);height:52px;padding:var(--seed-spacing-500) var(--seed-spacing-700)}.button--size-lg>.button--content span{height:20px}.button--size-md{font-size:14px;gap:var(--seed-spacing-300);height:48px;padding:var(--seed-spacing-300) var(--seed-spacing-400)}.button--size-md>.button--content span{height:20px}.button--type-solid-green{background-color:var(--seed-brand-color-primary);color:var(--seed-ui-color-line-white)}.button--type-solid-green:active:not(:disabled),.button--type-solid-green:hover:not(:disabled){background-color:var(--seed-palette-color-green-700)}.button--type-solid-green.disabled{background-color:var(--seed-ui-color-background-guide);border-color:var(--seed-ui-color-background-guide);color:var(--seed-ui-color-text-disabled)}.button--type-solid-red{background-color:var(--seed-brand-color-point2);color:var(--seed-ui-color-line-white)}.button--type-solid-red:active:not(:disabled),.button--type-solid-red:hover:not(:disabled){background-color:var(--seed-palette-color-red-600)}.button--type-solid-red.disabled{background-color:var(--seed-ui-color-background-guide);border-color:var(--seed-ui-color-background-guide);color:var(--seed-ui-color-text-disabled)}.button--type-outline-green{background-color:var(--seed-ui-color-background-container);border:1px solid var(--seed-brand-color-primary);color:var(--seed-brand-color-primary)}.button--type-outline-green:active:not(:disabled),.button--type-outline-green:hover:not(:disabled){background-color:var(--seed-brand-color-secondary2)}.button--type-outline-green.disabled{background-color:var(--seed-ui-color-background-white);border-color:var(---seed-ui-color-line-lite);color:var(--seed-ui-color-text-disabled)}.button--type-outline-gray{background-color:var(--seed-ui-color-background-white);border:1px solid var(--seed-ui-color-line-dark);color:var(--seed-ui-color-text-black)}.button--type-outline-gray:active:not(:disabled),.button--type-outline-gray:hover:not(:disabled){background-color:var(--seed-ui-color-background-gray)}.button--type-outline-gray.disabled{background-color:var(--seed-ui-color-background-white);border-color:var(---seed-ui-color-line-lite);color:var(--seed-ui-color-text-disabled)}.button--type-text-none{background-color:transparent;color:var(--seed-ui-color-text-black)}.button--type-text-none:active:not(:disabled),.button--type-text-none:hover:not(:disabled){color:var(--seed-ui-color-text-lite)}.button--type-text-none.disabled{color:var(--seed-ui-color-text-disabled)}.button--display-inline{display:inline-flex}.button--display-block{display:flex}.button--content,.button--display-full{display:flex;width:100%}.button--content{align-items:center;flex-direction:row;justify-content:center;opacity:1;transition:opacity .2s}.button--content.button--content--hidden{opacity:0}.button--loading{align-items:center;display:flex;gap:12px;justify-content:center;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.button--loading-dot{animation:loadingDot var(--button-loading-dot-duration) infinite;background-color:currentColor;border-radius:50%;height:8px;opacity:0;width:8px}.button--loading-dot:nth-child(2){animation-delay:var(--button-loading-dot-delay)}.button--loading-dot:nth-child(3){animation-delay:calc(var(--button-loading-dot-delay)*2)}@keyframes loadingDot{0%,20%{opacity:0;transform:translateY(0)}50%{opacity:1;transform:translateY(-2px)}80%,to{opacity:0;transform:translateY(0)}}:root{--font-weight-regular:400;--font-weight-medium:500;--font-weight-bold:700;--font-size-heading:24px;--font-size-body:16px;--font-size-text:14px;--line-height-default:1.4;--font-display-block:block;--font-display-inline-block:inline-block;--font-display-inline:inline;--font-display-flex:flex;--font-display-inline-flex:inline-flex;--font-display-none:none}.text{box-sizing:border-box}.text--font-weight-regular{font-weight:var(--font-weight-regular)}.text--font-weight-medium{font-weight:var(--font-weight-medium)}.text--font-weight-bold{font-weight:var(--font-weight-bold)}.text--typography-heading{font-size:var(--font-size-heading);line-height:var(--line-height-default)}.text--typography-body{font-size:var(--font-size-body);line-height:var(--line-height-default)}.text--typography-text{font-size:var(--font-size-text);line-height:var(--line-height-default)}.text--single-line{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--multi-line{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.text--display-block{display:var(--font-display-block)}.text--display-inline-block{display:var(--font-display-inline-block)}.text--display-inline{display:var(--font-display-inline)}.text--display-flex{display:var(--font-display-flex)}.text--display-inline-flex{display:var(--font-display-inline-flex)}.text--display-none{display:var(--font-display-none)}:root{--seed-palette-color-base-900:#25292c}.overlay{animation:overlayShow .25s cubic-bezier(.3,0,0,1)}.dialog-content{animation:contentShow .3s cubic-bezier(.3,0,0,1);background-color:#fff;border-radius:6px;box-shadow:0 10px 38px -10px rgba(14,18,22,.35),0 10px 20px -15px rgba(14,18,22,.2);left:50%;max-height:85vh;max-width:450px;padding:25px;position:fixed;top:50%;transform:translate(-50%,-50%);width:90vw}.dialog-handle{margin-top:10px;width:45px}@keyframes overlayShow{0%{opacity:0}to{opacity:1}}@keyframes contentShow{0%{opacity:0;transform:translate(-50%,-48%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.dialog-content--theme-light{background-color:var(--seed-palette-color-base-100)}.dialog-content--theme-dark{background-color:var(--seed-palette-color-base-900)}.dialog-content--radius-none{border-radius:var(--seed-spacing-100)}.dialog-content--radius-small{border-radius:var(--seed-spacing-300)}.dialog-content--radius-medium{border-radius:var(--seed-spacing-600)}.dialog-content--radius-large{border-radius:var(--seed-spacing-900)}.popover-content{animation-duration:.4s;animation-timing-function:cubic-bezier(.16,1,.3,1);background-color:#fff;border-radius:4px;box-shadow:0 10px 38px -10px rgba(14,18,22,.35),0 10px 20px -15px rgba(14,18,22,.2);padding:20px;width:260px;will-change:transform,opacity}:root{--seed-palette-color-base-500:#c6ccd1;--seed-palette-color-base-1000:#191b1c;--seed-palette-color-blue-200:#e0f2fe;--seed-palette-color-blue-800:#0369a1;--seed-palette-color-blue-1000:#0c4a6e}.SelectTrigger{align-items:center;background-color:#fff;border-radius:4px;box-shadow:0 2px 10px var(--seed-palette-color-base-1000);color:var(--seed-palette-color-base-1000);display:inline-flex;font-size:13px;gap:5px;height:35px;justify-content:center;line-height:1;padding:0 15px}.SelectTrigger:hover{background-color:var(--seed-palette-color-blue-200)}.SelectTrigger:focus{box-shadow:0 0 0 2px #000}.SelectTrigger[data-placeholder]{color:var(--seed-palette-color-base-800)}.SelectIcon{color:var(--seed-palette-color-base-1000)}.SelectContent{background-color:#fff;border-radius:6px;box-shadow:0 10px 38px -10px rgba(22,23,24,.35),0 10px 20px -15px rgba(22,23,24,.2);overflow:hidden}.SelectViewport{padding:5px}.SelectItem{align-items:center;border-radius:3px;color:var(--seed-palette-color-base-1000);display:flex;font-size:13px;height:25px;line-height:1;padding:0 35px 0 25px;position:relative;user-select:none}.SelectItem[data-disabled]{color:var(--seed-palette-color-blue-800);pointer-events:none}.SelectItem[data-highlighted]{background-color:var(--seed-palette-color-base-800);color:var(--seed-color-violet-1);outline:none}.SelectLabel{color:var(--seed-palette-color-blue-1000);font-size:12px;line-height:25px;padding:0 25px}.SelectSeparator{background-color:var(--seed-palette-color-base-500);height:1px;margin:5px}.SelectItemIndicator{display:inline-flex;left:0;position:absolute;width:25px}.SelectItemIndicator,.SelectScrollButton{align-items:center;justify-content:center}.SelectScrollButton{background-color:#fff;color:var(--seed-palette-color-base-1000);cursor:default;display:flex;height:25px}:root{--switch-width:52px;--switch-height:32px;--switch-thumb-width:28px;--switch-thumb-height:28px;--switch-background-color:#b7c2d0;--switch-checked-background-color:#3a8dff;--switch-thumb-background-color:#fff}.switch{background-color:var(--switch-background-color);border-radius:16px;height:var(--switch-height);position:relative;width:var(--switch-width)}.switch[data-state=checked]{background-color:var(--switch-checked-background-color)}.switch-thumb{background-color:var(--switch-thumb-background-color);border-radius:14px;display:block;height:var(--switch-thumb-height);transform:translateX(2px);transition:transform .1s;width:var(--switch-thumb-width);will-change:transform}.switch-thumb[data-state=checked]{transform:translateX(calc(var(--switch-width) - var(--switch-thumb-width) - 2px))}:root{--input-transition:0.2s ease-in-out}.input-wrapper{align-items:center;display:flex;position:relative;width:100%}.input-wrapper.input--display-line .input{border:1px solid var(--seed-ui-color-line-medium);border-radius:0}.input-wrapper.input--display-line .input:focus,.input-wrapper.input--display-line .input:hover:not(:disabled){border-bottom-color:var(--seed-brand-color-primary)}.input-wrapper.input--display-box .input{border:1px solid var(--seed-ui-color-line-medium);border-radius:var(--seed-spacing-300)}.input-wrapper.input--display-box .input:focus,.input-wrapper.input--display-box .input:hover:not(:disabled){border-color:var(--seed-brand-color-primary)}.input-wrapper.input--error .input,.input-wrapper.input--error .input:focus{border-color:var(--seed-brand-color-point2)}.input-wrapper.input--disabled{cursor:not-allowed;opacity:.5}.input-wrapper.input--disabled .input{border:1px solid var(--seed-ui-color-line-medium);color:var(--seed-ui-color-text-disabled)}.input{background:var(--seed-ui-color-background-white);color:var(--seed-ui-color-text-black);font-size:var(--seed-font-size-sm);height:var(--seed-font-line-height-lg);line-height:var(--seed-font-size-sm);padding:17px var(--seed-spacing-500);transition:all var(--input-transition);width:100%}.input:focus{outline:none}.input[type=file]{color:transparent;cursor:pointer}.input[type=file]::-webkit-file-upload-button{visibility:hidden;width:0}.input[type=file]:before{color:var(--seed-ui-color-text-lite);content:"파일 선택"}.input[type=file].has-file:before{color:var(--seed-ui-color-text-black);content:"파일 선택 완료"}.input[type=file]:disabled:before{background:var(--seed-ui-color-background-guide);color:var(--seed-ui-color-text-disabled);cursor:not-allowed}.input--action{background:none;border:none;color:var(--seed-ui-color-text-lite);cursor:pointer;position:absolute;right:var(--seed-spacing-500);top:50%;transform:translateY(-50%)}.input--action:hover:not(:disabled){color:var(--seed-ui-color-text-dark)}.input--action.input--action-link{height:24px}.input--action.input--close{height:16px}.tabs{display:flex;flex-direction:column;position:relative}.tabs--indicator,.tabs--list,.tabs--trigger{box-sizing:border-box}.tabs--list{background-color:#fff;height:35px;padding:0 20px}.tabs--list,.tabs--trigger{display:flex;position:relative}.tabs--trigger{align-items:center;flex:1;justify-content:center;padding:8px;z-index:1}.tabs--trigger div{font-size:14px;font-style:normal;font-weight:400;letter-spacing:-.28px;line-height:140%}.tabs--trigger[data-state=inactive]{color:#b7c2d0}.tabs--trigger[data-state=active]{color:#3a8dff}.floating-action-button{align-items:center;display:flex;justify-content:center;position:relative}.floating-action-button--button{align-items:center;border:none;border-radius:50%;cursor:pointer;display:flex;height:56px;justify-content:center;width:56px}.floating-action-button--action-button{background-color:#fff;box-shadow:0 0 5.6px 0 rgba(0,0,0,.04)}.floating-action-button--action-button:hover{background-color:#ebf4ff;transition:background-color .2s ease-in-out}:root{--seed-palette-color-base-100:#fff;--seed-palette-color-base-800:#494f54;--seed-spacing-100:0px;--seed-spacing-300:8px;--seed-spacing-600:20px;--seed-spacing-900:32px}.overlay{background-color:rgba(0,0,0,.4);inset:0;position:fixed}.drawer-content{background-color:#fff;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important;bottom:0;height:fit-content;left:0;max-height:calc(100dvh - 32px);outline:none;overflow-y:hidden;position:fixed;right:0}.drawer-content-inner{-webkit-overflow-scrolling:touch;max-height:calc(100dvh - 68px);overflow-y:auto}.bottomsheet-container--radius-none{border-top:var(--seed-spacing-100)}.bottomsheet-container--radius-small{border-radius:var(--seed-spacing-300)}.bottomsheet-container--radius-medium{border-radius:var(--seed-spacing-700)}.bottomsheet-container--radius-large{border-radius:var(--seed-spacing-900)}.bottomsheet-container--theme-light{background-color:var(--seed-palette-color-base-100)}.bottomsheet-container--theme-dark{background-color:var(--seed-palette-color-base-800)}.drawer-handle{height:36px;width:100%}@keyframes toast-enter-top{0%{opacity:.5;transform:translate3d(0,-200%,0) scale(.6)}to{opacity:1;transform:translateZ(0) scale(1)}}@keyframes toast-exit-top{0%{opacity:1;transform:translateZ(-1px) scale(1)}to{opacity:0;transform:translate3d(0,-150%,-1px) scale(.6)}}@keyframes toast-enter-bottom{0%{opacity:.5;transform:translate3d(0,200%,0) scale(.6)}to{opacity:1;transform:translateZ(0) scale(1)}}@keyframes toast-exit-bottom{0%{opacity:1;transform:translateZ(-1px) scale(1)}to{opacity:0;transform:translate3d(0,150%,-1px) scale(.6)}}@keyframes toast-fade-in{0%{opacity:0}to{opacity:1}}@keyframes toast-fade-out{0%{opacity:1}to{opacity:0}}.toast--content{align-items:center;background:var(--seed-ui-color-misc-black-70);border-radius:var(--seed-rounding-300);box-shadow:0 3px 10px rgba(0,0,0,.1),0 3px 3px rgba(0,0,0,.05);box-sizing:border-box;color:#363636;display:flex;gap:var(--seed-spacing-600);justify-content:space-between;min-height:56px;opacity:0;padding:var(--seed-spacing-500);pointer-events:auto;position:relative;transition:transform .23s cubic-bezier(.21,1.02,.73,1);will-change:transform}.toast--content.top.visible{animation:toast-enter-top .35s cubic-bezier(.21,1.02,.73,1) forwards}.toast--content.top.hidden{animation:toast-exit-top .4s cubic-bezier(.06,.71,.55,1) forwards}.toast--content.bottom.visible{animation:toast-enter-bottom .35s cubic-bezier(.21,1.02,.73,1) forwards}.toast--content.bottom.hidden{animation:toast-exit-bottom .4s cubic-bezier(.06,.71,.55,1) forwards}@media (prefers-reduced-motion:reduce){.toast--content.visible{animation:toast-fade-in .35s ease-in forwards}.toast--content.hidden{animation:toast-fade-out .4s ease-out forwards}}.toast--type-message{gap:var(--seed-spacing-300)}.toast--type-icon,.toast--type-message{align-items:center;display:flex}.toast--type-icon[data-toast-type=default]{display:none}.toast--message{color:var(--seed-ui-color-text-white);font-size:var(--seed-font-size-s);font-weight:var(--seed-font-weight-400);line-height:var(--seed-font-line-height-sm)}.toast--action-link{text-decoration:underline;text-underline-offset:2px}.toast--action-button,.toast--action-link{color:var(--seed-ui-color-text-white);cursor:pointer;flex-shrink:0;font-size:var(--seed-font-size-xs);font-weight:var(--seed-font-weight-400)}.toast--action-button{align-items:center;background-color:var(--seed-brand-color-primary);border-radius:var(--seed-rounding-400);display:flex;justify-content:center;padding:var(--seed-spacing-200) var(--seed-spacing-300)}.toaster-content{bottom:0;left:0;pointer-events:none;position:fixed;right:0;top:0;z-index:9999}.toast-wrapper{position:absolute}.toast-wrapper>*{transition:all .23s cubic-bezier(.21,1.02,.73,1)}.toast-wrapper.toast-wrapper--top-right{right:0}.toast-wrapper.toast-wrapper--top-left{left:0}.toast-wrapper.toast-wrapper--top-center{left:50%}.toast-wrapper.toast-wrapper--bottom-right{bottom:0;right:0}.toast-wrapper.toast-wrapper--bottom-left{bottom:0;left:0}.toast-wrapper.toast-wrapper--bottom-center{bottom:0;left:50%}.popup{animation:popup-content-show .15s cubic-bezier(.16,1,.3,1);background-color:var(--seed-ui-color-background-white);border-radius:16px;box-shadow:0 4px 16px 0 hsla(0,0%,43%,.07);left:50%;max-height:85vh;max-width:450px;overflow-y:auto;padding:24px 16px;position:fixed;top:50%;transform:translate(-50%,-50%);width:100%}.popup:focus{outline:none}.popup--actions{display:flex;gap:8px;justify-content:flex-end;margin-top:24px}.popup--actions>*{flex:1}.popup--actions-typeB{display:flex;gap:8px;justify-content:space-between}.popup--actions-left{flex:0 0 auto;min-width:76px}.popup--actions-right{flex:1 1 auto}@keyframes popup-overlay-show{0%{opacity:0}to{opacity:1}}@keyframes popup-content-show{0%{opacity:0;transform:translate(-50%,-48%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.visually-hidden{clip:rect(0 0 0 0);word-wrap:normal;border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,8 +10,9 @@ export { Button } from "./components/Button";
|
|
|
10
10
|
export { Text } from "./components/Text";
|
|
11
11
|
export { RadioGroup } from "./components/RadioGroup";
|
|
12
12
|
export { Checkbox } from "./components/Checkbox";
|
|
13
|
-
export {
|
|
13
|
+
export { Switch } from "./components/Switch";
|
|
14
14
|
export { Select } from "./components/Select";
|
|
15
15
|
export { Input } from "./components/Input";
|
|
16
16
|
export { Tabs } from "./components/Tabs";
|
|
17
17
|
export { LogProvider, LogScreen } from "./components/Log";
|
|
18
|
+
export { FloatingActionButton } from "./components/FloatingActionButton";
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import cx from 'classnames';
|
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import { useState, useEffect, useCallback, useMemo, Fragment, createContext, useContext, forwardRef, useRef } from 'react';
|
|
7
7
|
import { createPortal } from 'react-dom';
|
|
8
|
-
import { Dialog, Switch } from 'radix-ui';
|
|
8
|
+
import { Dialog, Switch as Switch$1 } from 'radix-ui';
|
|
9
9
|
import { Drawer } from 'vaul';
|
|
10
10
|
import * as RadioGroupBase from '@radix-ui/react-radio-group';
|
|
11
11
|
import * as CheckboxBase from '@radix-ui/react-checkbox';
|
|
@@ -743,7 +743,8 @@ var Button = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
743
743
|
color = _a.color,
|
|
744
744
|
backgroundColor = _a.backgroundColor,
|
|
745
745
|
borderColor = _a.borderColor,
|
|
746
|
-
|
|
746
|
+
borderRadius = _a.borderRadius,
|
|
747
|
+
rest = __rest(_a, ["type", "display", "disabled", "loading", "size", "className", "children", "color", "backgroundColor", "borderColor", "borderRadius"]);
|
|
747
748
|
return jsxs("button", _assign({
|
|
748
749
|
ref: ref,
|
|
749
750
|
"data-frieeren-component": "Button",
|
|
@@ -754,7 +755,8 @@ var Button = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
754
755
|
style: {
|
|
755
756
|
color: color,
|
|
756
757
|
backgroundColor: backgroundColor,
|
|
757
|
-
borderColor: borderColor
|
|
758
|
+
borderColor: borderColor,
|
|
759
|
+
borderRadius: borderRadius
|
|
758
760
|
}
|
|
759
761
|
}, rest, {
|
|
760
762
|
children: [jsx("span", {
|
|
@@ -852,7 +854,7 @@ function Text(_a) {
|
|
|
852
854
|
}));
|
|
853
855
|
}
|
|
854
856
|
|
|
855
|
-
function Root$
|
|
857
|
+
function Root$2(_a) {
|
|
856
858
|
var className = _a.className,
|
|
857
859
|
props = __rest(_a, ["className"]);
|
|
858
860
|
return jsx(RadioGroupBase.Root, _assign({
|
|
@@ -876,12 +878,12 @@ var Indicator$1 = function Indicator(_a) {
|
|
|
876
878
|
}, props));
|
|
877
879
|
};
|
|
878
880
|
var RadioGroup = {
|
|
879
|
-
Root: Root$
|
|
881
|
+
Root: Root$2,
|
|
880
882
|
Item: Item$1,
|
|
881
883
|
Indicator: Indicator$1
|
|
882
884
|
};
|
|
883
885
|
|
|
884
|
-
var Root$
|
|
886
|
+
var Root$1 = function Root(_a) {
|
|
885
887
|
var className = _a.className,
|
|
886
888
|
props = __rest(_a, ["className"]);
|
|
887
889
|
return jsx(CheckboxBase.Root, _assign({
|
|
@@ -896,29 +898,35 @@ var Indicator = function Indicator(_a) {
|
|
|
896
898
|
}, props));
|
|
897
899
|
};
|
|
898
900
|
var Checkbox = {
|
|
899
|
-
Root: Root$
|
|
901
|
+
Root: Root$1,
|
|
900
902
|
Indicator: Indicator
|
|
901
903
|
};
|
|
902
904
|
|
|
903
|
-
var
|
|
905
|
+
var Switch = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
904
906
|
var className = _a.className,
|
|
905
|
-
_b = _a.
|
|
906
|
-
|
|
907
|
-
onChange = _a.onChange
|
|
908
|
-
|
|
907
|
+
_b = _a.defaultValue,
|
|
908
|
+
defaultValue = _b === void 0 ? false : _b,
|
|
909
|
+
onChange = _a.onChange,
|
|
910
|
+
_c = _a.disabled,
|
|
911
|
+
disabled = _c === void 0 ? false : _c,
|
|
912
|
+
value = _a.value;
|
|
913
|
+
return jsx(Switch$1.Root, {
|
|
909
914
|
ref: ref,
|
|
915
|
+
defaultChecked: defaultValue,
|
|
910
916
|
onCheckedChange: onChange,
|
|
911
|
-
checked:
|
|
912
|
-
className: cx("
|
|
913
|
-
"data-frieeren-component": "
|
|
914
|
-
|
|
915
|
-
|
|
917
|
+
checked: value,
|
|
918
|
+
className: cx("switch", className),
|
|
919
|
+
"data-frieeren-component": "Switch",
|
|
920
|
+
disabled: disabled,
|
|
921
|
+
"aria-disabled": disabled,
|
|
922
|
+
children: jsx(Switch$1.Thumb, {
|
|
923
|
+
className: "switch-thumb"
|
|
916
924
|
})
|
|
917
925
|
});
|
|
918
926
|
});
|
|
919
|
-
|
|
927
|
+
Switch.displayName = "Switch";
|
|
920
928
|
|
|
921
|
-
var Root
|
|
929
|
+
var Root = function Root(_a) {
|
|
922
930
|
var className = _a.className,
|
|
923
931
|
props = __rest(_a, ["className"]);
|
|
924
932
|
return jsx("div", {
|
|
@@ -928,7 +936,7 @@ var Root$1 = function Root(_a) {
|
|
|
928
936
|
}, props))
|
|
929
937
|
});
|
|
930
938
|
};
|
|
931
|
-
var Trigger
|
|
939
|
+
var Trigger = function Trigger(_a) {
|
|
932
940
|
var props = __rest(_a, []);
|
|
933
941
|
return jsx(SelectBase.Trigger, _assign({
|
|
934
942
|
"data-frieeren-component": "SelectTrigger"
|
|
@@ -940,7 +948,7 @@ var Portal = function Portal(_a) {
|
|
|
940
948
|
"data-frieeren-component": "SelectPortal"
|
|
941
949
|
}, props));
|
|
942
950
|
};
|
|
943
|
-
var Content
|
|
951
|
+
var Content = function Content(_a) {
|
|
944
952
|
var props = __rest(_a, []);
|
|
945
953
|
return jsx(SelectBase.Content, _assign({
|
|
946
954
|
"data-frieeren-component": "SelectContent"
|
|
@@ -983,10 +991,10 @@ var Value = function Value(_a) {
|
|
|
983
991
|
}, props));
|
|
984
992
|
};
|
|
985
993
|
var Select = {
|
|
986
|
-
Root: Root
|
|
987
|
-
Trigger: Trigger
|
|
994
|
+
Root: Root,
|
|
995
|
+
Trigger: Trigger,
|
|
988
996
|
Portal: Portal,
|
|
989
|
-
Content: Content
|
|
997
|
+
Content: Content,
|
|
990
998
|
Viewport: Viewport,
|
|
991
999
|
Group: Group,
|
|
992
1000
|
Item: Item,
|
|
@@ -1095,35 +1103,6 @@ var Input = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
1095
1103
|
});
|
|
1096
1104
|
Input.displayName = "Input";
|
|
1097
1105
|
|
|
1098
|
-
var Root = function Root(_a) {
|
|
1099
|
-
var props = __rest(_a, []);
|
|
1100
|
-
return jsx(TabsBase.Root, _assign({
|
|
1101
|
-
"data-frieeren-component": "Tabs",
|
|
1102
|
-
className: "tabs"
|
|
1103
|
-
}, props));
|
|
1104
|
-
};
|
|
1105
|
-
var List = function List(_a) {
|
|
1106
|
-
var props = __rest(_a, []);
|
|
1107
|
-
return jsx(TabsBase.List, _assign({
|
|
1108
|
-
"data-frieeren-component": "TabsList",
|
|
1109
|
-
className: "tabs--list"
|
|
1110
|
-
}, props));
|
|
1111
|
-
};
|
|
1112
|
-
var Trigger = function Trigger(_a) {
|
|
1113
|
-
var props = __rest(_a, []);
|
|
1114
|
-
return jsx(TabsBase.Trigger, _assign({
|
|
1115
|
-
"data-frieeren-component": "TabsTrigger",
|
|
1116
|
-
className: "tabs--trigger"
|
|
1117
|
-
}, props));
|
|
1118
|
-
};
|
|
1119
|
-
var Content = function Content(_a) {
|
|
1120
|
-
var props = __rest(_a, []);
|
|
1121
|
-
return jsx(TabsBase.Content, _assign({
|
|
1122
|
-
"data-frieeren-component": "TabsContent",
|
|
1123
|
-
className: "tabs--content"
|
|
1124
|
-
}, props));
|
|
1125
|
-
};
|
|
1126
|
-
|
|
1127
1106
|
/**
|
|
1128
1107
|
* 탭 인디케이터의 위치를 계산하고 관리하는 커스텀 훅
|
|
1129
1108
|
* @param {UseTabsIndicatorProps} props - 탭 인디케이터 설정
|
|
@@ -1194,36 +1173,29 @@ var Tabs = function Tabs(props) {
|
|
|
1194
1173
|
value = props.value,
|
|
1195
1174
|
rest = __rest(props, ["width", "tabItems", "value"]);
|
|
1196
1175
|
var listRef = useRef(null);
|
|
1197
|
-
|
|
1176
|
+
useTabsIndicator({
|
|
1198
1177
|
listRef: listRef
|
|
1199
1178
|
}).indicatorStyle;
|
|
1200
|
-
return
|
|
1179
|
+
return jsx(TabsBase.Root, _assign({
|
|
1180
|
+
"data-frieeren-component": "Tabs",
|
|
1181
|
+
className: "tabs",
|
|
1201
1182
|
value: value
|
|
1202
1183
|
}, rest, {
|
|
1203
1184
|
style: {
|
|
1204
1185
|
width: width
|
|
1205
1186
|
},
|
|
1206
|
-
children:
|
|
1187
|
+
children: jsx(TabsBase.List, {
|
|
1207
1188
|
ref: listRef,
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
className: "tabs--indicator",
|
|
1219
|
-
style: indicatorStyle
|
|
1220
|
-
})]
|
|
1221
|
-
}), tabItems.map(function (item) {
|
|
1222
|
-
return jsx(Content, {
|
|
1223
|
-
value: item.value,
|
|
1224
|
-
children: item.content
|
|
1225
|
-
}, "tabContent_".concat(item.value));
|
|
1226
|
-
})]
|
|
1189
|
+
"data-orientation": "horizontal",
|
|
1190
|
+
className: "tabs--list",
|
|
1191
|
+
children: tabItems.map(function (item) {
|
|
1192
|
+
return jsx(TabsBase.Trigger, {
|
|
1193
|
+
value: item.value,
|
|
1194
|
+
className: "tabs--trigger",
|
|
1195
|
+
children: item.label
|
|
1196
|
+
}, "tabTrigger_".concat(item.value));
|
|
1197
|
+
})
|
|
1198
|
+
})
|
|
1227
1199
|
}));
|
|
1228
1200
|
};
|
|
1229
1201
|
|
|
@@ -1250,4 +1222,84 @@ function LogScreen(_a) {
|
|
|
1250
1222
|
return children;
|
|
1251
1223
|
}
|
|
1252
1224
|
|
|
1253
|
-
|
|
1225
|
+
function FloatingActionButton(_a) {
|
|
1226
|
+
var _b = _a.disabled,
|
|
1227
|
+
disabled = _b === void 0 ? false : _b,
|
|
1228
|
+
className = _a.className,
|
|
1229
|
+
_c = _a.position,
|
|
1230
|
+
position = _c === void 0 ? "fixed" : _c,
|
|
1231
|
+
top = _a.top,
|
|
1232
|
+
left = _a.left,
|
|
1233
|
+
_d = _a.bottom,
|
|
1234
|
+
bottom = _d === void 0 ? 16 : _d,
|
|
1235
|
+
_e = _a.right,
|
|
1236
|
+
right = _e === void 0 ? 16 : _e,
|
|
1237
|
+
_f = _a.actions,
|
|
1238
|
+
actions = _f === void 0 ? [] : _f,
|
|
1239
|
+
icon = _a.icon,
|
|
1240
|
+
openIcon = _a.openIcon,
|
|
1241
|
+
closeIcon = _a.closeIcon,
|
|
1242
|
+
_onClick = _a.onClick;
|
|
1243
|
+
var _g = useState(false),
|
|
1244
|
+
isOpen = _g[0],
|
|
1245
|
+
setIsOpen = _g[1];
|
|
1246
|
+
var style = {
|
|
1247
|
+
position: position
|
|
1248
|
+
};
|
|
1249
|
+
if (top !== undefined) style.top = top;
|
|
1250
|
+
if (left !== undefined) style.left = left;
|
|
1251
|
+
if (bottom !== undefined) style.bottom = bottom;
|
|
1252
|
+
if (right !== undefined) style.right = right;
|
|
1253
|
+
return jsxs("div", {
|
|
1254
|
+
className: cx("floating-action-button", className),
|
|
1255
|
+
"data-frieeren-component": "floating-action-button",
|
|
1256
|
+
style: style,
|
|
1257
|
+
children: [jsx("button", {
|
|
1258
|
+
className: cx("floating-action-button--button"),
|
|
1259
|
+
style: {
|
|
1260
|
+
backgroundColor: "#3A8DFF"
|
|
1261
|
+
},
|
|
1262
|
+
disabled: disabled,
|
|
1263
|
+
type: "button",
|
|
1264
|
+
onClick: function onClick() {
|
|
1265
|
+
setIsOpen(!isOpen);
|
|
1266
|
+
_onClick === null || _onClick === void 0 ? void 0 : _onClick();
|
|
1267
|
+
},
|
|
1268
|
+
children: isOpen ? closeIcon !== null && closeIcon !== void 0 ? closeIcon : icon : openIcon !== null && openIcon !== void 0 ? openIcon : icon
|
|
1269
|
+
}), jsx("div", {
|
|
1270
|
+
style: {
|
|
1271
|
+
position: "absolute",
|
|
1272
|
+
display: "flex",
|
|
1273
|
+
flexDirection: "column",
|
|
1274
|
+
gap: "20px",
|
|
1275
|
+
bottom: "76px",
|
|
1276
|
+
right: "0",
|
|
1277
|
+
opacity: isOpen ? 1 : 0,
|
|
1278
|
+
visibility: isOpen ? "visible" : "hidden",
|
|
1279
|
+
transition: "all 0.3s ease-in-out"
|
|
1280
|
+
},
|
|
1281
|
+
children: actions === null || actions === void 0 ? void 0 : actions.map(function (action, index) {
|
|
1282
|
+
return jsx("div", {
|
|
1283
|
+
style: {
|
|
1284
|
+
transform: isOpen ? "translateY(0)" : "translateY(".concat(40 - index * 20, "px)"),
|
|
1285
|
+
transition: "transform 0.3s ease-in-out",
|
|
1286
|
+
transitionDelay: isOpen ? "".concat((index + 1) * 0.1, "s") : "0s"
|
|
1287
|
+
},
|
|
1288
|
+
children: jsx("button", {
|
|
1289
|
+
className: cx("floating-action-button--button", "floating-action-button--action-button"),
|
|
1290
|
+
disabled: action.disabled,
|
|
1291
|
+
type: "button",
|
|
1292
|
+
onClick: function onClick() {
|
|
1293
|
+
var _a;
|
|
1294
|
+
(_a = action.onClick) === null || _a === void 0 ? void 0 : _a.call(action);
|
|
1295
|
+
setIsOpen(false);
|
|
1296
|
+
},
|
|
1297
|
+
children: action.icon
|
|
1298
|
+
})
|
|
1299
|
+
}, index);
|
|
1300
|
+
})
|
|
1301
|
+
})]
|
|
1302
|
+
});
|
|
1303
|
+
}
|
|
1304
|
+
|
|
1305
|
+
export { BottomSheet, Box, LogButton as Button, Checkbox, Container, Flex, FloatingActionButton, Grid, Input, LogProvider, LogScreen, LogPopup as Popup, RadioGroup, Select, Switch, Tabs, Text, ToastProvider, useToast };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@team-frieeren/components",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.19",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -69,7 +69,8 @@
|
|
|
69
69
|
"classnames": "^2.5.1",
|
|
70
70
|
"radix-ui": "^1.1.3",
|
|
71
71
|
"sass": "^1.80.4",
|
|
72
|
-
"vaul": "^1.1.1"
|
|
72
|
+
"vaul": "^1.1.1",
|
|
73
|
+
"@team-frieeren/icons": "1.0.2"
|
|
73
74
|
},
|
|
74
75
|
"exports": {
|
|
75
76
|
".": {
|
|
@@ -108,9 +109,9 @@
|
|
|
108
109
|
"import": "./dist/Checkbox.js",
|
|
109
110
|
"types": "./dist/components/Checkbox/index.d.ts"
|
|
110
111
|
},
|
|
111
|
-
"./
|
|
112
|
-
"import": "./dist/
|
|
113
|
-
"types": "./dist/components/
|
|
112
|
+
"./switch": {
|
|
113
|
+
"import": "./dist/Switch.js",
|
|
114
|
+
"types": "./dist/components/Switch/index.d.ts"
|
|
114
115
|
},
|
|
115
116
|
"./select": {
|
|
116
117
|
"import": "./dist/Select.js",
|
|
@@ -128,6 +129,10 @@
|
|
|
128
129
|
"import": "./dist/Log.js",
|
|
129
130
|
"types": "./dist/components/Log/index.d.ts"
|
|
130
131
|
},
|
|
132
|
+
"./floatingActionButton": {
|
|
133
|
+
"import": "./dist/FloatingActionButton.js",
|
|
134
|
+
"types": "./dist/components/FloatingActionButton/index.d.ts"
|
|
135
|
+
},
|
|
131
136
|
"./styles.css": "./dist/index.css"
|
|
132
137
|
},
|
|
133
138
|
"scripts": {
|
package/dist/Toggle.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { forwardRef } from 'react';
|
|
3
|
-
import { Switch } from 'radix-ui';
|
|
4
|
-
import cx from 'classnames';
|
|
5
|
-
|
|
6
|
-
var Toggle = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
7
|
-
var className = _a.className,
|
|
8
|
-
_b = _a.states,
|
|
9
|
-
states = _b === void 0 ? "active" : _b,
|
|
10
|
-
onChange = _a.onChange;
|
|
11
|
-
return jsx(Switch.Root, {
|
|
12
|
-
ref: ref,
|
|
13
|
-
onCheckedChange: onChange,
|
|
14
|
-
checked: states === "active",
|
|
15
|
-
className: cx("toggle", className),
|
|
16
|
-
"data-frieeren-component": "Toggle",
|
|
17
|
-
children: jsx(Switch.Thumb, {
|
|
18
|
-
className: "toggle-thumb"
|
|
19
|
-
})
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
Toggle.displayName = "Toggle";
|
|
23
|
-
|
|
24
|
-
export { Toggle };
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import * as TabsBase from "@radix-ui/react-tabs";
|
|
2
|
-
declare const Root: ({ ...props }: TabsBase.TabsProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
|
-
declare const List: ({ ...props }: TabsBase.TabsListProps) => import("react/jsx-runtime").JSX.Element;
|
|
4
|
-
declare const Trigger: ({ ...props }: TabsBase.TabsTriggerProps) => import("react/jsx-runtime").JSX.Element;
|
|
5
|
-
declare const Content: ({ ...props }: TabsBase.TabsContentProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
-
export { Root, List, Trigger, Content };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { Toggle } from "./Toggle";
|