@nurihaus/web-design-system 3.1.0 → 3.2.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/dist/ai/components.md +166 -2
- package/dist/ai/tokens.md +64 -15
- package/dist/avatar.js +2 -1
- package/dist/bottom-nav.js +407 -0
- package/dist/chip-group.js +317 -0
- package/dist/chunk-436.js +2 -1
- package/dist/chunk-653.js +296 -0
- package/dist/chunk-713.js +2 -1
- package/dist/chunk-77.js +2 -1
- package/dist/components/bottom-nav/base-bottom-nav.d.ts +10 -0
- package/dist/components/bottom-nav/bottom-nav-props.d.ts +1 -0
- package/dist/components/bottom-nav/bottom-nav-type.d.ts +36 -0
- package/dist/components/bottom-nav/bottom-nav.d.ts +4 -0
- package/dist/components/bottom-nav/bottom-nav.stories.d.ts +55 -0
- package/dist/components/chip-group/base-chip-group.d.ts +5 -0
- package/dist/components/chip-group/chip-group-props.d.ts +1 -0
- package/dist/components/chip-group/chip-group-type.d.ts +25 -0
- package/dist/components/chip-group/chip-group.d.ts +4 -0
- package/dist/components/chip-group/chip-group.stories.d.ts +27 -0
- package/dist/components/elements/text/text-props.d.ts +1 -1
- package/dist/components/elements/text/text.stories.d.ts +1 -1
- package/dist/components/icon/base-icon.d.ts +3 -0
- package/dist/components/icon/icon-paths.d.ts +202 -0
- package/dist/components/icon/icon-props.d.ts +6 -0
- package/dist/components/icon/icon-type.d.ts +14 -0
- package/dist/components/icon/icon.d.ts +4 -0
- package/dist/components/icon/icon.stories.d.ts +33 -0
- package/dist/components/skeleton/skeleton.stories.d.ts +5 -5
- package/dist/components/step-progress/base-step-progress.d.ts +7 -0
- package/dist/components/step-progress/step-progress-props.d.ts +10 -0
- package/dist/components/step-progress/step-progress-type.d.ts +17 -0
- package/dist/components/step-progress/step-progress.d.ts +4 -0
- package/dist/components/step-progress/step-progress.stories.d.ts +29 -0
- package/dist/components/toast/toast.stories.d.ts +5 -5
- package/dist/components.css +314 -0
- package/dist/icon.js +222 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +864 -54
- package/dist/step-progress.js +310 -0
- package/dist/styles.css +332 -12
- package/dist/toast.js +2 -1
- package/dist/tokens/generated/semantic-admin.d.ts +24 -24
- package/dist/tokens/generated/semantic-app.d.ts +24 -24
- package/dist/tokens.css +64 -12
- package/dist/tokens.js +48 -48
- package/package.json +21 -3
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** all: 단계 이름을 모두 보인다. current: 지금 단계 이름만(카드 안처럼 좁을 때) */
|
|
2
|
+
export declare const labelVisibility: readonly ["all", "current"];
|
|
3
|
+
export declare const stepProgressProps: {
|
|
4
|
+
labelVisibility: {
|
|
5
|
+
type: "className";
|
|
6
|
+
className: string;
|
|
7
|
+
values: readonly ["all", "current"];
|
|
8
|
+
default: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ComponentPropsWithRef, ReactNode } from 'react';
|
|
2
|
+
import { StyleProps } from '../../helpers/types/common-props';
|
|
3
|
+
import { labelVisibility } from './step-progress-props';
|
|
4
|
+
export type StepState = 'done' | 'current' | 'todo';
|
|
5
|
+
export interface StepProgressProps extends StyleProps {
|
|
6
|
+
/** 단계 이름. 순서대로 */
|
|
7
|
+
steps: ReactNode[];
|
|
8
|
+
/** 지금 단계의 순번(0부터). steps.length 면 모두 끝난 것이다 */
|
|
9
|
+
current: number;
|
|
10
|
+
labelVisibility?: (typeof labelVisibility)[number];
|
|
11
|
+
/** 'aria-label' 로 붙는다 (예: '진행 단계') */
|
|
12
|
+
label: string;
|
|
13
|
+
}
|
|
14
|
+
export type StepProgressRootProps = ComponentPropsWithRef<'ol'>;
|
|
15
|
+
export interface StepProgressStepProps extends ComponentPropsWithRef<'li'> {
|
|
16
|
+
state: StepState;
|
|
17
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { StepProgressProps } from './step-progress-type';
|
|
2
|
+
declare const StepProgress: import("react").ForwardRefExoticComponent<StepProgressProps & import("react").RefAttributes<HTMLOListElement>>;
|
|
3
|
+
export default StepProgress;
|
|
4
|
+
export type { StepProgressProps } from './step-progress-type';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/react-webpack5';
|
|
2
|
+
declare const meta: {
|
|
3
|
+
title: string;
|
|
4
|
+
component: import("react").ForwardRefExoticComponent<import("./step-progress-type").StepProgressProps & import("react").RefAttributes<HTMLOListElement>>;
|
|
5
|
+
args: {
|
|
6
|
+
label: string;
|
|
7
|
+
steps: string[];
|
|
8
|
+
current: number;
|
|
9
|
+
};
|
|
10
|
+
argTypes: {
|
|
11
|
+
current: {
|
|
12
|
+
control: {
|
|
13
|
+
type: "range";
|
|
14
|
+
min: number;
|
|
15
|
+
max: number;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
labelVisibility: {
|
|
19
|
+
control: {
|
|
20
|
+
type: "inline-radio";
|
|
21
|
+
};
|
|
22
|
+
options: readonly ["all", "current"];
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export default meta;
|
|
27
|
+
type Story = StoryObj<typeof meta>;
|
|
28
|
+
export declare const Default: Story;
|
|
29
|
+
export declare const LabelVisibility: Story;
|
|
@@ -17,8 +17,11 @@ declare const meta: {
|
|
|
17
17
|
variant: "default";
|
|
18
18
|
};
|
|
19
19
|
decorators: ((Story: import("storybook/internal/csf").PartialStoryFn<import("@storybook/react-webpack5").ReactRenderer, {
|
|
20
|
-
|
|
20
|
+
slot?: string | undefined | undefined;
|
|
21
21
|
style?: import("react").CSSProperties | undefined;
|
|
22
|
+
title: import("react").ReactNode;
|
|
23
|
+
key?: import("react").Key | null | undefined;
|
|
24
|
+
value?: string | number | readonly string[] | undefined;
|
|
22
25
|
defaultChecked?: boolean | undefined | undefined;
|
|
23
26
|
defaultValue?: string | number | readonly string[] | undefined;
|
|
24
27
|
suppressContentEditableWarning?: boolean | undefined | undefined;
|
|
@@ -26,6 +29,7 @@ declare const meta: {
|
|
|
26
29
|
accessKey?: string | undefined | undefined;
|
|
27
30
|
autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {}) | undefined;
|
|
28
31
|
autoFocus?: boolean | undefined | undefined;
|
|
32
|
+
className?: string | undefined;
|
|
29
33
|
contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
30
34
|
contextMenu?: string | undefined | undefined;
|
|
31
35
|
dir?: string | undefined | undefined;
|
|
@@ -35,10 +39,8 @@ declare const meta: {
|
|
|
35
39
|
id?: string | undefined | undefined;
|
|
36
40
|
lang?: string | undefined | undefined;
|
|
37
41
|
nonce?: string | undefined | undefined;
|
|
38
|
-
slot?: string | undefined | undefined;
|
|
39
42
|
spellCheck?: (boolean | "true" | "false") | undefined;
|
|
40
43
|
tabIndex?: number | undefined | undefined;
|
|
41
|
-
title: import("react").ReactNode;
|
|
42
44
|
translate?: "yes" | "no" | undefined | undefined;
|
|
43
45
|
radioGroup?: string | undefined | undefined;
|
|
44
46
|
role?: import("react").AriaRole | undefined;
|
|
@@ -282,8 +284,6 @@ declare const meta: {
|
|
|
282
284
|
onAnimationIterationCapture?: import("react").AnimationEventHandler<HTMLLIElement> | undefined;
|
|
283
285
|
onTransitionEnd?: import("react").TransitionEventHandler<HTMLLIElement> | undefined;
|
|
284
286
|
onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLLIElement> | undefined;
|
|
285
|
-
key?: import("react").Key | null | undefined;
|
|
286
|
-
value?: string | number | readonly string[] | undefined;
|
|
287
287
|
variant?: (typeof variants)[number] | undefined;
|
|
288
288
|
defaultOpen?: boolean | undefined;
|
|
289
289
|
open?: boolean | undefined;
|
package/dist/components.css
CHANGED
|
@@ -411,6 +411,152 @@
|
|
|
411
411
|
border: var(--hairline) solid var(--color-grey-scale-300);
|
|
412
412
|
}
|
|
413
413
|
|
|
414
|
+
.base-bottom-nav:where(.root) {
|
|
415
|
+
position: fixed;
|
|
416
|
+
left: var(--spacing-16);
|
|
417
|
+
right: var(--spacing-16);
|
|
418
|
+
/* 기기 홈 막대만큼 더 띄운다. env() 의 대체값 0 은 단위가 있어야 calc 가 성립한다 */
|
|
419
|
+
bottom: calc(var(--bottom-nav-offset) + env(safe-area-inset-bottom, 0px)); /* raw-px */
|
|
420
|
+
z-index: var(--z-sticky);
|
|
421
|
+
display: grid;
|
|
422
|
+
grid-template-columns: repeat(var(--bottom-nav-count), minmax(0, 1fr));
|
|
423
|
+
height: var(--bottom-nav-height);
|
|
424
|
+
padding: var(--bottom-nav-padding);
|
|
425
|
+
box-sizing: border-box;
|
|
426
|
+
border-radius: var(--radius-full);
|
|
427
|
+
isolation: isolate;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
.base-bottom-nav:where(.indicator) {
|
|
431
|
+
position: absolute;
|
|
432
|
+
z-index: var(--z-base);
|
|
433
|
+
top: var(--bottom-nav-padding);
|
|
434
|
+
bottom: var(--bottom-nav-padding);
|
|
435
|
+
left: var(--bottom-nav-padding);
|
|
436
|
+
width: calc((100% - 2 * var(--bottom-nav-padding)) / var(--bottom-nav-count));
|
|
437
|
+
border-radius: inherit;
|
|
438
|
+
transform: translateX(calc(var(--bottom-nav-active) * 100%));
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
.base-bottom-nav:where(.item) {
|
|
442
|
+
position: relative;
|
|
443
|
+
z-index: var(--z-raised);
|
|
444
|
+
display: flex;
|
|
445
|
+
flex-direction: column-reverse;
|
|
446
|
+
align-items: center;
|
|
447
|
+
justify-content: center;
|
|
448
|
+
gap: var(--spacing-2);
|
|
449
|
+
border-radius: inherit;
|
|
450
|
+
text-decoration: none;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
/***************************************************************************************************
|
|
454
|
+
* *
|
|
455
|
+
* bottom-nav — 유리 캡슐 *
|
|
456
|
+
* *
|
|
457
|
+
***************************************************************************************************/
|
|
458
|
+
|
|
459
|
+
.bottom-nav {
|
|
460
|
+
/* 뒤를 흐리고 채도를 올린 반투명 바탕 + 위쪽 반사광 + 흰 안쪽 테두리 + 그림자 */
|
|
461
|
+
background:
|
|
462
|
+
linear-gradient(
|
|
463
|
+
180deg,
|
|
464
|
+
color-mix(in srgb, var(--color-grey-scale-50) 55%, transparent),
|
|
465
|
+
transparent 55%
|
|
466
|
+
),
|
|
467
|
+
color-mix(in srgb, var(--color-grey-scale-50) 62%, transparent);
|
|
468
|
+
backdrop-filter: blur(var(--glass-blur)) saturate(180%);
|
|
469
|
+
box-shadow:
|
|
470
|
+
inset 0 var(--hairline) 0 color-mix(in srgb, var(--color-grey-scale-50) 75%, transparent),
|
|
471
|
+
inset 0 0 0 var(--hairline) color-mix(in srgb, var(--color-grey-scale-50) 35%, transparent),
|
|
472
|
+
var(--shadow-floating);
|
|
473
|
+
|
|
474
|
+
/* 흐림을 못 하는 브라우저, 투명도 줄이기 설정에서는 거의 불투명하게 */
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
@supports not ((backdrop-filter: none) or (-webkit-backdrop-filter: none)) {
|
|
478
|
+
|
|
479
|
+
.bottom-nav {
|
|
480
|
+
background: color-mix(in srgb, var(--color-grey-scale-50) 96%, transparent);
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
@media (prefers-reduced-transparency: reduce) {
|
|
485
|
+
|
|
486
|
+
.bottom-nav {
|
|
487
|
+
background: color-mix(in srgb, var(--color-grey-scale-50) 98%, transparent);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
.bottom-nav-indicator {
|
|
492
|
+
background: color-mix(in srgb, var(--color-purple-900) 10%, transparent);
|
|
493
|
+
box-shadow: inset 0 var(--hairline) 0
|
|
494
|
+
color-mix(in srgb, var(--color-grey-scale-50) 50%, transparent);
|
|
495
|
+
transition: transform var(--motion-slow) var(--motion-spring);
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
@media (prefers-reduced-motion: reduce) {
|
|
499
|
+
|
|
500
|
+
.bottom-nav-indicator {
|
|
501
|
+
transition: none;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
.bottom-nav-item {
|
|
506
|
+
color: var(--color-grey-scale-600);
|
|
507
|
+
font-size: var(--font-size-xsm);
|
|
508
|
+
font-weight: var(--font-weight-medium);
|
|
509
|
+
-webkit-tap-highlight-color: transparent;
|
|
510
|
+
transition: color var(--motion-fast) var(--motion-ease);
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
.bottom-nav-item[aria-current='page'] {
|
|
514
|
+
color: var(--color-purple-900);
|
|
515
|
+
font-weight: var(--font-weight-bold);
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
.bottom-nav-item:focus-visible {
|
|
519
|
+
outline: var(--hairline) solid var(--color-purple-600);
|
|
520
|
+
outline-offset: calc(-1 * var(--spacing-2));
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
.bottom-nav-item:active .bottom-nav-icon {
|
|
524
|
+
transform: scale(0.88);
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
.bottom-nav-icon {
|
|
528
|
+
position: relative;
|
|
529
|
+
display: flex;
|
|
530
|
+
transition: transform var(--motion-fast) var(--motion-spring);
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
.bottom-nav-badge {
|
|
534
|
+
position: absolute;
|
|
535
|
+
top: 0;
|
|
536
|
+
left: calc(100% - var(--spacing-6));
|
|
537
|
+
min-width: var(--bottom-nav-badge-dot);
|
|
538
|
+
height: var(--bottom-nav-badge-dot);
|
|
539
|
+
box-sizing: border-box;
|
|
540
|
+
border-radius: var(--radius-full);
|
|
541
|
+
background: var(--color-accent-red-500);
|
|
542
|
+
box-shadow: 0 0 0 var(--spacing-2) var(--color-grey-scale-50);
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
.bottom-nav-badge[data-count] {
|
|
546
|
+
top: calc(-1 * var(--spacing-4));
|
|
547
|
+
left: calc(100% - var(--spacing-8));
|
|
548
|
+
min-width: var(--bottom-nav-badge-count);
|
|
549
|
+
height: var(--bottom-nav-badge-count);
|
|
550
|
+
padding: 0 var(--spacing-4);
|
|
551
|
+
display: flex;
|
|
552
|
+
align-items: center;
|
|
553
|
+
justify-content: center;
|
|
554
|
+
color: var(--color-grey-scale-50);
|
|
555
|
+
font-size: var(--font-size-xsm);
|
|
556
|
+
font-weight: var(--font-weight-bold);
|
|
557
|
+
font-variant-numeric: tabular-nums;
|
|
558
|
+
}
|
|
559
|
+
|
|
414
560
|
.base-breadcrumb:where(.list) {
|
|
415
561
|
display: flex;
|
|
416
562
|
flex-wrap: wrap;
|
|
@@ -733,6 +879,84 @@
|
|
|
733
879
|
background-color: var(--color-grey-scale-300);
|
|
734
880
|
}
|
|
735
881
|
|
|
882
|
+
.base-chip-group:where(.root) {
|
|
883
|
+
display: flex;
|
|
884
|
+
gap: var(--spacing-8);
|
|
885
|
+
overflow-x: auto;
|
|
886
|
+
/* 칩의 터치 여백이 잘리지 않게 위아래를 비운다 */
|
|
887
|
+
padding-block: var(--spacing-4);
|
|
888
|
+
scrollbar-width: none;
|
|
889
|
+
}
|
|
890
|
+
|
|
891
|
+
.base-chip-group:where(.root)::-webkit-scrollbar {
|
|
892
|
+
display: none;
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
.base-chip-group:where(.chip) {
|
|
896
|
+
position: relative;
|
|
897
|
+
flex-shrink: 0;
|
|
898
|
+
display: inline-flex;
|
|
899
|
+
align-items: center;
|
|
900
|
+
gap: var(--spacing-6);
|
|
901
|
+
cursor: pointer;
|
|
902
|
+
|
|
903
|
+
/* 36 높이를 터치 44 로 넓힌다 */
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
.base-chip-group:where(.chip)::after {
|
|
907
|
+
content: '';
|
|
908
|
+
position: absolute;
|
|
909
|
+
inset: calc(-1 * var(--spacing-4)) 0;
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
.base-chip-group[data-disabled]:where(.chip) {
|
|
913
|
+
cursor: not-allowed;
|
|
914
|
+
}
|
|
915
|
+
|
|
916
|
+
/***************************************************************************************************
|
|
917
|
+
* *
|
|
918
|
+
* chip-group *
|
|
919
|
+
* *
|
|
920
|
+
***************************************************************************************************/
|
|
921
|
+
|
|
922
|
+
.chip-group-chip {
|
|
923
|
+
height: var(--control-height-s);
|
|
924
|
+
padding: 0 var(--spacing-14);
|
|
925
|
+
border: var(--hairline) solid var(--color-grey-scale-300);
|
|
926
|
+
border-radius: var(--radius-full);
|
|
927
|
+
background: var(--color-grey-scale-50);
|
|
928
|
+
color: var(--color-grey-scale-600);
|
|
929
|
+
font-size: var(--font-size-sm);
|
|
930
|
+
font-weight: var(--font-weight-medium);
|
|
931
|
+
transition:
|
|
932
|
+
background-color var(--motion-fast) var(--motion-ease),
|
|
933
|
+
color var(--motion-fast) var(--motion-ease),
|
|
934
|
+
border-color var(--motion-fast) var(--motion-ease);
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
.chip-group-chip[data-state='on'] {
|
|
938
|
+
border-color: var(--color-purple-900);
|
|
939
|
+
background: var(--color-purple-900);
|
|
940
|
+
color: var(--color-grey-scale-50);
|
|
941
|
+
font-weight: var(--font-weight-semibold);
|
|
942
|
+
}
|
|
943
|
+
|
|
944
|
+
.chip-group-chip[data-disabled] {
|
|
945
|
+
border-color: var(--color-grey-scale-200);
|
|
946
|
+
color: var(--color-grey-scale-300);
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
.chip-group-chip:focus-visible {
|
|
950
|
+
outline: var(--hairline) solid var(--color-purple-600);
|
|
951
|
+
outline-offset: var(--spacing-2);
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
.chip-group-count {
|
|
955
|
+
font-size: var(--font-size-xsm);
|
|
956
|
+
font-variant-numeric: tabular-nums;
|
|
957
|
+
opacity: 0.75;
|
|
958
|
+
}
|
|
959
|
+
|
|
736
960
|
.base-collapsible-menu.trigger {
|
|
737
961
|
display: flex;
|
|
738
962
|
align-items: center;
|
|
@@ -1703,6 +1927,26 @@
|
|
|
1703
1927
|
color: var(--color-accent-orange-900);
|
|
1704
1928
|
}
|
|
1705
1929
|
|
|
1930
|
+
.base-icon {
|
|
1931
|
+
flex-shrink: 0;
|
|
1932
|
+
vertical-align: middle;
|
|
1933
|
+
}
|
|
1934
|
+
|
|
1935
|
+
.icon.size-s {
|
|
1936
|
+
width: var(--icon-size-s);
|
|
1937
|
+
height: var(--icon-size-s);
|
|
1938
|
+
}
|
|
1939
|
+
|
|
1940
|
+
.icon.size-m {
|
|
1941
|
+
width: var(--icon-size-m);
|
|
1942
|
+
height: var(--icon-size-m);
|
|
1943
|
+
}
|
|
1944
|
+
|
|
1945
|
+
.icon.size-l {
|
|
1946
|
+
width: var(--icon-size-l);
|
|
1947
|
+
height: var(--icon-size-l);
|
|
1948
|
+
}
|
|
1949
|
+
|
|
1706
1950
|
.base-inline-loading {
|
|
1707
1951
|
display: flex;
|
|
1708
1952
|
width: 100%;
|
|
@@ -2229,6 +2473,76 @@
|
|
|
2229
2473
|
}
|
|
2230
2474
|
}
|
|
2231
2475
|
|
|
2476
|
+
.base-step-progress:where(.root) {
|
|
2477
|
+
display: grid;
|
|
2478
|
+
grid-template-columns: repeat(var(--step-count), minmax(0, 1fr));
|
|
2479
|
+
gap: var(--spacing-4);
|
|
2480
|
+
margin: 0;
|
|
2481
|
+
padding: 0;
|
|
2482
|
+
list-style: none;
|
|
2483
|
+
}
|
|
2484
|
+
|
|
2485
|
+
.base-step-progress:where(.step) {
|
|
2486
|
+
display: flex;
|
|
2487
|
+
flex-direction: column;
|
|
2488
|
+
gap: var(--spacing-6);
|
|
2489
|
+
min-width: 0;
|
|
2490
|
+
}
|
|
2491
|
+
|
|
2492
|
+
/***************************************************************************************************
|
|
2493
|
+
* *
|
|
2494
|
+
* step-progress *
|
|
2495
|
+
* *
|
|
2496
|
+
***************************************************************************************************/
|
|
2497
|
+
|
|
2498
|
+
.step-progress-bar {
|
|
2499
|
+
display: block;
|
|
2500
|
+
height: var(--step-bar-height);
|
|
2501
|
+
border-radius: var(--radius-full);
|
|
2502
|
+
background: var(--color-grey-scale-200);
|
|
2503
|
+
transition: background-color var(--motion-base) var(--motion-ease);
|
|
2504
|
+
}
|
|
2505
|
+
|
|
2506
|
+
.step-progress-name {
|
|
2507
|
+
overflow: hidden;
|
|
2508
|
+
color: var(--color-grey-scale-500);
|
|
2509
|
+
font-size: var(--font-size-xsm);
|
|
2510
|
+
white-space: nowrap;
|
|
2511
|
+
text-overflow: ellipsis;
|
|
2512
|
+
}
|
|
2513
|
+
|
|
2514
|
+
.step-progress-step[data-state='done'] .step-progress-bar {
|
|
2515
|
+
background: var(--color-purple-900);
|
|
2516
|
+
}
|
|
2517
|
+
|
|
2518
|
+
.step-progress-step[data-state='done'] .step-progress-name {
|
|
2519
|
+
color: var(--color-grey-scale-600);
|
|
2520
|
+
}
|
|
2521
|
+
|
|
2522
|
+
.step-progress-step[data-state='current'] .step-progress-bar {
|
|
2523
|
+
background: var(--color-purple-600);
|
|
2524
|
+
}
|
|
2525
|
+
|
|
2526
|
+
.step-progress-step[data-state='current'] .step-progress-name {
|
|
2527
|
+
color: var(--color-purple-900);
|
|
2528
|
+
font-weight: var(--font-weight-semibold);
|
|
2529
|
+
}
|
|
2530
|
+
|
|
2531
|
+
/* 지금 단계 이름만 보인다. 다른 이름은 낭독기에는 남긴다 */
|
|
2532
|
+
|
|
2533
|
+
.step-progress.label-visibility-current .step-progress-step:not([data-state='current']) .step-progress-name {
|
|
2534
|
+
position: absolute;
|
|
2535
|
+
width: 1px; /* raw-px */
|
|
2536
|
+
height: 1px; /* raw-px */
|
|
2537
|
+
overflow: hidden;
|
|
2538
|
+
clip-path: inset(50%);
|
|
2539
|
+
white-space: nowrap;
|
|
2540
|
+
}
|
|
2541
|
+
|
|
2542
|
+
.step-progress.label-visibility-current .step-progress-step[data-state='current'] .step-progress-name {
|
|
2543
|
+
overflow: visible;
|
|
2544
|
+
}
|
|
2545
|
+
|
|
2232
2546
|
.base-switch:where(.thumb) {
|
|
2233
2547
|
display: block;
|
|
2234
2548
|
}
|
package/dist/icon.js
ADDED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import * as __WEBPACK_EXTERNAL_MODULE_react__ from "react";
|
|
3
|
+
import * as __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_179142b8__ from "react/jsx-runtime";
|
|
4
|
+
/******/ var __webpack_modules__ = ({
|
|
5
|
+
|
|
6
|
+
/***/ 3547
|
|
7
|
+
(__unused_webpack_module, __webpack_exports__, __nuri_require__) {
|
|
8
|
+
|
|
9
|
+
/* harmony export */ __nuri_require__.d(__webpack_exports__, {
|
|
10
|
+
/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
11
|
+
/* harmony export */ });
|
|
12
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __nuri_require__(612);
|
|
13
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nuri_require__(1041);
|
|
14
|
+
/* harmony import */ var _helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__ = __nuri_require__(3274);
|
|
15
|
+
/* harmony import */ var _helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_3__ = __nuri_require__(7335);
|
|
16
|
+
/* harmony import */ var _base_icon__WEBPACK_IMPORTED_MODULE_4__ = __nuri_require__(9896);
|
|
17
|
+
/* harmony import */ var _icon_props__WEBPACK_IMPORTED_MODULE_5__ = __nuri_require__(6722);
|
|
18
|
+
var __assign = undefined && undefined.__assign || function () {
|
|
19
|
+
__assign = Object.assign || function (t) {
|
|
20
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
21
|
+
s = arguments[i];
|
|
22
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
23
|
+
}
|
|
24
|
+
return t;
|
|
25
|
+
};
|
|
26
|
+
return __assign.apply(this, arguments);
|
|
27
|
+
};
|
|
28
|
+
var __rest = undefined && undefined.__rest || function (s, e) {
|
|
29
|
+
var t = {};
|
|
30
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
31
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
32
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
33
|
+
}
|
|
34
|
+
return t;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
var Icon = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function (props, ref) {
|
|
43
|
+
var _a = (0,_helpers_utils_getMergedProps__WEBPACK_IMPORTED_MODULE_3__/* .getMergedProps */ .p)(props, _icon_props__WEBPACK_IMPORTED_MODULE_5__/* .iconProps */ .u1),
|
|
44
|
+
className = _a.className,
|
|
45
|
+
restProps = __rest(_a, ["className"]);
|
|
46
|
+
return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_base_icon__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A, __assign({
|
|
47
|
+
ref: ref,
|
|
48
|
+
className: (0,_helpers_utils_classNames__WEBPACK_IMPORTED_MODULE_2__/* .classNames */ .x)(className, 'icon')
|
|
49
|
+
}, restProps));
|
|
50
|
+
});
|
|
51
|
+
Icon.displayName = 'Icon';
|
|
52
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Icon);
|
|
53
|
+
|
|
54
|
+
/***/ },
|
|
55
|
+
|
|
56
|
+
/***/ 1041
|
|
57
|
+
(module, __unused_webpack_exports, __nuri_require__) {
|
|
58
|
+
|
|
59
|
+
var x = (y) => {
|
|
60
|
+
var x = {}; __nuri_require__.d(x, y); return x
|
|
61
|
+
}
|
|
62
|
+
var y = (x) => (() => (x))
|
|
63
|
+
module.exports = x({ ["forwardRef"]: () => (__WEBPACK_EXTERNAL_MODULE_react__.forwardRef) });
|
|
64
|
+
|
|
65
|
+
/***/ },
|
|
66
|
+
|
|
67
|
+
/***/ 612
|
|
68
|
+
(module, __unused_webpack_exports, __nuri_require__) {
|
|
69
|
+
|
|
70
|
+
var x = (y) => {
|
|
71
|
+
var x = {}; __nuri_require__.d(x, y); return x
|
|
72
|
+
}
|
|
73
|
+
var y = (x) => (() => (x))
|
|
74
|
+
module.exports = x({ ["jsx"]: () => (__WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_179142b8__.jsx) });
|
|
75
|
+
|
|
76
|
+
/***/ }
|
|
77
|
+
|
|
78
|
+
/******/ });
|
|
79
|
+
/************************************************************************/
|
|
80
|
+
/******/ // The module cache
|
|
81
|
+
/******/ var __webpack_module_cache__ = {};
|
|
82
|
+
/******/
|
|
83
|
+
/******/ // The require function
|
|
84
|
+
/******/ function __nuri_require__(moduleId) {
|
|
85
|
+
/******/ // Check if module is in cache
|
|
86
|
+
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
87
|
+
/******/ if (cachedModule !== undefined) {
|
|
88
|
+
/******/ return cachedModule.exports;
|
|
89
|
+
/******/ }
|
|
90
|
+
/******/ // Create a new module (and put it into the cache)
|
|
91
|
+
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
92
|
+
/******/ // no module.id needed
|
|
93
|
+
/******/ // no module.loaded needed
|
|
94
|
+
/******/ exports: {}
|
|
95
|
+
/******/ };
|
|
96
|
+
/******/
|
|
97
|
+
/******/ // Execute the module function
|
|
98
|
+
/******/ __webpack_modules__[moduleId](module, module.exports, __nuri_require__);
|
|
99
|
+
/******/
|
|
100
|
+
/******/ // Return the exports of the module
|
|
101
|
+
/******/ return module.exports;
|
|
102
|
+
/******/ }
|
|
103
|
+
/******/
|
|
104
|
+
/******/ // expose the modules object (__webpack_modules__)
|
|
105
|
+
/******/ __nuri_require__.m = __webpack_modules__;
|
|
106
|
+
/******/
|
|
107
|
+
/************************************************************************/
|
|
108
|
+
/******/ /* webpack/runtime/chunk loaded */
|
|
109
|
+
/******/ (() => {
|
|
110
|
+
/******/ var deferred = [];
|
|
111
|
+
/******/ __nuri_require__.O = (result, chunkIds, fn, priority) => {
|
|
112
|
+
/******/ if(chunkIds) {
|
|
113
|
+
/******/ priority = priority || 0;
|
|
114
|
+
/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
|
|
115
|
+
/******/ deferred[i] = [chunkIds, fn, priority];
|
|
116
|
+
/******/ return;
|
|
117
|
+
/******/ }
|
|
118
|
+
/******/ var notFulfilled = Infinity;
|
|
119
|
+
/******/ for (var i = 0; i < deferred.length; i++) {
|
|
120
|
+
/******/ var [chunkIds, fn, priority] = deferred[i];
|
|
121
|
+
/******/ var fulfilled = true;
|
|
122
|
+
/******/ for (var j = 0; j < chunkIds.length; j++) {
|
|
123
|
+
/******/ if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__nuri_require__.O).every((key) => (__nuri_require__.O[key](chunkIds[j])))) {
|
|
124
|
+
/******/ chunkIds.splice(j--, 1);
|
|
125
|
+
/******/ } else {
|
|
126
|
+
/******/ fulfilled = false;
|
|
127
|
+
/******/ if(priority < notFulfilled) notFulfilled = priority;
|
|
128
|
+
/******/ }
|
|
129
|
+
/******/ }
|
|
130
|
+
/******/ if(fulfilled) {
|
|
131
|
+
/******/ deferred.splice(i--, 1)
|
|
132
|
+
/******/ var r = fn();
|
|
133
|
+
/******/ if (r !== undefined) result = r;
|
|
134
|
+
/******/ }
|
|
135
|
+
/******/ }
|
|
136
|
+
/******/ return result;
|
|
137
|
+
/******/ };
|
|
138
|
+
/******/ })();
|
|
139
|
+
/******/
|
|
140
|
+
/******/ /* webpack/runtime/define property getters */
|
|
141
|
+
/******/ (() => {
|
|
142
|
+
/******/ // define getter functions for harmony exports
|
|
143
|
+
/******/ __nuri_require__.d = (exports, definition) => {
|
|
144
|
+
/******/ for(var key in definition) {
|
|
145
|
+
/******/ if(__nuri_require__.o(definition, key) && !__nuri_require__.o(exports, key)) {
|
|
146
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
147
|
+
/******/ }
|
|
148
|
+
/******/ }
|
|
149
|
+
/******/ };
|
|
150
|
+
/******/ })();
|
|
151
|
+
/******/
|
|
152
|
+
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
153
|
+
/******/ (() => {
|
|
154
|
+
/******/ __nuri_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
155
|
+
/******/ })();
|
|
156
|
+
/******/
|
|
157
|
+
/******/ /* webpack/runtime/export webpack runtime */
|
|
158
|
+
/******/ export { __nuri_require__ };
|
|
159
|
+
/******/
|
|
160
|
+
/******/ /* webpack/runtime/import chunk loading */
|
|
161
|
+
/******/ (() => {
|
|
162
|
+
/******/ // no baseURI
|
|
163
|
+
/******/
|
|
164
|
+
/******/ // object to store loaded and loading chunks
|
|
165
|
+
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
|
|
166
|
+
/******/ // [resolve, Promise] = chunk loading, 0 = chunk loaded
|
|
167
|
+
/******/ var installedChunks = {
|
|
168
|
+
/******/ 480: 0
|
|
169
|
+
/******/ };
|
|
170
|
+
/******/
|
|
171
|
+
/******/ var installChunk = (data) => {
|
|
172
|
+
/******/ var {__webpack_esm_ids__, __webpack_esm_modules__, __webpack_esm_runtime__} = data;
|
|
173
|
+
/******/ // add "modules" to the modules object,
|
|
174
|
+
/******/ // then flag all "ids" as loaded and fire callback
|
|
175
|
+
/******/ var moduleId, chunkId, i = 0;
|
|
176
|
+
/******/ for(moduleId in __webpack_esm_modules__) {
|
|
177
|
+
/******/ if(__nuri_require__.o(__webpack_esm_modules__, moduleId)) {
|
|
178
|
+
/******/ __nuri_require__.m[moduleId] = __webpack_esm_modules__[moduleId];
|
|
179
|
+
/******/ }
|
|
180
|
+
/******/ }
|
|
181
|
+
/******/ if(__webpack_esm_runtime__) __webpack_esm_runtime__(__nuri_require__);
|
|
182
|
+
/******/ for(;i < __webpack_esm_ids__.length; i++) {
|
|
183
|
+
/******/ chunkId = __webpack_esm_ids__[i];
|
|
184
|
+
/******/ if(__nuri_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
|
|
185
|
+
/******/ installedChunks[chunkId][0]();
|
|
186
|
+
/******/ }
|
|
187
|
+
/******/ installedChunks[__webpack_esm_ids__[i]] = 0;
|
|
188
|
+
/******/ }
|
|
189
|
+
/******/ __nuri_require__.O();
|
|
190
|
+
/******/ }
|
|
191
|
+
/******/
|
|
192
|
+
/******/ // no chunk on demand loading
|
|
193
|
+
/******/
|
|
194
|
+
/******/ // no prefetching
|
|
195
|
+
/******/
|
|
196
|
+
/******/ // no preloaded
|
|
197
|
+
/******/
|
|
198
|
+
/******/ __nuri_require__.C = installChunk;
|
|
199
|
+
/******/
|
|
200
|
+
/******/ __nuri_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);
|
|
201
|
+
/******/ // no HMR
|
|
202
|
+
/******/
|
|
203
|
+
/******/ // no HMR manifest
|
|
204
|
+
/******/ })();
|
|
205
|
+
/******/
|
|
206
|
+
/************************************************************************/
|
|
207
|
+
/******/
|
|
208
|
+
/******/ import * as __webpack_chunk_1__ from "./chunk-364.js";
|
|
209
|
+
/******/ __nuri_require__.C(__webpack_chunk_1__);
|
|
210
|
+
/******/ import * as __webpack_chunk_2__ from "./chunk-298.js";
|
|
211
|
+
/******/ __nuri_require__.C(__webpack_chunk_2__);
|
|
212
|
+
/******/ import * as __webpack_chunk_3__ from "./chunk-653.js";
|
|
213
|
+
/******/ __nuri_require__.C(__webpack_chunk_3__);
|
|
214
|
+
/******/
|
|
215
|
+
/******/ // startup
|
|
216
|
+
/******/ // Load entry module and return exports
|
|
217
|
+
/******/ // This entry module depends on other loaded chunks and execution need to be delayed
|
|
218
|
+
/******/ var __webpack_exports__ = __nuri_require__.O(undefined, [364,298,653], () => (__nuri_require__(3547)))
|
|
219
|
+
/******/ __webpack_exports__ = __nuri_require__.O(__webpack_exports__);
|
|
220
|
+
/******/ const __webpack_exports__default = __webpack_exports__.A;
|
|
221
|
+
/******/ export { __webpack_exports__default as default };
|
|
222
|
+
/******/
|
package/dist/index.d.ts
CHANGED
|
@@ -22,6 +22,10 @@ export { default as Tooltip, TooltipProvider } from './components/tooltip/toolti
|
|
|
22
22
|
export { default as Tabs } from './components/tabs/tabs';
|
|
23
23
|
export { default as ModalWithDoubleButton } from './components/modal/modal-with-double-button';
|
|
24
24
|
export { Spinner, InlineLoading, OverlayLoading } from './components/loading';
|
|
25
|
+
export { default as Icon } from './components/icon/icon';
|
|
26
|
+
export { default as BottomNav } from './components/bottom-nav/bottom-nav';
|
|
27
|
+
export { default as StepProgress } from './components/step-progress/step-progress';
|
|
28
|
+
export { default as ChipGroup } from './components/chip-group/chip-group';
|
|
25
29
|
export type { AvatarProps } from './components/avatar/avatar-type';
|
|
26
30
|
export type { CTAButtonProps } from './components/button/button-type';
|
|
27
31
|
export type { OptionBadgeProps, IconTextBadgeProps, IconTextOptionBadgeProps, } from './components/badge/badge-type';
|
|
@@ -44,6 +48,10 @@ export type { TooltipProps, TooltipProviderProps } from './components/tooltip/to
|
|
|
44
48
|
export type { TabsProps } from './components/tabs/tabs-type';
|
|
45
49
|
export type { ModalWithDoubleButtonProps } from './components/modal/modal-type';
|
|
46
50
|
export type { SpinnerProps, InlineLoadingProps, OverlayLoadingProps } from './components/loading';
|
|
51
|
+
export type { IconName, IconProps, IconWeight } from './components/icon/icon-type';
|
|
52
|
+
export type { BottomNavProps, BottomNavItem, BottomNavLinkProps, BottomNavBadge, } from './components/bottom-nav/bottom-nav-type';
|
|
53
|
+
export type { StepProgressProps } from './components/step-progress/step-progress-type';
|
|
54
|
+
export type { ChipGroupProps, ChipGroupItem } from './components/chip-group/chip-group-type';
|
|
47
55
|
export type { Size } from './helpers/props/common-props';
|
|
48
56
|
export { colors, primitive, semanticApp, semanticAdmin } from './tokens/generated';
|
|
49
57
|
export type { PrimitiveTokens, SemanticAppTokens, SemanticAdminTokens } from './tokens/generated';
|