@iyulab/components 1.10.0 → 1.13.0
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/CHANGELOG.md +135 -9
- package/README.md +3 -1
- package/dist/_virtual/_glob-assets_raw/dark.css.e8ac080d.js +1 -1
- package/dist/_virtual/_glob-assets_raw/light.css.637cb2f8.js +1 -1
- package/dist/components/UElement.styles.js +2 -2
- package/dist/components/alert/UAlert.d.ts +3 -0
- package/dist/components/alert/UAlert.styles.js +32 -22
- package/dist/components/avatar/UAvatar.styles.js +2 -2
- package/dist/components/badge/UBadge.d.ts +2 -0
- package/dist/components/badge/UBadge.js +5 -3
- package/dist/components/badge/UBadge.styles.js +16 -5
- package/dist/components/breadcrumb-item/UBreadcrumbItem.styles.js +1 -1
- package/dist/components/button/UButton.d.ts +3 -2
- package/dist/components/button/UButton.styles.js +6 -6
- package/dist/components/button-group/UButtonGroup.styles.js +1 -1
- package/dist/components/card/UCard.d.ts +2 -0
- package/dist/components/card/UCard.js +2 -0
- package/dist/components/card/UCard.styles.js +20 -6
- package/dist/components/carousel/UCarousel.styles.js +3 -3
- package/dist/components/checkbox/UCheckbox.d.ts +1 -1
- package/dist/components/checkbox/UCheckbox.styles.js +39 -99
- package/dist/components/copy-button/UCopyButton.styles.js +2 -2
- package/dist/components/dialog/UDialog.styles.js +8 -8
- package/dist/components/divider/UDivider.js +7 -5
- package/dist/components/divider/UDivider.styles.js +25 -5
- package/dist/components/drawer/UDrawer.styles.js +7 -7
- package/dist/components/field/UField.styles.js +2 -2
- package/dist/components/icon-button/UIconButton.styles.js +1 -1
- package/dist/components/input/UInput.styles.js +3 -3
- package/dist/components/menu/UMenu.d.ts +3 -0
- package/dist/components/menu/UMenu.js +3 -1
- package/dist/components/menu/UMenu.styles.js +19 -6
- package/dist/components/menu-item/UMenuItem.d.ts +1 -1
- package/dist/components/menu-item/UMenuItem.styles.js +2 -2
- package/dist/components/option/UOption.d.ts +3 -1
- package/dist/components/option/UOption.js +7 -5
- package/dist/components/option/UOption.styles.js +17 -6
- package/dist/components/progress-bar/UProgressBar.styles.js +10 -10
- package/dist/components/progress-ring/UProgressRing.styles.js +9 -9
- package/dist/components/radio/URadio.d.ts +1 -1
- package/dist/components/radio/URadio.styles.js +2 -2
- package/dist/components/rating/URating.styles.js +2 -2
- package/dist/components/select/USelect.styles.js +3 -3
- package/dist/components/skeleton/USkeleton.styles.js +3 -3
- package/dist/components/slider/USlider.styles.js +5 -5
- package/dist/components/spinner/USpinner.styles.js +1 -1
- package/dist/components/split-panel/USplitPanel.styles.js +2 -2
- package/dist/components/switch/USwitch.styles.js +4 -4
- package/dist/components/tab/UTab.d.ts +2 -0
- package/dist/components/tab/UTab.js +7 -5
- package/dist/components/tab/UTab.styles.js +15 -3
- package/dist/components/tab-panel/UTabPanel.d.ts +1 -1
- package/dist/components/tab-panel/UTabPanel.styles.js +3 -3
- package/dist/components/tag/UTag.d.ts +4 -1
- package/dist/components/tag/UTag.js +7 -5
- package/dist/components/tag/UTag.styles.js +108 -177
- package/dist/components/textarea/UTextarea.styles.js +2 -2
- package/dist/components/tooltip/UTooltip.d.ts +2 -0
- package/dist/components/tooltip/UTooltip.js +3 -1
- package/dist/components/tooltip/UTooltip.styles.js +12 -3
- package/dist/components/tree-item/UTreeItem.d.ts +1 -1
- package/dist/components/tree-item/UTreeItem.styles.js +3 -3
- package/dist/styles/dark.css +77 -7
- package/dist/styles/light.css +78 -7
- package/package.json +3 -2
|
@@ -32,12 +32,14 @@ var UOption = class UOption extends UElement {
|
|
|
32
32
|
}
|
|
33
33
|
render() {
|
|
34
34
|
return html`
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
<
|
|
35
|
+
<div class="base" part="base">
|
|
36
|
+
${this.renderMarker()}
|
|
37
|
+
<slot name="prefix"></slot>
|
|
38
|
+
<div class="content" part="content">
|
|
39
|
+
<slot></slot>
|
|
40
|
+
</div>
|
|
41
|
+
<slot name="suffix"></slot>
|
|
39
42
|
</div>
|
|
40
|
-
<slot name="suffix"></slot>
|
|
41
43
|
`;
|
|
42
44
|
}
|
|
43
45
|
renderMarker() {
|
|
@@ -2,7 +2,7 @@ import { css } from "lit";
|
|
|
2
2
|
//#region src/components/option/UOption.styles.ts
|
|
3
3
|
var styles = css`
|
|
4
4
|
:host {
|
|
5
|
-
--option-color: var(--u-primary-color
|
|
5
|
+
--option-color: var(--u-primary-color);
|
|
6
6
|
--option-color-interactive: inherit;
|
|
7
7
|
--option-border-color-interactive: var(--u-border-color-hover);
|
|
8
8
|
--option-background-color-interactive: var(--u-bg-color-hover);
|
|
@@ -18,12 +18,23 @@ var styles = css`
|
|
|
18
18
|
|
|
19
19
|
:host {
|
|
20
20
|
display: flex;
|
|
21
|
-
flex-direction: row;
|
|
22
|
-
align-items: center;
|
|
23
|
-
padding: 0.25em 0.5em;
|
|
24
21
|
transition: background-color 0.15s ease, color 0.15s ease;
|
|
25
22
|
user-select: none;
|
|
26
23
|
cursor: pointer;
|
|
24
|
+
|
|
25
|
+
--option-padding-block: 0.25em;
|
|
26
|
+
--option-padding-inline: 0.5em;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* 여백은 내부 요소가 진다 — :host 에 두면 소비 앱 CSS 리셋에 지워진다. */
|
|
30
|
+
.base {
|
|
31
|
+
box-sizing: border-box;
|
|
32
|
+
width: 100%;
|
|
33
|
+
display: flex;
|
|
34
|
+
flex-direction: row;
|
|
35
|
+
align-items: center;
|
|
36
|
+
padding: var(--option-padding-block) var(--option-padding-inline);
|
|
37
|
+
border-radius: inherit;
|
|
27
38
|
}
|
|
28
39
|
:host(:focus-visible) {
|
|
29
40
|
outline: none;
|
|
@@ -89,7 +100,7 @@ var styles = css`
|
|
|
89
100
|
width: 1.25em;
|
|
90
101
|
height: 1.25em;
|
|
91
102
|
border: 2px solid var(--u-neutral-400);
|
|
92
|
-
border-radius:
|
|
103
|
+
border-radius: var(--u-radius-circle);
|
|
93
104
|
background-color: var(--u-bg-color);
|
|
94
105
|
transition: border-color 0.2s ease, background-color 0.2s ease;
|
|
95
106
|
}
|
|
@@ -113,7 +124,7 @@ var styles = css`
|
|
|
113
124
|
display: block;
|
|
114
125
|
width: 0.45em;
|
|
115
126
|
height: 0.45em;
|
|
116
|
-
border-radius:
|
|
127
|
+
border-radius: var(--u-radius-circle);
|
|
117
128
|
background-color: var(--option-color-active);
|
|
118
129
|
transform: scale(0);
|
|
119
130
|
transition: transform 0.15s ease;
|
|
@@ -3,27 +3,27 @@ import { css } from "lit";
|
|
|
3
3
|
var styles = css`
|
|
4
4
|
:host {
|
|
5
5
|
--progress-bar-height: 0.5em;
|
|
6
|
-
--progress-bar-color: var(--u-primary-color
|
|
6
|
+
--progress-bar-color: var(--u-primary-color);
|
|
7
7
|
--progress-bar-buffer-color: color-mix(in srgb, var(--progress-bar-color) 35%, var(--u-bg-color));
|
|
8
8
|
--progress-bar-track-color: var(--u-neutral-200);
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
/* === Status Colors === */
|
|
12
12
|
:host([status="success"]) {
|
|
13
|
-
--progress-bar-color: var(--u-
|
|
14
|
-
--progress-bar-buffer-color: var(--u-
|
|
13
|
+
--progress-bar-color: var(--u-success-color);
|
|
14
|
+
--progress-bar-buffer-color: var(--u-success-color-weakest);
|
|
15
15
|
}
|
|
16
16
|
:host([status="warning"]) {
|
|
17
|
-
--progress-bar-color: var(--u-
|
|
18
|
-
--progress-bar-buffer-color: var(--u-
|
|
17
|
+
--progress-bar-color: var(--u-warning-color-weak);
|
|
18
|
+
--progress-bar-buffer-color: var(--u-warning-color-weakest);
|
|
19
19
|
}
|
|
20
20
|
:host([status="error"]) {
|
|
21
|
-
--progress-bar-color: var(--u-
|
|
22
|
-
--progress-bar-buffer-color: var(--u-
|
|
21
|
+
--progress-bar-color: var(--u-danger-color);
|
|
22
|
+
--progress-bar-buffer-color: var(--u-danger-color-weakest);
|
|
23
23
|
}
|
|
24
24
|
:host([status="info"]) {
|
|
25
|
-
--progress-bar-color: var(--u-
|
|
26
|
-
--progress-bar-buffer-color: var(--u-
|
|
25
|
+
--progress-bar-color: var(--u-info-color-weak);
|
|
26
|
+
--progress-bar-buffer-color: var(--u-info-color-weakest);
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
:host {
|
|
@@ -37,7 +37,7 @@ var styles = css`
|
|
|
37
37
|
|
|
38
38
|
/* === Rounded === */
|
|
39
39
|
:host([rounded]) {
|
|
40
|
-
border-radius:
|
|
40
|
+
border-radius: var(--u-radius-pill);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
/* === Indeterminate === */
|
|
@@ -3,7 +3,7 @@ import { css } from "lit";
|
|
|
3
3
|
var styles = css`
|
|
4
4
|
:host {
|
|
5
5
|
--progress-ring-size: 6em;
|
|
6
|
-
--progress-ring-color: var(--u-primary-color
|
|
6
|
+
--progress-ring-color: var(--u-primary-color);
|
|
7
7
|
--progress-ring-track-width: 6;
|
|
8
8
|
--progress-ring-track-color: var(--u-neutral-200);
|
|
9
9
|
--progress-ring-buffer-color: color-mix(in srgb, var(--progress-ring-color) 35%, var(--u-bg-color));
|
|
@@ -11,20 +11,20 @@ var styles = css`
|
|
|
11
11
|
|
|
12
12
|
/* === Status Colors === */
|
|
13
13
|
:host([status="success"]) {
|
|
14
|
-
--progress-ring-color: var(--u-
|
|
15
|
-
--progress-ring-buffer-color: var(--u-
|
|
14
|
+
--progress-ring-color: var(--u-success-color);
|
|
15
|
+
--progress-ring-buffer-color: var(--u-success-color-weakest);
|
|
16
16
|
}
|
|
17
17
|
:host([status="warning"]) {
|
|
18
|
-
--progress-ring-color: var(--u-
|
|
19
|
-
--progress-ring-buffer-color: var(--u-
|
|
18
|
+
--progress-ring-color: var(--u-warning-color-weak);
|
|
19
|
+
--progress-ring-buffer-color: var(--u-warning-color-weakest);
|
|
20
20
|
}
|
|
21
21
|
:host([status="error"]) {
|
|
22
|
-
--progress-ring-color: var(--u-
|
|
23
|
-
--progress-ring-buffer-color: var(--u-
|
|
22
|
+
--progress-ring-color: var(--u-danger-color);
|
|
23
|
+
--progress-ring-buffer-color: var(--u-danger-color-weakest);
|
|
24
24
|
}
|
|
25
25
|
:host([status="info"]) {
|
|
26
|
-
--progress-ring-color: var(--u-
|
|
27
|
-
--progress-ring-buffer-color: var(--u-
|
|
26
|
+
--progress-ring-color: var(--u-info-color-weak);
|
|
27
|
+
--progress-ring-buffer-color: var(--u-info-color-weakest);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
/* === Host === */
|
|
@@ -11,7 +11,7 @@ export type RadioOrientation = "vertical" | "horizontal";
|
|
|
11
11
|
* @csspart field - u-field 요소
|
|
12
12
|
* @csspart container - 옵션들을 감싸는 컨테이너
|
|
13
13
|
*
|
|
14
|
-
* @cssprop --radio-color - 선택 상태의 기준색 (기본: --u-primary-color
|
|
14
|
+
* @cssprop --radio-color - 선택 상태의 기준색 (기본: --u-primary-color)
|
|
15
15
|
* @cssprop --radio-color-active - 선택 상태 active 톤 (기본: --radio-color 85% + black)
|
|
16
16
|
*
|
|
17
17
|
* @event change - 사용자 상호작용(옵션 클릭·키보드)으로 선택 값이 변경될 때 발생.
|
|
@@ -2,7 +2,7 @@ import { css } from "lit";
|
|
|
2
2
|
//#region src/components/radio/URadio.styles.ts
|
|
3
3
|
var styles = css`
|
|
4
4
|
:host {
|
|
5
|
-
--radio-color: var(--u-primary-color
|
|
5
|
+
--radio-color: var(--u-primary-color);
|
|
6
6
|
--radio-color-active: color-mix(in srgb, var(--radio-color) 85%, black);
|
|
7
7
|
}
|
|
8
8
|
|
|
@@ -38,7 +38,7 @@ var styles = css`
|
|
|
38
38
|
border-radius: 0.35em;
|
|
39
39
|
}
|
|
40
40
|
:host([invalid]) .container {
|
|
41
|
-
border-color: var(--u-
|
|
41
|
+
border-color: var(--u-danger-color);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
/* Type: default */
|
|
@@ -2,7 +2,7 @@ import { css } from "lit";
|
|
|
2
2
|
//#region src/components/rating/URating.styles.ts
|
|
3
3
|
var styles = css`
|
|
4
4
|
:host {
|
|
5
|
-
--rating-symbol-color: var(--u-
|
|
5
|
+
--rating-symbol-color: var(--u-warning-color-weak);
|
|
6
6
|
--rating-symbol-off-color: var(--u-neutral-300);
|
|
7
7
|
}
|
|
8
8
|
|
|
@@ -32,7 +32,7 @@ var styles = css`
|
|
|
32
32
|
transition: color 0.15s ease, transform 0.15s ease;
|
|
33
33
|
}
|
|
34
34
|
.symbol:focus-visible {
|
|
35
|
-
outline: 2px solid var(--u-
|
|
35
|
+
outline: 2px solid var(--u-primary-color-weak);
|
|
36
36
|
outline-offset: 2px;
|
|
37
37
|
}
|
|
38
38
|
:host(:not([disabled]):not([readonly])) .symbol:hover {
|
|
@@ -79,7 +79,7 @@ var styles = css`
|
|
|
79
79
|
/* ===== Variant: underlined ===== */
|
|
80
80
|
:host([variant="underlined"]) .container {
|
|
81
81
|
border: none;
|
|
82
|
-
border-radius:
|
|
82
|
+
border-radius: var(--u-radius-none);
|
|
83
83
|
background-color: transparent;
|
|
84
84
|
padding-left: 0;
|
|
85
85
|
padding-right: 0;
|
|
@@ -107,7 +107,7 @@ var styles = css`
|
|
|
107
107
|
/* ===== Variant: borderless ===== */
|
|
108
108
|
:host([variant="borderless"]) .container {
|
|
109
109
|
border: none;
|
|
110
|
-
border-radius:
|
|
110
|
+
border-radius: var(--u-radius-none);
|
|
111
111
|
background-color: transparent;
|
|
112
112
|
padding: 0;
|
|
113
113
|
box-shadow: none;
|
|
@@ -171,7 +171,7 @@ var styles = css`
|
|
|
171
171
|
max-height: var(--select-popover-max-height);
|
|
172
172
|
padding: 4px;
|
|
173
173
|
border: 1px solid var(--u-border-color);
|
|
174
|
-
border-radius:
|
|
174
|
+
border-radius: var(--u-radius-lg);
|
|
175
175
|
background-color: var(--u-panel-bg-color);
|
|
176
176
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
|
|
177
177
|
overflow-x: hidden;
|
|
@@ -18,13 +18,13 @@ var styles = css`
|
|
|
18
18
|
|
|
19
19
|
/* 모양 설정 */
|
|
20
20
|
:host([shape="rectangle"]) {
|
|
21
|
-
border-radius:
|
|
21
|
+
border-radius: var(--u-radius-md);
|
|
22
22
|
}
|
|
23
23
|
:host([shape="circle"]) {
|
|
24
|
-
border-radius:
|
|
24
|
+
border-radius: var(--u-radius-circle);
|
|
25
25
|
}
|
|
26
26
|
:host([shape="rounded"]) {
|
|
27
|
-
border-radius:
|
|
27
|
+
border-radius: var(--u-radius-pill);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
/* 애니메이션 효과 설정 */
|
|
@@ -2,7 +2,7 @@ import { css } from "lit";
|
|
|
2
2
|
//#region src/components/slider/USlider.styles.ts
|
|
3
3
|
var styles = css`
|
|
4
4
|
:host {
|
|
5
|
-
--slider-fill-color: var(--u-primary-color
|
|
5
|
+
--slider-fill-color: var(--u-primary-color);
|
|
6
6
|
--slider-track-color: var(--u-neutral-300);
|
|
7
7
|
--slider-track-height: 6px;
|
|
8
8
|
--slider-thumb-size: 18px;
|
|
@@ -65,7 +65,7 @@ var styles = css`
|
|
|
65
65
|
align-items: center;
|
|
66
66
|
justify-content: center;
|
|
67
67
|
border: 2px solid var(--slider-thumb-border-color);
|
|
68
|
-
border-radius:
|
|
68
|
+
border-radius: var(--u-radius-circle);
|
|
69
69
|
background: var(--slider-thumb-color);
|
|
70
70
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
|
|
71
71
|
transition: transform 0.15s ease, box-shadow 0.15s ease;
|
|
@@ -85,7 +85,7 @@ var styles = css`
|
|
|
85
85
|
width: auto;
|
|
86
86
|
height: auto;
|
|
87
87
|
border: none;
|
|
88
|
-
border-radius:
|
|
88
|
+
border-radius: var(--u-radius-none);
|
|
89
89
|
background: transparent;
|
|
90
90
|
box-shadow: none;
|
|
91
91
|
}
|
|
@@ -104,13 +104,13 @@ var styles = css`
|
|
|
104
104
|
width: var(--slider-mark-size);
|
|
105
105
|
height: var(--slider-mark-size);
|
|
106
106
|
border: 2px solid var(--slider-mark-border-color);
|
|
107
|
-
border-radius:
|
|
107
|
+
border-radius: var(--u-radius-circle);
|
|
108
108
|
background: var(--slider-mark-color);
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
.mark-labels {
|
|
112
112
|
position: relative;
|
|
113
|
-
margin-top: 12px;
|
|
113
|
+
margin-top: var(--u-space-md, 12px);
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
.mark-label {
|
|
@@ -4,7 +4,7 @@ var styles = css`
|
|
|
4
4
|
:host {
|
|
5
5
|
--spinner-track-width: 0.125em;
|
|
6
6
|
--spinner-track-color: var(--u-neutral-200);
|
|
7
|
-
--spinner-indicator-color: var(--u-primary-color
|
|
7
|
+
--spinner-indicator-color: var(--u-primary-color);
|
|
8
8
|
--spinner-indicator-speed: 2s;
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -4,8 +4,8 @@ var styles = css`
|
|
|
4
4
|
:host {
|
|
5
5
|
--splitter-size: 4px;
|
|
6
6
|
--splitter-color: var(--u-neutral-200);
|
|
7
|
-
--splitter-color-hover: var(--u-
|
|
8
|
-
--splitter-color-active: var(--u-
|
|
7
|
+
--splitter-color-hover: var(--u-primary-color-weaker);
|
|
8
|
+
--splitter-color-active: var(--u-primary-color-weak);
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
:host {
|
|
@@ -5,7 +5,7 @@ var styles = css`
|
|
|
5
5
|
--switch-track-width: 2.4em;
|
|
6
6
|
--switch-track-height: 1.4em;
|
|
7
7
|
--switch-track-color: var(--u-neutral-300);
|
|
8
|
-
--switch-track-color-checked: var(--u-primary-color
|
|
8
|
+
--switch-track-color-checked: var(--u-primary-color);
|
|
9
9
|
--switch-thumb-size: 1.1em;
|
|
10
10
|
--switch-thumb-offset: 0.15em;
|
|
11
11
|
--switch-thumb-color: #fff;
|
|
@@ -34,7 +34,7 @@ var styles = css`
|
|
|
34
34
|
cursor: default;
|
|
35
35
|
}
|
|
36
36
|
:host([invalid]) .track {
|
|
37
|
-
outline: 2px solid var(--u-
|
|
37
|
+
outline: 2px solid var(--u-danger-color);
|
|
38
38
|
outline-offset: 1px;
|
|
39
39
|
}
|
|
40
40
|
:host(:not([disabled]):not([readonly]):hover) .track {
|
|
@@ -176,7 +176,7 @@ var styles = css`
|
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
.required {
|
|
179
|
-
color: var(--u-
|
|
179
|
+
color: var(--u-danger-color);
|
|
180
180
|
font-weight: 500;
|
|
181
181
|
}
|
|
182
182
|
|
|
@@ -188,7 +188,7 @@ var styles = css`
|
|
|
188
188
|
}
|
|
189
189
|
|
|
190
190
|
:host([invalid]) .description {
|
|
191
|
-
color: var(--u-
|
|
191
|
+
color: var(--u-danger-color);
|
|
192
192
|
}
|
|
193
193
|
`;
|
|
194
194
|
//#endregion
|
|
@@ -9,6 +9,8 @@ import { UElement } from '../UElement.js';
|
|
|
9
9
|
* @csspart remove-btn - 탭 닫기 버튼
|
|
10
10
|
*
|
|
11
11
|
* @event remove - 탭이 닫힐 때 발생. 이벤트 리스너에서 preventDefault()를 호출하면 탭이 닫히지 않습니다.
|
|
12
|
+
* @cssprop --tab-padding-block - 세로 여백
|
|
13
|
+
* @cssprop --tab-padding-inline - 가로 여백
|
|
12
14
|
*/
|
|
13
15
|
export declare class UTab extends UElement {
|
|
14
16
|
static styles: import('lit').CSSResultGroup[];
|
|
@@ -34,11 +34,12 @@ var UTab = class UTab extends UElement {
|
|
|
34
34
|
}
|
|
35
35
|
render() {
|
|
36
36
|
return html`
|
|
37
|
-
<
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
<div class="base" part="base">
|
|
38
|
+
<slot name="prefix"></slot>
|
|
39
|
+
<slot></slot>
|
|
40
|
+
<slot name="suffix"></slot>
|
|
41
|
+
|
|
42
|
+
<u-button class="remove-btn" part="remove-btn"
|
|
42
43
|
?hidden=${!this.removable}
|
|
43
44
|
variant="ghost"
|
|
44
45
|
tabindex="-1"
|
|
@@ -47,6 +48,7 @@ var UTab = class UTab extends UElement {
|
|
|
47
48
|
>
|
|
48
49
|
<u-icon lib="internal" name="x"></u-icon>
|
|
49
50
|
</u-button>
|
|
51
|
+
</div>
|
|
50
52
|
`;
|
|
51
53
|
}
|
|
52
54
|
};
|
|
@@ -5,16 +5,28 @@ var styles = css`
|
|
|
5
5
|
flex-shrink: 0;
|
|
6
6
|
position: relative;
|
|
7
7
|
display: inline-flex;
|
|
8
|
-
flex-direction: row;
|
|
9
|
-
align-items: center;
|
|
10
|
-
padding: 0.5em 0.75em;
|
|
11
8
|
font-size: 0.9em;
|
|
12
9
|
font-weight: 500;
|
|
13
10
|
color: var(--u-txt-color-weak);
|
|
14
11
|
white-space: nowrap;
|
|
15
12
|
user-select: none;
|
|
16
13
|
cursor: pointer;
|
|
14
|
+
|
|
15
|
+
--tab-padding-block: 0.5em;
|
|
16
|
+
--tab-padding-inline: 0.75em;
|
|
17
17
|
}
|
|
18
|
+
|
|
19
|
+
/* 여백은 내부 요소가 진다 — :host 에 두면 소비 앱 CSS 리셋에 지워진다. */
|
|
20
|
+
.base {
|
|
21
|
+
box-sizing: border-box;
|
|
22
|
+
width: 100%;
|
|
23
|
+
display: inline-flex;
|
|
24
|
+
flex-direction: row;
|
|
25
|
+
align-items: center;
|
|
26
|
+
padding: var(--tab-padding-block) var(--tab-padding-inline);
|
|
27
|
+
border-radius: inherit;
|
|
28
|
+
}
|
|
29
|
+
|
|
18
30
|
:host(:hover:not([disabled])) {
|
|
19
31
|
color: var(--u-txt-color);
|
|
20
32
|
}
|
|
@@ -13,7 +13,7 @@ export type TabPanelPlacement = 'top' | 'bottom' | 'left' | 'right';
|
|
|
13
13
|
* @csspart toolbar - 탭 헤더 내 툴바 영역
|
|
14
14
|
* @csspart content - 탭 패널이 있는 콘텐츠 영역
|
|
15
15
|
*
|
|
16
|
-
* @cssprop --tab-panel-color - 활성 탭의 기준색 (기본: --u-primary-color
|
|
16
|
+
* @cssprop --tab-panel-color - 활성 탭의 기준색 (기본: --u-primary-color)
|
|
17
17
|
*
|
|
18
18
|
* @event change - 탭을 클릭하거나 키보드로 선택했을 때만 발생한다. 최초 마운트 시 첫 탭이
|
|
19
19
|
* 자동 선택되는 경우나 `value` 프로퍼티를 직접 대입하는 경우는 사용자 조작이 아니므로
|
|
@@ -2,7 +2,7 @@ import { css } from "lit";
|
|
|
2
2
|
//#region src/components/tab-panel/UTabPanel.styles.ts
|
|
3
3
|
var styles = css`
|
|
4
4
|
:host {
|
|
5
|
-
--tab-panel-color: var(--u-primary-color
|
|
5
|
+
--tab-panel-color: var(--u-primary-color);
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
:host {
|
|
@@ -179,11 +179,11 @@ var styles = css`
|
|
|
179
179
|
gap: 0.25em;
|
|
180
180
|
padding: 0.25em;
|
|
181
181
|
background-color: var(--u-neutral-100);
|
|
182
|
-
border-radius:
|
|
182
|
+
border-radius: var(--u-radius-xl);
|
|
183
183
|
}
|
|
184
184
|
:host([variant="pill"]) ::slotted(u-tab) {
|
|
185
185
|
border: 1px solid transparent;
|
|
186
|
-
border-radius:
|
|
186
|
+
border-radius: var(--u-radius-lg);
|
|
187
187
|
}
|
|
188
188
|
:host([variant="pill"]) ::slotted(u-tab[active]) {
|
|
189
189
|
border-color: var(--u-border-color);
|
|
@@ -13,7 +13,10 @@ export type TagColor = "neutral" | "blue" | "green" | "yellow" | "red" | "orange
|
|
|
13
13
|
* @cssprop --tag-color - 텍스트 색상
|
|
14
14
|
* @cssprop --tag-bg-color - 배경 색상
|
|
15
15
|
* @cssprop --tag-border-color - 테두리 색상
|
|
16
|
-
* @cssprop --tag-fill-color - variant 별 채움 기준색 (기본: --u-primary-color
|
|
16
|
+
* @cssprop --tag-fill-color - variant 별 채움 기준색 (기본: --u-primary-color)
|
|
17
|
+
* @cssprop --tag-padding-block - 세로 여백
|
|
18
|
+
* @cssprop --tag-padding-inline - 가로 여백
|
|
19
|
+
* @cssprop --tag-gap - prefix/본문/suffix 사이 간격
|
|
17
20
|
*/
|
|
18
21
|
export declare class UTag extends UElement {
|
|
19
22
|
static styles: import('lit').CSSResultGroup[];
|
|
@@ -17,11 +17,13 @@ var UTag = class UTag extends UElement {
|
|
|
17
17
|
}
|
|
18
18
|
render() {
|
|
19
19
|
return html`
|
|
20
|
-
<
|
|
21
|
-
|
|
22
|
-
<
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
<div class="base" part="base">
|
|
21
|
+
<slot name="prefix"></slot>
|
|
22
|
+
<span class="content" part="content">
|
|
23
|
+
<slot></slot>
|
|
24
|
+
</span>
|
|
25
|
+
<slot name="suffix"></slot>
|
|
26
|
+
</div>
|
|
25
27
|
`;
|
|
26
28
|
}
|
|
27
29
|
};
|