@uniai-fe/uds-primitives 0.12.8 → 0.12.10
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/styles.css +43 -14
- package/package.json +3 -3
- package/src/components/alternate/layout/Layout.tsx +3 -0
- package/src/components/alternate/layout/Text.tsx +23 -0
- package/src/components/alternate/styles/layout.scss +11 -0
- package/src/components/alternate/styles/unit.scss +5 -0
- package/src/components/alternate/styles/variables.scss +1 -2
- package/src/components/alternate/types/layout.ts +16 -0
- package/src/components/badge/styles/badge.scss +28 -12
package/dist/styles.css
CHANGED
|
@@ -3,13 +3,12 @@
|
|
|
3
3
|
--alternate-unit-text-color: var(--color-cool-gray-70);
|
|
4
4
|
--alternate-unit-text-font-size: 1.4rem;
|
|
5
5
|
--alternate-unit-text-line-height: 1.5;
|
|
6
|
-
--alternate-
|
|
6
|
+
--alternate-figure-text-gap-ratio: 0.344444;
|
|
7
7
|
--alternate-loading-icon-color: var(--color-primary-default);
|
|
8
8
|
--alternate-loading-icon-small-size: 2.4rem;
|
|
9
9
|
--alternate-loading-icon-medium-size: 3.6rem;
|
|
10
10
|
--alternate-loading-icon-large-size: 5.2rem;
|
|
11
11
|
--alternate-layout-min-block-size: 320px;
|
|
12
|
-
--alternate-layout-gap: var(--spacing-gap-7);
|
|
13
12
|
--alternate-layout-content-gap: var(--spacing-gap-4);
|
|
14
13
|
--alternate-layout-figure-size: 120px;
|
|
15
14
|
--alternate-layout-title-color: var(--color-label-strong);
|
|
@@ -1045,6 +1044,10 @@
|
|
|
1045
1044
|
}
|
|
1046
1045
|
|
|
1047
1046
|
.alternate {
|
|
1047
|
+
--alternate-unit-gap: calc(
|
|
1048
|
+
var(--alternate-loading-icon-small-size) *
|
|
1049
|
+
var(--alternate-figure-text-gap-ratio)
|
|
1050
|
+
);
|
|
1048
1051
|
width: 100%;
|
|
1049
1052
|
height: 100%;
|
|
1050
1053
|
display: flex;
|
|
@@ -1102,6 +1105,9 @@
|
|
|
1102
1105
|
}
|
|
1103
1106
|
|
|
1104
1107
|
.alternate-layout {
|
|
1108
|
+
--alternate-layout-gap: calc(
|
|
1109
|
+
var(--alternate-layout-figure-size) * var(--alternate-figure-text-gap-ratio)
|
|
1110
|
+
);
|
|
1105
1111
|
display: flex;
|
|
1106
1112
|
flex-direction: column;
|
|
1107
1113
|
align-items: center;
|
|
@@ -1122,6 +1128,13 @@
|
|
|
1122
1128
|
margin: 0;
|
|
1123
1129
|
}
|
|
1124
1130
|
|
|
1131
|
+
.alternate-layout-text {
|
|
1132
|
+
display: flex;
|
|
1133
|
+
flex-direction: column;
|
|
1134
|
+
align-items: center;
|
|
1135
|
+
gap: var(--alternate-layout-content-gap);
|
|
1136
|
+
}
|
|
1137
|
+
|
|
1125
1138
|
.alternate-layout-title {
|
|
1126
1139
|
margin: 0;
|
|
1127
1140
|
color: var(--alternate-layout-title-color);
|
|
@@ -1293,17 +1306,26 @@
|
|
|
1293
1306
|
line-height: 0;
|
|
1294
1307
|
}
|
|
1295
1308
|
|
|
1296
|
-
.badge:where(
|
|
1309
|
+
.badge:where(
|
|
1310
|
+
[data-style="fill"][data-preset="primary"],
|
|
1311
|
+
[data-style="count"][data-preset="primary"]
|
|
1312
|
+
) {
|
|
1297
1313
|
--badge-background-color: var(--color-primary-default);
|
|
1298
1314
|
--badge-text-color: var(--color-common-100);
|
|
1299
1315
|
}
|
|
1300
1316
|
|
|
1301
|
-
.badge:where(
|
|
1317
|
+
.badge:where(
|
|
1318
|
+
[data-style="fill"][data-preset="secondary"],
|
|
1319
|
+
[data-style="count"][data-preset="secondary"]
|
|
1320
|
+
) {
|
|
1302
1321
|
--badge-background-color: var(--color-secondary-default);
|
|
1303
1322
|
--badge-text-color: var(--color-primary-default);
|
|
1304
1323
|
}
|
|
1305
1324
|
|
|
1306
|
-
.badge:where(
|
|
1325
|
+
.badge:where(
|
|
1326
|
+
[data-style="fill"][data-preset="tertiary"],
|
|
1327
|
+
[data-style="count"][data-preset="tertiary"]
|
|
1328
|
+
) {
|
|
1307
1329
|
--badge-background-color: var(--color-cool-gray-10);
|
|
1308
1330
|
--badge-text-color: var(--color-common-100);
|
|
1309
1331
|
}
|
|
@@ -1313,22 +1335,34 @@
|
|
|
1313
1335
|
--badge-text-color: var(--color-label-neutral);
|
|
1314
1336
|
}
|
|
1315
1337
|
|
|
1316
|
-
.badge:where(
|
|
1338
|
+
.badge:where(
|
|
1339
|
+
[data-style="fill"][data-preset="green"],
|
|
1340
|
+
[data-style="count"][data-preset="green"]
|
|
1341
|
+
) {
|
|
1317
1342
|
--badge-background-color: var(--color-green-95);
|
|
1318
1343
|
--badge-text-color: var(--color-green-45);
|
|
1319
1344
|
}
|
|
1320
1345
|
|
|
1321
|
-
.badge:where(
|
|
1346
|
+
.badge:where(
|
|
1347
|
+
[data-style="fill"][data-preset="yellow"],
|
|
1348
|
+
[data-style="count"][data-preset="yellow"]
|
|
1349
|
+
) {
|
|
1322
1350
|
--badge-background-color: var(--color-yellow-95);
|
|
1323
1351
|
--badge-text-color: var(--color-yellow-45);
|
|
1324
1352
|
}
|
|
1325
1353
|
|
|
1326
|
-
.badge:where(
|
|
1354
|
+
.badge:where(
|
|
1355
|
+
[data-style="fill"][data-preset="orange"],
|
|
1356
|
+
[data-style="count"][data-preset="orange"]
|
|
1357
|
+
) {
|
|
1327
1358
|
--badge-background-color: var(--color-orange-95);
|
|
1328
1359
|
--badge-text-color: var(--color-orange-55);
|
|
1329
1360
|
}
|
|
1330
1361
|
|
|
1331
|
-
.badge:where(
|
|
1362
|
+
.badge:where(
|
|
1363
|
+
[data-style="fill"][data-preset="red"],
|
|
1364
|
+
[data-style="count"][data-preset="red"]
|
|
1365
|
+
) {
|
|
1332
1366
|
--badge-background-color: var(--color-red-95);
|
|
1333
1367
|
--badge-text-color: var(--color-red-55);
|
|
1334
1368
|
}
|
|
@@ -1373,11 +1407,6 @@
|
|
|
1373
1407
|
--badge-text-color: var(--color-red-55);
|
|
1374
1408
|
}
|
|
1375
1409
|
|
|
1376
|
-
.badge:where([data-style="count"][data-preset="primary"]) {
|
|
1377
|
-
--badge-background-color: var(--color-primary-default);
|
|
1378
|
-
--badge-text-color: var(--color-common-100);
|
|
1379
|
-
}
|
|
1380
|
-
|
|
1381
1410
|
.badge:where([data-style="count"][data-preset="gray"]) {
|
|
1382
1411
|
--badge-background-color: var(--color-cool-gray-90);
|
|
1383
1412
|
--badge-text-color: var(--color-label-standard);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uniai-fe/uds-primitives",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.10",
|
|
4
4
|
"description": "UNIAI Design System; Primitives Components Package",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -89,9 +89,9 @@
|
|
|
89
89
|
"typescript": "6.0.3",
|
|
90
90
|
"@uniai-fe/eslint-config": "0.4.3",
|
|
91
91
|
"@uniai-fe/tsconfig": "0.2.0",
|
|
92
|
+
"@uniai-fe/uds-foundation": "0.6.0",
|
|
92
93
|
"@uniai-fe/next-devkit": "0.4.1",
|
|
93
|
-
"@uniai-fe/util-functions": "0.4.3"
|
|
94
|
-
"@uniai-fe/uds-foundation": "0.6.0"
|
|
94
|
+
"@uniai-fe/util-functions": "0.4.3"
|
|
95
95
|
},
|
|
96
96
|
"scripts": {
|
|
97
97
|
"check:pre-commit": "pnpm --dir ../../.. run check:pre-commit",
|
|
@@ -2,6 +2,7 @@ import AlternateLayoutButton from "./Button";
|
|
|
2
2
|
import AlternateLayoutContainer from "./Container";
|
|
3
3
|
import AlternateLayoutContents from "./Contents";
|
|
4
4
|
import AlternateLayoutFigure from "./Figure";
|
|
5
|
+
import AlternateLayoutText from "./Text";
|
|
5
6
|
import AlternateLayoutTextButton from "./TextButton";
|
|
6
7
|
import AlternateLayoutTitle from "./Title";
|
|
7
8
|
|
|
@@ -10,6 +11,7 @@ import AlternateLayoutTitle from "./Title";
|
|
|
10
11
|
* @desc
|
|
11
12
|
* - `Container`: 화면 상태 조합 루트다.
|
|
12
13
|
* - `Figure`: 도입 측이 제어하는 visual 영역이다.
|
|
14
|
+
* - `Text`: 제목과 본문을 묶는 텍스트 영역이다.
|
|
13
15
|
* - `Title`: 제목 텍스트 영역이다.
|
|
14
16
|
* - `Contents`: 본문 텍스트 영역이다.
|
|
15
17
|
* - `TextButton`: paragraph 내부 text action이다.
|
|
@@ -18,6 +20,7 @@ import AlternateLayoutTitle from "./Title";
|
|
|
18
20
|
const AlternateLayout = {
|
|
19
21
|
Container: AlternateLayoutContainer,
|
|
20
22
|
Figure: AlternateLayoutFigure,
|
|
23
|
+
Text: AlternateLayoutText,
|
|
21
24
|
Title: AlternateLayoutTitle,
|
|
22
25
|
Contents: AlternateLayoutContents,
|
|
23
26
|
TextButton: AlternateLayoutTextButton,
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { clsx } from "clsx";
|
|
2
|
+
import type { AlternateLayoutTextProps } from "../types";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Alternate Layout Text; 제목과 본문을 묶는 텍스트 영역
|
|
6
|
+
* @component
|
|
7
|
+
* @param {AlternateLayoutTextProps} props
|
|
8
|
+
* @param {string} [props.className] 텍스트 영역 className override다.
|
|
9
|
+
* @param {React.ReactNode} [props.children] 제목과 본문 콘텐츠다.
|
|
10
|
+
* @example
|
|
11
|
+
* <Alternate.Layout.Text>
|
|
12
|
+
* <Alternate.Layout.Title>데이터가 없습니다.</Alternate.Layout.Title>
|
|
13
|
+
* <Alternate.Layout.Contents>다른 조건으로 검색해 주세요.</Alternate.Layout.Contents>
|
|
14
|
+
* </Alternate.Layout.Text>
|
|
15
|
+
*/
|
|
16
|
+
export default function AlternateLayoutText({
|
|
17
|
+
className,
|
|
18
|
+
children,
|
|
19
|
+
}: AlternateLayoutTextProps) {
|
|
20
|
+
return (
|
|
21
|
+
<div className={clsx("alternate-layout-text", className)}>{children}</div>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
.alternate-layout {
|
|
2
|
+
--alternate-layout-gap: calc(
|
|
3
|
+
var(--alternate-layout-figure-size) * var(--alternate-figure-text-gap-ratio)
|
|
4
|
+
);
|
|
5
|
+
|
|
2
6
|
display: flex;
|
|
3
7
|
flex-direction: column;
|
|
4
8
|
align-items: center;
|
|
@@ -19,6 +23,13 @@
|
|
|
19
23
|
margin: 0;
|
|
20
24
|
}
|
|
21
25
|
|
|
26
|
+
.alternate-layout-text {
|
|
27
|
+
display: flex;
|
|
28
|
+
flex-direction: column;
|
|
29
|
+
align-items: center;
|
|
30
|
+
gap: var(--alternate-layout-content-gap);
|
|
31
|
+
}
|
|
32
|
+
|
|
22
33
|
.alternate-layout-title {
|
|
23
34
|
margin: 0;
|
|
24
35
|
color: var(--alternate-layout-title-color);
|
|
@@ -2,14 +2,13 @@
|
|
|
2
2
|
--alternate-unit-text-color: var(--color-cool-gray-70);
|
|
3
3
|
--alternate-unit-text-font-size: 1.4rem;
|
|
4
4
|
--alternate-unit-text-line-height: 1.5;
|
|
5
|
-
--alternate-
|
|
5
|
+
--alternate-figure-text-gap-ratio: 0.344444;
|
|
6
6
|
--alternate-loading-icon-color: var(--color-primary-default);
|
|
7
7
|
--alternate-loading-icon-small-size: 2.4rem;
|
|
8
8
|
--alternate-loading-icon-medium-size: 3.6rem;
|
|
9
9
|
--alternate-loading-icon-large-size: 5.2rem;
|
|
10
10
|
|
|
11
11
|
--alternate-layout-min-block-size: 320px;
|
|
12
|
-
--alternate-layout-gap: var(--spacing-gap-7);
|
|
13
12
|
--alternate-layout-content-gap: var(--spacing-gap-4);
|
|
14
13
|
--alternate-layout-figure-size: 120px;
|
|
15
14
|
--alternate-layout-title-color: var(--color-label-strong);
|
|
@@ -38,6 +38,22 @@ export interface AlternateLayoutFigureProps {
|
|
|
38
38
|
children?: ReactNode;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Alternate Layout Text Props; 제목과 본문을 묶는 텍스트 영역 props
|
|
43
|
+
* @property {string} [className] 텍스트 영역 className override다.
|
|
44
|
+
* @property {ReactNode} [children] 제목과 본문 콘텐츠다.
|
|
45
|
+
*/
|
|
46
|
+
export interface AlternateLayoutTextProps {
|
|
47
|
+
/**
|
|
48
|
+
* 텍스트 영역 className override다.
|
|
49
|
+
*/
|
|
50
|
+
className?: string;
|
|
51
|
+
/**
|
|
52
|
+
* 제목과 본문 콘텐츠다.
|
|
53
|
+
*/
|
|
54
|
+
children?: ReactNode;
|
|
55
|
+
}
|
|
56
|
+
|
|
41
57
|
/**
|
|
42
58
|
* Alternate Layout Title Props; 제목 텍스트 props
|
|
43
59
|
* @property {ElementType} [as] 렌더링할 제목 요소다. 기본값은 strong이다.
|
|
@@ -121,17 +121,26 @@
|
|
|
121
121
|
line-height: 0;
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
-
.badge:where(
|
|
124
|
+
.badge:where(
|
|
125
|
+
[data-style="fill"][data-preset="primary"],
|
|
126
|
+
[data-style="count"][data-preset="primary"]
|
|
127
|
+
) {
|
|
125
128
|
--badge-background-color: var(--color-primary-default);
|
|
126
129
|
--badge-text-color: var(--color-common-100);
|
|
127
130
|
}
|
|
128
131
|
|
|
129
|
-
.badge:where(
|
|
132
|
+
.badge:where(
|
|
133
|
+
[data-style="fill"][data-preset="secondary"],
|
|
134
|
+
[data-style="count"][data-preset="secondary"]
|
|
135
|
+
) {
|
|
130
136
|
--badge-background-color: var(--color-secondary-default);
|
|
131
137
|
--badge-text-color: var(--color-primary-default);
|
|
132
138
|
}
|
|
133
139
|
|
|
134
|
-
.badge:where(
|
|
140
|
+
.badge:where(
|
|
141
|
+
[data-style="fill"][data-preset="tertiary"],
|
|
142
|
+
[data-style="count"][data-preset="tertiary"]
|
|
143
|
+
) {
|
|
135
144
|
--badge-background-color: var(--color-cool-gray-10);
|
|
136
145
|
--badge-text-color: var(--color-common-100);
|
|
137
146
|
}
|
|
@@ -141,22 +150,34 @@
|
|
|
141
150
|
--badge-text-color: var(--color-label-neutral);
|
|
142
151
|
}
|
|
143
152
|
|
|
144
|
-
.badge:where(
|
|
153
|
+
.badge:where(
|
|
154
|
+
[data-style="fill"][data-preset="green"],
|
|
155
|
+
[data-style="count"][data-preset="green"]
|
|
156
|
+
) {
|
|
145
157
|
--badge-background-color: var(--color-green-95);
|
|
146
158
|
--badge-text-color: var(--color-green-45);
|
|
147
159
|
}
|
|
148
160
|
|
|
149
|
-
.badge:where(
|
|
161
|
+
.badge:where(
|
|
162
|
+
[data-style="fill"][data-preset="yellow"],
|
|
163
|
+
[data-style="count"][data-preset="yellow"]
|
|
164
|
+
) {
|
|
150
165
|
--badge-background-color: var(--color-yellow-95);
|
|
151
166
|
--badge-text-color: var(--color-yellow-45);
|
|
152
167
|
}
|
|
153
168
|
|
|
154
|
-
.badge:where(
|
|
169
|
+
.badge:where(
|
|
170
|
+
[data-style="fill"][data-preset="orange"],
|
|
171
|
+
[data-style="count"][data-preset="orange"]
|
|
172
|
+
) {
|
|
155
173
|
--badge-background-color: var(--color-orange-95);
|
|
156
174
|
--badge-text-color: var(--color-orange-55);
|
|
157
175
|
}
|
|
158
176
|
|
|
159
|
-
.badge:where(
|
|
177
|
+
.badge:where(
|
|
178
|
+
[data-style="fill"][data-preset="red"],
|
|
179
|
+
[data-style="count"][data-preset="red"]
|
|
180
|
+
) {
|
|
160
181
|
--badge-background-color: var(--color-red-95);
|
|
161
182
|
--badge-text-color: var(--color-red-55);
|
|
162
183
|
}
|
|
@@ -201,11 +222,6 @@
|
|
|
201
222
|
--badge-text-color: var(--color-red-55);
|
|
202
223
|
}
|
|
203
224
|
|
|
204
|
-
.badge:where([data-style="count"][data-preset="primary"]) {
|
|
205
|
-
--badge-background-color: var(--color-primary-default);
|
|
206
|
-
--badge-text-color: var(--color-common-100);
|
|
207
|
-
}
|
|
208
|
-
|
|
209
225
|
.badge:where([data-style="count"][data-preset="gray"]) {
|
|
210
226
|
--badge-background-color: var(--color-cool-gray-90);
|
|
211
227
|
--badge-text-color: var(--color-label-standard);
|