@bigtablet/design-system 2.0.0 → 2.0.2
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/index.css +82 -31
- package/dist/index.d.ts +37 -3
- package/dist/index.js +637 -11
- package/dist/vanilla/bigtablet.min.css +1 -1
- package/package.json +6 -3
package/dist/index.css
CHANGED
|
@@ -27,7 +27,10 @@
|
|
|
27
27
|
}
|
|
28
28
|
.alert_overlay {
|
|
29
29
|
position: fixed;
|
|
30
|
-
|
|
30
|
+
top: 0;
|
|
31
|
+
right: 0;
|
|
32
|
+
bottom: 0;
|
|
33
|
+
left: 0;
|
|
31
34
|
background: rgba(0, 0, 0, 0.5);
|
|
32
35
|
display: flex;
|
|
33
36
|
align-items: center;
|
|
@@ -190,7 +193,10 @@
|
|
|
190
193
|
.button::before {
|
|
191
194
|
content: "";
|
|
192
195
|
position: absolute;
|
|
193
|
-
|
|
196
|
+
top: 0;
|
|
197
|
+
right: 0;
|
|
198
|
+
bottom: 0;
|
|
199
|
+
left: 0;
|
|
194
200
|
border-radius: inherit;
|
|
195
201
|
transition: background 0.2s ease-in-out;
|
|
196
202
|
pointer-events: none;
|
|
@@ -449,7 +455,7 @@
|
|
|
449
455
|
.checkbox_input:disabled {
|
|
450
456
|
cursor: not-allowed;
|
|
451
457
|
}
|
|
452
|
-
.
|
|
458
|
+
.checkbox_disabled {
|
|
453
459
|
cursor: not-allowed;
|
|
454
460
|
}
|
|
455
461
|
.checkbox_input:checked ~ .checkbox_state_layer .checkbox_icon,
|
|
@@ -509,13 +515,14 @@
|
|
|
509
515
|
transition: border-color 0.2s ease-in-out;
|
|
510
516
|
}
|
|
511
517
|
.chip_content {
|
|
518
|
+
flex: 1;
|
|
512
519
|
display: inline-flex;
|
|
513
520
|
align-items: center;
|
|
514
521
|
gap: 4px;
|
|
515
522
|
border: none;
|
|
516
523
|
background: transparent;
|
|
517
524
|
cursor: pointer;
|
|
518
|
-
padding: 6px 12px;
|
|
525
|
+
padding: 6px 12px 6px 16px;
|
|
519
526
|
font-size: 14px;
|
|
520
527
|
font-weight: 500;
|
|
521
528
|
line-height: 20px;
|
|
@@ -527,7 +534,10 @@
|
|
|
527
534
|
.chip_content::before {
|
|
528
535
|
content: "";
|
|
529
536
|
position: absolute;
|
|
530
|
-
|
|
537
|
+
top: 0;
|
|
538
|
+
right: 0;
|
|
539
|
+
bottom: 0;
|
|
540
|
+
left: 0;
|
|
531
541
|
border-radius: inherit;
|
|
532
542
|
transition: background 0.2s ease-in-out;
|
|
533
543
|
pointer-events: none;
|
|
@@ -559,24 +569,11 @@
|
|
|
559
569
|
cursor: pointer;
|
|
560
570
|
padding: 6px 8px 6px 0;
|
|
561
571
|
color: #121212;
|
|
562
|
-
position: relative;
|
|
563
|
-
overflow: hidden;
|
|
564
|
-
}
|
|
565
|
-
.chip_trailing::before {
|
|
566
|
-
content: "";
|
|
567
|
-
position: absolute;
|
|
568
|
-
inset: 0;
|
|
569
|
-
border-radius: inherit;
|
|
570
|
-
transition: background 0.2s ease-in-out;
|
|
571
|
-
pointer-events: none;
|
|
572
572
|
}
|
|
573
|
-
.chip_trailing:
|
|
574
|
-
background: rgba(0, 0, 0, 0.05);
|
|
575
|
-
}
|
|
576
|
-
.chip_trailing:focus-visible:not(:disabled)::before {
|
|
573
|
+
.chip_trailing:focus-visible:not(:disabled) .chip_icon {
|
|
577
574
|
background: rgba(0, 0, 0, 0.08);
|
|
578
575
|
}
|
|
579
|
-
.chip_trailing:active:not(:disabled)
|
|
576
|
+
.chip_trailing:active:not(:disabled) .chip_icon {
|
|
580
577
|
background: rgba(26, 26, 26, 0.12);
|
|
581
578
|
}
|
|
582
579
|
.chip_trailing:disabled {
|
|
@@ -584,14 +581,21 @@
|
|
|
584
581
|
}
|
|
585
582
|
.chip_icon {
|
|
586
583
|
display: inline-flex;
|
|
584
|
+
align-items: center;
|
|
585
|
+
justify-content: center;
|
|
587
586
|
width: 20px;
|
|
588
587
|
height: 20px;
|
|
589
588
|
flex-shrink: 0;
|
|
589
|
+
border-radius: 9999px;
|
|
590
|
+
transition: background 0.2s ease-in-out;
|
|
590
591
|
}
|
|
591
592
|
.chip_icon svg {
|
|
592
593
|
width: 100%;
|
|
593
594
|
height: 100%;
|
|
594
595
|
}
|
|
596
|
+
.chip_trailing:hover:not(:disabled) .chip_icon {
|
|
597
|
+
background: rgba(0, 0, 0, 0.05);
|
|
598
|
+
}
|
|
595
599
|
.chip_label {
|
|
596
600
|
white-space: nowrap;
|
|
597
601
|
}
|
|
@@ -767,7 +771,10 @@
|
|
|
767
771
|
.fab::before {
|
|
768
772
|
content: "";
|
|
769
773
|
position: absolute;
|
|
770
|
-
|
|
774
|
+
top: 0;
|
|
775
|
+
right: 0;
|
|
776
|
+
bottom: 0;
|
|
777
|
+
left: 0;
|
|
771
778
|
border-radius: inherit;
|
|
772
779
|
transition: background 0.2s ease-in-out;
|
|
773
780
|
pointer-events: none;
|
|
@@ -846,7 +853,10 @@
|
|
|
846
853
|
}
|
|
847
854
|
.file_input_control {
|
|
848
855
|
position: absolute;
|
|
849
|
-
|
|
856
|
+
top: 0;
|
|
857
|
+
right: 0;
|
|
858
|
+
bottom: 0;
|
|
859
|
+
left: 0;
|
|
850
860
|
opacity: 0;
|
|
851
861
|
cursor: pointer;
|
|
852
862
|
}
|
|
@@ -933,7 +943,10 @@
|
|
|
933
943
|
.icon_button::before {
|
|
934
944
|
content: "";
|
|
935
945
|
position: absolute;
|
|
936
|
-
|
|
946
|
+
top: 0;
|
|
947
|
+
right: 0;
|
|
948
|
+
bottom: 0;
|
|
949
|
+
left: 0;
|
|
937
950
|
border-radius: inherit;
|
|
938
951
|
transition: background 0.2s ease-in-out;
|
|
939
952
|
pointer-events: none;
|
|
@@ -1091,6 +1104,7 @@
|
|
|
1091
1104
|
align-items: flex-start;
|
|
1092
1105
|
min-height: 52px;
|
|
1093
1106
|
padding-left: 16px;
|
|
1107
|
+
padding-right: 16px;
|
|
1094
1108
|
position: relative;
|
|
1095
1109
|
}
|
|
1096
1110
|
.list_item_align_middle > .list_item_state_layer {
|
|
@@ -1102,7 +1116,10 @@
|
|
|
1102
1116
|
.list_item_interactive .list_item_state_layer::before {
|
|
1103
1117
|
content: "";
|
|
1104
1118
|
position: absolute;
|
|
1105
|
-
|
|
1119
|
+
top: 0;
|
|
1120
|
+
right: 0;
|
|
1121
|
+
bottom: 0;
|
|
1122
|
+
left: 0;
|
|
1106
1123
|
transition: background 0.2s ease-in-out;
|
|
1107
1124
|
pointer-events: none;
|
|
1108
1125
|
}
|
|
@@ -1182,7 +1199,10 @@
|
|
|
1182
1199
|
}
|
|
1183
1200
|
.modal {
|
|
1184
1201
|
position: fixed;
|
|
1185
|
-
|
|
1202
|
+
top: 0;
|
|
1203
|
+
right: 0;
|
|
1204
|
+
bottom: 0;
|
|
1205
|
+
left: 0;
|
|
1186
1206
|
display: grid;
|
|
1187
1207
|
place-items: center;
|
|
1188
1208
|
background: rgba(0, 0, 0, 0.5);
|
|
@@ -1382,7 +1402,7 @@
|
|
|
1382
1402
|
.radio_input:disabled ~ .radio_label {
|
|
1383
1403
|
opacity: 0.38;
|
|
1384
1404
|
}
|
|
1385
|
-
.
|
|
1405
|
+
.radio_disabled {
|
|
1386
1406
|
cursor: not-allowed;
|
|
1387
1407
|
}
|
|
1388
1408
|
.radio_input:checked ~ .radio_state_layer .radio_dot {
|
|
@@ -1393,12 +1413,20 @@
|
|
|
1393
1413
|
position: absolute;
|
|
1394
1414
|
left: 50%;
|
|
1395
1415
|
top: 50%;
|
|
1396
|
-
width:
|
|
1397
|
-
height:
|
|
1416
|
+
width: 8px;
|
|
1417
|
+
height: 8px;
|
|
1398
1418
|
transform: translate(-50%, -50%);
|
|
1399
1419
|
background: #121212;
|
|
1400
1420
|
border-radius: 9999px;
|
|
1401
1421
|
}
|
|
1422
|
+
.radio_size_md .radio_input:checked ~ .radio_state_layer .radio_dot::after {
|
|
1423
|
+
width: 10px;
|
|
1424
|
+
height: 10px;
|
|
1425
|
+
}
|
|
1426
|
+
.radio_size_lg .radio_input:checked ~ .radio_state_layer .radio_dot::after {
|
|
1427
|
+
width: 10px;
|
|
1428
|
+
height: 10px;
|
|
1429
|
+
}
|
|
1402
1430
|
|
|
1403
1431
|
/* src/ui/select/style.scss */
|
|
1404
1432
|
@keyframes skeleton_loading {
|
|
@@ -1615,7 +1643,7 @@
|
|
|
1615
1643
|
border-radius: 9999px;
|
|
1616
1644
|
border: 2px solid #E5E5E5;
|
|
1617
1645
|
border-top-color: #121212;
|
|
1618
|
-
animation: spinner_spin 0.
|
|
1646
|
+
animation: spinner_spin 0.8s linear infinite;
|
|
1619
1647
|
}
|
|
1620
1648
|
|
|
1621
1649
|
/* src/ui/switch/style.scss */
|
|
@@ -1791,7 +1819,7 @@
|
|
|
1791
1819
|
.text_field_icon + .text_field_input_wrap {
|
|
1792
1820
|
padding-left: 0;
|
|
1793
1821
|
}
|
|
1794
|
-
.
|
|
1822
|
+
.text_field_input_wrap_no_pad_right {
|
|
1795
1823
|
padding-right: 0;
|
|
1796
1824
|
}
|
|
1797
1825
|
.text_field_input {
|
|
@@ -1826,6 +1854,29 @@
|
|
|
1826
1854
|
width: 20px;
|
|
1827
1855
|
height: 20px;
|
|
1828
1856
|
}
|
|
1857
|
+
.text_field_clear {
|
|
1858
|
+
display: inline-flex;
|
|
1859
|
+
align-items: center;
|
|
1860
|
+
justify-content: center;
|
|
1861
|
+
flex-shrink: 0;
|
|
1862
|
+
width: 40px;
|
|
1863
|
+
height: 40px;
|
|
1864
|
+
border: none;
|
|
1865
|
+
background: transparent;
|
|
1866
|
+
cursor: pointer;
|
|
1867
|
+
color: #888888;
|
|
1868
|
+
border-radius: 9999px;
|
|
1869
|
+
transition: color 0.2s ease-in-out, background 0.2s ease-in-out;
|
|
1870
|
+
padding: 0;
|
|
1871
|
+
}
|
|
1872
|
+
.text_field_clear:hover {
|
|
1873
|
+
color: #121212;
|
|
1874
|
+
background: rgba(0, 0, 0, 0.05);
|
|
1875
|
+
}
|
|
1876
|
+
.text_field_clear:focus-visible {
|
|
1877
|
+
outline: none;
|
|
1878
|
+
box-shadow: 0 0 0 3px rgba(18, 18, 18, 0.15);
|
|
1879
|
+
}
|
|
1829
1880
|
.text_field_helper {
|
|
1830
1881
|
padding: 4px 16px 0;
|
|
1831
1882
|
font-family: "Pretendard", sans-serif;
|
|
@@ -1979,7 +2030,7 @@
|
|
|
1979
2030
|
}
|
|
1980
2031
|
.toast_icon {
|
|
1981
2032
|
flex-shrink: 0;
|
|
1982
|
-
margin-top:
|
|
2033
|
+
margin-top: 3px;
|
|
1983
2034
|
display: flex;
|
|
1984
2035
|
}
|
|
1985
2036
|
.toast_icon_success {
|
package/dist/index.d.ts
CHANGED
|
@@ -548,12 +548,14 @@ interface ChipProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onClic
|
|
|
548
548
|
removable?: boolean;
|
|
549
549
|
/** 비활성화 상태 */
|
|
550
550
|
disabled?: boolean;
|
|
551
|
+
/** 팝업 열림 상태 (filter 타입에서 aria-expanded로 사용) */
|
|
552
|
+
open?: boolean;
|
|
551
553
|
/** 칩 클릭 시 콜백 */
|
|
552
554
|
onClick?: (event: React$1.MouseEvent<HTMLButtonElement>) => void;
|
|
553
555
|
/** 삭제 버튼 클릭 시 콜백 */
|
|
554
556
|
onRemove?: () => void;
|
|
555
557
|
}
|
|
556
|
-
declare const Chip: ({ type, label, selected, removable, disabled, onClick, onRemove, className, ...props }: ChipProps) => react_jsx_runtime.JSX.Element;
|
|
558
|
+
declare const Chip: ({ type, label, selected, removable, disabled, open, onClick, onRemove, className, ...props }: ChipProps) => react_jsx_runtime.JSX.Element;
|
|
557
559
|
|
|
558
560
|
type DatePickerMode = "year-month" | "year-month-day";
|
|
559
561
|
type SelectableRange = "all" | "until-today";
|
|
@@ -653,6 +655,36 @@ interface FileInputProps extends React$1.InputHTMLAttributes<HTMLInputElement> {
|
|
|
653
655
|
*/
|
|
654
656
|
declare const FileInput: ({ label, onFiles, supportingText, preview, className, disabled, ...props }: FileInputProps) => react_jsx_runtime.JSX.Element;
|
|
655
657
|
|
|
658
|
+
/**
|
|
659
|
+
* ⚠️ AUTO-GENERATED — DO NOT EDIT MANUALLY
|
|
660
|
+
* Run `node scripts/generate-icons.mjs` to regenerate.
|
|
661
|
+
*
|
|
662
|
+
* Source: @material-symbols/svg-300, @material-symbols/svg-400 (outlined)
|
|
663
|
+
* Icons: 57 icons × 4 variants (weight 300/400 × fill/no-fill)
|
|
664
|
+
* ViewBox: "0 -960 960 960" (Material Symbols standard)
|
|
665
|
+
*/
|
|
666
|
+
type IconName = "add_a_photo" | "add_circle" | "add_lg" | "add_md" | "apartment" | "arrow_back" | "calendar_today" | "check" | "check_box" | "check_circle" | "close" | "close_small" | "cloud_download" | "cloud_upload" | "content_copy" | "delete_forever" | "edit" | "edit_note" | "error" | "event" | "fiber_manual_record" | "forward_5" | "group" | "groups" | "help" | "id" | "id_card" | "image" | "indeterminate_check_box" | "info" | "keyboard_arrow_down" | "keyboard_arrow_left" | "keyboard_arrow_right" | "keyboard_arrow_up" | "location_on" | "login" | "logout" | "more_vert" | "open_in_browser" | "open_in_new" | "pause" | "person" | "photo_camera" | "photo_library" | "play_arrow" | "replay_5" | "search" | "settings" | "share" | "speed_1_2x" | "speed_1_5x" | "speed_1_7x" | "speed_1x" | "speed_2x" | "stop" | "visibility" | "visibility_off";
|
|
667
|
+
type IconWeight = 300 | 400;
|
|
668
|
+
|
|
669
|
+
interface IconProps extends Omit<React$1.SVGProps<SVGSVGElement>, "fill"> {
|
|
670
|
+
/** 아이콘 이름 */
|
|
671
|
+
name: IconName;
|
|
672
|
+
/** 아이콘 크기 (px, 기본값: 24) */
|
|
673
|
+
size?: 20 | 24;
|
|
674
|
+
/** 선의 굵기 (기본값: 400) */
|
|
675
|
+
weight?: IconWeight;
|
|
676
|
+
/** 채움 스타일 여부 (기본값: false) */
|
|
677
|
+
fill?: boolean;
|
|
678
|
+
}
|
|
679
|
+
/**
|
|
680
|
+
* Material Symbols 기반 인라인 SVG 아이콘 컴포넌트.
|
|
681
|
+
* weight(300/400) × fill(true/false) × size(20/24) 조합을 지원한다.
|
|
682
|
+
*/
|
|
683
|
+
declare const Icon: {
|
|
684
|
+
({ name, size, weight, fill, style, ...props }: IconProps): react_jsx_runtime.JSX.Element | null;
|
|
685
|
+
displayName: string;
|
|
686
|
+
};
|
|
687
|
+
|
|
656
688
|
type IconButtonVariant = "standard" | "filled" | "tonal" | "outlined";
|
|
657
689
|
type IconButtonSize = "sm" | "md";
|
|
658
690
|
interface IconButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
@@ -873,6 +905,8 @@ interface TextFieldProps extends Omit<React$1.InputHTMLAttributes<HTMLInputEleme
|
|
|
873
905
|
leadingIcon?: React$1.ReactNode;
|
|
874
906
|
/** 입력 필드 오른쪽에 표시할 아이콘 */
|
|
875
907
|
trailingIcon?: React$1.ReactNode;
|
|
908
|
+
/** 값이 있을 때 오른쪽에 지우기(X) 버튼 표시 여부 */
|
|
909
|
+
clearable?: boolean;
|
|
876
910
|
/** 컨테이너 전체 너비 차지 여부 */
|
|
877
911
|
fullWidth?: boolean;
|
|
878
912
|
/** 값 변경 시 호출되는 콜백 (IME 조합 완료 후 실행) */
|
|
@@ -893,7 +927,7 @@ interface TextFieldProps extends Omit<React$1.InputHTMLAttributes<HTMLInputEleme
|
|
|
893
927
|
* @returns 렌더링된 텍스트 필드 UI
|
|
894
928
|
*/
|
|
895
929
|
declare const TextField: {
|
|
896
|
-
({ id, label, showLabel, supportingText, error, leadingIcon, trailingIcon, fullWidth, className, onChangeAction, value, defaultValue, transformValue, ref, ...props }: TextFieldProps): react_jsx_runtime.JSX.Element;
|
|
930
|
+
({ id, label, showLabel, supportingText, error, leadingIcon, trailingIcon, clearable, fullWidth, className, onChangeAction, value, defaultValue, transformValue, ref, ...props }: TextFieldProps): react_jsx_runtime.JSX.Element;
|
|
897
931
|
displayName: string;
|
|
898
932
|
};
|
|
899
933
|
|
|
@@ -951,4 +985,4 @@ interface TopLoadingProps {
|
|
|
951
985
|
*/
|
|
952
986
|
declare const TopLoading: ({ progress, color, height, isLoading, ariaLabel, }: TopLoadingProps) => react_jsx_runtime.JSX.Element | null;
|
|
953
987
|
|
|
954
|
-
export { AlertProvider, Button, type ButtonProps, Card, type CardProps, Checkbox, type CheckboxProps, Chip, type ChipProps, type ChipType, DatePicker, Divider, type DividerProps, FAB, type FABProps, type FABVariant, FileInput, type FileInputProps, IconButton, type IconButtonProps, type IconButtonSize, type IconButtonVariant, LinearProgress, type LinearProgressProps, ListItem, type ListItemProps, Modal, type ModalProps, Pagination, type PaginationProps, Radio, type RadioProps, Select, type SelectOption, type SelectProps, Spinner, type SpinnerProps, Switch, type SwitchProps, TextField, type TextFieldProps, ToastProvider, TopLoading, type TopLoadingProps, a11y, baseBorderWidth, baseColors, baseTypography, borderWidth, breakpoints, colors, elevation, motion, opacity, radius, skeleton, spacing, typography, useAlert, useToast, zIndex };
|
|
988
|
+
export { AlertProvider, Button, type ButtonProps, Card, type CardProps, Checkbox, type CheckboxProps, Chip, type ChipProps, type ChipType, DatePicker, type DatePickerProps, Divider, type DividerProps, FAB, type FABProps, type FABVariant, FileInput, type FileInputProps, Icon, IconButton, type IconButtonProps, type IconButtonSize, type IconButtonVariant, type IconName, type IconProps, type IconWeight, LinearProgress, type LinearProgressProps, ListItem, type ListItemProps, Modal, type ModalProps, Pagination, type PaginationProps, Radio, type RadioProps, Select, type SelectOption, type SelectProps, Spinner, type SpinnerProps, Switch, type SwitchProps, TextField, type TextFieldProps, ToastProvider, TopLoading, type TopLoadingProps, a11y, baseBorderWidth, baseColors, baseTypography, borderWidth, breakpoints, colors, elevation, motion, opacity, radius, skeleton, spacing, typography, useAlert, useToast, zIndex };
|