@zenkigen-inc/component-ui 1.17.0 → 1.18.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/README.md +9 -0
- package/dist/index.d.mts +166 -42
- package/dist/index.d.ts +166 -42
- package/dist/index.js +943 -377
- package/dist/index.mjs +913 -352
- package/package.json +5 -5
package/dist/index.mjs
CHANGED
|
@@ -83,20 +83,21 @@ Breadcrumb.Item = BreadcrumbItem;
|
|
|
83
83
|
import { buttonColors, focusVisible } from "@zenkigen-inc/component-theme";
|
|
84
84
|
import { clsx as clsx3 } from "clsx";
|
|
85
85
|
import { jsxs } from "react/jsx-runtime";
|
|
86
|
-
var
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
86
|
+
var createButton = (props) => {
|
|
87
|
+
const {
|
|
88
|
+
size = "medium",
|
|
89
|
+
variant = "fill",
|
|
90
|
+
isDisabled,
|
|
91
|
+
isSelected = false,
|
|
92
|
+
width,
|
|
93
|
+
borderRadius,
|
|
94
|
+
justifyContent = "center",
|
|
95
|
+
before,
|
|
96
|
+
after,
|
|
97
|
+
elementAs,
|
|
98
|
+
children,
|
|
99
|
+
...restProps
|
|
100
|
+
} = props;
|
|
100
101
|
const baseClasses = clsx3(
|
|
101
102
|
"flex shrink-0 items-center gap-1",
|
|
102
103
|
buttonColors[variant].hover,
|
|
@@ -110,7 +111,7 @@ var Button = ({
|
|
|
110
111
|
"inline-flex": elementAs === "a",
|
|
111
112
|
[buttonColors[variant].selected]: isSelected,
|
|
112
113
|
[buttonColors[variant].base]: !isSelected,
|
|
113
|
-
"hover:text-textOnColor active:text-textOnColor [&:hover>*]:fill-iconOnColor [&:active>*]:fill-iconOnColor": isSelected && variant !== "outline" && variant !== "text",
|
|
114
|
+
"hover:text-textOnColor active:text-textOnColor [&:hover>*]:fill-iconOnColor [&:active>*]:fill-iconOnColor": isSelected && variant !== "outline" && variant !== "text" && variant !== "outlineDanger",
|
|
114
115
|
"pointer-events-none": isDisabled,
|
|
115
116
|
"rounded-button": borderRadius == null,
|
|
116
117
|
"justify-start": justifyContent === "start",
|
|
@@ -120,12 +121,18 @@ var Button = ({
|
|
|
120
121
|
}
|
|
121
122
|
);
|
|
122
123
|
const Component = elementAs ?? "button";
|
|
123
|
-
return /* @__PURE__ */ jsxs(Component, { className: baseClasses, style: { width, borderRadius }, disabled: isDisabled, ...
|
|
124
|
+
return /* @__PURE__ */ jsxs(Component, { className: baseClasses, style: { width, borderRadius }, disabled: isDisabled, ...restProps, children: [
|
|
124
125
|
before,
|
|
125
126
|
children,
|
|
126
127
|
after
|
|
127
128
|
] });
|
|
128
129
|
};
|
|
130
|
+
var Button = (props) => {
|
|
131
|
+
return createButton(props);
|
|
132
|
+
};
|
|
133
|
+
var InternalButton = (props) => {
|
|
134
|
+
return createButton(props);
|
|
135
|
+
};
|
|
129
136
|
|
|
130
137
|
// src/checkbox/checkbox.tsx
|
|
131
138
|
import { focusVisible as focusVisible2 } from "@zenkigen-inc/component-theme";
|
|
@@ -494,17 +501,351 @@ function EvaluationStar({ value, isEditable = false, onChangeRating, size = "med
|
|
|
494
501
|
return /* @__PURE__ */ jsx11("span", { className: "flex flex-row", children: ratingStars });
|
|
495
502
|
}
|
|
496
503
|
|
|
504
|
+
// src/file-input/file-input.tsx
|
|
505
|
+
import { clsx as clsx10 } from "clsx";
|
|
506
|
+
import { forwardRef, useCallback as useCallback4, useId, useImperativeHandle, useRef as useRef2, useState as useState4 } from "react";
|
|
507
|
+
|
|
508
|
+
// src/icon-button/icon-button.tsx
|
|
509
|
+
import { buttonColors as buttonColors3, focusVisible as focusVisible6 } from "@zenkigen-inc/component-theme";
|
|
510
|
+
import { clsx as clsx9 } from "clsx";
|
|
511
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
512
|
+
function IconButton({
|
|
513
|
+
icon,
|
|
514
|
+
size = "medium",
|
|
515
|
+
variant = "outline",
|
|
516
|
+
isNoPadding = false,
|
|
517
|
+
isDisabled = false,
|
|
518
|
+
isSelected = false,
|
|
519
|
+
...props
|
|
520
|
+
}) {
|
|
521
|
+
const baseClasses = clsx9(
|
|
522
|
+
"typography-label16regular flex items-center justify-center gap-1 rounded",
|
|
523
|
+
buttonColors3[variant].hover,
|
|
524
|
+
buttonColors3[variant].active,
|
|
525
|
+
buttonColors3[variant].disabled,
|
|
526
|
+
focusVisible6.normal,
|
|
527
|
+
{
|
|
528
|
+
"h-4 w-4": size === "small" && isNoPadding,
|
|
529
|
+
"h-6 w-6": size === "small" && !isNoPadding || (size === "medium" || size === "large") && isNoPadding,
|
|
530
|
+
"h-8 w-8": size === "medium" && !isNoPadding,
|
|
531
|
+
"h-10 w-10": size === "large" && !isNoPadding,
|
|
532
|
+
"inline-flex": props.isAnchor,
|
|
533
|
+
"pointer-events-none": isDisabled,
|
|
534
|
+
[buttonColors3[variant].selected]: isSelected,
|
|
535
|
+
[buttonColors3[variant].base]: !isSelected
|
|
536
|
+
}
|
|
537
|
+
);
|
|
538
|
+
const iconSize = size === "small" ? "small" : "medium";
|
|
539
|
+
if (props.isAnchor === true) {
|
|
540
|
+
const buttonProps = Object.fromEntries(Object.entries(props).filter(([key]) => key !== "isAnchor"));
|
|
541
|
+
return /* @__PURE__ */ jsx12("a", { className: baseClasses, ...buttonProps, children: /* @__PURE__ */ jsx12(Icon, { name: icon, size: iconSize }) });
|
|
542
|
+
} else {
|
|
543
|
+
const buttonProps = Object.fromEntries(Object.entries(props).filter(([key]) => key !== "isAnchor"));
|
|
544
|
+
return /* @__PURE__ */ jsx12("button", { type: "button", className: baseClasses, disabled: isDisabled, ...buttonProps, children: /* @__PURE__ */ jsx12(Icon, { name: icon, size: iconSize }) });
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
// src/file-input/file-input.tsx
|
|
549
|
+
import { Fragment as Fragment2, jsx as jsx13, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
550
|
+
var ERROR_TYPES = {
|
|
551
|
+
SIZE_TOO_LARGE: "SIZE_TOO_LARGE",
|
|
552
|
+
UNSUPPORTED_FORMAT: "UNSUPPORTED_FORMAT"
|
|
553
|
+
};
|
|
554
|
+
var ERROR_MESSAGES = {
|
|
555
|
+
SIZE_TOO_LARGE: "\u30D5\u30A1\u30A4\u30EB\u30B5\u30A4\u30BA\u304C\u5927\u304D\u904E\u304E\u307E\u3059\u3002",
|
|
556
|
+
UNSUPPORTED_FORMAT: "\u30D5\u30A1\u30A4\u30EB\u5F62\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002"
|
|
557
|
+
};
|
|
558
|
+
var FileInput = forwardRef(
|
|
559
|
+
({ id, variant, accept, maxSize, isDisabled = false, isError = false, onSelect, onError, errorMessages, ...rest }, ref) => {
|
|
560
|
+
const size = variant === "button" ? rest.size ?? "medium" : "medium";
|
|
561
|
+
const [selectedFile, setSelectedFile] = useState4(null);
|
|
562
|
+
const [isDragOver, setIsDragOver] = useState4(false);
|
|
563
|
+
const fileInputRef = useRef2(null);
|
|
564
|
+
const errorId = useId();
|
|
565
|
+
const fallbackId = useId();
|
|
566
|
+
const inputId = id ?? fallbackId;
|
|
567
|
+
const validateFile = useCallback4(
|
|
568
|
+
(file) => {
|
|
569
|
+
const errors = [];
|
|
570
|
+
if (maxSize != null && maxSize > 0 && file.size > maxSize) {
|
|
571
|
+
errors.push({
|
|
572
|
+
type: ERROR_TYPES.SIZE_TOO_LARGE,
|
|
573
|
+
message: ERROR_MESSAGES.SIZE_TOO_LARGE
|
|
574
|
+
});
|
|
575
|
+
}
|
|
576
|
+
if (accept != null && accept.length > 0) {
|
|
577
|
+
const acceptTypes = accept.split(",").map((t) => t.trim());
|
|
578
|
+
const fileName = file.name.toLowerCase();
|
|
579
|
+
const fileExtension = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();
|
|
580
|
+
const fileMimeType = file.type;
|
|
581
|
+
const isAccepted = acceptTypes.some((acceptType) => {
|
|
582
|
+
if (acceptType.startsWith(".")) {
|
|
583
|
+
return fileExtension === acceptType.toLowerCase();
|
|
584
|
+
}
|
|
585
|
+
if (acceptType.includes("/")) {
|
|
586
|
+
if (acceptType.endsWith("/*")) {
|
|
587
|
+
const mainType = acceptType.split("/")[0];
|
|
588
|
+
return fileMimeType.startsWith(`${mainType}/`);
|
|
589
|
+
}
|
|
590
|
+
return fileMimeType === acceptType;
|
|
591
|
+
}
|
|
592
|
+
return false;
|
|
593
|
+
});
|
|
594
|
+
if (!isAccepted) {
|
|
595
|
+
errors.push({ type: ERROR_TYPES.UNSUPPORTED_FORMAT, message: ERROR_MESSAGES.UNSUPPORTED_FORMAT });
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
if (errors.length > 0) {
|
|
599
|
+
onError?.(errors);
|
|
600
|
+
return false;
|
|
601
|
+
}
|
|
602
|
+
return true;
|
|
603
|
+
},
|
|
604
|
+
[accept, maxSize, onError]
|
|
605
|
+
);
|
|
606
|
+
const handleFileSelect = useCallback4(
|
|
607
|
+
(file) => {
|
|
608
|
+
if (file && !validateFile(file)) {
|
|
609
|
+
return;
|
|
610
|
+
}
|
|
611
|
+
setSelectedFile(file);
|
|
612
|
+
onSelect?.(file);
|
|
613
|
+
},
|
|
614
|
+
[validateFile, onSelect]
|
|
615
|
+
);
|
|
616
|
+
const handleFileInputChange = useCallback4(
|
|
617
|
+
(event) => {
|
|
618
|
+
if (isDisabled) {
|
|
619
|
+
return;
|
|
620
|
+
}
|
|
621
|
+
const files = event.target.files;
|
|
622
|
+
if (files == null || files.length === 0) {
|
|
623
|
+
return;
|
|
624
|
+
}
|
|
625
|
+
const file = files[0];
|
|
626
|
+
if (file != null) {
|
|
627
|
+
handleFileSelect(file);
|
|
628
|
+
}
|
|
629
|
+
},
|
|
630
|
+
[isDisabled, handleFileSelect]
|
|
631
|
+
);
|
|
632
|
+
const handleDragOver = useCallback4(
|
|
633
|
+
(event) => {
|
|
634
|
+
event.preventDefault();
|
|
635
|
+
if (!isDisabled) {
|
|
636
|
+
setIsDragOver(true);
|
|
637
|
+
}
|
|
638
|
+
},
|
|
639
|
+
[isDisabled]
|
|
640
|
+
);
|
|
641
|
+
const handleDragLeave = useCallback4((event) => {
|
|
642
|
+
event.preventDefault();
|
|
643
|
+
setIsDragOver(false);
|
|
644
|
+
}, []);
|
|
645
|
+
const handleDrop = useCallback4(
|
|
646
|
+
(event) => {
|
|
647
|
+
event.preventDefault();
|
|
648
|
+
setIsDragOver(false);
|
|
649
|
+
if (isDisabled) return;
|
|
650
|
+
const file = event.dataTransfer.files[0];
|
|
651
|
+
if (file != null) {
|
|
652
|
+
handleFileSelect(file);
|
|
653
|
+
}
|
|
654
|
+
},
|
|
655
|
+
[isDisabled, handleFileSelect]
|
|
656
|
+
);
|
|
657
|
+
const handleButtonClick = useCallback4(() => {
|
|
658
|
+
if (!isDisabled) {
|
|
659
|
+
fileInputRef.current?.click();
|
|
660
|
+
}
|
|
661
|
+
}, [isDisabled]);
|
|
662
|
+
const handleClear = useCallback4(() => {
|
|
663
|
+
setSelectedFile(null);
|
|
664
|
+
if (fileInputRef.current) {
|
|
665
|
+
fileInputRef.current.value = "";
|
|
666
|
+
}
|
|
667
|
+
onSelect?.(null);
|
|
668
|
+
}, [onSelect]);
|
|
669
|
+
useImperativeHandle(
|
|
670
|
+
ref,
|
|
671
|
+
() => ({
|
|
672
|
+
reset: handleClear
|
|
673
|
+
}),
|
|
674
|
+
[handleClear]
|
|
675
|
+
);
|
|
676
|
+
const hasErrorMessages = !isDisabled && errorMessages != null && errorMessages.length > 0;
|
|
677
|
+
const hasErrors = !isDisabled && isError === true;
|
|
678
|
+
const dropzoneClasses = clsx10(
|
|
679
|
+
"flex flex-1 flex-col items-center justify-center gap-4 rounded border border-dashed px-6 text-center",
|
|
680
|
+
selectedFile ? "py-[52px]" : "py-4",
|
|
681
|
+
{
|
|
682
|
+
"border-uiBorder03 bg-white text-text01": !isDisabled && !isDragOver && !hasErrors,
|
|
683
|
+
"border-activeInput bg-activeInput/5": !isDisabled && isDragOver && !hasErrors,
|
|
684
|
+
"border-supportDanger bg-white": hasErrors && !isDisabled,
|
|
685
|
+
"hover:bg-hover02 cursor-pointer": !isDisabled,
|
|
686
|
+
"border-disabled01 bg-disabled02 text-textPlaceholder cursor-not-allowed": isDisabled
|
|
687
|
+
}
|
|
688
|
+
);
|
|
689
|
+
const maxSizeLabel = (() => {
|
|
690
|
+
if (maxSize != null && maxSize > 0) {
|
|
691
|
+
const KB = 1024;
|
|
692
|
+
const MB = KB * 1024;
|
|
693
|
+
const GB = MB * 1024;
|
|
694
|
+
if (maxSize < MB) {
|
|
695
|
+
return `${Math.round(maxSize / KB)}KB\u4EE5\u4E0B`;
|
|
696
|
+
}
|
|
697
|
+
if (maxSize < GB) {
|
|
698
|
+
return `${Math.round(maxSize / MB)}MB\u4EE5\u4E0B`;
|
|
699
|
+
}
|
|
700
|
+
return `${Math.round(maxSize / GB)}GB\u4EE5\u4E0B`;
|
|
701
|
+
}
|
|
702
|
+
return "\u5236\u9650\u306A\u3057";
|
|
703
|
+
})();
|
|
704
|
+
const acceptLabel = (() => {
|
|
705
|
+
if (accept == null || accept.trim().length === 0) {
|
|
706
|
+
return "\u5236\u9650\u306A\u3057";
|
|
707
|
+
}
|
|
708
|
+
const tokens = accept.split(",").map((t) => t.trim()).filter((t) => t.length > 0);
|
|
709
|
+
const normalized = tokens.map((token) => {
|
|
710
|
+
if (token.startsWith(".")) {
|
|
711
|
+
return token.slice(1);
|
|
712
|
+
}
|
|
713
|
+
const slashIndex = token.indexOf("/");
|
|
714
|
+
if (slashIndex !== -1) {
|
|
715
|
+
const type = token.slice(0, slashIndex);
|
|
716
|
+
const subtype = token.slice(slashIndex + 1);
|
|
717
|
+
return subtype === "*" ? `${type}/*` : subtype;
|
|
718
|
+
}
|
|
719
|
+
return token;
|
|
720
|
+
});
|
|
721
|
+
return normalized.join(", ");
|
|
722
|
+
})();
|
|
723
|
+
if (variant === "button") {
|
|
724
|
+
return /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-2", children: [
|
|
725
|
+
/* @__PURE__ */ jsx13("div", { className: hasErrors ? "flex-1" : "min-w-0 flex-1", children: /* @__PURE__ */ jsx13(
|
|
726
|
+
InternalButton,
|
|
727
|
+
{
|
|
728
|
+
size,
|
|
729
|
+
variant: hasErrors ? "outlineDanger" : "outline",
|
|
730
|
+
isDisabled,
|
|
731
|
+
width: "100%",
|
|
732
|
+
onClick: handleButtonClick,
|
|
733
|
+
before: /* @__PURE__ */ jsx13(Icon, { name: "upload", size: "small" }),
|
|
734
|
+
after: /* @__PURE__ */ jsx13(Fragment2, { children: selectedFile ? /* @__PURE__ */ jsx13("span", { className: clsx10("typography-label12regular truncate", !isDisabled && "text-text01"), children: selectedFile.name }) : "" }),
|
|
735
|
+
children: /* @__PURE__ */ jsx13("span", { className: "truncate", children: "\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E" })
|
|
736
|
+
}
|
|
737
|
+
) }),
|
|
738
|
+
selectedFile && !isDisabled && /* @__PURE__ */ jsx13("div", { className: "shrink-0", children: /* @__PURE__ */ jsx13(IconButton, { variant: "text", icon: "close", size: "small", onClick: handleClear }) }),
|
|
739
|
+
hasErrors && hasErrorMessages && /* @__PURE__ */ jsx13("div", { id: errorId, "data-testid": "error-messages", className: "typography-label12regular text-supportError", children: errorMessages.map((message, index) => /* @__PURE__ */ jsx13("div", { className: "break-all", children: message }, index)) }),
|
|
740
|
+
/* @__PURE__ */ jsx13(
|
|
741
|
+
"input",
|
|
742
|
+
{
|
|
743
|
+
id: inputId,
|
|
744
|
+
ref: fileInputRef,
|
|
745
|
+
type: "file",
|
|
746
|
+
accept,
|
|
747
|
+
onChange: handleFileInputChange,
|
|
748
|
+
className: "hidden",
|
|
749
|
+
"aria-invalid": hasErrors,
|
|
750
|
+
...hasErrors && hasErrorMessages && { "aria-describedby": errorId }
|
|
751
|
+
}
|
|
752
|
+
)
|
|
753
|
+
] });
|
|
754
|
+
}
|
|
755
|
+
return /* @__PURE__ */ jsxs4("div", { className: "flex min-w-[320px] flex-col gap-2", children: [
|
|
756
|
+
/* @__PURE__ */ jsxs4(
|
|
757
|
+
"div",
|
|
758
|
+
{
|
|
759
|
+
className: dropzoneClasses,
|
|
760
|
+
role: "button",
|
|
761
|
+
tabIndex: isDisabled ? -1 : 0,
|
|
762
|
+
onDragOver: handleDragOver,
|
|
763
|
+
onDragLeave: handleDragLeave,
|
|
764
|
+
onDrop: handleDrop,
|
|
765
|
+
onClick: handleButtonClick,
|
|
766
|
+
onKeyDown: (e) => {
|
|
767
|
+
if ((e.key === "Enter" || e.key === " ") && !isDisabled) {
|
|
768
|
+
e.preventDefault();
|
|
769
|
+
handleButtonClick();
|
|
770
|
+
}
|
|
771
|
+
},
|
|
772
|
+
"aria-label": "\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E",
|
|
773
|
+
"aria-disabled": isDisabled,
|
|
774
|
+
...hasErrors && hasErrorMessages && { "aria-describedby": errorId },
|
|
775
|
+
children: [
|
|
776
|
+
/* @__PURE__ */ jsx13(Icon, { name: "upload-document", size: "large", color: isDisabled ? "icon03" : "icon01" }),
|
|
777
|
+
!selectedFile && /* @__PURE__ */ jsx13("div", { className: "flex flex-col gap-1", children: /* @__PURE__ */ jsx13("div", { className: "typography-body13regular select-none", children: /* @__PURE__ */ jsxs4(Fragment2, { children: [
|
|
778
|
+
"\u3053\u3053\u306B\u30D5\u30A1\u30A4\u30EB\u3092\u30C9\u30ED\u30C3\u30D7\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
779
|
+
/* @__PURE__ */ jsx13("br", {}),
|
|
780
|
+
"\u307E\u305F\u306F\u3001",
|
|
781
|
+
/* @__PURE__ */ jsx13("span", { className: clsx10(!isDisabled ? "text-link01" : ""), children: "\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E" }),
|
|
782
|
+
"\u3057\u3066\u304F\u3060\u3055\u3044\u3002"
|
|
783
|
+
] }) }) }),
|
|
784
|
+
!selectedFile && /* @__PURE__ */ jsxs4("div", { className: "flex flex-col gap-1", children: [
|
|
785
|
+
/* @__PURE__ */ jsx13("div", { className: clsx10("typography-label11regular", isDisabled ? "text-textPlaceholder" : "text-text02"), children: "\u5BFE\u5FDC\u5F62\u5F0F" }),
|
|
786
|
+
/* @__PURE__ */ jsx13("div", { className: clsx10("typography-body12regular", isDisabled ? "text-textPlaceholder" : "text-text01"), children: acceptLabel }),
|
|
787
|
+
/* @__PURE__ */ jsx13("div", { className: clsx10("typography-label11regular", isDisabled ? "text-textPlaceholder" : "text-text02"), children: "\u30B5\u30A4\u30BA" }),
|
|
788
|
+
/* @__PURE__ */ jsx13("div", { className: clsx10("typography-body12regular", isDisabled ? "text-textPlaceholder" : "text-text01"), children: maxSizeLabel })
|
|
789
|
+
] }),
|
|
790
|
+
selectedFile && /* @__PURE__ */ jsxs4("div", { className: "mt-2 flex flex-col items-center gap-1", children: [
|
|
791
|
+
/* @__PURE__ */ jsx13("span", { className: "typography-label11regular text-text02", children: "\u30D5\u30A1\u30A4\u30EB\u540D" }),
|
|
792
|
+
/* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-2", children: [
|
|
793
|
+
/* @__PURE__ */ jsx13("span", { className: "typography-label14regular", children: selectedFile.name }),
|
|
794
|
+
!isDisabled && /* @__PURE__ */ jsx13(
|
|
795
|
+
IconButton,
|
|
796
|
+
{
|
|
797
|
+
variant: "text",
|
|
798
|
+
icon: "close",
|
|
799
|
+
size: "small",
|
|
800
|
+
onClick: (event) => {
|
|
801
|
+
event.stopPropagation();
|
|
802
|
+
handleClear();
|
|
803
|
+
}
|
|
804
|
+
}
|
|
805
|
+
)
|
|
806
|
+
] })
|
|
807
|
+
] }),
|
|
808
|
+
/* @__PURE__ */ jsx13(
|
|
809
|
+
"input",
|
|
810
|
+
{
|
|
811
|
+
id: inputId,
|
|
812
|
+
ref: fileInputRef,
|
|
813
|
+
type: "file",
|
|
814
|
+
accept,
|
|
815
|
+
onChange: handleFileInputChange,
|
|
816
|
+
className: "hidden",
|
|
817
|
+
"aria-invalid": hasErrors,
|
|
818
|
+
...hasErrors && hasErrorMessages && { "aria-describedby": errorId }
|
|
819
|
+
}
|
|
820
|
+
)
|
|
821
|
+
]
|
|
822
|
+
}
|
|
823
|
+
),
|
|
824
|
+
hasErrors && hasErrorMessages && /* @__PURE__ */ jsx13(
|
|
825
|
+
"div",
|
|
826
|
+
{
|
|
827
|
+
id: errorId,
|
|
828
|
+
"data-testid": "error-messages",
|
|
829
|
+
className: "typography-body13regular flex flex-col text-supportDanger",
|
|
830
|
+
children: errorMessages.map((message, index) => /* @__PURE__ */ jsx13("div", { children: message }, index))
|
|
831
|
+
}
|
|
832
|
+
)
|
|
833
|
+
] });
|
|
834
|
+
}
|
|
835
|
+
);
|
|
836
|
+
FileInput.displayName = "FileInput";
|
|
837
|
+
|
|
497
838
|
// src/heading/heading.tsx
|
|
498
839
|
import { typography } from "@zenkigen-inc/component-theme";
|
|
499
|
-
import { clsx as
|
|
500
|
-
import { jsxs as
|
|
840
|
+
import { clsx as clsx11 } from "clsx";
|
|
841
|
+
import { jsxs as jsxs5 } from "react/jsx-runtime";
|
|
501
842
|
function Heading(props) {
|
|
502
843
|
const TagName = `h${props.level}`;
|
|
503
|
-
const classes =
|
|
844
|
+
const classes = clsx11(`flex items-center text-text01`, typography.heading[TagName], {
|
|
504
845
|
"gap-2": props.level === 1,
|
|
505
846
|
"gap-1": props.level > 1
|
|
506
847
|
});
|
|
507
|
-
return /* @__PURE__ */
|
|
848
|
+
return /* @__PURE__ */ jsxs5(TagName, { className: classes, children: [
|
|
508
849
|
props.before,
|
|
509
850
|
props.children,
|
|
510
851
|
props.after
|
|
@@ -512,22 +853,22 @@ function Heading(props) {
|
|
|
512
853
|
}
|
|
513
854
|
|
|
514
855
|
// src/hooks/use-roving-focus.ts
|
|
515
|
-
import { useCallback as
|
|
856
|
+
import { useCallback as useCallback5, useState as useState5 } from "react";
|
|
516
857
|
var useRovingFocus = ({
|
|
517
858
|
values,
|
|
518
859
|
defaultFocusedValue,
|
|
519
860
|
isDisabled = false
|
|
520
861
|
}) => {
|
|
521
|
-
const [focusedValue, setFocusedValue] =
|
|
862
|
+
const [focusedValue, setFocusedValue] = useState5(
|
|
522
863
|
typeof defaultFocusedValue === "undefined" ? null : defaultFocusedValue
|
|
523
864
|
);
|
|
524
|
-
const handleFocusChange =
|
|
865
|
+
const handleFocusChange = useCallback5((newValue) => {
|
|
525
866
|
setFocusedValue(newValue);
|
|
526
867
|
}, []);
|
|
527
|
-
const handleBlur =
|
|
868
|
+
const handleBlur = useCallback5(() => {
|
|
528
869
|
setFocusedValue(null);
|
|
529
870
|
}, []);
|
|
530
|
-
const handleKeyDown =
|
|
871
|
+
const handleKeyDown = useCallback5(
|
|
531
872
|
(event) => {
|
|
532
873
|
if (isDisabled === true || values.length === 0) return;
|
|
533
874
|
const currentIndex = focusedValue !== null && focusedValue !== "" ? values.indexOf(focusedValue) : -1;
|
|
@@ -581,60 +922,18 @@ var useRovingFocus = ({
|
|
|
581
922
|
};
|
|
582
923
|
};
|
|
583
924
|
|
|
584
|
-
// src/icon-button/icon-button.tsx
|
|
585
|
-
import { buttonColors as buttonColors3, focusVisible as focusVisible6 } from "@zenkigen-inc/component-theme";
|
|
586
|
-
import { clsx as clsx10 } from "clsx";
|
|
587
|
-
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
588
|
-
function IconButton({
|
|
589
|
-
icon,
|
|
590
|
-
size = "medium",
|
|
591
|
-
variant = "outline",
|
|
592
|
-
isNoPadding = false,
|
|
593
|
-
isDisabled = false,
|
|
594
|
-
isSelected = false,
|
|
595
|
-
...props
|
|
596
|
-
}) {
|
|
597
|
-
const baseClasses = clsx10(
|
|
598
|
-
"typography-label16regular flex items-center justify-center gap-1 rounded",
|
|
599
|
-
buttonColors3[variant].hover,
|
|
600
|
-
buttonColors3[variant].active,
|
|
601
|
-
buttonColors3[variant].disabled,
|
|
602
|
-
focusVisible6.normal,
|
|
603
|
-
{
|
|
604
|
-
"h-4 w-4": size === "small" && isNoPadding,
|
|
605
|
-
"h-6 w-6": size === "small" && !isNoPadding || (size === "medium" || size === "large") && isNoPadding,
|
|
606
|
-
"h-8 w-8": size === "medium" && !isNoPadding,
|
|
607
|
-
"h-10 w-10": size === "large" && !isNoPadding,
|
|
608
|
-
"inline-flex": props.isAnchor,
|
|
609
|
-
"pointer-events-none": isDisabled,
|
|
610
|
-
[buttonColors3[variant].selected]: isSelected,
|
|
611
|
-
[buttonColors3[variant].base]: !isSelected
|
|
612
|
-
}
|
|
613
|
-
);
|
|
614
|
-
const iconSize = size === "small" ? "small" : "medium";
|
|
615
|
-
if (props.isAnchor === true) {
|
|
616
|
-
const buttonProps = Object.fromEntries(Object.entries(props).filter(([key]) => key !== "isAnchor"));
|
|
617
|
-
return /* @__PURE__ */ jsx12("a", { className: baseClasses, ...buttonProps, children: /* @__PURE__ */ jsx12(Icon, { name: icon, size: iconSize }) });
|
|
618
|
-
} else {
|
|
619
|
-
const buttonProps = Object.fromEntries(
|
|
620
|
-
Object.entries(props).filter(([key]) => key !== "isAnchor" && key !== "onClick")
|
|
621
|
-
);
|
|
622
|
-
return /* @__PURE__ */ jsx12("button", { type: "button", className: baseClasses, disabled: isDisabled, onClick: props.onClick, ...buttonProps, children: /* @__PURE__ */ jsx12(Icon, { name: icon, size: iconSize }) });
|
|
623
|
-
}
|
|
624
|
-
}
|
|
625
|
-
|
|
626
925
|
// src/loading/loading.tsx
|
|
627
|
-
import
|
|
628
|
-
import { Fragment as
|
|
926
|
+
import clsx12 from "clsx";
|
|
927
|
+
import { Fragment as Fragment3, jsx as jsx14, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
629
928
|
function Loading({ size = "medium", position = "fixed", height = "100%" }) {
|
|
630
|
-
const wrapperClasses =
|
|
631
|
-
const svgClasses =
|
|
929
|
+
const wrapperClasses = clsx12(position, "left-0 top-0 z-20 flex w-full items-center justify-center");
|
|
930
|
+
const svgClasses = clsx12({
|
|
632
931
|
"h-4 w-4": size === "small",
|
|
633
932
|
"h-8 w-8": size === "medium",
|
|
634
933
|
"h-16 w-16": size === "large"
|
|
635
934
|
});
|
|
636
|
-
return /* @__PURE__ */
|
|
637
|
-
size === "small" && /* @__PURE__ */
|
|
935
|
+
return /* @__PURE__ */ jsx14(Fragment3, { children: /* @__PURE__ */ jsxs6("div", { className: wrapperClasses, style: { height }, children: [
|
|
936
|
+
size === "small" && /* @__PURE__ */ jsx14("svg", { className: svgClasses, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx14(
|
|
638
937
|
"circle",
|
|
639
938
|
{
|
|
640
939
|
className: "origin-center animate-circular-small-move stroke-interactive01",
|
|
@@ -646,7 +945,7 @@ function Loading({ size = "medium", position = "fixed", height = "100%" }) {
|
|
|
646
945
|
fill: "none"
|
|
647
946
|
}
|
|
648
947
|
) }),
|
|
649
|
-
size === "medium" && /* @__PURE__ */
|
|
948
|
+
size === "medium" && /* @__PURE__ */ jsx14("svg", { className: svgClasses, viewBox: "0 0 32 32", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx14(
|
|
650
949
|
"circle",
|
|
651
950
|
{
|
|
652
951
|
className: "origin-center animate-circular-medium-move stroke-interactive01",
|
|
@@ -658,7 +957,7 @@ function Loading({ size = "medium", position = "fixed", height = "100%" }) {
|
|
|
658
957
|
fill: "none"
|
|
659
958
|
}
|
|
660
959
|
) }),
|
|
661
|
-
size === "large" && /* @__PURE__ */
|
|
960
|
+
size === "large" && /* @__PURE__ */ jsx14("svg", { className: svgClasses, viewBox: "0 0 64 64", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx14(
|
|
662
961
|
"circle",
|
|
663
962
|
{
|
|
664
963
|
className: "origin-center animate-circular-large-move stroke-interactive01",
|
|
@@ -674,7 +973,7 @@ function Loading({ size = "medium", position = "fixed", height = "100%" }) {
|
|
|
674
973
|
}
|
|
675
974
|
|
|
676
975
|
// src/modal/modal.tsx
|
|
677
|
-
import { useEffect as useEffect2, useState as
|
|
976
|
+
import { useEffect as useEffect2, useState as useState6 } from "react";
|
|
678
977
|
import { createPortal as createPortal2 } from "react-dom";
|
|
679
978
|
|
|
680
979
|
// src/modal/body-scroll-lock.tsx
|
|
@@ -725,9 +1024,9 @@ function restoreProperty(element, property, value) {
|
|
|
725
1024
|
}
|
|
726
1025
|
|
|
727
1026
|
// src/modal/modal-body.tsx
|
|
728
|
-
import { jsx as
|
|
1027
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
729
1028
|
function ModalBody({ children }) {
|
|
730
|
-
return /* @__PURE__ */
|
|
1029
|
+
return /* @__PURE__ */ jsx15("div", { className: "overflow-y-auto", children });
|
|
731
1030
|
}
|
|
732
1031
|
|
|
733
1032
|
// src/modal/modal-context.ts
|
|
@@ -737,22 +1036,22 @@ var ModalContext = createContext2({
|
|
|
737
1036
|
});
|
|
738
1037
|
|
|
739
1038
|
// src/modal/modal-footer.tsx
|
|
740
|
-
import
|
|
741
|
-
import { jsx as
|
|
1039
|
+
import clsx13 from "clsx";
|
|
1040
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
742
1041
|
function ModalFooter({ children, isNoBorder = false }) {
|
|
743
|
-
const wrapperClasses =
|
|
1042
|
+
const wrapperClasses = clsx13("flex w-full shrink-0 items-center rounded-b-lg px-6 py-4", {
|
|
744
1043
|
"border-t-[1px] border-uiBorder01": !isNoBorder
|
|
745
1044
|
});
|
|
746
|
-
return /* @__PURE__ */
|
|
1045
|
+
return /* @__PURE__ */ jsx16("div", { className: wrapperClasses, children });
|
|
747
1046
|
}
|
|
748
1047
|
|
|
749
1048
|
// src/modal/modal-header.tsx
|
|
750
|
-
import
|
|
1049
|
+
import clsx14 from "clsx";
|
|
751
1050
|
import { useContext as useContext3 } from "react";
|
|
752
|
-
import { jsx as
|
|
1051
|
+
import { jsx as jsx17, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
753
1052
|
function ModalHeader({ children, isNoBorder = false }) {
|
|
754
1053
|
const { onClose } = useContext3(ModalContext);
|
|
755
|
-
const headerClasses =
|
|
1054
|
+
const headerClasses = clsx14(
|
|
756
1055
|
"typography-h5 flex w-full shrink-0 items-center justify-between rounded-t-lg px-6 text-text01",
|
|
757
1056
|
{
|
|
758
1057
|
"border-b border-uiBorder01": !isNoBorder,
|
|
@@ -760,14 +1059,14 @@ function ModalHeader({ children, isNoBorder = false }) {
|
|
|
760
1059
|
"h-12": onClose
|
|
761
1060
|
}
|
|
762
1061
|
);
|
|
763
|
-
return /* @__PURE__ */
|
|
764
|
-
/* @__PURE__ */
|
|
765
|
-
onClose && /* @__PURE__ */
|
|
1062
|
+
return /* @__PURE__ */ jsxs7("div", { className: headerClasses, children: [
|
|
1063
|
+
/* @__PURE__ */ jsx17("div", { children }),
|
|
1064
|
+
onClose && /* @__PURE__ */ jsx17(IconButton, { icon: "close", size: "small", variant: "text", onClick: onClose })
|
|
766
1065
|
] });
|
|
767
1066
|
}
|
|
768
1067
|
|
|
769
1068
|
// src/modal/modal.tsx
|
|
770
|
-
import { Fragment as
|
|
1069
|
+
import { Fragment as Fragment4, jsx as jsx18, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
771
1070
|
var LIMIT_WIDTH = 320;
|
|
772
1071
|
var LIMIT_HEIGHT = 184;
|
|
773
1072
|
function Modal({
|
|
@@ -779,16 +1078,16 @@ function Modal({
|
|
|
779
1078
|
onClose,
|
|
780
1079
|
portalTargetRef
|
|
781
1080
|
}) {
|
|
782
|
-
const [isMounted, setIsMounted] =
|
|
1081
|
+
const [isMounted, setIsMounted] = useState6(false);
|
|
783
1082
|
const renderWidth = typeof width === "number" ? Math.max(width, LIMIT_WIDTH) : width;
|
|
784
1083
|
const renderHeight = typeof height === "number" ? Math.max(height, LIMIT_HEIGHT) : height;
|
|
785
1084
|
useEffect2(() => {
|
|
786
1085
|
setIsMounted(true);
|
|
787
1086
|
}, []);
|
|
788
|
-
return isMounted && isOpen ? /* @__PURE__ */
|
|
789
|
-
/* @__PURE__ */
|
|
1087
|
+
return isMounted && isOpen ? /* @__PURE__ */ jsxs8(Fragment4, { children: [
|
|
1088
|
+
/* @__PURE__ */ jsx18(BodyScrollLock, {}),
|
|
790
1089
|
createPortal2(
|
|
791
|
-
/* @__PURE__ */
|
|
1090
|
+
/* @__PURE__ */ jsx18(ModalContext.Provider, { value: { onClose }, children: /* @__PURE__ */ jsx18("div", { className: "fixed left-0 top-0 z-overlay flex size-full items-center justify-center bg-backgroundOverlayBlack py-4", children: /* @__PURE__ */ jsx18(
|
|
792
1091
|
"div",
|
|
793
1092
|
{
|
|
794
1093
|
className: "grid max-h-full min-h-[120px] grid-rows-[max-content_1fr_max-content] flex-col rounded-lg bg-uiBackground01 shadow-modalShadow",
|
|
@@ -805,10 +1104,10 @@ Modal.Header = ModalHeader;
|
|
|
805
1104
|
Modal.Footer = ModalFooter;
|
|
806
1105
|
|
|
807
1106
|
// src/notification-inline/notification-inline.tsx
|
|
808
|
-
import { clsx as
|
|
809
|
-
import { jsx as
|
|
1107
|
+
import { clsx as clsx15 } from "clsx";
|
|
1108
|
+
import { jsx as jsx19, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
810
1109
|
function NotificationInline({ state = "default", size = "medium", ...props }) {
|
|
811
|
-
const wrapperClasses =
|
|
1110
|
+
const wrapperClasses = clsx15("typography-body13regular flex items-center gap-1 rounded text-text01", {
|
|
812
1111
|
"bg-uiBackgroundError": state === "attention",
|
|
813
1112
|
"bg-uiBackgroundWarning": state === "warning",
|
|
814
1113
|
"bg-uiBackgroundBlue": state === "information",
|
|
@@ -817,7 +1116,7 @@ function NotificationInline({ state = "default", size = "medium", ...props }) {
|
|
|
817
1116
|
"p-2": size === "small",
|
|
818
1117
|
"p-3": size === "medium"
|
|
819
1118
|
});
|
|
820
|
-
const iconClasses =
|
|
1119
|
+
const iconClasses = clsx15("flex items-center", {
|
|
821
1120
|
"fill-supportError": state === "attention",
|
|
822
1121
|
"fill-supportWarning": state === "warning",
|
|
823
1122
|
"fill-blue-blue50": state === "information",
|
|
@@ -833,15 +1132,15 @@ function NotificationInline({ state = "default", size = "medium", ...props }) {
|
|
|
833
1132
|
small: "small",
|
|
834
1133
|
medium: "medium"
|
|
835
1134
|
};
|
|
836
|
-
return /* @__PURE__ */
|
|
837
|
-
state !== "default" && /* @__PURE__ */
|
|
838
|
-
/* @__PURE__ */
|
|
839
|
-
props.showClose === true && /* @__PURE__ */
|
|
1135
|
+
return /* @__PURE__ */ jsxs9("div", { className: wrapperClasses, children: [
|
|
1136
|
+
state !== "default" && /* @__PURE__ */ jsx19("div", { className: iconClasses, children: /* @__PURE__ */ jsx19(Icon, { name: iconName[state], size: iconSize[size] }) }),
|
|
1137
|
+
/* @__PURE__ */ jsx19("p", { className: "flex-1", children: props.children }),
|
|
1138
|
+
props.showClose === true && /* @__PURE__ */ jsx19("div", { className: "flex items-center", children: /* @__PURE__ */ jsx19(IconButton, { icon: "close", size: "small", variant: "text" }) })
|
|
840
1139
|
] });
|
|
841
1140
|
}
|
|
842
1141
|
|
|
843
1142
|
// src/pagination/pagination-button.tsx
|
|
844
|
-
import { clsx as
|
|
1143
|
+
import { clsx as clsx16 } from "clsx";
|
|
845
1144
|
import { useContext as useContext4 } from "react";
|
|
846
1145
|
|
|
847
1146
|
// src/pagination/pagination-context.ts
|
|
@@ -851,10 +1150,10 @@ var PaginationContext = createContext3({
|
|
|
851
1150
|
});
|
|
852
1151
|
|
|
853
1152
|
// src/pagination/pagination-button.tsx
|
|
854
|
-
import { jsx as
|
|
1153
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
855
1154
|
function PaginationButton({ page, onClick }) {
|
|
856
1155
|
const { currentPage } = useContext4(PaginationContext);
|
|
857
|
-
const buttonClasses =
|
|
1156
|
+
const buttonClasses = clsx16(
|
|
858
1157
|
"flex h-8 min-w-8 items-center justify-center rounded fill-icon01 px-1",
|
|
859
1158
|
"typography-label14regular",
|
|
860
1159
|
"text-interactive02",
|
|
@@ -862,11 +1161,11 @@ function PaginationButton({ page, onClick }) {
|
|
|
862
1161
|
{ "border border-uiBorder02": page === currentPage },
|
|
863
1162
|
{ "border-transparent": page !== currentPage }
|
|
864
1163
|
);
|
|
865
|
-
return /* @__PURE__ */
|
|
1164
|
+
return /* @__PURE__ */ jsx20("button", { type: "button", className: buttonClasses, onClick: () => onClick(page), children: page });
|
|
866
1165
|
}
|
|
867
1166
|
|
|
868
1167
|
// src/pagination/pagination.tsx
|
|
869
|
-
import { jsx as
|
|
1168
|
+
import { jsx as jsx21, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
870
1169
|
var START_PAGE = 1;
|
|
871
1170
|
function Pagination({ currentPage, totalPage, sideNumPagesToShow = 3, onClick }) {
|
|
872
1171
|
let center = Math.max(currentPage, START_PAGE + 1);
|
|
@@ -880,14 +1179,14 @@ function Pagination({ currentPage, totalPage, sideNumPagesToShow = 3, onClick })
|
|
|
880
1179
|
pageList.push(i);
|
|
881
1180
|
}
|
|
882
1181
|
const threeDotIconClasses = "flex h-8 w-8 items-center justify-center gap-1 fill-icon01";
|
|
883
|
-
return /* @__PURE__ */
|
|
1182
|
+
return /* @__PURE__ */ jsx21(
|
|
884
1183
|
PaginationContext.Provider,
|
|
885
1184
|
{
|
|
886
1185
|
value: {
|
|
887
1186
|
currentPage
|
|
888
1187
|
},
|
|
889
|
-
children: /* @__PURE__ */
|
|
890
|
-
/* @__PURE__ */
|
|
1188
|
+
children: /* @__PURE__ */ jsxs10("ul", { className: "flex gap-1", children: [
|
|
1189
|
+
/* @__PURE__ */ jsx21("li", { className: "flex items-center", children: /* @__PURE__ */ jsx21(
|
|
891
1190
|
IconButton,
|
|
892
1191
|
{
|
|
893
1192
|
isDisabled: currentPage === START_PAGE,
|
|
@@ -897,12 +1196,12 @@ function Pagination({ currentPage, totalPage, sideNumPagesToShow = 3, onClick })
|
|
|
897
1196
|
onClick: () => onClick(currentPage - 1)
|
|
898
1197
|
}
|
|
899
1198
|
) }),
|
|
900
|
-
/* @__PURE__ */
|
|
901
|
-
pageList.length !== 0 && pageList[0] !== 2 && /* @__PURE__ */
|
|
902
|
-
pageList.map((page, index) => /* @__PURE__ */
|
|
903
|
-
pageList.length !== 0 && pageList[pageList.length - 1] !== totalPage - 1 && /* @__PURE__ */
|
|
904
|
-
/* @__PURE__ */
|
|
905
|
-
/* @__PURE__ */
|
|
1199
|
+
/* @__PURE__ */ jsx21("li", { children: /* @__PURE__ */ jsx21(PaginationButton, { onClick: () => onClick(START_PAGE), page: START_PAGE }) }),
|
|
1200
|
+
pageList.length !== 0 && pageList[0] !== 2 && /* @__PURE__ */ jsx21("li", { className: threeDotIconClasses, children: /* @__PURE__ */ jsx21(Icon, { name: "more", size: "small" }) }),
|
|
1201
|
+
pageList.map((page, index) => /* @__PURE__ */ jsx21("li", { children: /* @__PURE__ */ jsx21(PaginationButton, { onClick: () => onClick(page), page }) }, index)),
|
|
1202
|
+
pageList.length !== 0 && pageList[pageList.length - 1] !== totalPage - 1 && /* @__PURE__ */ jsx21("li", { className: threeDotIconClasses, children: /* @__PURE__ */ jsx21(Icon, { name: "more", size: "small" }) }),
|
|
1203
|
+
/* @__PURE__ */ jsx21("li", { children: /* @__PURE__ */ jsx21(PaginationButton, { onClick: () => onClick(totalPage), page: totalPage }) }),
|
|
1204
|
+
/* @__PURE__ */ jsx21("li", { className: "flex items-center", children: /* @__PURE__ */ jsx21(
|
|
906
1205
|
IconButton,
|
|
907
1206
|
{
|
|
908
1207
|
isDisabled: currentPage === totalPage,
|
|
@@ -920,8 +1219,8 @@ function Pagination({ currentPage, totalPage, sideNumPagesToShow = 3, onClick })
|
|
|
920
1219
|
// src/select/select.tsx
|
|
921
1220
|
import { autoUpdate, FloatingPortal, offset, size as sizeMiddleware, useFloating } from "@floating-ui/react";
|
|
922
1221
|
import { focusVisible as focusVisible9, selectColors } from "@zenkigen-inc/component-theme";
|
|
923
|
-
import
|
|
924
|
-
import { useRef as
|
|
1222
|
+
import clsx19 from "clsx";
|
|
1223
|
+
import { useRef as useRef3, useState as useState7 } from "react";
|
|
925
1224
|
|
|
926
1225
|
// src/select/select-context.ts
|
|
927
1226
|
import { createContext as createContext4 } from "react";
|
|
@@ -934,16 +1233,16 @@ var SelectContext = createContext4({
|
|
|
934
1233
|
|
|
935
1234
|
// src/select/select-item.tsx
|
|
936
1235
|
import { focusVisible as focusVisible7 } from "@zenkigen-inc/component-theme";
|
|
937
|
-
import
|
|
1236
|
+
import clsx17 from "clsx";
|
|
938
1237
|
import { useContext as useContext5 } from "react";
|
|
939
|
-
import { jsx as
|
|
1238
|
+
import { jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
940
1239
|
function SelectItem({ option }) {
|
|
941
1240
|
const { setIsOptionListOpen, selectedOption, onChange, isError } = useContext5(SelectContext);
|
|
942
1241
|
const handleClickItem = (option2) => {
|
|
943
1242
|
onChange?.(option2);
|
|
944
1243
|
setIsOptionListOpen(false);
|
|
945
1244
|
};
|
|
946
|
-
const itemClasses =
|
|
1245
|
+
const itemClasses = clsx17(
|
|
947
1246
|
"typography-label14regular flex h-8 w-full items-center px-3 hover:bg-hover02 active:bg-active02",
|
|
948
1247
|
focusVisible7.inset,
|
|
949
1248
|
{
|
|
@@ -953,19 +1252,19 @@ function SelectItem({ option }) {
|
|
|
953
1252
|
"pr-10": option.id !== selectedOption?.id
|
|
954
1253
|
}
|
|
955
1254
|
);
|
|
956
|
-
return /* @__PURE__ */
|
|
957
|
-
option.icon && /* @__PURE__ */
|
|
958
|
-
/* @__PURE__ */
|
|
959
|
-
option.id === selectedOption?.id && /* @__PURE__ */
|
|
1255
|
+
return /* @__PURE__ */ jsx22("li", { className: "flex w-full items-center", "data-id": option.id, children: /* @__PURE__ */ jsxs11("button", { className: itemClasses, type: "button", onClick: () => handleClickItem(option), children: [
|
|
1256
|
+
option.icon && /* @__PURE__ */ jsx22(Icon, { name: option.icon, size: "small" }),
|
|
1257
|
+
/* @__PURE__ */ jsx22("span", { className: "ml-1 flex-1 truncate text-left", children: option.label }),
|
|
1258
|
+
option.id === selectedOption?.id && /* @__PURE__ */ jsx22("div", { className: "ml-2 flex items-center", children: /* @__PURE__ */ jsx22(Icon, { name: "check", size: "small" }) })
|
|
960
1259
|
] }) }, option.id);
|
|
961
1260
|
}
|
|
962
1261
|
|
|
963
1262
|
// src/select/select-list.tsx
|
|
964
1263
|
import { focusVisible as focusVisible8 } from "@zenkigen-inc/component-theme";
|
|
965
|
-
import
|
|
966
|
-
import { forwardRef, useContext as useContext6, useLayoutEffect as useLayoutEffect2 } from "react";
|
|
967
|
-
import { jsx as
|
|
968
|
-
var SelectList =
|
|
1264
|
+
import clsx18 from "clsx";
|
|
1265
|
+
import { forwardRef as forwardRef2, useContext as useContext6, useLayoutEffect as useLayoutEffect2 } from "react";
|
|
1266
|
+
import { jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1267
|
+
var SelectList = forwardRef2(({ children, maxHeight }, ref) => {
|
|
969
1268
|
const { selectedOption, setIsOptionListOpen, variant, placeholder, onChange, floatingStyles, floatingRef } = useContext6(SelectContext);
|
|
970
1269
|
const handleClickDeselect = () => {
|
|
971
1270
|
onChange?.(null);
|
|
@@ -989,22 +1288,22 @@ var SelectList = forwardRef(({ children, maxHeight }, ref) => {
|
|
|
989
1288
|
}
|
|
990
1289
|
}
|
|
991
1290
|
}, [selectedOption, maxHeight, floatingRef]);
|
|
992
|
-
const listClasses =
|
|
1291
|
+
const listClasses = clsx18("z-dropdown overflow-y-auto rounded bg-uiBackground01 py-2 shadow-floatingShadow", {
|
|
993
1292
|
"border-solid border border-uiBorder01": variant === "outline"
|
|
994
1293
|
});
|
|
995
|
-
const deselectButtonClasses =
|
|
1294
|
+
const deselectButtonClasses = clsx18(
|
|
996
1295
|
"typography-label14regular flex h-8 w-full items-center px-3 text-interactive02 hover:bg-hover02 active:bg-active02",
|
|
997
1296
|
focusVisible8.inset
|
|
998
1297
|
);
|
|
999
|
-
return /* @__PURE__ */
|
|
1298
|
+
return /* @__PURE__ */ jsxs12("ul", { className: listClasses, style: { maxHeight, ...floatingStyles }, ref, children: [
|
|
1000
1299
|
children,
|
|
1001
|
-
placeholder != null && selectedOption !== null && /* @__PURE__ */
|
|
1300
|
+
placeholder != null && selectedOption !== null && /* @__PURE__ */ jsx23("li", { children: /* @__PURE__ */ jsx23("button", { className: deselectButtonClasses, type: "button", onClick: handleClickDeselect, children: "\u9078\u629E\u89E3\u9664" }) })
|
|
1002
1301
|
] });
|
|
1003
1302
|
});
|
|
1004
1303
|
SelectList.displayName = "SelectList";
|
|
1005
1304
|
|
|
1006
1305
|
// src/select/select.tsx
|
|
1007
|
-
import { jsx as
|
|
1306
|
+
import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1008
1307
|
var FLOATING_OFFSET = 4;
|
|
1009
1308
|
function Select({
|
|
1010
1309
|
children,
|
|
@@ -1021,8 +1320,8 @@ function Select({
|
|
|
1021
1320
|
onChange,
|
|
1022
1321
|
optionListMaxHeight
|
|
1023
1322
|
}) {
|
|
1024
|
-
const [isOptionListOpen, setIsOptionListOpen] =
|
|
1025
|
-
const targetRef =
|
|
1323
|
+
const [isOptionListOpen, setIsOptionListOpen] = useState7(false);
|
|
1324
|
+
const targetRef = useRef3(null);
|
|
1026
1325
|
useOutsideClick(targetRef, () => setIsOptionListOpen(false));
|
|
1027
1326
|
const { refs, floatingStyles } = useFloating({
|
|
1028
1327
|
open: isOptionListOpen,
|
|
@@ -1043,13 +1342,13 @@ function Select({
|
|
|
1043
1342
|
const handleClickToggle = () => setIsOptionListOpen((prev) => !prev);
|
|
1044
1343
|
const buttonVariant = isError && !isDisabled ? `${variant}Error` : variant;
|
|
1045
1344
|
const isSelected = isOptionSelected && !isDisabled && selectedOption !== null && !isError;
|
|
1046
|
-
const wrapperClasses =
|
|
1345
|
+
const wrapperClasses = clsx19("relative flex shrink-0 items-center gap-1 rounded bg-uiBackground01", {
|
|
1047
1346
|
"h-6": size === "x-small" || size === "small",
|
|
1048
1347
|
"h-8": size === "medium",
|
|
1049
1348
|
"h-10": size === "large",
|
|
1050
1349
|
"cursor-not-allowed": isDisabled
|
|
1051
1350
|
});
|
|
1052
|
-
const buttonClasses =
|
|
1351
|
+
const buttonClasses = clsx19(
|
|
1053
1352
|
"flex size-full items-center rounded",
|
|
1054
1353
|
selectColors[buttonVariant].hover,
|
|
1055
1354
|
selectColors[buttonVariant].active,
|
|
@@ -1064,14 +1363,14 @@ function Select({
|
|
|
1064
1363
|
"border-supportError": !isSelected && !isDisabled && isError
|
|
1065
1364
|
}
|
|
1066
1365
|
);
|
|
1067
|
-
const labelClasses =
|
|
1366
|
+
const labelClasses = clsx19("overflow-hidden", {
|
|
1068
1367
|
"mr-1": size === "x-small",
|
|
1069
1368
|
"mr-2": size !== "x-small",
|
|
1070
1369
|
"typography-label12regular": size === "x-small",
|
|
1071
1370
|
"typography-label14regular": size === "small" || size === "medium",
|
|
1072
1371
|
"typography-label16regular": size === "large"
|
|
1073
1372
|
});
|
|
1074
|
-
return /* @__PURE__ */
|
|
1373
|
+
return /* @__PURE__ */ jsx24(
|
|
1075
1374
|
SelectContext.Provider,
|
|
1076
1375
|
{
|
|
1077
1376
|
value: {
|
|
@@ -1085,8 +1384,8 @@ function Select({
|
|
|
1085
1384
|
floatingStyles,
|
|
1086
1385
|
floatingRef: refs.floating
|
|
1087
1386
|
},
|
|
1088
|
-
children: /* @__PURE__ */
|
|
1089
|
-
/* @__PURE__ */
|
|
1387
|
+
children: /* @__PURE__ */ jsxs13("div", { className: wrapperClasses, style: { width, maxWidth }, ref: targetRef, children: [
|
|
1388
|
+
/* @__PURE__ */ jsxs13(
|
|
1090
1389
|
"button",
|
|
1091
1390
|
{
|
|
1092
1391
|
ref: refs.setReference,
|
|
@@ -1095,9 +1394,9 @@ function Select({
|
|
|
1095
1394
|
onClick: handleClickToggle,
|
|
1096
1395
|
disabled: isDisabled,
|
|
1097
1396
|
children: [
|
|
1098
|
-
selectedOption?.icon ? /* @__PURE__ */
|
|
1099
|
-
/* @__PURE__ */
|
|
1100
|
-
/* @__PURE__ */
|
|
1397
|
+
selectedOption?.icon ? /* @__PURE__ */ jsx24("div", { className: "mr-1 flex", children: /* @__PURE__ */ jsx24(Icon, { name: selectedOption.icon, size: size === "large" ? "medium" : "small" }) }) : placeholder != null && placeholderIcon && /* @__PURE__ */ jsx24("div", { className: "mr-1 flex", children: /* @__PURE__ */ jsx24(Icon, { name: placeholderIcon, size: size === "large" ? "medium" : "small" }) }),
|
|
1398
|
+
/* @__PURE__ */ jsx24("div", { className: labelClasses, children: /* @__PURE__ */ jsx24("div", { className: "truncate", children: selectedOption ? selectedOption.label : placeholder != null && placeholder }) }),
|
|
1399
|
+
/* @__PURE__ */ jsx24("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ jsx24(
|
|
1101
1400
|
Icon,
|
|
1102
1401
|
{
|
|
1103
1402
|
name: isOptionListOpen ? "angle-small-up" : "angle-small-down",
|
|
@@ -1107,7 +1406,7 @@ function Select({
|
|
|
1107
1406
|
]
|
|
1108
1407
|
}
|
|
1109
1408
|
),
|
|
1110
|
-
isOptionListOpen && !isDisabled && /* @__PURE__ */
|
|
1409
|
+
isOptionListOpen && !isDisabled && /* @__PURE__ */ jsx24(FloatingPortal, { children: /* @__PURE__ */ jsx24("div", { className: "relative z-overlay", children: /* @__PURE__ */ jsx24(SelectList, { ref: refs.setFloating, maxHeight: optionListMaxHeight, children }) }) })
|
|
1111
1410
|
] })
|
|
1112
1411
|
}
|
|
1113
1412
|
);
|
|
@@ -1115,7 +1414,7 @@ function Select({
|
|
|
1115
1414
|
Select.Option = SelectItem;
|
|
1116
1415
|
|
|
1117
1416
|
// src/pagination-select/pagination-select.tsx
|
|
1118
|
-
import { jsx as
|
|
1417
|
+
import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1119
1418
|
function PaginationSelect({
|
|
1120
1419
|
totalSize,
|
|
1121
1420
|
currentPage,
|
|
@@ -1138,14 +1437,14 @@ function PaginationSelect({
|
|
|
1138
1437
|
});
|
|
1139
1438
|
const minCount = totalSize ? (currentPage - 1) * sizePerPage + 1 : 0;
|
|
1140
1439
|
const maxCount = currentPage * sizePerPage > totalSize ? totalSize : currentPage * sizePerPage;
|
|
1141
|
-
return /* @__PURE__ */
|
|
1142
|
-
/* @__PURE__ */
|
|
1143
|
-
/* @__PURE__ */
|
|
1440
|
+
return /* @__PURE__ */ jsxs14("nav", { "aria-label": "pagination", className: "flex items-center gap-x-1", children: [
|
|
1441
|
+
/* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-x-2", children: [
|
|
1442
|
+
/* @__PURE__ */ jsxs14("div", { className: "typography-label14regular text-text01", children: [
|
|
1144
1443
|
minCount > 0 && `${minCount} - `,
|
|
1145
1444
|
maxCount,
|
|
1146
1445
|
countLabel
|
|
1147
1446
|
] }),
|
|
1148
|
-
/* @__PURE__ */
|
|
1447
|
+
/* @__PURE__ */ jsx25(
|
|
1149
1448
|
Select,
|
|
1150
1449
|
{
|
|
1151
1450
|
size: "medium",
|
|
@@ -1154,17 +1453,17 @@ function PaginationSelect({
|
|
|
1154
1453
|
optionListMaxHeight,
|
|
1155
1454
|
onChange: (option) => option && onChange(Number(option.value)),
|
|
1156
1455
|
isDisabled: pageMax === 0,
|
|
1157
|
-
children: optionsList.map((option) => /* @__PURE__ */
|
|
1456
|
+
children: optionsList.map((option) => /* @__PURE__ */ jsx25(Select.Option, { option }, option.id))
|
|
1158
1457
|
}
|
|
1159
1458
|
),
|
|
1160
|
-
/* @__PURE__ */
|
|
1459
|
+
/* @__PURE__ */ jsxs14("div", { className: "typography-label14regular text-text02", children: [
|
|
1161
1460
|
"/ ",
|
|
1162
1461
|
pageMax,
|
|
1163
1462
|
pageLabel
|
|
1164
1463
|
] })
|
|
1165
1464
|
] }),
|
|
1166
|
-
/* @__PURE__ */
|
|
1167
|
-
/* @__PURE__ */
|
|
1465
|
+
/* @__PURE__ */ jsxs14("div", { className: "flex items-center", children: [
|
|
1466
|
+
/* @__PURE__ */ jsx25(
|
|
1168
1467
|
IconButton,
|
|
1169
1468
|
{
|
|
1170
1469
|
variant: "text",
|
|
@@ -1174,7 +1473,7 @@ function PaginationSelect({
|
|
|
1174
1473
|
onClick: onClickPrevButton
|
|
1175
1474
|
}
|
|
1176
1475
|
),
|
|
1177
|
-
/* @__PURE__ */
|
|
1476
|
+
/* @__PURE__ */ jsx25(
|
|
1178
1477
|
IconButton,
|
|
1179
1478
|
{
|
|
1180
1479
|
variant: "text",
|
|
@@ -1189,17 +1488,17 @@ function PaginationSelect({
|
|
|
1189
1488
|
}
|
|
1190
1489
|
|
|
1191
1490
|
// src/password-input/password-input.tsx
|
|
1192
|
-
import { forwardRef as
|
|
1491
|
+
import { forwardRef as forwardRef4, useState as useState8 } from "react";
|
|
1193
1492
|
|
|
1194
1493
|
// src/text-input/text-input.tsx
|
|
1195
|
-
import { clsx as
|
|
1196
|
-
import { forwardRef as
|
|
1197
|
-
import { jsx as
|
|
1198
|
-
var TextInput =
|
|
1494
|
+
import { clsx as clsx20 } from "clsx";
|
|
1495
|
+
import { forwardRef as forwardRef3 } from "react";
|
|
1496
|
+
import { jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1497
|
+
var TextInput = forwardRef3(
|
|
1199
1498
|
({ size = "medium", isError = false, disabled = false, onClickClearButton, after, ...props }, ref) => {
|
|
1200
1499
|
const isShowClearButton = !!onClickClearButton && props.value.length !== 0 && !disabled;
|
|
1201
1500
|
const hasTrailingElement = isShowClearButton || after != null;
|
|
1202
|
-
const inputWrapClasses =
|
|
1501
|
+
const inputWrapClasses = clsx20("relative flex items-center gap-2 overflow-hidden rounded border", {
|
|
1203
1502
|
"border-uiBorder02": !isError && !disabled,
|
|
1204
1503
|
"border-supportError": isError && !disabled,
|
|
1205
1504
|
"hover:border-hoverInput": !disabled && !isError,
|
|
@@ -1209,30 +1508,30 @@ var TextInput = forwardRef2(
|
|
|
1209
1508
|
"pr-2": size === "medium" && hasTrailingElement,
|
|
1210
1509
|
"pr-3": size === "large" && hasTrailingElement
|
|
1211
1510
|
});
|
|
1212
|
-
const inputClasses =
|
|
1511
|
+
const inputClasses = clsx20("flex-1 outline-0 placeholder:text-textPlaceholder disabled:text-textPlaceholder", {
|
|
1213
1512
|
["typography-label14regular min-h-8 px-2"]: size === "medium",
|
|
1214
1513
|
["typography-label16regular min-h-10 px-3"]: size === "large",
|
|
1215
1514
|
"text-text01": !isError,
|
|
1216
1515
|
"text-supportError": isError,
|
|
1217
1516
|
"pr-0": hasTrailingElement
|
|
1218
1517
|
});
|
|
1219
|
-
return /* @__PURE__ */
|
|
1220
|
-
/* @__PURE__ */
|
|
1518
|
+
return /* @__PURE__ */ jsxs15("div", { className: inputWrapClasses, children: [
|
|
1519
|
+
/* @__PURE__ */ jsx26("input", { ref, size: 1, className: inputClasses, disabled, onChange: props.onChange, ...props }),
|
|
1221
1520
|
after,
|
|
1222
|
-
isShowClearButton && /* @__PURE__ */
|
|
1521
|
+
isShowClearButton && /* @__PURE__ */ jsx26(IconButton, { variant: "text", icon: "close", size: "small", onClick: onClickClearButton })
|
|
1223
1522
|
] });
|
|
1224
1523
|
}
|
|
1225
1524
|
);
|
|
1226
1525
|
TextInput.displayName = "TextInput";
|
|
1227
1526
|
|
|
1228
1527
|
// src/password-input/password-input.tsx
|
|
1229
|
-
import { jsx as
|
|
1230
|
-
var PasswordInput =
|
|
1231
|
-
const [isPasswordVisible, setIsPasswordVisible] =
|
|
1528
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
1529
|
+
var PasswordInput = forwardRef4(({ disabled = false, ...props }, ref) => {
|
|
1530
|
+
const [isPasswordVisible, setIsPasswordVisible] = useState8(false);
|
|
1232
1531
|
const handlePasswordVisibilityToggle = () => {
|
|
1233
1532
|
setIsPasswordVisible(!isPasswordVisible);
|
|
1234
1533
|
};
|
|
1235
|
-
const passwordToggleButton = /* @__PURE__ */
|
|
1534
|
+
const passwordToggleButton = /* @__PURE__ */ jsx27(
|
|
1236
1535
|
IconButton,
|
|
1237
1536
|
{
|
|
1238
1537
|
variant: "text",
|
|
@@ -1243,7 +1542,7 @@ var PasswordInput = forwardRef3(({ disabled = false, ...props }, ref) => {
|
|
|
1243
1542
|
"aria-label": isPasswordVisible === true ? "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u975E\u8868\u793A\u306B\u3059\u308B" : "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u8868\u793A\u3059\u308B"
|
|
1244
1543
|
}
|
|
1245
1544
|
);
|
|
1246
|
-
return /* @__PURE__ */
|
|
1545
|
+
return /* @__PURE__ */ jsx27(
|
|
1247
1546
|
TextInput,
|
|
1248
1547
|
{
|
|
1249
1548
|
ref,
|
|
@@ -1256,28 +1555,285 @@ var PasswordInput = forwardRef3(({ disabled = false, ...props }, ref) => {
|
|
|
1256
1555
|
});
|
|
1257
1556
|
PasswordInput.displayName = "PasswordInput";
|
|
1258
1557
|
|
|
1558
|
+
// src/popover/popover.tsx
|
|
1559
|
+
import { autoUpdate as autoUpdate2, offset as offset2, useFloating as useFloating2, useId as useFloatingId } from "@floating-ui/react";
|
|
1560
|
+
import { useEffect as useEffect4, useMemo, useRef as useRef4 } from "react";
|
|
1561
|
+
|
|
1562
|
+
// src/popover/popover-content.tsx
|
|
1563
|
+
import { FloatingPortal as FloatingPortal2, useDismiss, useInteractions, useRole } from "@floating-ui/react";
|
|
1564
|
+
import * as React from "react";
|
|
1565
|
+
import { forwardRef as forwardRef5, useCallback as useCallback6, useEffect as useEffect3 } from "react";
|
|
1566
|
+
|
|
1567
|
+
// src/utils/react-utils.ts
|
|
1568
|
+
function composeRefs(...refs) {
|
|
1569
|
+
return (node) => {
|
|
1570
|
+
for (const ref of refs) {
|
|
1571
|
+
if (ref == null) {
|
|
1572
|
+
continue;
|
|
1573
|
+
}
|
|
1574
|
+
if (typeof ref === "function") {
|
|
1575
|
+
ref(node);
|
|
1576
|
+
} else {
|
|
1577
|
+
ref.current = node;
|
|
1578
|
+
}
|
|
1579
|
+
}
|
|
1580
|
+
};
|
|
1581
|
+
}
|
|
1582
|
+
function isElement(node) {
|
|
1583
|
+
return node != null && typeof node === "object" && "type" in node;
|
|
1584
|
+
}
|
|
1585
|
+
|
|
1586
|
+
// src/popover/popover-context.ts
|
|
1587
|
+
import { createContext as createContext5, useContext as useContext7 } from "react";
|
|
1588
|
+
var PopoverContext = createContext5(null);
|
|
1589
|
+
var usePopoverContext = () => {
|
|
1590
|
+
const context = useContext7(PopoverContext);
|
|
1591
|
+
if (context == null) {
|
|
1592
|
+
throw new Error("Popover components must be used inside <Popover.Root>");
|
|
1593
|
+
}
|
|
1594
|
+
return context;
|
|
1595
|
+
};
|
|
1596
|
+
|
|
1597
|
+
// src/popover/popover-content.tsx
|
|
1598
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
1599
|
+
var PopoverContent = forwardRef5(function PopoverContent2({ children }, ref) {
|
|
1600
|
+
const { isOpen, triggerRef, floating, panelId, onClose } = usePopoverContext();
|
|
1601
|
+
const shouldCloseOnOutsidePress = useCallback6(
|
|
1602
|
+
(event) => {
|
|
1603
|
+
const target = event.target;
|
|
1604
|
+
if (!(target instanceof Element)) {
|
|
1605
|
+
return true;
|
|
1606
|
+
}
|
|
1607
|
+
const floatingElement = floating.refs.floating.current;
|
|
1608
|
+
const closestOverlay = target.closest(".z-overlay, .z-dropdown");
|
|
1609
|
+
if (closestOverlay !== null && floatingElement instanceof Element) {
|
|
1610
|
+
const isInsideOwnFloating = floatingElement.contains(closestOverlay);
|
|
1611
|
+
return isInsideOwnFloating;
|
|
1612
|
+
}
|
|
1613
|
+
return true;
|
|
1614
|
+
},
|
|
1615
|
+
[floating.refs.floating]
|
|
1616
|
+
);
|
|
1617
|
+
const dismiss = useDismiss(floating.context, {
|
|
1618
|
+
outsidePressEvent: "pointerdown",
|
|
1619
|
+
outsidePress: shouldCloseOnOutsidePress,
|
|
1620
|
+
escapeKey: false
|
|
1621
|
+
});
|
|
1622
|
+
const interactions = useInteractions([dismiss, useRole(floating.context, { role: "dialog" })]);
|
|
1623
|
+
useEffect3(() => {
|
|
1624
|
+
if (isOpen) {
|
|
1625
|
+
const element = floating.refs.floating.current;
|
|
1626
|
+
element?.focus?.({ preventScroll: true });
|
|
1627
|
+
}
|
|
1628
|
+
}, [isOpen, floating.refs.floating]);
|
|
1629
|
+
useEffect3(() => {
|
|
1630
|
+
if (!isOpen) {
|
|
1631
|
+
triggerRef.current?.focus({ preventScroll: true });
|
|
1632
|
+
}
|
|
1633
|
+
}, [isOpen, triggerRef]);
|
|
1634
|
+
const handleKeyDown = useCallback6(
|
|
1635
|
+
(event) => {
|
|
1636
|
+
if (event.key === "Escape") {
|
|
1637
|
+
event.stopPropagation();
|
|
1638
|
+
if (onClose != null) {
|
|
1639
|
+
onClose({ reason: "escape-key-down" });
|
|
1640
|
+
}
|
|
1641
|
+
}
|
|
1642
|
+
},
|
|
1643
|
+
[onClose]
|
|
1644
|
+
);
|
|
1645
|
+
let wrappedChildren = children;
|
|
1646
|
+
if (isElement(children)) {
|
|
1647
|
+
const childProps = children.props;
|
|
1648
|
+
wrappedChildren = React.cloneElement(children, {
|
|
1649
|
+
...childProps,
|
|
1650
|
+
...childProps.id == null && { id: panelId },
|
|
1651
|
+
...childProps.role == null && { role: "dialog" }
|
|
1652
|
+
});
|
|
1653
|
+
}
|
|
1654
|
+
return /* @__PURE__ */ jsx28(FloatingPortal2, { children: isOpen ? /* @__PURE__ */ jsx28(
|
|
1655
|
+
"div",
|
|
1656
|
+
{
|
|
1657
|
+
...interactions.getFloatingProps({
|
|
1658
|
+
ref: composeRefs(floating.refs.setFloating, ref),
|
|
1659
|
+
tabIndex: -1,
|
|
1660
|
+
onKeyDown: handleKeyDown,
|
|
1661
|
+
style: {
|
|
1662
|
+
position: floating.strategy,
|
|
1663
|
+
top: floating.y ?? 0,
|
|
1664
|
+
left: floating.x ?? 0,
|
|
1665
|
+
outline: "0"
|
|
1666
|
+
}
|
|
1667
|
+
}),
|
|
1668
|
+
children: wrappedChildren
|
|
1669
|
+
}
|
|
1670
|
+
) : null });
|
|
1671
|
+
});
|
|
1672
|
+
|
|
1673
|
+
// src/popover/popover-trigger.tsx
|
|
1674
|
+
import * as React2 from "react";
|
|
1675
|
+
import { forwardRef as forwardRef6 } from "react";
|
|
1676
|
+
var PopoverTrigger = forwardRef6(function PopoverTrigger2({ children }, ref) {
|
|
1677
|
+
const { isOpen, floating, triggerRef, anchorRef, panelId } = usePopoverContext();
|
|
1678
|
+
if (!isElement(children)) {
|
|
1679
|
+
return null;
|
|
1680
|
+
}
|
|
1681
|
+
const handleTriggerRef = (node) => {
|
|
1682
|
+
triggerRef.current = node;
|
|
1683
|
+
if (anchorRef == null) {
|
|
1684
|
+
floating.refs.setReference(node);
|
|
1685
|
+
}
|
|
1686
|
+
if (typeof ref === "function") {
|
|
1687
|
+
ref(node);
|
|
1688
|
+
} else if (ref != null) {
|
|
1689
|
+
ref.current = node;
|
|
1690
|
+
}
|
|
1691
|
+
};
|
|
1692
|
+
const childProps = children.props;
|
|
1693
|
+
const childRef = childProps.ref;
|
|
1694
|
+
return React2.cloneElement(children, {
|
|
1695
|
+
...childProps,
|
|
1696
|
+
ref: composeRefs(childRef, handleTriggerRef),
|
|
1697
|
+
"aria-haspopup": "dialog",
|
|
1698
|
+
"aria-expanded": isOpen,
|
|
1699
|
+
"aria-controls": panelId
|
|
1700
|
+
});
|
|
1701
|
+
});
|
|
1702
|
+
|
|
1703
|
+
// src/popover/popover.tsx
|
|
1704
|
+
import { jsx as jsx29 } from "react/jsx-runtime";
|
|
1705
|
+
function Popover({
|
|
1706
|
+
isOpen,
|
|
1707
|
+
children,
|
|
1708
|
+
placement = "top",
|
|
1709
|
+
offset: offsetValue = 8,
|
|
1710
|
+
onClose,
|
|
1711
|
+
anchorRef
|
|
1712
|
+
}) {
|
|
1713
|
+
const triggerRef = useRef4(null);
|
|
1714
|
+
const floating = useFloating2({
|
|
1715
|
+
open: isOpen,
|
|
1716
|
+
onOpenChange: (open) => {
|
|
1717
|
+
if (!open && onClose != null) {
|
|
1718
|
+
onClose({ reason: "outside-click" });
|
|
1719
|
+
}
|
|
1720
|
+
},
|
|
1721
|
+
placement,
|
|
1722
|
+
middleware: [offset2(offsetValue)],
|
|
1723
|
+
whileElementsMounted: autoUpdate2,
|
|
1724
|
+
strategy: "fixed"
|
|
1725
|
+
});
|
|
1726
|
+
useEffect4(() => {
|
|
1727
|
+
if (anchorRef?.current) {
|
|
1728
|
+
floating.refs.setReference(anchorRef.current);
|
|
1729
|
+
}
|
|
1730
|
+
}, [anchorRef, floating.refs]);
|
|
1731
|
+
const contentId = useFloatingId() ?? "";
|
|
1732
|
+
const panelId = `${contentId}-panel`;
|
|
1733
|
+
const contextValue = useMemo(
|
|
1734
|
+
() => ({
|
|
1735
|
+
isOpen,
|
|
1736
|
+
triggerRef,
|
|
1737
|
+
anchorRef,
|
|
1738
|
+
floating,
|
|
1739
|
+
contentId,
|
|
1740
|
+
panelId,
|
|
1741
|
+
onClose
|
|
1742
|
+
}),
|
|
1743
|
+
[isOpen, triggerRef, anchorRef, floating, contentId, panelId, onClose]
|
|
1744
|
+
);
|
|
1745
|
+
return /* @__PURE__ */ jsx29(PopoverContext.Provider, { value: contextValue, children });
|
|
1746
|
+
}
|
|
1747
|
+
Popover.Trigger = PopoverTrigger;
|
|
1748
|
+
Popover.Content = PopoverContent;
|
|
1749
|
+
|
|
1750
|
+
// src/popup/popup.tsx
|
|
1751
|
+
import { useContext as useContext9 } from "react";
|
|
1752
|
+
|
|
1753
|
+
// src/popup/popup-body.tsx
|
|
1754
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
1755
|
+
function PopupBody({ children }) {
|
|
1756
|
+
return /* @__PURE__ */ jsx30("div", { className: "overflow-y-auto", children });
|
|
1757
|
+
}
|
|
1758
|
+
|
|
1759
|
+
// src/popup/popup-context.ts
|
|
1760
|
+
import { createContext as createContext6 } from "react";
|
|
1761
|
+
var PopupContext = createContext6({
|
|
1762
|
+
isOpen: false,
|
|
1763
|
+
onClose: () => null
|
|
1764
|
+
});
|
|
1765
|
+
|
|
1766
|
+
// src/popup/popup-footer.tsx
|
|
1767
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
1768
|
+
function PopupFooter({ children }) {
|
|
1769
|
+
return /* @__PURE__ */ jsx31("div", { className: "flex w-full shrink-0 items-center rounded-b-lg px-6 py-3", children });
|
|
1770
|
+
}
|
|
1771
|
+
|
|
1772
|
+
// src/popup/popup-header.tsx
|
|
1773
|
+
import { useContext as useContext8 } from "react";
|
|
1774
|
+
import { jsx as jsx32, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1775
|
+
function PopupHeader({ children, before }) {
|
|
1776
|
+
const { onClose } = useContext8(PopupContext);
|
|
1777
|
+
return /* @__PURE__ */ jsxs16("div", { className: "typography-h5 flex h-12 w-full shrink-0 items-start justify-between rounded-t-lg px-6 pt-3 text-text01", children: [
|
|
1778
|
+
/* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-1", children: [
|
|
1779
|
+
before,
|
|
1780
|
+
children
|
|
1781
|
+
] }),
|
|
1782
|
+
onClose && /* @__PURE__ */ jsx32(IconButton, { icon: "close", size: "small", variant: "text", onClick: onClose })
|
|
1783
|
+
] });
|
|
1784
|
+
}
|
|
1785
|
+
|
|
1786
|
+
// src/popup/popup.tsx
|
|
1787
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
1788
|
+
var LIMIT_WIDTH2 = 320;
|
|
1789
|
+
var LIMIT_HEIGHT2 = 184;
|
|
1790
|
+
function useOptionalPopoverContext() {
|
|
1791
|
+
return useContext9(PopoverContext);
|
|
1792
|
+
}
|
|
1793
|
+
function Popup({ children, isOpen: controlledIsOpen, width = 480, height, onClose }) {
|
|
1794
|
+
const renderWidth = typeof width === "number" ? Math.max(width, LIMIT_WIDTH2) : width;
|
|
1795
|
+
const renderHeight = typeof height === "number" ? Math.max(height, LIMIT_HEIGHT2) : height;
|
|
1796
|
+
const popoverContext = useOptionalPopoverContext();
|
|
1797
|
+
const isInPopover = popoverContext != null;
|
|
1798
|
+
const isOpen = isInPopover ? popoverContext.isOpen : controlledIsOpen ?? false;
|
|
1799
|
+
if (!isOpen) {
|
|
1800
|
+
return null;
|
|
1801
|
+
}
|
|
1802
|
+
return /* @__PURE__ */ jsx33(PopupContext.Provider, { value: { isOpen, onClose }, children: /* @__PURE__ */ jsx33(
|
|
1803
|
+
"div",
|
|
1804
|
+
{
|
|
1805
|
+
className: "grid max-h-full grid-rows-[max-content_1fr_max-content] flex-col rounded-lg bg-uiBackground01 shadow-floatingShadow",
|
|
1806
|
+
style: { width: renderWidth, height: renderHeight },
|
|
1807
|
+
children
|
|
1808
|
+
}
|
|
1809
|
+
) });
|
|
1810
|
+
}
|
|
1811
|
+
Popup.Body = PopupBody;
|
|
1812
|
+
Popup.Header = PopupHeader;
|
|
1813
|
+
Popup.Footer = PopupFooter;
|
|
1814
|
+
|
|
1259
1815
|
// src/radio/radio.tsx
|
|
1260
1816
|
import { focusVisible as focusVisible10 } from "@zenkigen-inc/component-theme";
|
|
1261
|
-
import
|
|
1262
|
-
import { useCallback as
|
|
1263
|
-
import { jsx as
|
|
1817
|
+
import clsx21 from "clsx";
|
|
1818
|
+
import { useCallback as useCallback7, useState as useState9 } from "react";
|
|
1819
|
+
import { jsx as jsx34, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1264
1820
|
function Radio({ name, value, id, label, isChecked = false, isDisabled = false, onChange }) {
|
|
1265
|
-
const [isMouseOver, setIsMouseOver] =
|
|
1266
|
-
const handleMouseOverInput =
|
|
1821
|
+
const [isMouseOver, setIsMouseOver] = useState9(false);
|
|
1822
|
+
const handleMouseOverInput = useCallback7(() => {
|
|
1267
1823
|
setIsMouseOver(true);
|
|
1268
1824
|
}, []);
|
|
1269
|
-
const handleMouseOutInput =
|
|
1825
|
+
const handleMouseOutInput = useCallback7(() => {
|
|
1270
1826
|
setIsMouseOver(false);
|
|
1271
1827
|
}, []);
|
|
1272
|
-
const handleChange =
|
|
1828
|
+
const handleChange = useCallback7(
|
|
1273
1829
|
(e) => !isDisabled && onChange?.(e),
|
|
1274
1830
|
[isDisabled, onChange]
|
|
1275
1831
|
);
|
|
1276
|
-
const inputClasses =
|
|
1832
|
+
const inputClasses = clsx21("peer absolute z-[1] size-6 opacity-0", {
|
|
1277
1833
|
"cursor-not-allowed": isDisabled,
|
|
1278
1834
|
"cursor-pointer": !isDisabled
|
|
1279
1835
|
});
|
|
1280
|
-
const boxClasses =
|
|
1836
|
+
const boxClasses = clsx21(
|
|
1281
1837
|
"inline-flex size-5 items-center justify-center rounded-full border border-solid bg-white",
|
|
1282
1838
|
focusVisible10.normalPeer,
|
|
1283
1839
|
{
|
|
@@ -1288,22 +1844,22 @@ function Radio({ name, value, id, label, isChecked = false, isDisabled = false,
|
|
|
1288
1844
|
"cursor-pointer": !isDisabled
|
|
1289
1845
|
}
|
|
1290
1846
|
);
|
|
1291
|
-
const afterClasses =
|
|
1847
|
+
const afterClasses = clsx21("absolute inset-0 m-auto block size-3 rounded-full", {
|
|
1292
1848
|
"bg-disabled01": isDisabled && isChecked,
|
|
1293
1849
|
"bg-activeSelectedUi": !isDisabled && isChecked,
|
|
1294
1850
|
"scale-0": !isChecked,
|
|
1295
1851
|
"scale-100": isChecked
|
|
1296
1852
|
});
|
|
1297
|
-
const hoverIndicatorClasses =
|
|
1853
|
+
const hoverIndicatorClasses = clsx21("inline-block size-3 rounded-full", {
|
|
1298
1854
|
"bg-hoverUi": !isDisabled && !isChecked && isMouseOver
|
|
1299
1855
|
});
|
|
1300
|
-
const labelClasses =
|
|
1856
|
+
const labelClasses = clsx21("typography-label14regular ml-2 flex-[1_0_0] select-none break-all", {
|
|
1301
1857
|
"pointer-events-none cursor-not-allowed text-disabled01": isDisabled,
|
|
1302
1858
|
"cursor-pointer text-text01": !isDisabled
|
|
1303
1859
|
});
|
|
1304
|
-
return /* @__PURE__ */
|
|
1305
|
-
/* @__PURE__ */
|
|
1306
|
-
/* @__PURE__ */
|
|
1860
|
+
return /* @__PURE__ */ jsxs17("div", { className: "flex items-center", children: [
|
|
1861
|
+
/* @__PURE__ */ jsxs17("div", { className: "flex size-6 items-center justify-center", children: [
|
|
1862
|
+
/* @__PURE__ */ jsx34(
|
|
1307
1863
|
"input",
|
|
1308
1864
|
{
|
|
1309
1865
|
type: "checkbox",
|
|
@@ -1318,32 +1874,32 @@ function Radio({ name, value, id, label, isChecked = false, isDisabled = false,
|
|
|
1318
1874
|
className: inputClasses
|
|
1319
1875
|
}
|
|
1320
1876
|
),
|
|
1321
|
-
/* @__PURE__ */
|
|
1322
|
-
/* @__PURE__ */
|
|
1323
|
-
/* @__PURE__ */
|
|
1877
|
+
/* @__PURE__ */ jsx34("div", { className: boxClasses, children: /* @__PURE__ */ jsxs17("div", { className: "relative flex size-5 flex-[0_0_auto] items-center justify-center", children: [
|
|
1878
|
+
/* @__PURE__ */ jsx34("span", { className: afterClasses }),
|
|
1879
|
+
/* @__PURE__ */ jsx34("span", { className: hoverIndicatorClasses })
|
|
1324
1880
|
] }) })
|
|
1325
1881
|
] }),
|
|
1326
|
-
/* @__PURE__ */
|
|
1882
|
+
/* @__PURE__ */ jsx34("label", { htmlFor: id, className: labelClasses, children: label })
|
|
1327
1883
|
] });
|
|
1328
1884
|
}
|
|
1329
1885
|
|
|
1330
1886
|
// src/search/search.tsx
|
|
1331
|
-
import { clsx as
|
|
1332
|
-
import { forwardRef as
|
|
1333
|
-
import { jsx as
|
|
1334
|
-
var Search =
|
|
1335
|
-
const classes =
|
|
1887
|
+
import { clsx as clsx22 } from "clsx";
|
|
1888
|
+
import { forwardRef as forwardRef7 } from "react";
|
|
1889
|
+
import { jsx as jsx35, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1890
|
+
var Search = forwardRef7(({ width = "100%", size = "medium", ...props }, ref) => {
|
|
1891
|
+
const classes = clsx22(
|
|
1336
1892
|
"flex items-center rounded-full border border-uiBorder02 bg-uiBackground01 focus-within:border-activeInput",
|
|
1337
1893
|
{ "h-8 px-3": size === "medium" },
|
|
1338
1894
|
{ "h-10 px-4": size === "large" }
|
|
1339
1895
|
);
|
|
1340
|
-
const inputClasses =
|
|
1896
|
+
const inputClasses = clsx22("mx-2 h-full flex-1 text-text01 outline-0 placeholder:text-textPlaceholder", {
|
|
1341
1897
|
["typography-label14regular"]: size === "medium",
|
|
1342
1898
|
["typography-label16regular"]: size === "large"
|
|
1343
1899
|
});
|
|
1344
|
-
return /* @__PURE__ */
|
|
1345
|
-
/* @__PURE__ */
|
|
1346
|
-
/* @__PURE__ */
|
|
1900
|
+
return /* @__PURE__ */ jsx35("div", { className: "relative", ref, children: /* @__PURE__ */ jsx35("form", { onSubmit: props.onSubmit, children: /* @__PURE__ */ jsxs18("div", { className: classes, style: { width }, children: [
|
|
1901
|
+
/* @__PURE__ */ jsx35(Icon, { name: "search", color: "icon01", size: "medium" }),
|
|
1902
|
+
/* @__PURE__ */ jsx35(
|
|
1347
1903
|
"input",
|
|
1348
1904
|
{
|
|
1349
1905
|
type: "text",
|
|
@@ -1354,7 +1910,7 @@ var Search = forwardRef4(({ width = "100%", size = "medium", ...props }, ref) =>
|
|
|
1354
1910
|
onChange: props.onChange
|
|
1355
1911
|
}
|
|
1356
1912
|
),
|
|
1357
|
-
props.onClickClearButton && props.value && props.value.length !== 0 && /* @__PURE__ */
|
|
1913
|
+
props.onClickClearButton && props.value && props.value.length !== 0 && /* @__PURE__ */ jsx35(
|
|
1358
1914
|
IconButton,
|
|
1359
1915
|
{
|
|
1360
1916
|
variant: "text",
|
|
@@ -1369,17 +1925,17 @@ var Search = forwardRef4(({ width = "100%", size = "medium", ...props }, ref) =>
|
|
|
1369
1925
|
Search.displayName = "Search";
|
|
1370
1926
|
|
|
1371
1927
|
// src/segmented-control/segmented-control.tsx
|
|
1372
|
-
import
|
|
1928
|
+
import React4, { Children, useRef as useRef6 } from "react";
|
|
1373
1929
|
|
|
1374
1930
|
// src/segmented-control/segmented-control-context.ts
|
|
1375
|
-
import { createContext as
|
|
1376
|
-
var SegmentedControlContext =
|
|
1931
|
+
import { createContext as createContext7 } from "react";
|
|
1932
|
+
var SegmentedControlContext = createContext7(null);
|
|
1377
1933
|
|
|
1378
1934
|
// src/segmented-control/segmented-control-item.tsx
|
|
1379
1935
|
import { focusVisible as focusVisible11 } from "@zenkigen-inc/component-theme";
|
|
1380
|
-
import { clsx as
|
|
1381
|
-
import { useContext as
|
|
1382
|
-
import { jsx as
|
|
1936
|
+
import { clsx as clsx23 } from "clsx";
|
|
1937
|
+
import { useContext as useContext10, useEffect as useEffect5, useRef as useRef5 } from "react";
|
|
1938
|
+
import { jsx as jsx36, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1383
1939
|
var SegmentedControlItem = ({
|
|
1384
1940
|
label,
|
|
1385
1941
|
value,
|
|
@@ -1388,9 +1944,9 @@ var SegmentedControlItem = ({
|
|
|
1388
1944
|
"aria-label": ariaLabel,
|
|
1389
1945
|
...rest
|
|
1390
1946
|
}) => {
|
|
1391
|
-
const context =
|
|
1392
|
-
const buttonRef =
|
|
1393
|
-
const lastInteractionWasMouse =
|
|
1947
|
+
const context = useContext10(SegmentedControlContext);
|
|
1948
|
+
const buttonRef = useRef5(null);
|
|
1949
|
+
const lastInteractionWasMouse = useRef5(false);
|
|
1394
1950
|
if (context === null) {
|
|
1395
1951
|
throw new Error("SegmentedControl.Item must be used within SegmentedControl");
|
|
1396
1952
|
}
|
|
@@ -1406,7 +1962,7 @@ var SegmentedControlItem = ({
|
|
|
1406
1962
|
const isSelected = value === selectedValue;
|
|
1407
1963
|
const isFocused = value === focusedValue;
|
|
1408
1964
|
const isOptionDisabled = isContextDisabled || itemDisabled === true;
|
|
1409
|
-
|
|
1965
|
+
useEffect5(() => {
|
|
1410
1966
|
if (isFocused === true && buttonRef.current !== null) {
|
|
1411
1967
|
buttonRef.current.focus();
|
|
1412
1968
|
}
|
|
@@ -1428,7 +1984,7 @@ var SegmentedControlItem = ({
|
|
|
1428
1984
|
lastInteractionWasMouse.current = false;
|
|
1429
1985
|
onBlur?.();
|
|
1430
1986
|
};
|
|
1431
|
-
const buttonClasses =
|
|
1987
|
+
const buttonClasses = clsx23("relative flex items-center justify-center gap-1 rounded", focusVisible11.normal, {
|
|
1432
1988
|
"px-2 min-h-[24px] typography-label12regular": size === "small",
|
|
1433
1989
|
"px-4 min-h-[32px] typography-label14regular": size === "medium",
|
|
1434
1990
|
// States - Default with hover
|
|
@@ -1438,7 +1994,7 @@ var SegmentedControlItem = ({
|
|
|
1438
1994
|
// States - Disabled
|
|
1439
1995
|
"text-disabled01 bg-transparent": isOptionDisabled === true
|
|
1440
1996
|
});
|
|
1441
|
-
return /* @__PURE__ */
|
|
1997
|
+
return /* @__PURE__ */ jsxs19(
|
|
1442
1998
|
"button",
|
|
1443
1999
|
{
|
|
1444
2000
|
ref: buttonRef,
|
|
@@ -1455,25 +2011,25 @@ var SegmentedControlItem = ({
|
|
|
1455
2011
|
onMouseDown: handleMouseDown,
|
|
1456
2012
|
...rest,
|
|
1457
2013
|
children: [
|
|
1458
|
-
Boolean(icon) === true && icon && /* @__PURE__ */
|
|
2014
|
+
Boolean(icon) === true && icon && /* @__PURE__ */ jsx36(
|
|
1459
2015
|
"span",
|
|
1460
2016
|
{
|
|
1461
|
-
className:
|
|
2017
|
+
className: clsx23("flex items-center", {
|
|
1462
2018
|
"fill-disabled01": isOptionDisabled === true,
|
|
1463
2019
|
"fill-interactive01": isSelected === true && isOptionDisabled === false,
|
|
1464
2020
|
"fill-icon01": isSelected === false && isOptionDisabled === false
|
|
1465
2021
|
}),
|
|
1466
|
-
children: /* @__PURE__ */
|
|
2022
|
+
children: /* @__PURE__ */ jsx36(Icon, { name: icon, size: "small" })
|
|
1467
2023
|
}
|
|
1468
2024
|
),
|
|
1469
|
-
Boolean(label) === true && /* @__PURE__ */
|
|
2025
|
+
Boolean(label) === true && /* @__PURE__ */ jsx36("span", { className: "whitespace-nowrap", children: label })
|
|
1470
2026
|
]
|
|
1471
2027
|
}
|
|
1472
2028
|
);
|
|
1473
2029
|
};
|
|
1474
2030
|
|
|
1475
2031
|
// src/segmented-control/segmented-control.tsx
|
|
1476
|
-
import { Fragment as
|
|
2032
|
+
import { Fragment as Fragment5, jsx as jsx37 } from "react/jsx-runtime";
|
|
1477
2033
|
var SegmentedControl = ({
|
|
1478
2034
|
children,
|
|
1479
2035
|
value,
|
|
@@ -1483,9 +2039,9 @@ var SegmentedControl = ({
|
|
|
1483
2039
|
"aria-label": ariaLabel,
|
|
1484
2040
|
...rest
|
|
1485
2041
|
}) => {
|
|
1486
|
-
const containerRef =
|
|
2042
|
+
const containerRef = useRef6(null);
|
|
1487
2043
|
const itemIds = Children.toArray(children).filter((child) => {
|
|
1488
|
-
if (!
|
|
2044
|
+
if (!React4.isValidElement(child) || typeof child.props !== "object" || child.props === null || !("value" in child.props)) {
|
|
1489
2045
|
return false;
|
|
1490
2046
|
}
|
|
1491
2047
|
const props = child.props;
|
|
@@ -1518,7 +2074,7 @@ var SegmentedControl = ({
|
|
|
1518
2074
|
onBlur: handleBlurRovingFocus,
|
|
1519
2075
|
values: itemIds
|
|
1520
2076
|
};
|
|
1521
|
-
return /* @__PURE__ */
|
|
2077
|
+
return /* @__PURE__ */ jsx37(Fragment5, { children: /* @__PURE__ */ jsx37(SegmentedControlContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx37(
|
|
1522
2078
|
"div",
|
|
1523
2079
|
{
|
|
1524
2080
|
ref: containerRef,
|
|
@@ -1536,19 +2092,19 @@ SegmentedControl.Item = SegmentedControlItem;
|
|
|
1536
2092
|
|
|
1537
2093
|
// src/select-sort/select-sort.tsx
|
|
1538
2094
|
import { buttonColors as buttonColors4, focusVisible as focusVisible14 } from "@zenkigen-inc/component-theme";
|
|
1539
|
-
import
|
|
1540
|
-
import { useCallback as
|
|
2095
|
+
import clsx26 from "clsx";
|
|
2096
|
+
import { useCallback as useCallback8, useRef as useRef7, useState as useState10 } from "react";
|
|
1541
2097
|
|
|
1542
2098
|
// src/select-sort/select-list.tsx
|
|
1543
2099
|
import { focusVisible as focusVisible13 } from "@zenkigen-inc/component-theme";
|
|
1544
|
-
import
|
|
2100
|
+
import clsx25 from "clsx";
|
|
1545
2101
|
|
|
1546
2102
|
// src/select-sort/select-item.tsx
|
|
1547
2103
|
import { focusVisible as focusVisible12 } from "@zenkigen-inc/component-theme";
|
|
1548
|
-
import
|
|
1549
|
-
import { jsx as
|
|
2104
|
+
import clsx24 from "clsx";
|
|
2105
|
+
import { jsx as jsx38, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1550
2106
|
function SelectItem2({ children, isSortKey, onClickItem }) {
|
|
1551
|
-
const itemClasses =
|
|
2107
|
+
const itemClasses = clsx24(
|
|
1552
2108
|
"typography-label14regular flex h-8 w-full items-center px-3 hover:bg-hover02 active:bg-active02",
|
|
1553
2109
|
focusVisible12.inset,
|
|
1554
2110
|
{
|
|
@@ -1556,16 +2112,16 @@ function SelectItem2({ children, isSortKey, onClickItem }) {
|
|
|
1556
2112
|
"bg-uiBackground01 fill-icon01 text-interactive02": !isSortKey
|
|
1557
2113
|
}
|
|
1558
2114
|
);
|
|
1559
|
-
return /* @__PURE__ */
|
|
1560
|
-
/* @__PURE__ */
|
|
1561
|
-
isSortKey && /* @__PURE__ */
|
|
2115
|
+
return /* @__PURE__ */ jsx38("li", { className: "flex w-full items-center", onClick: onClickItem, children: /* @__PURE__ */ jsxs20("button", { className: itemClasses, type: "button", children: [
|
|
2116
|
+
/* @__PURE__ */ jsx38("span", { className: "ml-1 mr-6", children }),
|
|
2117
|
+
isSortKey && /* @__PURE__ */ jsx38("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ jsx38(Icon, { name: "check", size: "small" }) })
|
|
1562
2118
|
] }) });
|
|
1563
2119
|
}
|
|
1564
2120
|
|
|
1565
2121
|
// src/select-sort/select-list.tsx
|
|
1566
|
-
import { jsx as
|
|
2122
|
+
import { jsx as jsx39, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
1567
2123
|
function SelectList2({ size, variant, sortOrder, onClickItem, onClickDeselect }) {
|
|
1568
|
-
const listClasses =
|
|
2124
|
+
const listClasses = clsx25(
|
|
1569
2125
|
"absolute z-dropdown w-max overflow-y-auto rounded bg-uiBackground01 py-2 shadow-floatingShadow",
|
|
1570
2126
|
{
|
|
1571
2127
|
"top-7": size === "x-small" || size === "small",
|
|
@@ -1574,19 +2130,19 @@ function SelectList2({ size, variant, sortOrder, onClickItem, onClickDeselect })
|
|
|
1574
2130
|
"border-solid border border-uiBorder01": variant === "outline"
|
|
1575
2131
|
}
|
|
1576
2132
|
);
|
|
1577
|
-
const deselectButtonClasses =
|
|
2133
|
+
const deselectButtonClasses = clsx25(
|
|
1578
2134
|
"typography-label14regular flex h-8 w-full items-center px-3 text-interactive02 hover:bg-hover02 active:bg-active02",
|
|
1579
2135
|
focusVisible13.inset
|
|
1580
2136
|
);
|
|
1581
|
-
return /* @__PURE__ */
|
|
1582
|
-
/* @__PURE__ */
|
|
1583
|
-
/* @__PURE__ */
|
|
1584
|
-
sortOrder !== null && onClickDeselect && /* @__PURE__ */
|
|
2137
|
+
return /* @__PURE__ */ jsxs21("ul", { className: listClasses, children: [
|
|
2138
|
+
/* @__PURE__ */ jsx39(SelectItem2, { isSortKey: sortOrder === "ascend", onClickItem: () => onClickItem("ascend"), children: "\u6607\u9806\u3067\u4E26\u3073\u66FF\u3048" }),
|
|
2139
|
+
/* @__PURE__ */ jsx39(SelectItem2, { isSortKey: sortOrder === "descend", onClickItem: () => onClickItem("descend"), children: "\u964D\u9806\u3067\u4E26\u3073\u66FF\u3048" }),
|
|
2140
|
+
sortOrder !== null && onClickDeselect && /* @__PURE__ */ jsx39("li", { children: /* @__PURE__ */ jsx39("button", { className: deselectButtonClasses, type: "button", onClick: onClickDeselect, children: "\u9078\u629E\u89E3\u9664" }) })
|
|
1585
2141
|
] });
|
|
1586
2142
|
}
|
|
1587
2143
|
|
|
1588
2144
|
// src/select-sort/select-sort.tsx
|
|
1589
|
-
import { jsx as
|
|
2145
|
+
import { jsx as jsx40, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
1590
2146
|
function SelectSort({
|
|
1591
2147
|
size = "medium",
|
|
1592
2148
|
variant = "outline",
|
|
@@ -1598,24 +2154,24 @@ function SelectSort({
|
|
|
1598
2154
|
onChange,
|
|
1599
2155
|
onClickDeselect
|
|
1600
2156
|
}) {
|
|
1601
|
-
const [isOptionListOpen, setIsOptionListOpen] =
|
|
1602
|
-
const targetRef =
|
|
2157
|
+
const [isOptionListOpen, setIsOptionListOpen] = useState10(false);
|
|
2158
|
+
const targetRef = useRef7(null);
|
|
1603
2159
|
useOutsideClick(targetRef, () => setIsOptionListOpen(false));
|
|
1604
2160
|
const handleClickToggle = () => setIsOptionListOpen((prev) => !prev);
|
|
1605
|
-
const handleClickItem =
|
|
2161
|
+
const handleClickItem = useCallback8(
|
|
1606
2162
|
(value) => {
|
|
1607
2163
|
onChange?.(value);
|
|
1608
2164
|
setIsOptionListOpen(false);
|
|
1609
2165
|
},
|
|
1610
2166
|
[onChange]
|
|
1611
2167
|
);
|
|
1612
|
-
const wrapperClasses =
|
|
2168
|
+
const wrapperClasses = clsx26("relative flex shrink-0 items-center gap-1 rounded", {
|
|
1613
2169
|
"h-6": size === "x-small" || size === "small",
|
|
1614
2170
|
"h-8": size === "medium",
|
|
1615
2171
|
"h-10": size === "large",
|
|
1616
2172
|
"cursor-not-allowed": isDisabled
|
|
1617
2173
|
});
|
|
1618
|
-
const buttonClasses =
|
|
2174
|
+
const buttonClasses = clsx26(
|
|
1619
2175
|
"flex size-full items-center rounded",
|
|
1620
2176
|
buttonColors4[variant].hover,
|
|
1621
2177
|
buttonColors4[variant].active,
|
|
@@ -1629,23 +2185,23 @@ function SelectSort({
|
|
|
1629
2185
|
"pointer-events-none": isDisabled
|
|
1630
2186
|
}
|
|
1631
2187
|
);
|
|
1632
|
-
const labelClasses =
|
|
2188
|
+
const labelClasses = clsx26("truncate", {
|
|
1633
2189
|
"typography-label12regular": size === "x-small",
|
|
1634
2190
|
"typography-label14regular": size === "small" || size === "medium",
|
|
1635
2191
|
"typography-label16regular": size === "large",
|
|
1636
2192
|
"mr-1": size === "x-small",
|
|
1637
2193
|
"mr-2": size !== "x-small"
|
|
1638
2194
|
});
|
|
1639
|
-
return /* @__PURE__ */
|
|
1640
|
-
/* @__PURE__ */
|
|
1641
|
-
/* @__PURE__ */
|
|
1642
|
-
/* @__PURE__ */
|
|
2195
|
+
return /* @__PURE__ */ jsxs22("div", { className: wrapperClasses, style: { width }, ref: targetRef, children: [
|
|
2196
|
+
/* @__PURE__ */ jsxs22("button", { className: buttonClasses, type: "button", onClick: handleClickToggle, disabled: isDisabled, children: [
|
|
2197
|
+
/* @__PURE__ */ jsx40("div", { className: labelClasses, children: label }),
|
|
2198
|
+
/* @__PURE__ */ jsx40("div", { className: "ml-auto flex items-center", children: isSortKey ? /* @__PURE__ */ jsx40(
|
|
1643
2199
|
Icon,
|
|
1644
2200
|
{
|
|
1645
2201
|
name: sortOrder === "ascend" ? "arrow-up" : "arrow-down",
|
|
1646
2202
|
size: size === "large" ? "medium" : "small"
|
|
1647
2203
|
}
|
|
1648
|
-
) : /* @__PURE__ */
|
|
2204
|
+
) : /* @__PURE__ */ jsx40(
|
|
1649
2205
|
Icon,
|
|
1650
2206
|
{
|
|
1651
2207
|
name: isOptionListOpen ? "angle-small-up" : "angle-small-down",
|
|
@@ -1653,7 +2209,7 @@ function SelectSort({
|
|
|
1653
2209
|
}
|
|
1654
2210
|
) })
|
|
1655
2211
|
] }),
|
|
1656
|
-
isOptionListOpen && !isDisabled && /* @__PURE__ */
|
|
2212
|
+
isOptionListOpen && !isDisabled && /* @__PURE__ */ jsx40(
|
|
1657
2213
|
SelectList2,
|
|
1658
2214
|
{
|
|
1659
2215
|
size,
|
|
@@ -1668,9 +2224,9 @@ function SelectSort({
|
|
|
1668
2224
|
|
|
1669
2225
|
// src/sort-button/sort-button.tsx
|
|
1670
2226
|
import { buttonColors as buttonColors5, focusVisible as focusVisible15 } from "@zenkigen-inc/component-theme";
|
|
1671
|
-
import
|
|
1672
|
-
import { useCallback as
|
|
1673
|
-
import { jsx as
|
|
2227
|
+
import clsx27 from "clsx";
|
|
2228
|
+
import { useCallback as useCallback9 } from "react";
|
|
2229
|
+
import { jsx as jsx41, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
1674
2230
|
function SortButton({
|
|
1675
2231
|
size = "medium",
|
|
1676
2232
|
width,
|
|
@@ -1681,7 +2237,7 @@ function SortButton({
|
|
|
1681
2237
|
"aria-label": ariaLabel,
|
|
1682
2238
|
...rest
|
|
1683
2239
|
}) {
|
|
1684
|
-
const handleClick =
|
|
2240
|
+
const handleClick = useCallback9(() => {
|
|
1685
2241
|
if (isDisabled || !onClick) return;
|
|
1686
2242
|
onClick();
|
|
1687
2243
|
}, [isDisabled, onClick]);
|
|
@@ -1690,13 +2246,13 @@ function SortButton({
|
|
|
1690
2246
|
if (sortOrder === "descend") return "arrow-down";
|
|
1691
2247
|
return "angle-small-down";
|
|
1692
2248
|
};
|
|
1693
|
-
const wrapperClasses =
|
|
2249
|
+
const wrapperClasses = clsx27("relative flex shrink-0 items-center gap-1 rounded", {
|
|
1694
2250
|
"h-6": size === "x-small" || size === "small",
|
|
1695
2251
|
"h-8": size === "medium",
|
|
1696
2252
|
"h-10": size === "large",
|
|
1697
2253
|
"cursor-not-allowed": isDisabled
|
|
1698
2254
|
});
|
|
1699
|
-
const buttonClasses =
|
|
2255
|
+
const buttonClasses = clsx27(
|
|
1700
2256
|
"flex size-full items-center rounded",
|
|
1701
2257
|
buttonColors5.text.hover,
|
|
1702
2258
|
buttonColors5.text.active,
|
|
@@ -1712,14 +2268,14 @@ function SortButton({
|
|
|
1712
2268
|
"pointer-events-none": isDisabled
|
|
1713
2269
|
}
|
|
1714
2270
|
);
|
|
1715
|
-
const labelClasses =
|
|
2271
|
+
const labelClasses = clsx27("truncate", {
|
|
1716
2272
|
"typography-label12regular": size === "x-small",
|
|
1717
2273
|
"typography-label14regular": size === "small" || size === "medium",
|
|
1718
2274
|
"typography-label16regular": size === "large",
|
|
1719
2275
|
"mr-1": size === "x-small",
|
|
1720
2276
|
"mr-2": size !== "x-small"
|
|
1721
2277
|
});
|
|
1722
|
-
return /* @__PURE__ */
|
|
2278
|
+
return /* @__PURE__ */ jsx41("div", { className: wrapperClasses, style: { width }, children: /* @__PURE__ */ jsxs23(
|
|
1723
2279
|
"button",
|
|
1724
2280
|
{
|
|
1725
2281
|
className: buttonClasses,
|
|
@@ -1730,22 +2286,22 @@ function SortButton({
|
|
|
1730
2286
|
"aria-label": ariaLabel,
|
|
1731
2287
|
"aria-disabled": isDisabled,
|
|
1732
2288
|
children: [
|
|
1733
|
-
/* @__PURE__ */
|
|
1734
|
-
/* @__PURE__ */
|
|
2289
|
+
/* @__PURE__ */ jsx41("div", { className: labelClasses, children: label }),
|
|
2290
|
+
/* @__PURE__ */ jsx41("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ jsx41(Icon, { name: getIconName(), size: size === "large" ? "medium" : "small" }) })
|
|
1735
2291
|
]
|
|
1736
2292
|
}
|
|
1737
2293
|
) });
|
|
1738
2294
|
}
|
|
1739
2295
|
|
|
1740
2296
|
// src/tab/tab.tsx
|
|
1741
|
-
import { clsx as
|
|
2297
|
+
import { clsx as clsx29 } from "clsx";
|
|
1742
2298
|
import { Children as Children2 } from "react";
|
|
1743
2299
|
|
|
1744
2300
|
// src/tab/tab-item.tsx
|
|
1745
|
-
import { clsx as
|
|
1746
|
-
import { jsx as
|
|
2301
|
+
import { clsx as clsx28 } from "clsx";
|
|
2302
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
1747
2303
|
var TabItem = ({ isSelected = false, ...props }) => {
|
|
1748
|
-
const classes =
|
|
2304
|
+
const classes = clsx28(
|
|
1749
2305
|
"relative z-0 flex justify-center py-2 leading-[24px] before:absolute before:inset-x-0 before:bottom-0 before:h-px hover:text-text01 disabled:pointer-events-none disabled:text-disabled01",
|
|
1750
2306
|
{
|
|
1751
2307
|
"typography-label14regular": !isSelected,
|
|
@@ -1754,7 +2310,7 @@ var TabItem = ({ isSelected = false, ...props }) => {
|
|
|
1754
2310
|
"before:bg-interactive01 hover:before:bg-interactive01 pointer-events-none": isSelected
|
|
1755
2311
|
}
|
|
1756
2312
|
);
|
|
1757
|
-
return /* @__PURE__ */
|
|
2313
|
+
return /* @__PURE__ */ jsx42(
|
|
1758
2314
|
"button",
|
|
1759
2315
|
{
|
|
1760
2316
|
type: "button",
|
|
@@ -1769,39 +2325,39 @@ var TabItem = ({ isSelected = false, ...props }) => {
|
|
|
1769
2325
|
};
|
|
1770
2326
|
|
|
1771
2327
|
// src/tab/tab.tsx
|
|
1772
|
-
import { jsx as
|
|
2328
|
+
import { jsx as jsx43 } from "react/jsx-runtime";
|
|
1773
2329
|
function Tab({ children, layout = "auto" }) {
|
|
1774
2330
|
const childrenCount = Children2.count(children);
|
|
1775
2331
|
const containerStyle = layout === "equal" ? { gridTemplateColumns: `repeat(${childrenCount}, minmax(0,1fr))` } : {};
|
|
1776
|
-
const containerClasses =
|
|
2332
|
+
const containerClasses = clsx29(
|
|
1777
2333
|
"relative gap-4 px-6 before:absolute before:inset-x-0 before:bottom-0 before:h-px before:bg-uiBorder01",
|
|
1778
2334
|
{
|
|
1779
2335
|
flex: layout === "auto",
|
|
1780
2336
|
grid: layout === "equal"
|
|
1781
2337
|
}
|
|
1782
2338
|
);
|
|
1783
|
-
return /* @__PURE__ */
|
|
2339
|
+
return /* @__PURE__ */ jsx43("div", { role: "tablist", className: containerClasses, style: containerStyle, children });
|
|
1784
2340
|
}
|
|
1785
2341
|
Tab.Item = TabItem;
|
|
1786
2342
|
|
|
1787
2343
|
// src/table/table-cell.tsx
|
|
1788
|
-
import
|
|
1789
|
-
import { jsx as
|
|
2344
|
+
import clsx30 from "clsx";
|
|
2345
|
+
import { jsx as jsx44 } from "react/jsx-runtime";
|
|
1790
2346
|
function TableCell({ children, className, isHeader = false }) {
|
|
1791
|
-
const classes =
|
|
1792
|
-
return /* @__PURE__ */
|
|
2347
|
+
const classes = clsx30("border-b border-uiBorder01", { "sticky top-0 z-10 bg-white": isHeader }, className);
|
|
2348
|
+
return /* @__PURE__ */ jsx44("div", { className: classes, children });
|
|
1793
2349
|
}
|
|
1794
2350
|
|
|
1795
2351
|
// src/table/table-row.tsx
|
|
1796
|
-
import
|
|
1797
|
-
import { jsx as
|
|
2352
|
+
import clsx31 from "clsx";
|
|
2353
|
+
import { jsx as jsx45 } from "react/jsx-runtime";
|
|
1798
2354
|
function TableRow({ children, isHoverBackgroundVisible = false }) {
|
|
1799
|
-
const rowClasses =
|
|
1800
|
-
return /* @__PURE__ */
|
|
2355
|
+
const rowClasses = clsx31("contents", isHoverBackgroundVisible && "[&:hover>div]:bg-hoverUi02");
|
|
2356
|
+
return /* @__PURE__ */ jsx45("div", { className: rowClasses, children });
|
|
1801
2357
|
}
|
|
1802
2358
|
|
|
1803
2359
|
// src/table/table.tsx
|
|
1804
|
-
import { jsx as
|
|
2360
|
+
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
1805
2361
|
function Table({
|
|
1806
2362
|
width,
|
|
1807
2363
|
templateRows,
|
|
@@ -1810,7 +2366,7 @@ function Table({
|
|
|
1810
2366
|
autoRows,
|
|
1811
2367
|
children
|
|
1812
2368
|
}) {
|
|
1813
|
-
return /* @__PURE__ */
|
|
2369
|
+
return /* @__PURE__ */ jsx46(
|
|
1814
2370
|
"div",
|
|
1815
2371
|
{
|
|
1816
2372
|
className: "grid",
|
|
@@ -1830,22 +2386,22 @@ Table.Cell = TableCell;
|
|
|
1830
2386
|
|
|
1831
2387
|
// src/tag/tag.tsx
|
|
1832
2388
|
import { tagColors, tagLightColors } from "@zenkigen-inc/component-theme";
|
|
1833
|
-
import
|
|
2389
|
+
import clsx33 from "clsx";
|
|
1834
2390
|
|
|
1835
2391
|
// src/tag/delete-icon.tsx
|
|
1836
2392
|
import { focusVisible as focusVisible16 } from "@zenkigen-inc/component-theme";
|
|
1837
|
-
import
|
|
1838
|
-
import { jsx as
|
|
2393
|
+
import clsx32 from "clsx";
|
|
2394
|
+
import { jsx as jsx47 } from "react/jsx-runtime";
|
|
1839
2395
|
var DeleteIcon = ({ color, variant, onClick }) => {
|
|
1840
|
-
const deleteButtonClasses =
|
|
2396
|
+
const deleteButtonClasses = clsx32(
|
|
1841
2397
|
"group ml-2 size-[14px] rounded-full p-0.5 hover:cursor-pointer hover:bg-iconOnColor focus-visible:bg-iconOnColor",
|
|
1842
2398
|
focusVisible16.normal
|
|
1843
2399
|
);
|
|
1844
|
-
const deletePathClasses =
|
|
2400
|
+
const deletePathClasses = clsx32({
|
|
1845
2401
|
"fill-interactive02": color === "gray" || variant === "light",
|
|
1846
2402
|
"group-hover:fill-interactive02 group-focus-visible:fill-interactive02 fill-iconOnColor": color !== "gray"
|
|
1847
2403
|
});
|
|
1848
|
-
return /* @__PURE__ */
|
|
2404
|
+
return /* @__PURE__ */ jsx47("button", { type: "button", className: deleteButtonClasses, onClick, children: /* @__PURE__ */ jsx47("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx47(
|
|
1849
2405
|
"path",
|
|
1850
2406
|
{
|
|
1851
2407
|
fillRule: "evenodd",
|
|
@@ -1857,9 +2413,9 @@ var DeleteIcon = ({ color, variant, onClick }) => {
|
|
|
1857
2413
|
};
|
|
1858
2414
|
|
|
1859
2415
|
// src/tag/tag.tsx
|
|
1860
|
-
import { jsx as
|
|
2416
|
+
import { jsx as jsx48, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
1861
2417
|
function Tag({ id, children, color, variant = "normal", size = "medium", isEditable, onDelete }) {
|
|
1862
|
-
const wrapperClasses =
|
|
2418
|
+
const wrapperClasses = clsx33("flex", "items-center", "justify-center", {
|
|
1863
2419
|
[tagColors[color]]: variant === "normal",
|
|
1864
2420
|
[tagLightColors[color]]: variant === "light",
|
|
1865
2421
|
"h-[14px] typography-label11regular": !isEditable && size === "x-small",
|
|
@@ -1871,17 +2427,17 @@ function Tag({ id, children, color, variant = "normal", size = "medium", isEdita
|
|
|
1871
2427
|
"py-0.5 px-1": !isEditable,
|
|
1872
2428
|
"py-1 px-2": isEditable
|
|
1873
2429
|
});
|
|
1874
|
-
return /* @__PURE__ */
|
|
2430
|
+
return /* @__PURE__ */ jsxs24("div", { className: wrapperClasses, children: [
|
|
1875
2431
|
children,
|
|
1876
|
-
isEditable ? /* @__PURE__ */
|
|
2432
|
+
isEditable ? /* @__PURE__ */ jsx48(DeleteIcon, { onClick: () => onDelete(id), color, variant }) : null
|
|
1877
2433
|
] });
|
|
1878
2434
|
}
|
|
1879
2435
|
|
|
1880
2436
|
// src/text-area/text-area.tsx
|
|
1881
|
-
import { clsx as
|
|
1882
|
-
import { forwardRef as
|
|
1883
|
-
import { jsx as
|
|
1884
|
-
var TextArea =
|
|
2437
|
+
import { clsx as clsx34 } from "clsx";
|
|
2438
|
+
import { forwardRef as forwardRef8 } from "react";
|
|
2439
|
+
import { jsx as jsx49 } from "react/jsx-runtime";
|
|
2440
|
+
var TextArea = forwardRef8(
|
|
1885
2441
|
({
|
|
1886
2442
|
size = "medium",
|
|
1887
2443
|
isResizable = false,
|
|
@@ -1892,7 +2448,7 @@ var TextArea = forwardRef5(
|
|
|
1892
2448
|
height,
|
|
1893
2449
|
...props
|
|
1894
2450
|
}, ref) => {
|
|
1895
|
-
const classes =
|
|
2451
|
+
const classes = clsx34(
|
|
1896
2452
|
"w-full rounded border outline-0 placeholder:text-textPlaceholder disabled:text-textPlaceholder",
|
|
1897
2453
|
{
|
|
1898
2454
|
"border-supportError": isError && !disabled,
|
|
@@ -1906,7 +2462,7 @@ var TextArea = forwardRef5(
|
|
|
1906
2462
|
"resize-none": !isResizable
|
|
1907
2463
|
}
|
|
1908
2464
|
);
|
|
1909
|
-
return /* @__PURE__ */
|
|
2465
|
+
return /* @__PURE__ */ jsx49("div", { className: "flex", children: /* @__PURE__ */ jsx49(
|
|
1910
2466
|
"textarea",
|
|
1911
2467
|
{
|
|
1912
2468
|
ref,
|
|
@@ -1927,9 +2483,9 @@ var TextArea = forwardRef5(
|
|
|
1927
2483
|
TextArea.displayName = "TextArea";
|
|
1928
2484
|
|
|
1929
2485
|
// src/toast/toast.tsx
|
|
1930
|
-
import
|
|
1931
|
-
import { useCallback as
|
|
1932
|
-
import { jsx as
|
|
2486
|
+
import clsx35 from "clsx";
|
|
2487
|
+
import { useCallback as useCallback10, useEffect as useEffect6, useState as useState11 } from "react";
|
|
2488
|
+
import { jsx as jsx50, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
1933
2489
|
var CLOSE_TIME_MSEC = 5e3;
|
|
1934
2490
|
function Toast({
|
|
1935
2491
|
state = "information",
|
|
@@ -1939,8 +2495,8 @@ function Toast({
|
|
|
1939
2495
|
children,
|
|
1940
2496
|
onClickClose
|
|
1941
2497
|
}) {
|
|
1942
|
-
const [isRemoving, setIsRemoving] =
|
|
1943
|
-
const handleClose =
|
|
2498
|
+
const [isRemoving, setIsRemoving] = useState11(false);
|
|
2499
|
+
const handleClose = useCallback10(() => {
|
|
1944
2500
|
if (isAnimation) {
|
|
1945
2501
|
setIsRemoving(true);
|
|
1946
2502
|
} else {
|
|
@@ -1948,17 +2504,17 @@ function Toast({
|
|
|
1948
2504
|
}
|
|
1949
2505
|
}, [isAnimation, onClickClose]);
|
|
1950
2506
|
const handleAnimationEnd = (e) => window.getComputedStyle(e.currentTarget).opacity === "0" && onClickClose();
|
|
1951
|
-
const wrapperClasses =
|
|
2507
|
+
const wrapperClasses = clsx35("pointer-events-auto flex items-start gap-1 bg-white p-4 shadow-floatingShadow", {
|
|
1952
2508
|
["animate-toast-in"]: isAnimation && !isRemoving,
|
|
1953
2509
|
["animate-toast-out opacity-0"]: isAnimation && isRemoving
|
|
1954
2510
|
});
|
|
1955
|
-
const iconClasses =
|
|
2511
|
+
const iconClasses = clsx35("flex items-center", {
|
|
1956
2512
|
"fill-supportSuccess": state === "success",
|
|
1957
2513
|
"fill-supportError": state === "error",
|
|
1958
2514
|
"fill-supportWarning": state === "warning",
|
|
1959
2515
|
"fill-supportInfo": state === "information"
|
|
1960
2516
|
});
|
|
1961
|
-
const textClasses =
|
|
2517
|
+
const textClasses = clsx35("typography-body13regular flex-1 pt-[3px]", {
|
|
1962
2518
|
"text-supportError": state === "error",
|
|
1963
2519
|
"text-text01": state === "success" || state === "warning" || state === "information"
|
|
1964
2520
|
});
|
|
@@ -1968,7 +2524,7 @@ function Toast({
|
|
|
1968
2524
|
warning: "warning",
|
|
1969
2525
|
information: "information-filled"
|
|
1970
2526
|
};
|
|
1971
|
-
|
|
2527
|
+
useEffect6(() => {
|
|
1972
2528
|
const timer = window.setTimeout(() => {
|
|
1973
2529
|
if (isAutoClose) {
|
|
1974
2530
|
setIsRemoving(true);
|
|
@@ -1976,45 +2532,45 @@ function Toast({
|
|
|
1976
2532
|
}, CLOSE_TIME_MSEC);
|
|
1977
2533
|
return () => window.clearTimeout(timer);
|
|
1978
2534
|
}, [isAutoClose]);
|
|
1979
|
-
return /* @__PURE__ */
|
|
1980
|
-
/* @__PURE__ */
|
|
1981
|
-
/* @__PURE__ */
|
|
1982
|
-
/* @__PURE__ */
|
|
2535
|
+
return /* @__PURE__ */ jsxs25("div", { className: wrapperClasses, style: { width }, onAnimationEnd: handleAnimationEnd, children: [
|
|
2536
|
+
/* @__PURE__ */ jsx50("div", { className: iconClasses, children: /* @__PURE__ */ jsx50(Icon, { name: iconName[state] }) }),
|
|
2537
|
+
/* @__PURE__ */ jsx50("p", { className: textClasses, children }),
|
|
2538
|
+
/* @__PURE__ */ jsx50(IconButton, { icon: "close", size: "medium", variant: "text", onClick: handleClose, isNoPadding: true })
|
|
1983
2539
|
] });
|
|
1984
2540
|
}
|
|
1985
2541
|
|
|
1986
2542
|
// src/toast/toast-provider.tsx
|
|
1987
|
-
import { createContext as
|
|
2543
|
+
import { createContext as createContext8, useCallback as useCallback11, useContext as useContext11, useEffect as useEffect7, useState as useState12 } from "react";
|
|
1988
2544
|
import { createPortal as createPortal3 } from "react-dom";
|
|
1989
|
-
import { jsx as
|
|
1990
|
-
var ToastContext =
|
|
2545
|
+
import { jsx as jsx51, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
2546
|
+
var ToastContext = createContext8({});
|
|
1991
2547
|
var ToastProvider = ({ children }) => {
|
|
1992
|
-
const [isClientRender, setIsClientRender] =
|
|
1993
|
-
const [toasts, setToasts] =
|
|
1994
|
-
const addToast =
|
|
2548
|
+
const [isClientRender, setIsClientRender] = useState12(false);
|
|
2549
|
+
const [toasts, setToasts] = useState12([]);
|
|
2550
|
+
const addToast = useCallback11(({ message, state }) => {
|
|
1995
2551
|
setToasts((prev) => [...prev, { id: Math.trunc(Math.random() * 1e5), message, state }]);
|
|
1996
2552
|
}, []);
|
|
1997
|
-
const removeToast =
|
|
2553
|
+
const removeToast = useCallback11((id) => {
|
|
1998
2554
|
setToasts((prev) => prev.filter((snackbar) => snackbar.id !== id));
|
|
1999
2555
|
}, []);
|
|
2000
|
-
|
|
2556
|
+
useEffect7(() => {
|
|
2001
2557
|
setIsClientRender(true);
|
|
2002
2558
|
}, []);
|
|
2003
|
-
return /* @__PURE__ */
|
|
2559
|
+
return /* @__PURE__ */ jsxs26(ToastContext.Provider, { value: { addToast, removeToast }, children: [
|
|
2004
2560
|
children,
|
|
2005
2561
|
isClientRender && createPortal3(
|
|
2006
|
-
/* @__PURE__ */
|
|
2562
|
+
/* @__PURE__ */ jsx51("div", { className: "pointer-events-none fixed bottom-0 left-0 z-toast mb-4 ml-4 flex w-full flex-col-reverse gap-[16px]", children: toasts.map(({ id, message, state }) => /* @__PURE__ */ jsx51(Toast, { state, isAutoClose: true, isAnimation: true, onClickClose: () => removeToast(id), width: 475, children: message }, id)) }),
|
|
2007
2563
|
document.body
|
|
2008
2564
|
)
|
|
2009
2565
|
] });
|
|
2010
2566
|
};
|
|
2011
2567
|
var useToast = () => {
|
|
2012
|
-
return
|
|
2568
|
+
return useContext11(ToastContext);
|
|
2013
2569
|
};
|
|
2014
2570
|
|
|
2015
2571
|
// src/toggle/toggle.tsx
|
|
2016
|
-
import
|
|
2017
|
-
import { jsx as
|
|
2572
|
+
import clsx36 from "clsx";
|
|
2573
|
+
import { jsx as jsx52, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
2018
2574
|
function Toggle({
|
|
2019
2575
|
id,
|
|
2020
2576
|
size = "medium",
|
|
@@ -2024,7 +2580,7 @@ function Toggle({
|
|
|
2024
2580
|
labelPosition = "right",
|
|
2025
2581
|
isDisabled = false
|
|
2026
2582
|
}) {
|
|
2027
|
-
const baseClasses =
|
|
2583
|
+
const baseClasses = clsx36("relative flex items-center rounded-full", {
|
|
2028
2584
|
"bg-disabledOn": isDisabled && isChecked,
|
|
2029
2585
|
"bg-disabled01": isDisabled && !isChecked,
|
|
2030
2586
|
"bg-interactive01 peer-hover:bg-hover01": !isDisabled && isChecked,
|
|
@@ -2032,16 +2588,16 @@ function Toggle({
|
|
|
2032
2588
|
"w-8 h-4 px-[3px]": size === "small",
|
|
2033
2589
|
"w-12 h-6 px-1": size === "medium" || size === "large"
|
|
2034
2590
|
});
|
|
2035
|
-
const inputClasses =
|
|
2591
|
+
const inputClasses = clsx36(
|
|
2036
2592
|
"peer absolute inset-0 z-[1] opacity-0",
|
|
2037
2593
|
isDisabled ? "cursor-not-allowed" : "cursor-pointer"
|
|
2038
2594
|
);
|
|
2039
|
-
const indicatorClasses =
|
|
2595
|
+
const indicatorClasses = clsx36("rounded-full bg-iconOnColor", {
|
|
2040
2596
|
"w-2.5 h-2.5": size === "small",
|
|
2041
2597
|
"w-4 h-4": size === "medium" || size === "large",
|
|
2042
2598
|
"ml-auto": isChecked
|
|
2043
2599
|
});
|
|
2044
|
-
const labelClasses =
|
|
2600
|
+
const labelClasses = clsx36("break-all", {
|
|
2045
2601
|
"mr-2": labelPosition === "left",
|
|
2046
2602
|
"ml-2": labelPosition === "right",
|
|
2047
2603
|
"typography-label14regular": size === "small" || size === "medium",
|
|
@@ -2049,9 +2605,9 @@ function Toggle({
|
|
|
2049
2605
|
"pointer-events-none cursor-not-allowed text-disabled01": isDisabled,
|
|
2050
2606
|
"cursor-pointer text-text01": !isDisabled
|
|
2051
2607
|
});
|
|
2052
|
-
return /* @__PURE__ */
|
|
2053
|
-
label != null && labelPosition === "left" && /* @__PURE__ */
|
|
2054
|
-
/* @__PURE__ */
|
|
2608
|
+
return /* @__PURE__ */ jsxs27("div", { className: "relative flex flex-[0_0_auto] items-center", children: [
|
|
2609
|
+
label != null && labelPosition === "left" && /* @__PURE__ */ jsx52("label", { htmlFor: id, className: labelClasses, children: label }),
|
|
2610
|
+
/* @__PURE__ */ jsx52(
|
|
2055
2611
|
"input",
|
|
2056
2612
|
{
|
|
2057
2613
|
className: inputClasses,
|
|
@@ -2063,23 +2619,23 @@ function Toggle({
|
|
|
2063
2619
|
disabled: isDisabled
|
|
2064
2620
|
}
|
|
2065
2621
|
),
|
|
2066
|
-
/* @__PURE__ */
|
|
2067
|
-
label != null && labelPosition === "right" && /* @__PURE__ */
|
|
2622
|
+
/* @__PURE__ */ jsx52("div", { className: baseClasses, children: /* @__PURE__ */ jsx52("span", { className: indicatorClasses }) }),
|
|
2623
|
+
label != null && labelPosition === "right" && /* @__PURE__ */ jsx52("label", { htmlFor: id, className: labelClasses, children: label })
|
|
2068
2624
|
] });
|
|
2069
2625
|
}
|
|
2070
2626
|
|
|
2071
2627
|
// src/tooltip/tooltip.tsx
|
|
2072
|
-
import { useCallback as
|
|
2628
|
+
import { useCallback as useCallback13, useEffect as useEffect8, useRef as useRef8, useState as useState13 } from "react";
|
|
2073
2629
|
import { createPortal as createPortal4 } from "react-dom";
|
|
2074
2630
|
|
|
2075
2631
|
// src/tooltip/tooltip-content.tsx
|
|
2076
|
-
import
|
|
2632
|
+
import clsx38 from "clsx";
|
|
2077
2633
|
|
|
2078
2634
|
// src/tooltip/tail-icon.tsx
|
|
2079
|
-
import
|
|
2080
|
-
import { jsx as
|
|
2635
|
+
import clsx37 from "clsx";
|
|
2636
|
+
import { jsx as jsx53 } from "react/jsx-runtime";
|
|
2081
2637
|
var TailIcon = (props) => {
|
|
2082
|
-
const tailClasses =
|
|
2638
|
+
const tailClasses = clsx37("absolute fill-uiBackgroundTooltip", {
|
|
2083
2639
|
"rotate-180": props.verticalPosition === "bottom",
|
|
2084
2640
|
"rotate-0": props.verticalPosition !== "bottom",
|
|
2085
2641
|
"-top-1": props.verticalPosition === "bottom" && props.size === "small",
|
|
@@ -2094,9 +2650,9 @@ var TailIcon = (props) => {
|
|
|
2094
2650
|
"left-1/2 -translate-x-2": props.horizontalAlign === "center" && props.size !== "small"
|
|
2095
2651
|
});
|
|
2096
2652
|
if (props.size === "small") {
|
|
2097
|
-
return /* @__PURE__ */
|
|
2653
|
+
return /* @__PURE__ */ jsx53("svg", { className: tailClasses, width: "8", height: "4", viewBox: "0 0 8 4", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx53("path", { d: "M4 4L0 0H8L4 4Z" }) });
|
|
2098
2654
|
} else {
|
|
2099
|
-
return /* @__PURE__ */
|
|
2655
|
+
return /* @__PURE__ */ jsx53(
|
|
2100
2656
|
"svg",
|
|
2101
2657
|
{
|
|
2102
2658
|
className: tailClasses,
|
|
@@ -2105,14 +2661,14 @@ var TailIcon = (props) => {
|
|
|
2105
2661
|
viewBox: "0 0 14 8",
|
|
2106
2662
|
fill: "none",
|
|
2107
2663
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2108
|
-
children: /* @__PURE__ */
|
|
2664
|
+
children: /* @__PURE__ */ jsx53("path", { d: "M7 8L0 0H14L7 8Z" })
|
|
2109
2665
|
}
|
|
2110
2666
|
);
|
|
2111
2667
|
}
|
|
2112
2668
|
};
|
|
2113
2669
|
|
|
2114
2670
|
// src/tooltip/tooltip-content.tsx
|
|
2115
|
-
import { jsx as
|
|
2671
|
+
import { jsx as jsx54, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
2116
2672
|
var TooltipContent = ({
|
|
2117
2673
|
content,
|
|
2118
2674
|
horizontalAlign,
|
|
@@ -2122,7 +2678,7 @@ var TooltipContent = ({
|
|
|
2122
2678
|
maxWidth,
|
|
2123
2679
|
isPortal = false
|
|
2124
2680
|
}) => {
|
|
2125
|
-
const tooltipWrapperClasses =
|
|
2681
|
+
const tooltipWrapperClasses = clsx38("absolute z-tooltip m-auto flex", {
|
|
2126
2682
|
"top-0": !isPortal && verticalPosition === "top",
|
|
2127
2683
|
"bottom-0": !isPortal && verticalPosition === "bottom",
|
|
2128
2684
|
"justify-start": horizontalAlign === "left",
|
|
@@ -2131,7 +2687,7 @@ var TooltipContent = ({
|
|
|
2131
2687
|
"w-[24px]": size === "small",
|
|
2132
2688
|
"w-[46px]": size !== "small"
|
|
2133
2689
|
});
|
|
2134
|
-
const tooltipBodyClasses =
|
|
2690
|
+
const tooltipBodyClasses = clsx38(
|
|
2135
2691
|
"absolute z-tooltip inline-block w-max rounded bg-uiBackgroundTooltip text-textOnColor",
|
|
2136
2692
|
{
|
|
2137
2693
|
"typography-body12regular": size === "small",
|
|
@@ -2148,7 +2704,7 @@ var TooltipContent = ({
|
|
|
2148
2704
|
transform: `translate(${tooltipPosition.translateX}, ${tooltipPosition.translateY})`,
|
|
2149
2705
|
...tooltipPosition
|
|
2150
2706
|
} : {};
|
|
2151
|
-
return /* @__PURE__ */
|
|
2707
|
+
return /* @__PURE__ */ jsx54("div", { className: tooltipWrapperClasses, style: tooltipWrapperStyle, children: /* @__PURE__ */ jsxs28(
|
|
2152
2708
|
"div",
|
|
2153
2709
|
{
|
|
2154
2710
|
className: tooltipBodyClasses,
|
|
@@ -2157,16 +2713,16 @@ var TooltipContent = ({
|
|
|
2157
2713
|
},
|
|
2158
2714
|
children: [
|
|
2159
2715
|
content,
|
|
2160
|
-
/* @__PURE__ */
|
|
2716
|
+
/* @__PURE__ */ jsx54(TailIcon, { size, verticalPosition, horizontalAlign })
|
|
2161
2717
|
]
|
|
2162
2718
|
}
|
|
2163
2719
|
) });
|
|
2164
2720
|
};
|
|
2165
2721
|
|
|
2166
2722
|
// src/tooltip/tooltip-hook.ts
|
|
2167
|
-
import { useCallback as
|
|
2723
|
+
import { useCallback as useCallback12 } from "react";
|
|
2168
2724
|
var useTooltip = () => {
|
|
2169
|
-
const calculatePosition =
|
|
2725
|
+
const calculatePosition = useCallback12(
|
|
2170
2726
|
(args) => {
|
|
2171
2727
|
const result = {
|
|
2172
2728
|
maxWidth: "none",
|
|
@@ -2218,7 +2774,7 @@ var useTooltip = () => {
|
|
|
2218
2774
|
};
|
|
2219
2775
|
|
|
2220
2776
|
// src/tooltip/tooltip.tsx
|
|
2221
|
-
import { jsx as
|
|
2777
|
+
import { jsx as jsx55, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
2222
2778
|
function Tooltip({
|
|
2223
2779
|
children,
|
|
2224
2780
|
content,
|
|
@@ -2230,8 +2786,8 @@ function Tooltip({
|
|
|
2230
2786
|
portalTarget
|
|
2231
2787
|
}) {
|
|
2232
2788
|
const { calculatePosition } = useTooltip();
|
|
2233
|
-
const [isVisible, setIsVisible] =
|
|
2234
|
-
const [tooltipPosition, setTooltipPosition] =
|
|
2789
|
+
const [isVisible, setIsVisible] = useState13(false);
|
|
2790
|
+
const [tooltipPosition, setTooltipPosition] = useState13({
|
|
2235
2791
|
maxWidth: "none",
|
|
2236
2792
|
width: "auto",
|
|
2237
2793
|
left: "0px",
|
|
@@ -2240,23 +2796,23 @@ function Tooltip({
|
|
|
2240
2796
|
translateX: "0",
|
|
2241
2797
|
translateY: "0"
|
|
2242
2798
|
});
|
|
2243
|
-
const targetRef =
|
|
2244
|
-
const handleMouseOverWrapper =
|
|
2799
|
+
const targetRef = useRef8(null);
|
|
2800
|
+
const handleMouseOverWrapper = useCallback13(() => {
|
|
2245
2801
|
if (isDisabledHover) {
|
|
2246
2802
|
return;
|
|
2247
2803
|
}
|
|
2248
2804
|
setIsVisible(true);
|
|
2249
2805
|
}, [isDisabledHover]);
|
|
2250
|
-
const handleMouseOutWrapper =
|
|
2806
|
+
const handleMouseOutWrapper = useCallback13(() => {
|
|
2251
2807
|
setIsVisible(false);
|
|
2252
2808
|
}, []);
|
|
2253
|
-
|
|
2809
|
+
useEffect8(() => {
|
|
2254
2810
|
if (targetRef.current === null) return;
|
|
2255
2811
|
const dimensions = targetRef.current?.getBoundingClientRect();
|
|
2256
2812
|
const position = calculatePosition({ dimensions, maxWidth, verticalPosition, horizontalAlign, tooltipSize: size });
|
|
2257
2813
|
setTooltipPosition(position);
|
|
2258
2814
|
}, [calculatePosition, horizontalAlign, maxWidth, size, verticalPosition]);
|
|
2259
|
-
return /* @__PURE__ */
|
|
2815
|
+
return /* @__PURE__ */ jsxs29(
|
|
2260
2816
|
"div",
|
|
2261
2817
|
{
|
|
2262
2818
|
ref: targetRef,
|
|
@@ -2265,7 +2821,7 @@ function Tooltip({
|
|
|
2265
2821
|
onMouseLeave: handleMouseOutWrapper,
|
|
2266
2822
|
children: [
|
|
2267
2823
|
children,
|
|
2268
|
-
isVisible && (portalTarget == null ? /* @__PURE__ */
|
|
2824
|
+
isVisible && (portalTarget == null ? /* @__PURE__ */ jsx55(
|
|
2269
2825
|
TooltipContent,
|
|
2270
2826
|
{
|
|
2271
2827
|
content,
|
|
@@ -2276,7 +2832,7 @@ function Tooltip({
|
|
|
2276
2832
|
tooltipPosition
|
|
2277
2833
|
}
|
|
2278
2834
|
) : createPortal4(
|
|
2279
|
-
/* @__PURE__ */
|
|
2835
|
+
/* @__PURE__ */ jsx55(
|
|
2280
2836
|
TooltipContent,
|
|
2281
2837
|
{
|
|
2282
2838
|
isPortal: true,
|
|
@@ -2301,6 +2857,7 @@ export {
|
|
|
2301
2857
|
Checkbox,
|
|
2302
2858
|
Dropdown,
|
|
2303
2859
|
EvaluationStar,
|
|
2860
|
+
FileInput,
|
|
2304
2861
|
Heading,
|
|
2305
2862
|
Icon,
|
|
2306
2863
|
IconButton,
|
|
@@ -2310,6 +2867,10 @@ export {
|
|
|
2310
2867
|
Pagination,
|
|
2311
2868
|
PaginationSelect,
|
|
2312
2869
|
PasswordInput,
|
|
2870
|
+
Popover,
|
|
2871
|
+
PopoverContent,
|
|
2872
|
+
PopoverTrigger,
|
|
2873
|
+
Popup,
|
|
2313
2874
|
Radio,
|
|
2314
2875
|
Search,
|
|
2315
2876
|
SegmentedControl,
|