@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 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-unit-gap: var(--spacing-gap-6);
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([data-style="fill"][data-preset="primary"]) {
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([data-style="fill"][data-preset="secondary"]) {
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([data-style="fill"][data-preset="tertiary"]) {
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([data-style="fill"][data-preset="green"]) {
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([data-style="fill"][data-preset="yellow"]) {
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([data-style="fill"][data-preset="orange"]) {
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([data-style="fill"][data-preset="red"]) {
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.8",
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);
@@ -25,6 +25,11 @@
25
25
  }
26
26
 
27
27
  .alternate {
28
+ --alternate-unit-gap: calc(
29
+ var(--alternate-loading-icon-small-size) *
30
+ var(--alternate-figure-text-gap-ratio)
31
+ );
32
+
28
33
  width: 100%;
29
34
  height: 100%;
30
35
  display: flex;
@@ -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-unit-gap: var(--spacing-gap-6);
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([data-style="fill"][data-preset="primary"]) {
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([data-style="fill"][data-preset="secondary"]) {
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([data-style="fill"][data-preset="tertiary"]) {
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([data-style="fill"][data-preset="green"]) {
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([data-style="fill"][data-preset="yellow"]) {
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([data-style="fill"][data-preset="orange"]) {
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([data-style="fill"][data-preset="red"]) {
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);