@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/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 Button = ({
87
- size = "medium",
88
- variant = "fill",
89
- isDisabled,
90
- isSelected = false,
91
- width,
92
- borderRadius,
93
- justifyContent = "center",
94
- before,
95
- after,
96
- elementAs,
97
- children,
98
- ...props
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, ...props, children: [
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 clsx9 } from "clsx";
500
- import { jsxs as jsxs4 } from "react/jsx-runtime";
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 = clsx9(`flex items-center text-text01`, typography.heading[TagName], {
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__ */ jsxs4(TagName, { className: classes, children: [
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 useCallback4, useState as useState4 } from "react";
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] = useState4(
862
+ const [focusedValue, setFocusedValue] = useState5(
522
863
  typeof defaultFocusedValue === "undefined" ? null : defaultFocusedValue
523
864
  );
524
- const handleFocusChange = useCallback4((newValue) => {
865
+ const handleFocusChange = useCallback5((newValue) => {
525
866
  setFocusedValue(newValue);
526
867
  }, []);
527
- const handleBlur = useCallback4(() => {
868
+ const handleBlur = useCallback5(() => {
528
869
  setFocusedValue(null);
529
870
  }, []);
530
- const handleKeyDown = useCallback4(
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 clsx11 from "clsx";
628
- import { Fragment as Fragment2, jsx as jsx13, jsxs as jsxs5 } from "react/jsx-runtime";
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 = clsx11(position, "left-0 top-0 z-20 flex w-full items-center justify-center");
631
- const svgClasses = clsx11({
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__ */ jsx13(Fragment2, { children: /* @__PURE__ */ jsxs5("div", { className: wrapperClasses, style: { height }, children: [
637
- size === "small" && /* @__PURE__ */ jsx13("svg", { className: svgClasses, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx13(
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__ */ jsx13("svg", { className: svgClasses, viewBox: "0 0 32 32", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx13(
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__ */ jsx13("svg", { className: svgClasses, viewBox: "0 0 64 64", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx13(
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 useState5 } from "react";
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 jsx14 } from "react/jsx-runtime";
1027
+ import { jsx as jsx15 } from "react/jsx-runtime";
729
1028
  function ModalBody({ children }) {
730
- return /* @__PURE__ */ jsx14("div", { className: "overflow-y-auto", children });
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 clsx12 from "clsx";
741
- import { jsx as jsx15 } from "react/jsx-runtime";
1039
+ import clsx13 from "clsx";
1040
+ import { jsx as jsx16 } from "react/jsx-runtime";
742
1041
  function ModalFooter({ children, isNoBorder = false }) {
743
- const wrapperClasses = clsx12("flex w-full shrink-0 items-center rounded-b-lg px-6 py-4", {
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__ */ jsx15("div", { className: wrapperClasses, children });
1045
+ return /* @__PURE__ */ jsx16("div", { className: wrapperClasses, children });
747
1046
  }
748
1047
 
749
1048
  // src/modal/modal-header.tsx
750
- import clsx13 from "clsx";
1049
+ import clsx14 from "clsx";
751
1050
  import { useContext as useContext3 } from "react";
752
- import { jsx as jsx16, jsxs as jsxs6 } from "react/jsx-runtime";
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 = clsx13(
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__ */ jsxs6("div", { className: headerClasses, children: [
764
- /* @__PURE__ */ jsx16("div", { children }),
765
- onClose && /* @__PURE__ */ jsx16(IconButton, { icon: "close", size: "small", variant: "text", onClick: onClose })
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 Fragment3, jsx as jsx17, jsxs as jsxs7 } from "react/jsx-runtime";
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] = useState5(false);
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__ */ jsxs7(Fragment3, { children: [
789
- /* @__PURE__ */ jsx17(BodyScrollLock, {}),
1087
+ return isMounted && isOpen ? /* @__PURE__ */ jsxs8(Fragment4, { children: [
1088
+ /* @__PURE__ */ jsx18(BodyScrollLock, {}),
790
1089
  createPortal2(
791
- /* @__PURE__ */ jsx17(ModalContext.Provider, { value: { onClose }, children: /* @__PURE__ */ jsx17("div", { className: "fixed left-0 top-0 z-overlay flex size-full items-center justify-center bg-backgroundOverlayBlack py-4", children: /* @__PURE__ */ jsx17(
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 clsx14 } from "clsx";
809
- import { jsx as jsx18, jsxs as jsxs8 } from "react/jsx-runtime";
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 = clsx14("typography-body13regular flex items-center gap-1 rounded text-text01", {
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 = clsx14("flex items-center", {
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__ */ jsxs8("div", { className: wrapperClasses, children: [
837
- state !== "default" && /* @__PURE__ */ jsx18("div", { className: iconClasses, children: /* @__PURE__ */ jsx18(Icon, { name: iconName[state], size: iconSize[size] }) }),
838
- /* @__PURE__ */ jsx18("p", { className: "flex-1", children: props.children }),
839
- props.showClose === true && /* @__PURE__ */ jsx18("div", { className: "flex items-center", children: /* @__PURE__ */ jsx18(IconButton, { icon: "close", size: "small", variant: "text" }) })
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 clsx15 } from "clsx";
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 jsx19 } from "react/jsx-runtime";
1153
+ import { jsx as jsx20 } from "react/jsx-runtime";
855
1154
  function PaginationButton({ page, onClick }) {
856
1155
  const { currentPage } = useContext4(PaginationContext);
857
- const buttonClasses = clsx15(
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__ */ jsx19("button", { type: "button", className: buttonClasses, onClick: () => onClick(page), children: page });
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 jsx20, jsxs as jsxs9 } from "react/jsx-runtime";
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__ */ jsx20(
1182
+ return /* @__PURE__ */ jsx21(
884
1183
  PaginationContext.Provider,
885
1184
  {
886
1185
  value: {
887
1186
  currentPage
888
1187
  },
889
- children: /* @__PURE__ */ jsxs9("ul", { className: "flex gap-1", children: [
890
- /* @__PURE__ */ jsx20("li", { className: "flex items-center", children: /* @__PURE__ */ jsx20(
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__ */ jsx20("li", { children: /* @__PURE__ */ jsx20(PaginationButton, { onClick: () => onClick(START_PAGE), page: START_PAGE }) }),
901
- pageList.length !== 0 && pageList[0] !== 2 && /* @__PURE__ */ jsx20("li", { className: threeDotIconClasses, children: /* @__PURE__ */ jsx20(Icon, { name: "more", size: "small" }) }),
902
- pageList.map((page, index) => /* @__PURE__ */ jsx20("li", { children: /* @__PURE__ */ jsx20(PaginationButton, { onClick: () => onClick(page), page }) }, index)),
903
- pageList.length !== 0 && pageList[pageList.length - 1] !== totalPage - 1 && /* @__PURE__ */ jsx20("li", { className: threeDotIconClasses, children: /* @__PURE__ */ jsx20(Icon, { name: "more", size: "small" }) }),
904
- /* @__PURE__ */ jsx20("li", { children: /* @__PURE__ */ jsx20(PaginationButton, { onClick: () => onClick(totalPage), page: totalPage }) }),
905
- /* @__PURE__ */ jsx20("li", { className: "flex items-center", children: /* @__PURE__ */ jsx20(
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 clsx18 from "clsx";
924
- import { useRef as useRef2, useState as useState6 } from "react";
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 clsx16 from "clsx";
1236
+ import clsx17 from "clsx";
938
1237
  import { useContext as useContext5 } from "react";
939
- import { jsx as jsx21, jsxs as jsxs10 } from "react/jsx-runtime";
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 = clsx16(
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__ */ jsx21("li", { className: "flex w-full items-center", "data-id": option.id, children: /* @__PURE__ */ jsxs10("button", { className: itemClasses, type: "button", onClick: () => handleClickItem(option), children: [
957
- option.icon && /* @__PURE__ */ jsx21(Icon, { name: option.icon, size: "small" }),
958
- /* @__PURE__ */ jsx21("span", { className: "ml-1 flex-1 truncate text-left", children: option.label }),
959
- option.id === selectedOption?.id && /* @__PURE__ */ jsx21("div", { className: "ml-2 flex items-center", children: /* @__PURE__ */ jsx21(Icon, { name: "check", size: "small" }) })
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 clsx17 from "clsx";
966
- import { forwardRef, useContext as useContext6, useLayoutEffect as useLayoutEffect2 } from "react";
967
- import { jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
968
- var SelectList = forwardRef(({ children, maxHeight }, ref) => {
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 = clsx17("z-dropdown overflow-y-auto rounded bg-uiBackground01 py-2 shadow-floatingShadow", {
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 = clsx17(
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__ */ jsxs11("ul", { className: listClasses, style: { maxHeight, ...floatingStyles }, ref, children: [
1298
+ return /* @__PURE__ */ jsxs12("ul", { className: listClasses, style: { maxHeight, ...floatingStyles }, ref, children: [
1000
1299
  children,
1001
- placeholder != null && selectedOption !== null && /* @__PURE__ */ jsx22("li", { children: /* @__PURE__ */ jsx22("button", { className: deselectButtonClasses, type: "button", onClick: handleClickDeselect, children: "\u9078\u629E\u89E3\u9664" }) })
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 jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
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] = useState6(false);
1025
- const targetRef = useRef2(null);
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 = clsx18("relative flex shrink-0 items-center gap-1 rounded bg-uiBackground01", {
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 = clsx18(
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 = clsx18("overflow-hidden", {
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__ */ jsx23(
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__ */ jsxs12("div", { className: wrapperClasses, style: { width, maxWidth }, ref: targetRef, children: [
1089
- /* @__PURE__ */ jsxs12(
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__ */ jsx23("div", { className: "mr-1 flex", children: /* @__PURE__ */ jsx23(Icon, { name: selectedOption.icon, size: size === "large" ? "medium" : "small" }) }) : placeholder != null && placeholderIcon && /* @__PURE__ */ jsx23("div", { className: "mr-1 flex", children: /* @__PURE__ */ jsx23(Icon, { name: placeholderIcon, size: size === "large" ? "medium" : "small" }) }),
1099
- /* @__PURE__ */ jsx23("div", { className: labelClasses, children: /* @__PURE__ */ jsx23("div", { className: "truncate", children: selectedOption ? selectedOption.label : placeholder != null && placeholder }) }),
1100
- /* @__PURE__ */ jsx23("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ jsx23(
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__ */ jsx23(FloatingPortal, { children: /* @__PURE__ */ jsx23("div", { className: "relative z-overlay", children: /* @__PURE__ */ jsx23(SelectList, { ref: refs.setFloating, maxHeight: optionListMaxHeight, children }) }) })
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 jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
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__ */ jsxs13("nav", { "aria-label": "pagination", className: "flex items-center gap-x-1", children: [
1142
- /* @__PURE__ */ jsxs13("div", { className: "flex items-center gap-x-2", children: [
1143
- /* @__PURE__ */ jsxs13("div", { className: "typography-label14regular text-text01", children: [
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__ */ jsx24(
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__ */ jsx24(Select.Option, { option }, option.id))
1456
+ children: optionsList.map((option) => /* @__PURE__ */ jsx25(Select.Option, { option }, option.id))
1158
1457
  }
1159
1458
  ),
1160
- /* @__PURE__ */ jsxs13("div", { className: "typography-label14regular text-text02", children: [
1459
+ /* @__PURE__ */ jsxs14("div", { className: "typography-label14regular text-text02", children: [
1161
1460
  "/ ",
1162
1461
  pageMax,
1163
1462
  pageLabel
1164
1463
  ] })
1165
1464
  ] }),
1166
- /* @__PURE__ */ jsxs13("div", { className: "flex items-center", children: [
1167
- /* @__PURE__ */ jsx24(
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__ */ jsx24(
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 forwardRef3, useState as useState7 } from "react";
1491
+ import { forwardRef as forwardRef4, useState as useState8 } from "react";
1193
1492
 
1194
1493
  // src/text-input/text-input.tsx
1195
- import { clsx as clsx19 } from "clsx";
1196
- import { forwardRef as forwardRef2 } from "react";
1197
- import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
1198
- var TextInput = forwardRef2(
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 = clsx19("relative flex items-center gap-2 overflow-hidden rounded border", {
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 = clsx19("flex-1 outline-0 placeholder:text-textPlaceholder disabled:text-textPlaceholder", {
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__ */ jsxs14("div", { className: inputWrapClasses, children: [
1220
- /* @__PURE__ */ jsx25("input", { ref, size: 1, className: inputClasses, disabled, onChange: props.onChange, ...props }),
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__ */ jsx25(IconButton, { variant: "text", icon: "close", size: "small", onClick: onClickClearButton })
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 jsx26 } from "react/jsx-runtime";
1230
- var PasswordInput = forwardRef3(({ disabled = false, ...props }, ref) => {
1231
- const [isPasswordVisible, setIsPasswordVisible] = useState7(false);
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__ */ jsx26(
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__ */ jsx26(
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 clsx20 from "clsx";
1262
- import { useCallback as useCallback5, useState as useState8 } from "react";
1263
- import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
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] = useState8(false);
1266
- const handleMouseOverInput = useCallback5(() => {
1821
+ const [isMouseOver, setIsMouseOver] = useState9(false);
1822
+ const handleMouseOverInput = useCallback7(() => {
1267
1823
  setIsMouseOver(true);
1268
1824
  }, []);
1269
- const handleMouseOutInput = useCallback5(() => {
1825
+ const handleMouseOutInput = useCallback7(() => {
1270
1826
  setIsMouseOver(false);
1271
1827
  }, []);
1272
- const handleChange = useCallback5(
1828
+ const handleChange = useCallback7(
1273
1829
  (e) => !isDisabled && onChange?.(e),
1274
1830
  [isDisabled, onChange]
1275
1831
  );
1276
- const inputClasses = clsx20("peer absolute z-[1] size-6 opacity-0", {
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 = clsx20(
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 = clsx20("absolute inset-0 m-auto block size-3 rounded-full", {
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 = clsx20("inline-block size-3 rounded-full", {
1853
+ const hoverIndicatorClasses = clsx21("inline-block size-3 rounded-full", {
1298
1854
  "bg-hoverUi": !isDisabled && !isChecked && isMouseOver
1299
1855
  });
1300
- const labelClasses = clsx20("typography-label14regular ml-2 flex-[1_0_0] select-none break-all", {
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__ */ jsxs15("div", { className: "flex items-center", children: [
1305
- /* @__PURE__ */ jsxs15("div", { className: "flex size-6 items-center justify-center", children: [
1306
- /* @__PURE__ */ jsx27(
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__ */ jsx27("div", { className: boxClasses, children: /* @__PURE__ */ jsxs15("div", { className: "relative flex size-5 flex-[0_0_auto] items-center justify-center", children: [
1322
- /* @__PURE__ */ jsx27("span", { className: afterClasses }),
1323
- /* @__PURE__ */ jsx27("span", { className: hoverIndicatorClasses })
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__ */ jsx27("label", { htmlFor: id, className: labelClasses, children: label })
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 clsx21 } from "clsx";
1332
- import { forwardRef as forwardRef4 } from "react";
1333
- import { jsx as jsx28, jsxs as jsxs16 } from "react/jsx-runtime";
1334
- var Search = forwardRef4(({ width = "100%", size = "medium", ...props }, ref) => {
1335
- const classes = clsx21(
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 = clsx21("mx-2 h-full flex-1 text-text01 outline-0 placeholder:text-textPlaceholder", {
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__ */ jsx28("div", { className: "relative", ref, children: /* @__PURE__ */ jsx28("form", { onSubmit: props.onSubmit, children: /* @__PURE__ */ jsxs16("div", { className: classes, style: { width }, children: [
1345
- /* @__PURE__ */ jsx28(Icon, { name: "search", color: "icon01", size: "medium" }),
1346
- /* @__PURE__ */ jsx28(
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__ */ jsx28(
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 React2, { Children, useRef as useRef4 } from "react";
1928
+ import React4, { Children, useRef as useRef6 } from "react";
1373
1929
 
1374
1930
  // src/segmented-control/segmented-control-context.ts
1375
- import { createContext as createContext5 } from "react";
1376
- var SegmentedControlContext = createContext5(null);
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 clsx22 } from "clsx";
1381
- import { useContext as useContext7, useEffect as useEffect3, useRef as useRef3 } from "react";
1382
- import { jsx as jsx29, jsxs as jsxs17 } from "react/jsx-runtime";
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 = useContext7(SegmentedControlContext);
1392
- const buttonRef = useRef3(null);
1393
- const lastInteractionWasMouse = useRef3(false);
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
- useEffect3(() => {
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 = clsx22("relative flex items-center justify-center gap-1 rounded", focusVisible11.normal, {
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__ */ jsxs17(
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__ */ jsx29(
2014
+ Boolean(icon) === true && icon && /* @__PURE__ */ jsx36(
1459
2015
  "span",
1460
2016
  {
1461
- className: clsx22("flex items-center", {
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__ */ jsx29(Icon, { name: icon, size: "small" })
2022
+ children: /* @__PURE__ */ jsx36(Icon, { name: icon, size: "small" })
1467
2023
  }
1468
2024
  ),
1469
- Boolean(label) === true && /* @__PURE__ */ jsx29("span", { className: "whitespace-nowrap", children: label })
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 Fragment4, jsx as jsx30 } from "react/jsx-runtime";
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 = useRef4(null);
2042
+ const containerRef = useRef6(null);
1487
2043
  const itemIds = Children.toArray(children).filter((child) => {
1488
- if (!React2.isValidElement(child) || typeof child.props !== "object" || child.props === null || !("value" in child.props)) {
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__ */ jsx30(Fragment4, { children: /* @__PURE__ */ jsx30(SegmentedControlContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx30(
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 clsx25 from "clsx";
1540
- import { useCallback as useCallback6, useRef as useRef5, useState as useState9 } from "react";
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 clsx24 from "clsx";
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 clsx23 from "clsx";
1549
- import { jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
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 = clsx23(
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__ */ jsx31("li", { className: "flex w-full items-center", onClick: onClickItem, children: /* @__PURE__ */ jsxs18("button", { className: itemClasses, type: "button", children: [
1560
- /* @__PURE__ */ jsx31("span", { className: "ml-1 mr-6", children }),
1561
- isSortKey && /* @__PURE__ */ jsx31("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ jsx31(Icon, { name: "check", size: "small" }) })
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 jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
2122
+ import { jsx as jsx39, jsxs as jsxs21 } from "react/jsx-runtime";
1567
2123
  function SelectList2({ size, variant, sortOrder, onClickItem, onClickDeselect }) {
1568
- const listClasses = clsx24(
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 = clsx24(
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__ */ jsxs19("ul", { className: listClasses, children: [
1582
- /* @__PURE__ */ jsx32(SelectItem2, { isSortKey: sortOrder === "ascend", onClickItem: () => onClickItem("ascend"), children: "\u6607\u9806\u3067\u4E26\u3073\u66FF\u3048" }),
1583
- /* @__PURE__ */ jsx32(SelectItem2, { isSortKey: sortOrder === "descend", onClickItem: () => onClickItem("descend"), children: "\u964D\u9806\u3067\u4E26\u3073\u66FF\u3048" }),
1584
- sortOrder !== null && onClickDeselect && /* @__PURE__ */ jsx32("li", { children: /* @__PURE__ */ jsx32("button", { className: deselectButtonClasses, type: "button", onClick: onClickDeselect, children: "\u9078\u629E\u89E3\u9664" }) })
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 jsx33, jsxs as jsxs20 } from "react/jsx-runtime";
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] = useState9(false);
1602
- const targetRef = useRef5(null);
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 = useCallback6(
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 = clsx25("relative flex shrink-0 items-center gap-1 rounded", {
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 = clsx25(
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 = clsx25("truncate", {
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__ */ jsxs20("div", { className: wrapperClasses, style: { width }, ref: targetRef, children: [
1640
- /* @__PURE__ */ jsxs20("button", { className: buttonClasses, type: "button", onClick: handleClickToggle, disabled: isDisabled, children: [
1641
- /* @__PURE__ */ jsx33("div", { className: labelClasses, children: label }),
1642
- /* @__PURE__ */ jsx33("div", { className: "ml-auto flex items-center", children: isSortKey ? /* @__PURE__ */ jsx33(
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__ */ jsx33(
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__ */ jsx33(
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 clsx26 from "clsx";
1672
- import { useCallback as useCallback7 } from "react";
1673
- import { jsx as jsx34, jsxs as jsxs21 } from "react/jsx-runtime";
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 = useCallback7(() => {
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 = clsx26("relative flex shrink-0 items-center gap-1 rounded", {
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 = clsx26(
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 = clsx26("truncate", {
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__ */ jsx34("div", { className: wrapperClasses, style: { width }, children: /* @__PURE__ */ jsxs21(
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__ */ jsx34("div", { className: labelClasses, children: label }),
1734
- /* @__PURE__ */ jsx34("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ jsx34(Icon, { name: getIconName(), size: size === "large" ? "medium" : "small" }) })
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 clsx28 } from "clsx";
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 clsx27 } from "clsx";
1746
- import { jsx as jsx35 } from "react/jsx-runtime";
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 = clsx27(
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__ */ jsx35(
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 jsx36 } from "react/jsx-runtime";
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 = clsx28(
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__ */ jsx36("div", { role: "tablist", className: containerClasses, style: containerStyle, children });
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 clsx29 from "clsx";
1789
- import { jsx as jsx37 } from "react/jsx-runtime";
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 = clsx29("border-b border-uiBorder01", { "sticky top-0 z-10 bg-white": isHeader }, className);
1792
- return /* @__PURE__ */ jsx37("div", { className: classes, children });
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 clsx30 from "clsx";
1797
- import { jsx as jsx38 } from "react/jsx-runtime";
2352
+ import clsx31 from "clsx";
2353
+ import { jsx as jsx45 } from "react/jsx-runtime";
1798
2354
  function TableRow({ children, isHoverBackgroundVisible = false }) {
1799
- const rowClasses = clsx30("contents", isHoverBackgroundVisible && "[&:hover>div]:bg-hoverUi02");
1800
- return /* @__PURE__ */ jsx38("div", { className: rowClasses, children });
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 jsx39 } from "react/jsx-runtime";
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__ */ jsx39(
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 clsx32 from "clsx";
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 clsx31 from "clsx";
1838
- import { jsx as jsx40 } from "react/jsx-runtime";
2393
+ import clsx32 from "clsx";
2394
+ import { jsx as jsx47 } from "react/jsx-runtime";
1839
2395
  var DeleteIcon = ({ color, variant, onClick }) => {
1840
- const deleteButtonClasses = clsx31(
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 = clsx31({
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__ */ jsx40("button", { type: "button", className: deleteButtonClasses, onClick, children: /* @__PURE__ */ jsx40("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx40(
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 jsx41, jsxs as jsxs22 } from "react/jsx-runtime";
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 = clsx32("flex", "items-center", "justify-center", {
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__ */ jsxs22("div", { className: wrapperClasses, children: [
2430
+ return /* @__PURE__ */ jsxs24("div", { className: wrapperClasses, children: [
1875
2431
  children,
1876
- isEditable ? /* @__PURE__ */ jsx41(DeleteIcon, { onClick: () => onDelete(id), color, variant }) : null
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 clsx33 } from "clsx";
1882
- import { forwardRef as forwardRef5 } from "react";
1883
- import { jsx as jsx42 } from "react/jsx-runtime";
1884
- var TextArea = forwardRef5(
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 = clsx33(
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__ */ jsx42("div", { className: "flex", children: /* @__PURE__ */ jsx42(
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 clsx34 from "clsx";
1931
- import { useCallback as useCallback8, useEffect as useEffect4, useState as useState10 } from "react";
1932
- import { jsx as jsx43, jsxs as jsxs23 } from "react/jsx-runtime";
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] = useState10(false);
1943
- const handleClose = useCallback8(() => {
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 = clsx34("pointer-events-auto flex items-start gap-1 bg-white p-4 shadow-floatingShadow", {
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 = clsx34("flex items-center", {
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 = clsx34("typography-body13regular flex-1 pt-[3px]", {
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
- useEffect4(() => {
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__ */ jsxs23("div", { className: wrapperClasses, style: { width }, onAnimationEnd: handleAnimationEnd, children: [
1980
- /* @__PURE__ */ jsx43("div", { className: iconClasses, children: /* @__PURE__ */ jsx43(Icon, { name: iconName[state] }) }),
1981
- /* @__PURE__ */ jsx43("p", { className: textClasses, children }),
1982
- /* @__PURE__ */ jsx43(IconButton, { icon: "close", size: "medium", variant: "text", onClick: handleClose, isNoPadding: true })
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 createContext6, useCallback as useCallback9, useContext as useContext8, useEffect as useEffect5, useState as useState11 } from "react";
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 jsx44, jsxs as jsxs24 } from "react/jsx-runtime";
1990
- var ToastContext = createContext6({});
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] = useState11(false);
1993
- const [toasts, setToasts] = useState11([]);
1994
- const addToast = useCallback9(({ message, state }) => {
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 = useCallback9((id) => {
2553
+ const removeToast = useCallback11((id) => {
1998
2554
  setToasts((prev) => prev.filter((snackbar) => snackbar.id !== id));
1999
2555
  }, []);
2000
- useEffect5(() => {
2556
+ useEffect7(() => {
2001
2557
  setIsClientRender(true);
2002
2558
  }, []);
2003
- return /* @__PURE__ */ jsxs24(ToastContext.Provider, { value: { addToast, removeToast }, children: [
2559
+ return /* @__PURE__ */ jsxs26(ToastContext.Provider, { value: { addToast, removeToast }, children: [
2004
2560
  children,
2005
2561
  isClientRender && createPortal3(
2006
- /* @__PURE__ */ jsx44("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__ */ jsx44(Toast, { state, isAutoClose: true, isAnimation: true, onClickClose: () => removeToast(id), width: 475, children: message }, id)) }),
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 useContext8(ToastContext);
2568
+ return useContext11(ToastContext);
2013
2569
  };
2014
2570
 
2015
2571
  // src/toggle/toggle.tsx
2016
- import clsx35 from "clsx";
2017
- import { jsx as jsx45, jsxs as jsxs25 } from "react/jsx-runtime";
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 = clsx35("relative flex items-center rounded-full", {
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 = clsx35(
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 = clsx35("rounded-full bg-iconOnColor", {
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 = clsx35("break-all", {
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__ */ jsxs25("div", { className: "relative flex flex-[0_0_auto] items-center", children: [
2053
- label != null && labelPosition === "left" && /* @__PURE__ */ jsx45("label", { htmlFor: id, className: labelClasses, children: label }),
2054
- /* @__PURE__ */ jsx45(
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__ */ jsx45("div", { className: baseClasses, children: /* @__PURE__ */ jsx45("span", { className: indicatorClasses }) }),
2067
- label != null && labelPosition === "right" && /* @__PURE__ */ jsx45("label", { htmlFor: id, className: labelClasses, children: label })
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 useCallback11, useEffect as useEffect6, useRef as useRef6, useState as useState12 } from "react";
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 clsx37 from "clsx";
2632
+ import clsx38 from "clsx";
2077
2633
 
2078
2634
  // src/tooltip/tail-icon.tsx
2079
- import clsx36 from "clsx";
2080
- import { jsx as jsx46 } from "react/jsx-runtime";
2635
+ import clsx37 from "clsx";
2636
+ import { jsx as jsx53 } from "react/jsx-runtime";
2081
2637
  var TailIcon = (props) => {
2082
- const tailClasses = clsx36("absolute fill-uiBackgroundTooltip", {
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__ */ jsx46("svg", { className: tailClasses, width: "8", height: "4", viewBox: "0 0 8 4", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx46("path", { d: "M4 4L0 0H8L4 4Z" }) });
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__ */ jsx46(
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__ */ jsx46("path", { d: "M7 8L0 0H14L7 8Z" })
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 jsx47, jsxs as jsxs26 } from "react/jsx-runtime";
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 = clsx37("absolute z-tooltip m-auto flex", {
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 = clsx37(
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__ */ jsx47("div", { className: tooltipWrapperClasses, style: tooltipWrapperStyle, children: /* @__PURE__ */ jsxs26(
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__ */ jsx47(TailIcon, { size, verticalPosition, horizontalAlign })
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 useCallback10 } from "react";
2723
+ import { useCallback as useCallback12 } from "react";
2168
2724
  var useTooltip = () => {
2169
- const calculatePosition = useCallback10(
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 jsx48, jsxs as jsxs27 } from "react/jsx-runtime";
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] = useState12(false);
2234
- const [tooltipPosition, setTooltipPosition] = useState12({
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 = useRef6(null);
2244
- const handleMouseOverWrapper = useCallback11(() => {
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 = useCallback11(() => {
2806
+ const handleMouseOutWrapper = useCallback13(() => {
2251
2807
  setIsVisible(false);
2252
2808
  }, []);
2253
- useEffect6(() => {
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__ */ jsxs27(
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__ */ jsx48(
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__ */ jsx48(
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,