@zenkigen-inc/component-ui 1.18.0 → 1.18.1
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.d.mts +112 -75
- package/dist/index.d.ts +112 -75
- package/dist/index.js +611 -332
- package/dist/index.mjs +554 -275
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -45,7 +45,7 @@ __export(index_exports, {
|
|
|
45
45
|
NotificationInline: () => NotificationInline,
|
|
46
46
|
Pagination: () => Pagination,
|
|
47
47
|
PaginationSelect: () => PaginationSelect,
|
|
48
|
-
PasswordInput: () =>
|
|
48
|
+
PasswordInput: () => PasswordInput2,
|
|
49
49
|
Popover: () => Popover,
|
|
50
50
|
PopoverContent: () => PopoverContent,
|
|
51
51
|
PopoverTrigger: () => PopoverTrigger,
|
|
@@ -181,7 +181,7 @@ var createButton = (props) => {
|
|
|
181
181
|
import_component_theme3.buttonColors[variant].disabled,
|
|
182
182
|
import_component_theme3.focusVisible.normal,
|
|
183
183
|
{
|
|
184
|
-
"h-6 px-2
|
|
184
|
+
"h-6 px-2": size === "small",
|
|
185
185
|
"h-8 px-3": size === "medium",
|
|
186
186
|
"h-10 px-4 leading-[24px]": size === "large",
|
|
187
187
|
"inline-flex": elementAs === "a",
|
|
@@ -758,7 +758,8 @@ var FileInput = (0, import_react8.forwardRef)(
|
|
|
758
758
|
"border-uiBorder03 bg-white text-text01": !isDisabled && !isDragOver && !hasErrors,
|
|
759
759
|
"border-activeInput bg-activeInput/5": !isDisabled && isDragOver && !hasErrors,
|
|
760
760
|
"border-supportDanger bg-white": hasErrors && !isDisabled,
|
|
761
|
-
"hover:bg-hover02
|
|
761
|
+
"cursor-pointer hover:bg-hover02 active:bg-active02": !isDisabled,
|
|
762
|
+
"hover:bg-uiBackgroundError active:bg-red-red20": !isDisabled && hasErrors,
|
|
762
763
|
"border-disabled01 bg-disabled02 text-textPlaceholder cursor-not-allowed": isDisabled
|
|
763
764
|
}
|
|
764
765
|
);
|
|
@@ -1244,47 +1245,69 @@ function PaginationButton({ page, onClick }) {
|
|
|
1244
1245
|
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1245
1246
|
var START_PAGE = 1;
|
|
1246
1247
|
function Pagination({ currentPage, totalPage, sideNumPagesToShow = 3, onClick }) {
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
const
|
|
1251
|
-
const
|
|
1252
|
-
const
|
|
1248
|
+
if (totalPage < START_PAGE) {
|
|
1249
|
+
return null;
|
|
1250
|
+
}
|
|
1251
|
+
const clamp = (value, min, max) => Math.min(Math.max(value, min), max);
|
|
1252
|
+
const clampedCurrentPage = clamp(currentPage, START_PAGE, totalPage);
|
|
1253
|
+
const maxSideNumPagesToShow = Math.max(0, totalPage - 2);
|
|
1254
|
+
const side = clamp(sideNumPagesToShow, 0, maxSideNumPagesToShow);
|
|
1255
|
+
const minPage = START_PAGE + 1;
|
|
1256
|
+
const maxPage = totalPage - 1;
|
|
1257
|
+
const availablePagesCount = Math.max(0, maxPage - minPage + 1);
|
|
1258
|
+
const hasBothSides = clampedCurrentPage > START_PAGE && clampedCurrentPage < totalPage;
|
|
1259
|
+
const windowSize = Math.min(availablePagesCount, hasBothSides ? side * 2 + 1 : side * 2);
|
|
1260
|
+
let start = minPage;
|
|
1261
|
+
if (windowSize > 0) {
|
|
1262
|
+
if (hasBothSides) {
|
|
1263
|
+
start = Math.max(minPage, Math.min(clampedCurrentPage - side, maxPage - windowSize + 1));
|
|
1264
|
+
} else if (clampedCurrentPage === totalPage) {
|
|
1265
|
+
start = Math.max(minPage, maxPage - windowSize + 1);
|
|
1266
|
+
}
|
|
1267
|
+
}
|
|
1268
|
+
const end = windowSize === 0 ? minPage - 1 : Math.min(maxPage, start + windowSize - 1);
|
|
1253
1269
|
const pageList = [];
|
|
1254
|
-
for (let i = start
|
|
1270
|
+
for (let i = start; i <= end; i++) {
|
|
1255
1271
|
pageList.push(i);
|
|
1256
1272
|
}
|
|
1257
1273
|
const threeDotIconClasses = "flex h-8 w-8 items-center justify-center gap-1 fill-icon01";
|
|
1274
|
+
const isFirstPage = clampedCurrentPage === START_PAGE;
|
|
1275
|
+
const isLastPage = clampedCurrentPage === totalPage;
|
|
1276
|
+
const firstPageInList = pageList.at(0) ?? null;
|
|
1277
|
+
const lastPageInList = pageList.at(-1) ?? null;
|
|
1278
|
+
const hasHeadEllipsis = firstPageInList !== null && firstPageInList > START_PAGE + 1;
|
|
1279
|
+
const hasTailEllipsis = lastPageInList !== null && lastPageInList < totalPage - 1;
|
|
1280
|
+
const hasLastPageButton = totalPage > START_PAGE;
|
|
1258
1281
|
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1259
1282
|
PaginationContext.Provider,
|
|
1260
1283
|
{
|
|
1261
1284
|
value: {
|
|
1262
|
-
currentPage
|
|
1285
|
+
currentPage: clampedCurrentPage
|
|
1263
1286
|
},
|
|
1264
1287
|
children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("ul", { className: "flex gap-1", children: [
|
|
1265
1288
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("li", { className: "flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1266
1289
|
IconButton,
|
|
1267
1290
|
{
|
|
1268
|
-
isDisabled:
|
|
1291
|
+
isDisabled: isFirstPage,
|
|
1269
1292
|
variant: "text",
|
|
1270
1293
|
icon: "angle-left",
|
|
1271
1294
|
size: "small",
|
|
1272
|
-
onClick: () => onClick(
|
|
1295
|
+
onClick: () => onClick(Math.max(START_PAGE, clampedCurrentPage - 1))
|
|
1273
1296
|
}
|
|
1274
1297
|
) }),
|
|
1275
1298
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(PaginationButton, { onClick: () => onClick(START_PAGE), page: START_PAGE }) }),
|
|
1276
|
-
|
|
1299
|
+
hasHeadEllipsis && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("li", { className: threeDotIconClasses, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Icon, { name: "more", size: "small" }) }),
|
|
1277
1300
|
pageList.map((page, index) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(PaginationButton, { onClick: () => onClick(page), page }) }, index)),
|
|
1278
|
-
|
|
1279
|
-
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(PaginationButton, { onClick: () => onClick(totalPage), page: totalPage }) }),
|
|
1301
|
+
hasTailEllipsis && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("li", { className: threeDotIconClasses, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Icon, { name: "more", size: "small" }) }),
|
|
1302
|
+
hasLastPageButton && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(PaginationButton, { onClick: () => onClick(totalPage), page: totalPage }) }),
|
|
1280
1303
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)("li", { className: "flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1281
1304
|
IconButton,
|
|
1282
1305
|
{
|
|
1283
|
-
isDisabled:
|
|
1306
|
+
isDisabled: isLastPage,
|
|
1284
1307
|
variant: "text",
|
|
1285
1308
|
icon: "angle-right",
|
|
1286
1309
|
size: "small",
|
|
1287
|
-
onClick: () => onClick(
|
|
1310
|
+
onClick: () => onClick(Math.min(totalPage, clampedCurrentPage + 1))
|
|
1288
1311
|
}
|
|
1289
1312
|
) })
|
|
1290
1313
|
] })
|
|
@@ -1564,50 +1587,182 @@ function PaginationSelect({
|
|
|
1564
1587
|
}
|
|
1565
1588
|
|
|
1566
1589
|
// src/password-input/password-input.tsx
|
|
1567
|
-
var
|
|
1590
|
+
var import_react25 = require("react");
|
|
1568
1591
|
|
|
1569
1592
|
// src/text-input/text-input.tsx
|
|
1570
|
-
var
|
|
1593
|
+
var import_clsx22 = require("clsx");
|
|
1594
|
+
var import_react24 = require("react");
|
|
1595
|
+
|
|
1596
|
+
// src/text-input/text-input-context.tsx
|
|
1571
1597
|
var import_react21 = require("react");
|
|
1598
|
+
var TextInputCompoundContext = (0, import_react21.createContext)(null);
|
|
1599
|
+
var useTextInputCompoundContext = (componentName) => {
|
|
1600
|
+
const context = (0, import_react21.useContext)(TextInputCompoundContext);
|
|
1601
|
+
if (context == null) {
|
|
1602
|
+
throw new Error(`${componentName} \u3092\u4F7F\u7528\u3059\u308B\u306B\u306F TextInput \u306E\u5B50\u8981\u7D20\u3068\u3057\u3066\u914D\u7F6E\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u3002`);
|
|
1603
|
+
}
|
|
1604
|
+
return context;
|
|
1605
|
+
};
|
|
1606
|
+
|
|
1607
|
+
// src/text-input/text-input-error-message.tsx
|
|
1608
|
+
var import_clsx20 = require("clsx");
|
|
1609
|
+
var import_react22 = require("react");
|
|
1572
1610
|
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
1573
|
-
var
|
|
1574
|
-
({
|
|
1575
|
-
const
|
|
1576
|
-
const
|
|
1577
|
-
const
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
"bg-disabled02 border-disabled01": disabled,
|
|
1584
|
-
"pr-2": size === "medium" && hasTrailingElement,
|
|
1585
|
-
"pr-3": size === "large" && hasTrailingElement
|
|
1586
|
-
});
|
|
1587
|
-
const inputClasses = (0, import_clsx20.clsx)("flex-1 outline-0 placeholder:text-textPlaceholder disabled:text-textPlaceholder", {
|
|
1588
|
-
["typography-label14regular min-h-8 px-2"]: size === "medium",
|
|
1589
|
-
["typography-label16regular min-h-10 px-3"]: size === "large",
|
|
1590
|
-
"text-text01": !isError,
|
|
1591
|
-
"text-supportError": isError,
|
|
1592
|
-
"pr-0": hasTrailingElement
|
|
1593
|
-
});
|
|
1594
|
-
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: inputWrapClasses, children: [
|
|
1595
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("input", { ref, size: 1, className: inputClasses, disabled, onChange: props.onChange, ...props }),
|
|
1596
|
-
after,
|
|
1597
|
-
isShowClearButton && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(IconButton, { variant: "text", icon: "close", size: "small", onClick: onClickClearButton })
|
|
1598
|
-
] });
|
|
1611
|
+
var TextInputErrorMessage = (0, import_react22.forwardRef)(
|
|
1612
|
+
({ "aria-live": ariaLive = "assertive", ...props }, ref) => {
|
|
1613
|
+
const { inputProps } = useTextInputCompoundContext("TextInput.ErrorMessage");
|
|
1614
|
+
const typographyClass = inputProps.size === "large" ? "typography-label12regular" : "typography-label11regular";
|
|
1615
|
+
const shouldRender = inputProps.isError === true;
|
|
1616
|
+
if (!shouldRender) {
|
|
1617
|
+
return null;
|
|
1618
|
+
}
|
|
1619
|
+
const errorMessageClassName = (0, import_clsx20.clsx)(typographyClass, "text-supportError");
|
|
1620
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { ref, className: errorMessageClassName, "aria-live": ariaLive, ...props });
|
|
1599
1621
|
}
|
|
1600
1622
|
);
|
|
1601
|
-
|
|
1623
|
+
TextInputErrorMessage.displayName = "TextInput.ErrorMessage";
|
|
1602
1624
|
|
|
1603
|
-
// src/
|
|
1625
|
+
// src/text-input/text-input-helper-message.tsx
|
|
1626
|
+
var import_clsx21 = require("clsx");
|
|
1627
|
+
var import_react23 = require("react");
|
|
1604
1628
|
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
1605
|
-
var
|
|
1606
|
-
const
|
|
1629
|
+
var TextInputHelperMessage = (0, import_react23.forwardRef)((props, ref) => {
|
|
1630
|
+
const { inputProps } = useTextInputCompoundContext("TextInput.HelperMessage");
|
|
1631
|
+
const typographyClass = inputProps.size === "large" ? "typography-label12regular" : "typography-label11regular";
|
|
1632
|
+
const helperMessageClassName = (0, import_clsx21.clsx)(typographyClass, "text-text02");
|
|
1633
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { ref, className: helperMessageClassName, ...props });
|
|
1634
|
+
});
|
|
1635
|
+
TextInputHelperMessage.displayName = "TextInput.HelperMessage";
|
|
1636
|
+
|
|
1637
|
+
// src/text-input/text-input.tsx
|
|
1638
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
1639
|
+
function TextInputInner({
|
|
1640
|
+
size = "medium",
|
|
1641
|
+
isError = false,
|
|
1642
|
+
disabled = false,
|
|
1643
|
+
onClickClearButton,
|
|
1644
|
+
after,
|
|
1645
|
+
children,
|
|
1646
|
+
...props
|
|
1647
|
+
}, ref) {
|
|
1648
|
+
const autoGeneratedId = (0, import_react24.useId)();
|
|
1649
|
+
const { className: _className, ...restInputProps } = props;
|
|
1650
|
+
const inputPropsForContext = (0, import_react24.useMemo)(
|
|
1651
|
+
() => ({
|
|
1652
|
+
...restInputProps,
|
|
1653
|
+
size,
|
|
1654
|
+
isError,
|
|
1655
|
+
disabled,
|
|
1656
|
+
onClickClearButton,
|
|
1657
|
+
after
|
|
1658
|
+
}),
|
|
1659
|
+
[restInputProps, size, isError, disabled, onClickClearButton, after]
|
|
1660
|
+
);
|
|
1661
|
+
const contextValue = (0, import_react24.useMemo)(
|
|
1662
|
+
() => ({
|
|
1663
|
+
inputProps: inputPropsForContext,
|
|
1664
|
+
forwardedRef: ref
|
|
1665
|
+
}),
|
|
1666
|
+
[inputPropsForContext, ref]
|
|
1667
|
+
);
|
|
1668
|
+
const helperMessageIds = [];
|
|
1669
|
+
const errorIds = [];
|
|
1670
|
+
const describedByBaseId = restInputProps.id ?? autoGeneratedId;
|
|
1671
|
+
const enhancedChildren = import_react24.Children.map(children, (child) => {
|
|
1672
|
+
if (!(0, import_react24.isValidElement)(child)) {
|
|
1673
|
+
return child;
|
|
1674
|
+
}
|
|
1675
|
+
if (child.type === TextInputHelperMessage) {
|
|
1676
|
+
const helperChild = child;
|
|
1677
|
+
const assignedId = helperChild.props.id ?? `${describedByBaseId}-helper-${helperMessageIds.length + 1}`;
|
|
1678
|
+
helperMessageIds.push(assignedId);
|
|
1679
|
+
return (0, import_react24.cloneElement)(helperChild, { id: assignedId });
|
|
1680
|
+
}
|
|
1681
|
+
if (child.type === TextInputErrorMessage && isError) {
|
|
1682
|
+
const errorChild = child;
|
|
1683
|
+
const assignedId = errorChild.props.id ?? `${describedByBaseId}-error-${errorIds.length + 1}`;
|
|
1684
|
+
errorIds.push(assignedId);
|
|
1685
|
+
return (0, import_react24.cloneElement)(errorChild, { id: assignedId });
|
|
1686
|
+
}
|
|
1687
|
+
return child;
|
|
1688
|
+
});
|
|
1689
|
+
const describedByFromProps = typeof restInputProps["aria-describedby"] === "string" ? restInputProps["aria-describedby"] : null;
|
|
1690
|
+
const describedByList = [describedByFromProps, ...helperMessageIds, ...errorIds].filter(
|
|
1691
|
+
(id) => typeof id === "string" && id.trim().length > 0
|
|
1692
|
+
);
|
|
1693
|
+
const describedByProps = describedByList.length > 0 ? {
|
|
1694
|
+
"aria-describedby": describedByList.join(" ")
|
|
1695
|
+
} : {};
|
|
1696
|
+
const shouldMarkInvalid = isError === true || errorIds.length > 0;
|
|
1697
|
+
const ariaInvalidFromProps = restInputProps["aria-invalid"];
|
|
1698
|
+
const ariaInvalidValue = ariaInvalidFromProps != null ? ariaInvalidFromProps : shouldMarkInvalid ? true : null;
|
|
1699
|
+
const ariaInvalidProps = ariaInvalidValue == null ? {} : { "aria-invalid": ariaInvalidValue };
|
|
1700
|
+
const mergedInputProps = {
|
|
1701
|
+
...restInputProps,
|
|
1702
|
+
...describedByProps,
|
|
1703
|
+
...ariaInvalidProps,
|
|
1704
|
+
disabled
|
|
1705
|
+
};
|
|
1706
|
+
const isShowClearButton = !!onClickClearButton && restInputProps.value.length !== 0 && !disabled;
|
|
1707
|
+
const hasTrailingElement = isShowClearButton || after != null;
|
|
1708
|
+
const inputWrapClasses = (0, import_clsx22.clsx)("relative flex items-center gap-2 overflow-hidden rounded border", {
|
|
1709
|
+
"border-uiBorder02": !isError && !disabled,
|
|
1710
|
+
"border-supportError": isError && !disabled,
|
|
1711
|
+
"hover:border-hoverInput": !disabled && !isError,
|
|
1712
|
+
"hover:focus-within:border-activeInput": !isError,
|
|
1713
|
+
"focus-within:border-activeInput": !isError,
|
|
1714
|
+
"bg-disabled02 border-disabled01": disabled,
|
|
1715
|
+
"pr-2": size === "medium" && hasTrailingElement,
|
|
1716
|
+
"pr-3": size === "large" && hasTrailingElement
|
|
1717
|
+
});
|
|
1718
|
+
const inputClasses = (0, import_clsx22.clsx)("flex-1 outline-0 placeholder:text-textPlaceholder disabled:text-textPlaceholder", {
|
|
1719
|
+
["typography-label14regular min-h-8 px-2"]: size === "medium",
|
|
1720
|
+
["typography-label16regular min-h-10 px-3"]: size === "large",
|
|
1721
|
+
"text-text01": !isError,
|
|
1722
|
+
"text-supportError": isError,
|
|
1723
|
+
"pr-0": hasTrailingElement
|
|
1724
|
+
});
|
|
1725
|
+
const inputElement = /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: inputWrapClasses, children: [
|
|
1726
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("input", { ref, size: 1, className: inputClasses, ...mergedInputProps }),
|
|
1727
|
+
after,
|
|
1728
|
+
isShowClearButton && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(IconButton, { variant: "text", icon: "close", size: "small", onClick: onClickClearButton })
|
|
1729
|
+
] });
|
|
1730
|
+
const stackedChildren = enhancedChildren == null ? [] : import_react24.Children.toArray(enhancedChildren);
|
|
1731
|
+
const hasMessageChildren = stackedChildren.length > 0;
|
|
1732
|
+
if (!hasMessageChildren) {
|
|
1733
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(TextInputCompoundContext.Provider, { value: contextValue, children: inputElement });
|
|
1734
|
+
}
|
|
1735
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(TextInputCompoundContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
1736
|
+
inputElement,
|
|
1737
|
+
stackedChildren
|
|
1738
|
+
] }) });
|
|
1739
|
+
}
|
|
1740
|
+
var attachStatics = (component) => {
|
|
1741
|
+
component.HelperMessage = TextInputHelperMessage;
|
|
1742
|
+
component.ErrorMessage = TextInputErrorMessage;
|
|
1743
|
+
component.displayName = "TextInput";
|
|
1744
|
+
return component;
|
|
1745
|
+
};
|
|
1746
|
+
var TextInputPublic = (0, import_react24.forwardRef)(function TextInputPublic2(props, ref) {
|
|
1747
|
+
return TextInputInner(props, ref);
|
|
1748
|
+
});
|
|
1749
|
+
var InternalTextInputBase = (0, import_react24.forwardRef)(
|
|
1750
|
+
function InternalTextInputBase2(props, ref) {
|
|
1751
|
+
return TextInputInner(props, ref);
|
|
1752
|
+
}
|
|
1753
|
+
);
|
|
1754
|
+
var TextInput = attachStatics(TextInputPublic);
|
|
1755
|
+
var InternalTextInput = attachStatics(InternalTextInputBase);
|
|
1756
|
+
|
|
1757
|
+
// src/password-input/password-input.tsx
|
|
1758
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
1759
|
+
var PasswordInputBase = (0, import_react25.forwardRef)(function PasswordInput({ disabled = false, children, ...props }, ref) {
|
|
1760
|
+
const [isPasswordVisible, setIsPasswordVisible] = (0, import_react25.useState)(false);
|
|
1761
|
+
const { className: _className, ...textInputProps } = props;
|
|
1607
1762
|
const handlePasswordVisibilityToggle = () => {
|
|
1608
|
-
setIsPasswordVisible(!
|
|
1763
|
+
setIsPasswordVisible((prev) => !prev);
|
|
1609
1764
|
};
|
|
1610
|
-
const passwordToggleButton = /* @__PURE__ */ (0,
|
|
1765
|
+
const passwordToggleButton = /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1611
1766
|
IconButton,
|
|
1612
1767
|
{
|
|
1613
1768
|
variant: "text",
|
|
@@ -1618,27 +1773,32 @@ var PasswordInput = (0, import_react22.forwardRef)(({ disabled = false, ...props
|
|
|
1618
1773
|
"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"
|
|
1619
1774
|
}
|
|
1620
1775
|
);
|
|
1621
|
-
return /* @__PURE__ */ (0,
|
|
1622
|
-
|
|
1776
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1777
|
+
InternalTextInput,
|
|
1623
1778
|
{
|
|
1624
1779
|
ref,
|
|
1625
1780
|
type: isPasswordVisible === true ? "text" : "password",
|
|
1626
1781
|
disabled,
|
|
1627
|
-
|
|
1628
|
-
...
|
|
1782
|
+
after: passwordToggleButton,
|
|
1783
|
+
...textInputProps,
|
|
1784
|
+
children
|
|
1629
1785
|
}
|
|
1630
1786
|
);
|
|
1631
1787
|
});
|
|
1632
|
-
|
|
1788
|
+
var PasswordInput2 = Object.assign(PasswordInputBase, {
|
|
1789
|
+
HelperMessage: TextInputHelperMessage,
|
|
1790
|
+
ErrorMessage: TextInputErrorMessage,
|
|
1791
|
+
displayName: "PasswordInput"
|
|
1792
|
+
});
|
|
1633
1793
|
|
|
1634
1794
|
// src/popover/popover.tsx
|
|
1635
|
-
var
|
|
1636
|
-
var
|
|
1795
|
+
var import_react30 = require("@floating-ui/react");
|
|
1796
|
+
var import_react31 = require("react");
|
|
1637
1797
|
|
|
1638
1798
|
// src/popover/popover-content.tsx
|
|
1639
|
-
var
|
|
1799
|
+
var import_react27 = require("@floating-ui/react");
|
|
1640
1800
|
var React = __toESM(require("react"));
|
|
1641
|
-
var
|
|
1801
|
+
var import_react28 = require("react");
|
|
1642
1802
|
|
|
1643
1803
|
// src/utils/react-utils.ts
|
|
1644
1804
|
function composeRefs(...refs) {
|
|
@@ -1660,10 +1820,10 @@ function isElement(node) {
|
|
|
1660
1820
|
}
|
|
1661
1821
|
|
|
1662
1822
|
// src/popover/popover-context.ts
|
|
1663
|
-
var
|
|
1664
|
-
var PopoverContext = (0,
|
|
1823
|
+
var import_react26 = require("react");
|
|
1824
|
+
var PopoverContext = (0, import_react26.createContext)(null);
|
|
1665
1825
|
var usePopoverContext = () => {
|
|
1666
|
-
const context = (0,
|
|
1826
|
+
const context = (0, import_react26.useContext)(PopoverContext);
|
|
1667
1827
|
if (context == null) {
|
|
1668
1828
|
throw new Error("Popover components must be used inside <Popover.Root>");
|
|
1669
1829
|
}
|
|
@@ -1671,10 +1831,10 @@ var usePopoverContext = () => {
|
|
|
1671
1831
|
};
|
|
1672
1832
|
|
|
1673
1833
|
// src/popover/popover-content.tsx
|
|
1674
|
-
var
|
|
1675
|
-
var PopoverContent = (0,
|
|
1834
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
1835
|
+
var PopoverContent = (0, import_react28.forwardRef)(function PopoverContent2({ children }, ref) {
|
|
1676
1836
|
const { isOpen, triggerRef, floating, panelId, onClose } = usePopoverContext();
|
|
1677
|
-
const shouldCloseOnOutsidePress = (0,
|
|
1837
|
+
const shouldCloseOnOutsidePress = (0, import_react28.useCallback)(
|
|
1678
1838
|
(event) => {
|
|
1679
1839
|
const target = event.target;
|
|
1680
1840
|
if (!(target instanceof Element)) {
|
|
@@ -1690,24 +1850,24 @@ var PopoverContent = (0, import_react25.forwardRef)(function PopoverContent2({ c
|
|
|
1690
1850
|
},
|
|
1691
1851
|
[floating.refs.floating]
|
|
1692
1852
|
);
|
|
1693
|
-
const dismiss = (0,
|
|
1853
|
+
const dismiss = (0, import_react27.useDismiss)(floating.context, {
|
|
1694
1854
|
outsidePressEvent: "pointerdown",
|
|
1695
1855
|
outsidePress: shouldCloseOnOutsidePress,
|
|
1696
1856
|
escapeKey: false
|
|
1697
1857
|
});
|
|
1698
|
-
const interactions = (0,
|
|
1699
|
-
(0,
|
|
1858
|
+
const interactions = (0, import_react27.useInteractions)([dismiss, (0, import_react27.useRole)(floating.context, { role: "dialog" })]);
|
|
1859
|
+
(0, import_react28.useEffect)(() => {
|
|
1700
1860
|
if (isOpen) {
|
|
1701
1861
|
const element = floating.refs.floating.current;
|
|
1702
1862
|
element?.focus?.({ preventScroll: true });
|
|
1703
1863
|
}
|
|
1704
1864
|
}, [isOpen, floating.refs.floating]);
|
|
1705
|
-
(0,
|
|
1865
|
+
(0, import_react28.useEffect)(() => {
|
|
1706
1866
|
if (!isOpen) {
|
|
1707
1867
|
triggerRef.current?.focus({ preventScroll: true });
|
|
1708
1868
|
}
|
|
1709
1869
|
}, [isOpen, triggerRef]);
|
|
1710
|
-
const handleKeyDown = (0,
|
|
1870
|
+
const handleKeyDown = (0, import_react28.useCallback)(
|
|
1711
1871
|
(event) => {
|
|
1712
1872
|
if (event.key === "Escape") {
|
|
1713
1873
|
event.stopPropagation();
|
|
@@ -1727,7 +1887,7 @@ var PopoverContent = (0, import_react25.forwardRef)(function PopoverContent2({ c
|
|
|
1727
1887
|
...childProps.role == null && { role: "dialog" }
|
|
1728
1888
|
});
|
|
1729
1889
|
}
|
|
1730
|
-
return /* @__PURE__ */ (0,
|
|
1890
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_react27.FloatingPortal, { children: isOpen ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
1731
1891
|
"div",
|
|
1732
1892
|
{
|
|
1733
1893
|
...interactions.getFloatingProps({
|
|
@@ -1748,8 +1908,8 @@ var PopoverContent = (0, import_react25.forwardRef)(function PopoverContent2({ c
|
|
|
1748
1908
|
|
|
1749
1909
|
// src/popover/popover-trigger.tsx
|
|
1750
1910
|
var React2 = __toESM(require("react"));
|
|
1751
|
-
var
|
|
1752
|
-
var PopoverTrigger = (0,
|
|
1911
|
+
var import_react29 = require("react");
|
|
1912
|
+
var PopoverTrigger = (0, import_react29.forwardRef)(function PopoverTrigger2({ children }, ref) {
|
|
1753
1913
|
const { isOpen, floating, triggerRef, anchorRef, panelId } = usePopoverContext();
|
|
1754
1914
|
if (!isElement(children)) {
|
|
1755
1915
|
return null;
|
|
@@ -1777,7 +1937,7 @@ var PopoverTrigger = (0, import_react26.forwardRef)(function PopoverTrigger2({ c
|
|
|
1777
1937
|
});
|
|
1778
1938
|
|
|
1779
1939
|
// src/popover/popover.tsx
|
|
1780
|
-
var
|
|
1940
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
1781
1941
|
function Popover({
|
|
1782
1942
|
isOpen,
|
|
1783
1943
|
children,
|
|
@@ -1786,8 +1946,8 @@ function Popover({
|
|
|
1786
1946
|
onClose,
|
|
1787
1947
|
anchorRef
|
|
1788
1948
|
}) {
|
|
1789
|
-
const triggerRef = (0,
|
|
1790
|
-
const floating = (0,
|
|
1949
|
+
const triggerRef = (0, import_react31.useRef)(null);
|
|
1950
|
+
const floating = (0, import_react30.useFloating)({
|
|
1791
1951
|
open: isOpen,
|
|
1792
1952
|
onOpenChange: (open) => {
|
|
1793
1953
|
if (!open && onClose != null) {
|
|
@@ -1795,18 +1955,18 @@ function Popover({
|
|
|
1795
1955
|
}
|
|
1796
1956
|
},
|
|
1797
1957
|
placement,
|
|
1798
|
-
middleware: [(0,
|
|
1799
|
-
whileElementsMounted:
|
|
1958
|
+
middleware: [(0, import_react30.offset)(offsetValue)],
|
|
1959
|
+
whileElementsMounted: import_react30.autoUpdate,
|
|
1800
1960
|
strategy: "fixed"
|
|
1801
1961
|
});
|
|
1802
|
-
(0,
|
|
1962
|
+
(0, import_react31.useEffect)(() => {
|
|
1803
1963
|
if (anchorRef?.current) {
|
|
1804
1964
|
floating.refs.setReference(anchorRef.current);
|
|
1805
1965
|
}
|
|
1806
1966
|
}, [anchorRef, floating.refs]);
|
|
1807
|
-
const contentId = (0,
|
|
1967
|
+
const contentId = (0, import_react30.useId)() ?? "";
|
|
1808
1968
|
const panelId = `${contentId}-panel`;
|
|
1809
|
-
const contextValue = (0,
|
|
1969
|
+
const contextValue = (0, import_react31.useMemo)(
|
|
1810
1970
|
() => ({
|
|
1811
1971
|
isOpen,
|
|
1812
1972
|
triggerRef,
|
|
@@ -1818,53 +1978,53 @@ function Popover({
|
|
|
1818
1978
|
}),
|
|
1819
1979
|
[isOpen, triggerRef, anchorRef, floating, contentId, panelId, onClose]
|
|
1820
1980
|
);
|
|
1821
|
-
return /* @__PURE__ */ (0,
|
|
1981
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(PopoverContext.Provider, { value: contextValue, children });
|
|
1822
1982
|
}
|
|
1823
1983
|
Popover.Trigger = PopoverTrigger;
|
|
1824
1984
|
Popover.Content = PopoverContent;
|
|
1825
1985
|
|
|
1826
1986
|
// src/popup/popup.tsx
|
|
1827
|
-
var
|
|
1987
|
+
var import_react34 = require("react");
|
|
1828
1988
|
|
|
1829
1989
|
// src/popup/popup-body.tsx
|
|
1830
|
-
var
|
|
1990
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
1831
1991
|
function PopupBody({ children }) {
|
|
1832
|
-
return /* @__PURE__ */ (0,
|
|
1992
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "overflow-y-auto", children });
|
|
1833
1993
|
}
|
|
1834
1994
|
|
|
1835
1995
|
// src/popup/popup-context.ts
|
|
1836
|
-
var
|
|
1837
|
-
var PopupContext = (0,
|
|
1996
|
+
var import_react32 = require("react");
|
|
1997
|
+
var PopupContext = (0, import_react32.createContext)({
|
|
1838
1998
|
isOpen: false,
|
|
1839
1999
|
onClose: () => null
|
|
1840
2000
|
});
|
|
1841
2001
|
|
|
1842
2002
|
// src/popup/popup-footer.tsx
|
|
1843
|
-
var
|
|
2003
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
1844
2004
|
function PopupFooter({ children }) {
|
|
1845
|
-
return /* @__PURE__ */ (0,
|
|
2005
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "flex w-full shrink-0 items-center rounded-b-lg px-6 py-3", children });
|
|
1846
2006
|
}
|
|
1847
2007
|
|
|
1848
2008
|
// src/popup/popup-header.tsx
|
|
1849
|
-
var
|
|
1850
|
-
var
|
|
2009
|
+
var import_react33 = require("react");
|
|
2010
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
1851
2011
|
function PopupHeader({ children, before }) {
|
|
1852
|
-
const { onClose } = (0,
|
|
1853
|
-
return /* @__PURE__ */ (0,
|
|
1854
|
-
/* @__PURE__ */ (0,
|
|
2012
|
+
const { onClose } = (0, import_react33.useContext)(PopupContext);
|
|
2013
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("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: [
|
|
2014
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
1855
2015
|
before,
|
|
1856
2016
|
children
|
|
1857
2017
|
] }),
|
|
1858
|
-
onClose && /* @__PURE__ */ (0,
|
|
2018
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(IconButton, { icon: "close", size: "small", variant: "text", onClick: onClose })
|
|
1859
2019
|
] });
|
|
1860
2020
|
}
|
|
1861
2021
|
|
|
1862
2022
|
// src/popup/popup.tsx
|
|
1863
|
-
var
|
|
2023
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
1864
2024
|
var LIMIT_WIDTH2 = 320;
|
|
1865
2025
|
var LIMIT_HEIGHT2 = 184;
|
|
1866
2026
|
function useOptionalPopoverContext() {
|
|
1867
|
-
return (0,
|
|
2027
|
+
return (0, import_react34.useContext)(PopoverContext);
|
|
1868
2028
|
}
|
|
1869
2029
|
function Popup({ children, isOpen: controlledIsOpen, width = 480, height, onClose }) {
|
|
1870
2030
|
const renderWidth = typeof width === "number" ? Math.max(width, LIMIT_WIDTH2) : width;
|
|
@@ -1875,7 +2035,7 @@ function Popup({ children, isOpen: controlledIsOpen, width = 480, height, onClos
|
|
|
1875
2035
|
if (!isOpen) {
|
|
1876
2036
|
return null;
|
|
1877
2037
|
}
|
|
1878
|
-
return /* @__PURE__ */ (0,
|
|
2038
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(PopupContext.Provider, { value: { isOpen, onClose }, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
|
|
1879
2039
|
"div",
|
|
1880
2040
|
{
|
|
1881
2041
|
className: "grid max-h-full grid-rows-[max-content_1fr_max-content] flex-col rounded-lg bg-uiBackground01 shadow-floatingShadow",
|
|
@@ -1890,26 +2050,26 @@ Popup.Footer = PopupFooter;
|
|
|
1890
2050
|
|
|
1891
2051
|
// src/radio/radio.tsx
|
|
1892
2052
|
var import_component_theme13 = require("@zenkigen-inc/component-theme");
|
|
1893
|
-
var
|
|
1894
|
-
var
|
|
1895
|
-
var
|
|
2053
|
+
var import_clsx23 = __toESM(require("clsx"));
|
|
2054
|
+
var import_react35 = require("react");
|
|
2055
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
1896
2056
|
function Radio({ name, value, id, label, isChecked = false, isDisabled = false, onChange }) {
|
|
1897
|
-
const [isMouseOver, setIsMouseOver] = (0,
|
|
1898
|
-
const handleMouseOverInput = (0,
|
|
2057
|
+
const [isMouseOver, setIsMouseOver] = (0, import_react35.useState)(false);
|
|
2058
|
+
const handleMouseOverInput = (0, import_react35.useCallback)(() => {
|
|
1899
2059
|
setIsMouseOver(true);
|
|
1900
2060
|
}, []);
|
|
1901
|
-
const handleMouseOutInput = (0,
|
|
2061
|
+
const handleMouseOutInput = (0, import_react35.useCallback)(() => {
|
|
1902
2062
|
setIsMouseOver(false);
|
|
1903
2063
|
}, []);
|
|
1904
|
-
const handleChange = (0,
|
|
2064
|
+
const handleChange = (0, import_react35.useCallback)(
|
|
1905
2065
|
(e) => !isDisabled && onChange?.(e),
|
|
1906
2066
|
[isDisabled, onChange]
|
|
1907
2067
|
);
|
|
1908
|
-
const inputClasses = (0,
|
|
2068
|
+
const inputClasses = (0, import_clsx23.default)("peer absolute z-[1] size-6 opacity-0", {
|
|
1909
2069
|
"cursor-not-allowed": isDisabled,
|
|
1910
2070
|
"cursor-pointer": !isDisabled
|
|
1911
2071
|
});
|
|
1912
|
-
const boxClasses = (0,
|
|
2072
|
+
const boxClasses = (0, import_clsx23.default)(
|
|
1913
2073
|
"inline-flex size-5 items-center justify-center rounded-full border border-solid bg-white",
|
|
1914
2074
|
import_component_theme13.focusVisible.normalPeer,
|
|
1915
2075
|
{
|
|
@@ -1920,22 +2080,22 @@ function Radio({ name, value, id, label, isChecked = false, isDisabled = false,
|
|
|
1920
2080
|
"cursor-pointer": !isDisabled
|
|
1921
2081
|
}
|
|
1922
2082
|
);
|
|
1923
|
-
const afterClasses = (0,
|
|
2083
|
+
const afterClasses = (0, import_clsx23.default)("absolute inset-0 m-auto block size-3 rounded-full", {
|
|
1924
2084
|
"bg-disabled01": isDisabled && isChecked,
|
|
1925
2085
|
"bg-activeSelectedUi": !isDisabled && isChecked,
|
|
1926
2086
|
"scale-0": !isChecked,
|
|
1927
2087
|
"scale-100": isChecked
|
|
1928
2088
|
});
|
|
1929
|
-
const hoverIndicatorClasses = (0,
|
|
2089
|
+
const hoverIndicatorClasses = (0, import_clsx23.default)("inline-block size-3 rounded-full", {
|
|
1930
2090
|
"bg-hoverUi": !isDisabled && !isChecked && isMouseOver
|
|
1931
2091
|
});
|
|
1932
|
-
const labelClasses = (0,
|
|
2092
|
+
const labelClasses = (0, import_clsx23.default)("typography-label14regular ml-2 flex-[1_0_0] select-none break-all", {
|
|
1933
2093
|
"pointer-events-none cursor-not-allowed text-disabled01": isDisabled,
|
|
1934
2094
|
"cursor-pointer text-text01": !isDisabled
|
|
1935
2095
|
});
|
|
1936
|
-
return /* @__PURE__ */ (0,
|
|
1937
|
-
/* @__PURE__ */ (0,
|
|
1938
|
-
/* @__PURE__ */ (0,
|
|
2096
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex items-center", children: [
|
|
2097
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "flex size-6 items-center justify-center", children: [
|
|
2098
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
1939
2099
|
"input",
|
|
1940
2100
|
{
|
|
1941
2101
|
type: "checkbox",
|
|
@@ -1950,32 +2110,32 @@ function Radio({ name, value, id, label, isChecked = false, isDisabled = false,
|
|
|
1950
2110
|
className: inputClasses
|
|
1951
2111
|
}
|
|
1952
2112
|
),
|
|
1953
|
-
/* @__PURE__ */ (0,
|
|
1954
|
-
/* @__PURE__ */ (0,
|
|
1955
|
-
/* @__PURE__ */ (0,
|
|
2113
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: boxClasses, children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "relative flex size-5 flex-[0_0_auto] items-center justify-center", children: [
|
|
2114
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: afterClasses }),
|
|
2115
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: hoverIndicatorClasses })
|
|
1956
2116
|
] }) })
|
|
1957
2117
|
] }),
|
|
1958
|
-
/* @__PURE__ */ (0,
|
|
2118
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("label", { htmlFor: id, className: labelClasses, children: label })
|
|
1959
2119
|
] });
|
|
1960
2120
|
}
|
|
1961
2121
|
|
|
1962
2122
|
// src/search/search.tsx
|
|
1963
|
-
var
|
|
1964
|
-
var
|
|
1965
|
-
var
|
|
1966
|
-
var Search = (0,
|
|
1967
|
-
const classes = (0,
|
|
2123
|
+
var import_clsx24 = require("clsx");
|
|
2124
|
+
var import_react36 = require("react");
|
|
2125
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
2126
|
+
var Search = (0, import_react36.forwardRef)(({ width = "100%", size = "medium", ...props }, ref) => {
|
|
2127
|
+
const classes = (0, import_clsx24.clsx)(
|
|
1968
2128
|
"flex items-center rounded-full border border-uiBorder02 bg-uiBackground01 focus-within:border-activeInput",
|
|
1969
2129
|
{ "h-8 px-3": size === "medium" },
|
|
1970
2130
|
{ "h-10 px-4": size === "large" }
|
|
1971
2131
|
);
|
|
1972
|
-
const inputClasses = (0,
|
|
2132
|
+
const inputClasses = (0, import_clsx24.clsx)("mx-2 h-full flex-1 text-text01 outline-0 placeholder:text-textPlaceholder", {
|
|
1973
2133
|
["typography-label14regular"]: size === "medium",
|
|
1974
2134
|
["typography-label16regular"]: size === "large"
|
|
1975
2135
|
});
|
|
1976
|
-
return /* @__PURE__ */ (0,
|
|
1977
|
-
/* @__PURE__ */ (0,
|
|
1978
|
-
/* @__PURE__ */ (0,
|
|
2136
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "relative", ref, children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("form", { onSubmit: props.onSubmit, children: /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: classes, style: { width }, children: [
|
|
2137
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Icon, { name: "search", color: "icon01", size: "medium" }),
|
|
2138
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
1979
2139
|
"input",
|
|
1980
2140
|
{
|
|
1981
2141
|
type: "text",
|
|
@@ -1986,7 +2146,7 @@ var Search = (0, import_react33.forwardRef)(({ width = "100%", size = "medium",
|
|
|
1986
2146
|
onChange: props.onChange
|
|
1987
2147
|
}
|
|
1988
2148
|
),
|
|
1989
|
-
props.onClickClearButton && props.value && props.value.length !== 0 && /* @__PURE__ */ (0,
|
|
2149
|
+
props.onClickClearButton && props.value && props.value.length !== 0 && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
1990
2150
|
IconButton,
|
|
1991
2151
|
{
|
|
1992
2152
|
variant: "text",
|
|
@@ -2001,17 +2161,17 @@ var Search = (0, import_react33.forwardRef)(({ width = "100%", size = "medium",
|
|
|
2001
2161
|
Search.displayName = "Search";
|
|
2002
2162
|
|
|
2003
2163
|
// src/segmented-control/segmented-control.tsx
|
|
2004
|
-
var
|
|
2164
|
+
var import_react39 = __toESM(require("react"));
|
|
2005
2165
|
|
|
2006
2166
|
// src/segmented-control/segmented-control-context.ts
|
|
2007
|
-
var
|
|
2008
|
-
var SegmentedControlContext = (0,
|
|
2167
|
+
var import_react37 = require("react");
|
|
2168
|
+
var SegmentedControlContext = (0, import_react37.createContext)(null);
|
|
2009
2169
|
|
|
2010
2170
|
// src/segmented-control/segmented-control-item.tsx
|
|
2011
2171
|
var import_component_theme14 = require("@zenkigen-inc/component-theme");
|
|
2012
|
-
var
|
|
2013
|
-
var
|
|
2014
|
-
var
|
|
2172
|
+
var import_clsx25 = require("clsx");
|
|
2173
|
+
var import_react38 = require("react");
|
|
2174
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
2015
2175
|
var SegmentedControlItem = ({
|
|
2016
2176
|
label,
|
|
2017
2177
|
value,
|
|
@@ -2020,9 +2180,9 @@ var SegmentedControlItem = ({
|
|
|
2020
2180
|
"aria-label": ariaLabel,
|
|
2021
2181
|
...rest
|
|
2022
2182
|
}) => {
|
|
2023
|
-
const context = (0,
|
|
2024
|
-
const buttonRef = (0,
|
|
2025
|
-
const lastInteractionWasMouse = (0,
|
|
2183
|
+
const context = (0, import_react38.useContext)(SegmentedControlContext);
|
|
2184
|
+
const buttonRef = (0, import_react38.useRef)(null);
|
|
2185
|
+
const lastInteractionWasMouse = (0, import_react38.useRef)(false);
|
|
2026
2186
|
if (context === null) {
|
|
2027
2187
|
throw new Error("SegmentedControl.Item must be used within SegmentedControl");
|
|
2028
2188
|
}
|
|
@@ -2038,7 +2198,7 @@ var SegmentedControlItem = ({
|
|
|
2038
2198
|
const isSelected = value === selectedValue;
|
|
2039
2199
|
const isFocused = value === focusedValue;
|
|
2040
2200
|
const isOptionDisabled = isContextDisabled || itemDisabled === true;
|
|
2041
|
-
(0,
|
|
2201
|
+
(0, import_react38.useEffect)(() => {
|
|
2042
2202
|
if (isFocused === true && buttonRef.current !== null) {
|
|
2043
2203
|
buttonRef.current.focus();
|
|
2044
2204
|
}
|
|
@@ -2060,7 +2220,7 @@ var SegmentedControlItem = ({
|
|
|
2060
2220
|
lastInteractionWasMouse.current = false;
|
|
2061
2221
|
onBlur?.();
|
|
2062
2222
|
};
|
|
2063
|
-
const buttonClasses = (0,
|
|
2223
|
+
const buttonClasses = (0, import_clsx25.clsx)("relative flex items-center justify-center gap-1 rounded", import_component_theme14.focusVisible.normal, {
|
|
2064
2224
|
"px-2 min-h-[24px] typography-label12regular": size === "small",
|
|
2065
2225
|
"px-4 min-h-[32px] typography-label14regular": size === "medium",
|
|
2066
2226
|
// States - Default with hover
|
|
@@ -2070,7 +2230,7 @@ var SegmentedControlItem = ({
|
|
|
2070
2230
|
// States - Disabled
|
|
2071
2231
|
"text-disabled01 bg-transparent": isOptionDisabled === true
|
|
2072
2232
|
});
|
|
2073
|
-
return /* @__PURE__ */ (0,
|
|
2233
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
2074
2234
|
"button",
|
|
2075
2235
|
{
|
|
2076
2236
|
ref: buttonRef,
|
|
@@ -2087,25 +2247,25 @@ var SegmentedControlItem = ({
|
|
|
2087
2247
|
onMouseDown: handleMouseDown,
|
|
2088
2248
|
...rest,
|
|
2089
2249
|
children: [
|
|
2090
|
-
Boolean(icon) === true && icon && /* @__PURE__ */ (0,
|
|
2250
|
+
Boolean(icon) === true && icon && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2091
2251
|
"span",
|
|
2092
2252
|
{
|
|
2093
|
-
className: (0,
|
|
2253
|
+
className: (0, import_clsx25.clsx)("flex items-center", {
|
|
2094
2254
|
"fill-disabled01": isOptionDisabled === true,
|
|
2095
2255
|
"fill-interactive01": isSelected === true && isOptionDisabled === false,
|
|
2096
2256
|
"fill-icon01": isSelected === false && isOptionDisabled === false
|
|
2097
2257
|
}),
|
|
2098
|
-
children: /* @__PURE__ */ (0,
|
|
2258
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Icon, { name: icon, size: "small" })
|
|
2099
2259
|
}
|
|
2100
2260
|
),
|
|
2101
|
-
Boolean(label) === true && /* @__PURE__ */ (0,
|
|
2261
|
+
Boolean(label) === true && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "whitespace-nowrap", children: label })
|
|
2102
2262
|
]
|
|
2103
2263
|
}
|
|
2104
2264
|
);
|
|
2105
2265
|
};
|
|
2106
2266
|
|
|
2107
2267
|
// src/segmented-control/segmented-control.tsx
|
|
2108
|
-
var
|
|
2268
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
2109
2269
|
var SegmentedControl = ({
|
|
2110
2270
|
children,
|
|
2111
2271
|
value,
|
|
@@ -2115,15 +2275,15 @@ var SegmentedControl = ({
|
|
|
2115
2275
|
"aria-label": ariaLabel,
|
|
2116
2276
|
...rest
|
|
2117
2277
|
}) => {
|
|
2118
|
-
const containerRef = (0,
|
|
2119
|
-
const itemIds =
|
|
2120
|
-
if (!
|
|
2278
|
+
const containerRef = (0, import_react39.useRef)(null);
|
|
2279
|
+
const itemIds = import_react39.Children.toArray(children).filter((child) => {
|
|
2280
|
+
if (!import_react39.default.isValidElement(child) || typeof child.props !== "object" || child.props === null || !("value" in child.props)) {
|
|
2121
2281
|
return false;
|
|
2122
2282
|
}
|
|
2123
2283
|
const props = child.props;
|
|
2124
2284
|
return props.isDisabled !== true;
|
|
2125
2285
|
}).map((child) => child.props.value);
|
|
2126
|
-
const childrenCount =
|
|
2286
|
+
const childrenCount = import_react39.Children.count(children);
|
|
2127
2287
|
const containerStyle = { gridTemplateColumns: `repeat(${childrenCount}, minmax(0,1fr))` };
|
|
2128
2288
|
const {
|
|
2129
2289
|
focusedValue,
|
|
@@ -2150,7 +2310,7 @@ var SegmentedControl = ({
|
|
|
2150
2310
|
onBlur: handleBlurRovingFocus,
|
|
2151
2311
|
values: itemIds
|
|
2152
2312
|
};
|
|
2153
|
-
return /* @__PURE__ */ (0,
|
|
2313
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_jsx_runtime41.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(SegmentedControlContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
2154
2314
|
"div",
|
|
2155
2315
|
{
|
|
2156
2316
|
ref: containerRef,
|
|
@@ -2168,19 +2328,19 @@ SegmentedControl.Item = SegmentedControlItem;
|
|
|
2168
2328
|
|
|
2169
2329
|
// src/select-sort/select-sort.tsx
|
|
2170
2330
|
var import_component_theme17 = require("@zenkigen-inc/component-theme");
|
|
2171
|
-
var
|
|
2172
|
-
var
|
|
2331
|
+
var import_clsx28 = __toESM(require("clsx"));
|
|
2332
|
+
var import_react40 = require("react");
|
|
2173
2333
|
|
|
2174
2334
|
// src/select-sort/select-list.tsx
|
|
2175
2335
|
var import_component_theme16 = require("@zenkigen-inc/component-theme");
|
|
2176
|
-
var
|
|
2336
|
+
var import_clsx27 = __toESM(require("clsx"));
|
|
2177
2337
|
|
|
2178
2338
|
// src/select-sort/select-item.tsx
|
|
2179
2339
|
var import_component_theme15 = require("@zenkigen-inc/component-theme");
|
|
2180
|
-
var
|
|
2181
|
-
var
|
|
2340
|
+
var import_clsx26 = __toESM(require("clsx"));
|
|
2341
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
2182
2342
|
function SelectItem2({ children, isSortKey, onClickItem }) {
|
|
2183
|
-
const itemClasses = (0,
|
|
2343
|
+
const itemClasses = (0, import_clsx26.default)(
|
|
2184
2344
|
"typography-label14regular flex h-8 w-full items-center px-3 hover:bg-hover02 active:bg-active02",
|
|
2185
2345
|
import_component_theme15.focusVisible.inset,
|
|
2186
2346
|
{
|
|
@@ -2188,16 +2348,16 @@ function SelectItem2({ children, isSortKey, onClickItem }) {
|
|
|
2188
2348
|
"bg-uiBackground01 fill-icon01 text-interactive02": !isSortKey
|
|
2189
2349
|
}
|
|
2190
2350
|
);
|
|
2191
|
-
return /* @__PURE__ */ (0,
|
|
2192
|
-
/* @__PURE__ */ (0,
|
|
2193
|
-
isSortKey && /* @__PURE__ */ (0,
|
|
2351
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("li", { className: "flex w-full items-center", onClick: onClickItem, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("button", { className: itemClasses, type: "button", children: [
|
|
2352
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "ml-1 mr-6", children }),
|
|
2353
|
+
isSortKey && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Icon, { name: "check", size: "small" }) })
|
|
2194
2354
|
] }) });
|
|
2195
2355
|
}
|
|
2196
2356
|
|
|
2197
2357
|
// src/select-sort/select-list.tsx
|
|
2198
|
-
var
|
|
2358
|
+
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
2199
2359
|
function SelectList2({ size, variant, sortOrder, onClickItem, onClickDeselect }) {
|
|
2200
|
-
const listClasses = (0,
|
|
2360
|
+
const listClasses = (0, import_clsx27.default)(
|
|
2201
2361
|
"absolute z-dropdown w-max overflow-y-auto rounded bg-uiBackground01 py-2 shadow-floatingShadow",
|
|
2202
2362
|
{
|
|
2203
2363
|
"top-7": size === "x-small" || size === "small",
|
|
@@ -2206,19 +2366,19 @@ function SelectList2({ size, variant, sortOrder, onClickItem, onClickDeselect })
|
|
|
2206
2366
|
"border-solid border border-uiBorder01": variant === "outline"
|
|
2207
2367
|
}
|
|
2208
2368
|
);
|
|
2209
|
-
const deselectButtonClasses = (0,
|
|
2369
|
+
const deselectButtonClasses = (0, import_clsx27.default)(
|
|
2210
2370
|
"typography-label14regular flex h-8 w-full items-center px-3 text-interactive02 hover:bg-hover02 active:bg-active02",
|
|
2211
2371
|
import_component_theme16.focusVisible.inset
|
|
2212
2372
|
);
|
|
2213
|
-
return /* @__PURE__ */ (0,
|
|
2214
|
-
/* @__PURE__ */ (0,
|
|
2215
|
-
/* @__PURE__ */ (0,
|
|
2216
|
-
sortOrder !== null && onClickDeselect && /* @__PURE__ */ (0,
|
|
2373
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("ul", { className: listClasses, children: [
|
|
2374
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(SelectItem2, { isSortKey: sortOrder === "ascend", onClickItem: () => onClickItem("ascend"), children: "\u6607\u9806\u3067\u4E26\u3073\u66FF\u3048" }),
|
|
2375
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(SelectItem2, { isSortKey: sortOrder === "descend", onClickItem: () => onClickItem("descend"), children: "\u964D\u9806\u3067\u4E26\u3073\u66FF\u3048" }),
|
|
2376
|
+
sortOrder !== null && onClickDeselect && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("button", { className: deselectButtonClasses, type: "button", onClick: onClickDeselect, children: "\u9078\u629E\u89E3\u9664" }) })
|
|
2217
2377
|
] });
|
|
2218
2378
|
}
|
|
2219
2379
|
|
|
2220
2380
|
// src/select-sort/select-sort.tsx
|
|
2221
|
-
var
|
|
2381
|
+
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
2222
2382
|
function SelectSort({
|
|
2223
2383
|
size = "medium",
|
|
2224
2384
|
variant = "outline",
|
|
@@ -2230,24 +2390,24 @@ function SelectSort({
|
|
|
2230
2390
|
onChange,
|
|
2231
2391
|
onClickDeselect
|
|
2232
2392
|
}) {
|
|
2233
|
-
const [isOptionListOpen, setIsOptionListOpen] = (0,
|
|
2234
|
-
const targetRef = (0,
|
|
2393
|
+
const [isOptionListOpen, setIsOptionListOpen] = (0, import_react40.useState)(false);
|
|
2394
|
+
const targetRef = (0, import_react40.useRef)(null);
|
|
2235
2395
|
useOutsideClick(targetRef, () => setIsOptionListOpen(false));
|
|
2236
2396
|
const handleClickToggle = () => setIsOptionListOpen((prev) => !prev);
|
|
2237
|
-
const handleClickItem = (0,
|
|
2397
|
+
const handleClickItem = (0, import_react40.useCallback)(
|
|
2238
2398
|
(value) => {
|
|
2239
2399
|
onChange?.(value);
|
|
2240
2400
|
setIsOptionListOpen(false);
|
|
2241
2401
|
},
|
|
2242
2402
|
[onChange]
|
|
2243
2403
|
);
|
|
2244
|
-
const wrapperClasses = (0,
|
|
2404
|
+
const wrapperClasses = (0, import_clsx28.default)("relative flex shrink-0 items-center gap-1 rounded", {
|
|
2245
2405
|
"h-6": size === "x-small" || size === "small",
|
|
2246
2406
|
"h-8": size === "medium",
|
|
2247
2407
|
"h-10": size === "large",
|
|
2248
2408
|
"cursor-not-allowed": isDisabled
|
|
2249
2409
|
});
|
|
2250
|
-
const buttonClasses = (0,
|
|
2410
|
+
const buttonClasses = (0, import_clsx28.default)(
|
|
2251
2411
|
"flex size-full items-center rounded",
|
|
2252
2412
|
import_component_theme17.buttonColors[variant].hover,
|
|
2253
2413
|
import_component_theme17.buttonColors[variant].active,
|
|
@@ -2261,23 +2421,23 @@ function SelectSort({
|
|
|
2261
2421
|
"pointer-events-none": isDisabled
|
|
2262
2422
|
}
|
|
2263
2423
|
);
|
|
2264
|
-
const labelClasses = (0,
|
|
2424
|
+
const labelClasses = (0, import_clsx28.default)("truncate", {
|
|
2265
2425
|
"typography-label12regular": size === "x-small",
|
|
2266
2426
|
"typography-label14regular": size === "small" || size === "medium",
|
|
2267
2427
|
"typography-label16regular": size === "large",
|
|
2268
2428
|
"mr-1": size === "x-small",
|
|
2269
2429
|
"mr-2": size !== "x-small"
|
|
2270
2430
|
});
|
|
2271
|
-
return /* @__PURE__ */ (0,
|
|
2272
|
-
/* @__PURE__ */ (0,
|
|
2273
|
-
/* @__PURE__ */ (0,
|
|
2274
|
-
/* @__PURE__ */ (0,
|
|
2431
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: wrapperClasses, style: { width }, ref: targetRef, children: [
|
|
2432
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("button", { className: buttonClasses, type: "button", onClick: handleClickToggle, disabled: isDisabled, children: [
|
|
2433
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: labelClasses, children: label }),
|
|
2434
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "ml-auto flex items-center", children: isSortKey ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
2275
2435
|
Icon,
|
|
2276
2436
|
{
|
|
2277
2437
|
name: sortOrder === "ascend" ? "arrow-up" : "arrow-down",
|
|
2278
2438
|
size: size === "large" ? "medium" : "small"
|
|
2279
2439
|
}
|
|
2280
|
-
) : /* @__PURE__ */ (0,
|
|
2440
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
2281
2441
|
Icon,
|
|
2282
2442
|
{
|
|
2283
2443
|
name: isOptionListOpen ? "angle-small-up" : "angle-small-down",
|
|
@@ -2285,7 +2445,7 @@ function SelectSort({
|
|
|
2285
2445
|
}
|
|
2286
2446
|
) })
|
|
2287
2447
|
] }),
|
|
2288
|
-
isOptionListOpen && !isDisabled && /* @__PURE__ */ (0,
|
|
2448
|
+
isOptionListOpen && !isDisabled && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
2289
2449
|
SelectList2,
|
|
2290
2450
|
{
|
|
2291
2451
|
size,
|
|
@@ -2300,9 +2460,9 @@ function SelectSort({
|
|
|
2300
2460
|
|
|
2301
2461
|
// src/sort-button/sort-button.tsx
|
|
2302
2462
|
var import_component_theme18 = require("@zenkigen-inc/component-theme");
|
|
2303
|
-
var
|
|
2304
|
-
var
|
|
2305
|
-
var
|
|
2463
|
+
var import_clsx29 = __toESM(require("clsx"));
|
|
2464
|
+
var import_react41 = require("react");
|
|
2465
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
2306
2466
|
function SortButton({
|
|
2307
2467
|
size = "medium",
|
|
2308
2468
|
width,
|
|
@@ -2313,7 +2473,7 @@ function SortButton({
|
|
|
2313
2473
|
"aria-label": ariaLabel,
|
|
2314
2474
|
...rest
|
|
2315
2475
|
}) {
|
|
2316
|
-
const handleClick = (0,
|
|
2476
|
+
const handleClick = (0, import_react41.useCallback)(() => {
|
|
2317
2477
|
if (isDisabled || !onClick) return;
|
|
2318
2478
|
onClick();
|
|
2319
2479
|
}, [isDisabled, onClick]);
|
|
@@ -2322,13 +2482,13 @@ function SortButton({
|
|
|
2322
2482
|
if (sortOrder === "descend") return "arrow-down";
|
|
2323
2483
|
return "angle-small-down";
|
|
2324
2484
|
};
|
|
2325
|
-
const wrapperClasses = (0,
|
|
2485
|
+
const wrapperClasses = (0, import_clsx29.default)("relative flex shrink-0 items-center gap-1 rounded", {
|
|
2326
2486
|
"h-6": size === "x-small" || size === "small",
|
|
2327
2487
|
"h-8": size === "medium",
|
|
2328
2488
|
"h-10": size === "large",
|
|
2329
2489
|
"cursor-not-allowed": isDisabled
|
|
2330
2490
|
});
|
|
2331
|
-
const buttonClasses = (0,
|
|
2491
|
+
const buttonClasses = (0, import_clsx29.default)(
|
|
2332
2492
|
"flex size-full items-center rounded",
|
|
2333
2493
|
import_component_theme18.buttonColors.text.hover,
|
|
2334
2494
|
import_component_theme18.buttonColors.text.active,
|
|
@@ -2344,14 +2504,14 @@ function SortButton({
|
|
|
2344
2504
|
"pointer-events-none": isDisabled
|
|
2345
2505
|
}
|
|
2346
2506
|
);
|
|
2347
|
-
const labelClasses = (0,
|
|
2507
|
+
const labelClasses = (0, import_clsx29.default)("truncate", {
|
|
2348
2508
|
"typography-label12regular": size === "x-small",
|
|
2349
2509
|
"typography-label14regular": size === "small" || size === "medium",
|
|
2350
2510
|
"typography-label16regular": size === "large",
|
|
2351
2511
|
"mr-1": size === "x-small",
|
|
2352
2512
|
"mr-2": size !== "x-small"
|
|
2353
2513
|
});
|
|
2354
|
-
return /* @__PURE__ */ (0,
|
|
2514
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: wrapperClasses, style: { width }, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
|
|
2355
2515
|
"button",
|
|
2356
2516
|
{
|
|
2357
2517
|
className: buttonClasses,
|
|
@@ -2362,78 +2522,85 @@ function SortButton({
|
|
|
2362
2522
|
"aria-label": ariaLabel,
|
|
2363
2523
|
"aria-disabled": isDisabled,
|
|
2364
2524
|
children: [
|
|
2365
|
-
/* @__PURE__ */ (0,
|
|
2366
|
-
/* @__PURE__ */ (0,
|
|
2525
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: labelClasses, children: label }),
|
|
2526
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Icon, { name: getIconName(), size: size === "large" ? "medium" : "small" }) })
|
|
2367
2527
|
]
|
|
2368
2528
|
}
|
|
2369
2529
|
) });
|
|
2370
2530
|
}
|
|
2371
2531
|
|
|
2372
2532
|
// src/tab/tab.tsx
|
|
2373
|
-
var
|
|
2374
|
-
var
|
|
2533
|
+
var import_clsx31 = require("clsx");
|
|
2534
|
+
var import_react42 = require("react");
|
|
2375
2535
|
|
|
2376
2536
|
// src/tab/tab-item.tsx
|
|
2377
|
-
var
|
|
2378
|
-
var
|
|
2379
|
-
var TabItem = ({ isSelected = false, ...props }) => {
|
|
2380
|
-
const classes = (0,
|
|
2381
|
-
"relative z-0 flex justify-center py-2 leading-[24px] before:absolute before:inset-x-0 before:bottom-0 before:h-
|
|
2537
|
+
var import_clsx30 = require("clsx");
|
|
2538
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
2539
|
+
var TabItem = ({ isSelected = false, isDisabled = false, icon, ...props }) => {
|
|
2540
|
+
const classes = (0, import_clsx30.clsx)(
|
|
2541
|
+
"group relative z-0 flex items-center justify-center gap-1 py-2 leading-[24px] before:absolute before:inset-x-0 before:bottom-0 before:h-[2px] hover:text-interactive01 disabled:pointer-events-none disabled:text-disabled01",
|
|
2382
2542
|
{
|
|
2383
|
-
"typography-label14regular": !isSelected,
|
|
2384
|
-
"
|
|
2385
|
-
"typography-label14bold": isSelected,
|
|
2543
|
+
"typography-label14regular text-interactive02": !isSelected,
|
|
2544
|
+
"typography-label14bold text-interactive01": isSelected,
|
|
2386
2545
|
"before:bg-interactive01 hover:before:bg-interactive01 pointer-events-none": isSelected
|
|
2387
2546
|
}
|
|
2388
2547
|
);
|
|
2389
|
-
|
|
2548
|
+
const iconWrapperClasses = (0, import_clsx30.clsx)("flex shrink-0 items-center", {
|
|
2549
|
+
"fill-disabled01": isDisabled,
|
|
2550
|
+
"fill-interactive01": !isDisabled && isSelected,
|
|
2551
|
+
"fill-icon01 group-hover:fill-interactive01": !isDisabled && !isSelected
|
|
2552
|
+
});
|
|
2553
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
|
|
2390
2554
|
"button",
|
|
2391
2555
|
{
|
|
2392
2556
|
type: "button",
|
|
2393
2557
|
role: "tab",
|
|
2394
2558
|
"aria-selected": isSelected,
|
|
2395
2559
|
className: classes,
|
|
2396
|
-
disabled:
|
|
2560
|
+
disabled: isDisabled,
|
|
2397
2561
|
onClick: () => props.onClick(props.id),
|
|
2398
|
-
children:
|
|
2562
|
+
children: [
|
|
2563
|
+
icon != null && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: iconWrapperClasses, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Icon, { name: icon, size: "small" }) }),
|
|
2564
|
+
props.children
|
|
2565
|
+
]
|
|
2399
2566
|
}
|
|
2400
2567
|
);
|
|
2401
2568
|
};
|
|
2402
2569
|
|
|
2403
2570
|
// src/tab/tab.tsx
|
|
2404
|
-
var
|
|
2571
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
2405
2572
|
function Tab({ children, layout = "auto" }) {
|
|
2406
|
-
const childrenCount =
|
|
2573
|
+
const childrenCount = import_react42.Children.count(children);
|
|
2407
2574
|
const containerStyle = layout === "equal" ? { gridTemplateColumns: `repeat(${childrenCount}, minmax(0,1fr))` } : {};
|
|
2408
|
-
const containerClasses = (0,
|
|
2575
|
+
const containerClasses = (0, import_clsx31.clsx)(
|
|
2409
2576
|
"relative gap-4 px-6 before:absolute before:inset-x-0 before:bottom-0 before:h-px before:bg-uiBorder01",
|
|
2410
2577
|
{
|
|
2411
2578
|
flex: layout === "auto",
|
|
2412
2579
|
grid: layout === "equal"
|
|
2413
2580
|
}
|
|
2414
2581
|
);
|
|
2415
|
-
return /* @__PURE__ */ (0,
|
|
2582
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { role: "tablist", className: containerClasses, style: containerStyle, children });
|
|
2416
2583
|
}
|
|
2417
2584
|
Tab.Item = TabItem;
|
|
2418
2585
|
|
|
2419
2586
|
// src/table/table-cell.tsx
|
|
2420
|
-
var
|
|
2421
|
-
var
|
|
2587
|
+
var import_clsx32 = __toESM(require("clsx"));
|
|
2588
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
2422
2589
|
function TableCell({ children, className, isHeader = false }) {
|
|
2423
|
-
const classes = (0,
|
|
2424
|
-
return /* @__PURE__ */ (0,
|
|
2590
|
+
const classes = (0, import_clsx32.default)("border-b border-uiBorder01", { "sticky top-0 z-10 bg-white": isHeader }, className);
|
|
2591
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: classes, children });
|
|
2425
2592
|
}
|
|
2426
2593
|
|
|
2427
2594
|
// src/table/table-row.tsx
|
|
2428
|
-
var
|
|
2429
|
-
var
|
|
2595
|
+
var import_clsx33 = __toESM(require("clsx"));
|
|
2596
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
2430
2597
|
function TableRow({ children, isHoverBackgroundVisible = false }) {
|
|
2431
|
-
const rowClasses = (0,
|
|
2432
|
-
return /* @__PURE__ */ (0,
|
|
2598
|
+
const rowClasses = (0, import_clsx33.default)("contents", isHoverBackgroundVisible && "[&:hover>div]:bg-hoverUi02");
|
|
2599
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: rowClasses, children });
|
|
2433
2600
|
}
|
|
2434
2601
|
|
|
2435
2602
|
// src/table/table.tsx
|
|
2436
|
-
var
|
|
2603
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
2437
2604
|
function Table({
|
|
2438
2605
|
width,
|
|
2439
2606
|
templateRows,
|
|
@@ -2442,7 +2609,7 @@ function Table({
|
|
|
2442
2609
|
autoRows,
|
|
2443
2610
|
children
|
|
2444
2611
|
}) {
|
|
2445
|
-
return /* @__PURE__ */ (0,
|
|
2612
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
2446
2613
|
"div",
|
|
2447
2614
|
{
|
|
2448
2615
|
className: "grid",
|
|
@@ -2462,22 +2629,22 @@ Table.Cell = TableCell;
|
|
|
2462
2629
|
|
|
2463
2630
|
// src/tag/tag.tsx
|
|
2464
2631
|
var import_component_theme20 = require("@zenkigen-inc/component-theme");
|
|
2465
|
-
var
|
|
2632
|
+
var import_clsx35 = __toESM(require("clsx"));
|
|
2466
2633
|
|
|
2467
2634
|
// src/tag/delete-icon.tsx
|
|
2468
2635
|
var import_component_theme19 = require("@zenkigen-inc/component-theme");
|
|
2469
|
-
var
|
|
2470
|
-
var
|
|
2636
|
+
var import_clsx34 = __toESM(require("clsx"));
|
|
2637
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
2471
2638
|
var DeleteIcon = ({ color, variant, onClick }) => {
|
|
2472
|
-
const deleteButtonClasses = (0,
|
|
2639
|
+
const deleteButtonClasses = (0, import_clsx34.default)(
|
|
2473
2640
|
"group ml-2 size-[14px] rounded-full p-0.5 hover:cursor-pointer hover:bg-iconOnColor focus-visible:bg-iconOnColor",
|
|
2474
2641
|
import_component_theme19.focusVisible.normal
|
|
2475
2642
|
);
|
|
2476
|
-
const deletePathClasses = (0,
|
|
2643
|
+
const deletePathClasses = (0, import_clsx34.default)({
|
|
2477
2644
|
"fill-interactive02": color === "gray" || variant === "light",
|
|
2478
2645
|
"group-hover:fill-interactive02 group-focus-visible:fill-interactive02 fill-iconOnColor": color !== "gray"
|
|
2479
2646
|
});
|
|
2480
|
-
return /* @__PURE__ */ (0,
|
|
2647
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("button", { type: "button", className: deleteButtonClasses, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
2481
2648
|
"path",
|
|
2482
2649
|
{
|
|
2483
2650
|
fillRule: "evenodd",
|
|
@@ -2489,9 +2656,9 @@ var DeleteIcon = ({ color, variant, onClick }) => {
|
|
|
2489
2656
|
};
|
|
2490
2657
|
|
|
2491
2658
|
// src/tag/tag.tsx
|
|
2492
|
-
var
|
|
2659
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
2493
2660
|
function Tag({ id, children, color, variant = "normal", size = "medium", isEditable, onDelete }) {
|
|
2494
|
-
const wrapperClasses = (0,
|
|
2661
|
+
const wrapperClasses = (0, import_clsx35.default)("flex", "items-center", "justify-center", {
|
|
2495
2662
|
[import_component_theme20.tagColors[color]]: variant === "normal",
|
|
2496
2663
|
[import_component_theme20.tagLightColors[color]]: variant === "light",
|
|
2497
2664
|
"h-[14px] typography-label11regular": !isEditable && size === "x-small",
|
|
@@ -2503,65 +2670,177 @@ function Tag({ id, children, color, variant = "normal", size = "medium", isEdita
|
|
|
2503
2670
|
"py-0.5 px-1": !isEditable,
|
|
2504
2671
|
"py-1 px-2": isEditable
|
|
2505
2672
|
});
|
|
2506
|
-
return /* @__PURE__ */ (0,
|
|
2673
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: wrapperClasses, children: [
|
|
2507
2674
|
children,
|
|
2508
|
-
isEditable ? /* @__PURE__ */ (0,
|
|
2675
|
+
isEditable ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(DeleteIcon, { onClick: () => onDelete(id), color, variant }) : null
|
|
2509
2676
|
] });
|
|
2510
2677
|
}
|
|
2511
2678
|
|
|
2512
2679
|
// src/text-area/text-area.tsx
|
|
2513
|
-
var
|
|
2514
|
-
var
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
);
|
|
2541
|
-
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
2542
|
-
"textarea",
|
|
2543
|
-
{
|
|
2544
|
-
ref,
|
|
2545
|
-
className: classes,
|
|
2546
|
-
disabled,
|
|
2547
|
-
...props,
|
|
2548
|
-
style: {
|
|
2549
|
-
...{ maxHeight },
|
|
2550
|
-
// 自動高さではない場合で、height 指定がある場合は設定する
|
|
2551
|
-
...!autoHeight && height !== null ? { height } : {},
|
|
2552
|
-
// 自動高さの場合で、height が指定されている場合は、height を minHeight に設定する
|
|
2553
|
-
...autoHeight && height !== null ? { minHeight: height } : {}
|
|
2554
|
-
}
|
|
2555
|
-
}
|
|
2556
|
-
) });
|
|
2680
|
+
var import_clsx38 = require("clsx");
|
|
2681
|
+
var import_react46 = require("react");
|
|
2682
|
+
|
|
2683
|
+
// src/text-area/text-area-context.tsx
|
|
2684
|
+
var import_react43 = require("react");
|
|
2685
|
+
var TextAreaCompoundContext = (0, import_react43.createContext)(null);
|
|
2686
|
+
var useTextAreaCompoundContext = (componentName) => {
|
|
2687
|
+
const context = (0, import_react43.useContext)(TextAreaCompoundContext);
|
|
2688
|
+
if (context == null) {
|
|
2689
|
+
throw new Error(`${componentName} \u3092\u4F7F\u7528\u3059\u308B\u306B\u306F TextArea \u306E\u5B50\u8981\u7D20\u3068\u3057\u3066\u914D\u7F6E\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u3002`);
|
|
2690
|
+
}
|
|
2691
|
+
return context;
|
|
2692
|
+
};
|
|
2693
|
+
|
|
2694
|
+
// src/text-area/text-area-error-message.tsx
|
|
2695
|
+
var import_clsx36 = require("clsx");
|
|
2696
|
+
var import_react44 = require("react");
|
|
2697
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
2698
|
+
var TextAreaErrorMessage = (0, import_react44.forwardRef)(
|
|
2699
|
+
({ "aria-live": ariaLive = "assertive", ...props }, ref) => {
|
|
2700
|
+
const { textAreaProps } = useTextAreaCompoundContext("TextArea.ErrorMessage");
|
|
2701
|
+
const typographyClass = textAreaProps.size === "large" ? "typography-label12regular" : "typography-label11regular";
|
|
2702
|
+
const shouldRender = textAreaProps.isError === true;
|
|
2703
|
+
if (!shouldRender) {
|
|
2704
|
+
return null;
|
|
2705
|
+
}
|
|
2706
|
+
const errorMessageClassName = (0, import_clsx36.clsx)(typographyClass, "text-supportError");
|
|
2707
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { ref, className: errorMessageClassName, "aria-live": ariaLive, ...props });
|
|
2557
2708
|
}
|
|
2558
2709
|
);
|
|
2559
|
-
|
|
2710
|
+
TextAreaErrorMessage.displayName = "TextArea.ErrorMessage";
|
|
2711
|
+
|
|
2712
|
+
// src/text-area/text-area-helper-message.tsx
|
|
2713
|
+
var import_clsx37 = require("clsx");
|
|
2714
|
+
var import_react45 = require("react");
|
|
2715
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
2716
|
+
var TextAreaHelperMessage = (0, import_react45.forwardRef)((props, ref) => {
|
|
2717
|
+
const { textAreaProps } = useTextAreaCompoundContext("TextArea.HelperMessage");
|
|
2718
|
+
const typographyClass = textAreaProps.size === "large" ? "typography-label12regular" : "typography-label11regular";
|
|
2719
|
+
const helperMessageClassName = (0, import_clsx37.clsx)(typographyClass, "text-text02");
|
|
2720
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { ref, className: helperMessageClassName, ...props });
|
|
2721
|
+
});
|
|
2722
|
+
TextAreaHelperMessage.displayName = "TextArea.HelperMessage";
|
|
2723
|
+
|
|
2724
|
+
// src/text-area/text-area.tsx
|
|
2725
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
2726
|
+
function TextAreaInner({
|
|
2727
|
+
size = "medium",
|
|
2728
|
+
isResizable = false,
|
|
2729
|
+
autoHeight = false,
|
|
2730
|
+
maxHeight,
|
|
2731
|
+
isError = false,
|
|
2732
|
+
disabled = false,
|
|
2733
|
+
height,
|
|
2734
|
+
children,
|
|
2735
|
+
...props
|
|
2736
|
+
}, ref) {
|
|
2737
|
+
const autoGeneratedId = (0, import_react46.useId)();
|
|
2738
|
+
const textAreaPropsForContext = (0, import_react46.useMemo)(
|
|
2739
|
+
() => ({
|
|
2740
|
+
size,
|
|
2741
|
+
isError
|
|
2742
|
+
}),
|
|
2743
|
+
[size, isError]
|
|
2744
|
+
);
|
|
2745
|
+
const contextValue = (0, import_react46.useMemo)(
|
|
2746
|
+
() => ({
|
|
2747
|
+
textAreaProps: textAreaPropsForContext,
|
|
2748
|
+
forwardedRef: ref
|
|
2749
|
+
}),
|
|
2750
|
+
[textAreaPropsForContext, ref]
|
|
2751
|
+
);
|
|
2752
|
+
const helperMessageIds = [];
|
|
2753
|
+
const errorIds = [];
|
|
2754
|
+
const describedByBaseId = props.id ?? autoGeneratedId;
|
|
2755
|
+
const enhancedChildren = import_react46.Children.map(children, (child) => {
|
|
2756
|
+
if (!(0, import_react46.isValidElement)(child)) {
|
|
2757
|
+
return child;
|
|
2758
|
+
}
|
|
2759
|
+
if (child.type === TextAreaHelperMessage) {
|
|
2760
|
+
const helperChild = child;
|
|
2761
|
+
const assignedId = helperChild.props.id ?? `${describedByBaseId}-helper-${helperMessageIds.length + 1}`;
|
|
2762
|
+
helperMessageIds.push(assignedId);
|
|
2763
|
+
return (0, import_react46.cloneElement)(helperChild, { id: assignedId });
|
|
2764
|
+
}
|
|
2765
|
+
if (child.type === TextAreaErrorMessage && isError) {
|
|
2766
|
+
const errorChild = child;
|
|
2767
|
+
const assignedId = errorChild.props.id ?? `${describedByBaseId}-error-${errorIds.length + 1}`;
|
|
2768
|
+
errorIds.push(assignedId);
|
|
2769
|
+
return (0, import_react46.cloneElement)(errorChild, { id: assignedId });
|
|
2770
|
+
}
|
|
2771
|
+
return child;
|
|
2772
|
+
});
|
|
2773
|
+
const describedByFromProps = typeof props["aria-describedby"] === "string" ? props["aria-describedby"] : null;
|
|
2774
|
+
const describedByList = [describedByFromProps, ...helperMessageIds, ...errorIds].filter(
|
|
2775
|
+
(id) => typeof id === "string" && id.trim().length > 0
|
|
2776
|
+
);
|
|
2777
|
+
const describedByProps = describedByList.length > 0 ? {
|
|
2778
|
+
"aria-describedby": describedByList.join(" ")
|
|
2779
|
+
} : {};
|
|
2780
|
+
const shouldMarkInvalid = isError === true || errorIds.length > 0;
|
|
2781
|
+
const ariaInvalidFromProps = props["aria-invalid"];
|
|
2782
|
+
const ariaInvalidValue = ariaInvalidFromProps != null ? ariaInvalidFromProps : shouldMarkInvalid ? true : null;
|
|
2783
|
+
const ariaInvalidProps = ariaInvalidValue == null ? {} : { "aria-invalid": ariaInvalidValue };
|
|
2784
|
+
const mergedTextAreaProps = {
|
|
2785
|
+
...props,
|
|
2786
|
+
...describedByProps,
|
|
2787
|
+
...ariaInvalidProps
|
|
2788
|
+
};
|
|
2789
|
+
const classes = (0, import_clsx38.clsx)(
|
|
2790
|
+
"w-full rounded border outline-0 placeholder:text-textPlaceholder disabled:text-textPlaceholder",
|
|
2791
|
+
{
|
|
2792
|
+
"border-supportError": isError && !disabled,
|
|
2793
|
+
"hover:border-hoverInput": !disabled && !isError,
|
|
2794
|
+
"border-uiBorder02 hover:focus-within:border-activeInput focus-within:border-activeInput text-text01": !isError,
|
|
2795
|
+
"bg-disabled02 border-disabled01": disabled,
|
|
2796
|
+
"typography-body14regular px-2 pt-2 pb-2": size === "medium",
|
|
2797
|
+
"text-4 leading-normal px-3.5 py-2.5": size === "large",
|
|
2798
|
+
"field-sizing-content": autoHeight,
|
|
2799
|
+
"text-supportError": isError,
|
|
2800
|
+
"resize-none": !isResizable
|
|
2801
|
+
}
|
|
2802
|
+
);
|
|
2803
|
+
const textAreaElement = /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
2804
|
+
"textarea",
|
|
2805
|
+
{
|
|
2806
|
+
ref,
|
|
2807
|
+
className: classes,
|
|
2808
|
+
...mergedTextAreaProps,
|
|
2809
|
+
disabled,
|
|
2810
|
+
style: {
|
|
2811
|
+
...{ maxHeight },
|
|
2812
|
+
// 自動高さではない場合で、height 指定がある場合は設定する
|
|
2813
|
+
...!autoHeight && height !== null ? { height } : {},
|
|
2814
|
+
// 自動高さの場合で、height が指定されている場合は、height を minHeight に設定する
|
|
2815
|
+
...autoHeight && height !== null ? { minHeight: height } : {}
|
|
2816
|
+
}
|
|
2817
|
+
}
|
|
2818
|
+
) });
|
|
2819
|
+
const stackedChildren = enhancedChildren == null ? [] : import_react46.Children.toArray(enhancedChildren);
|
|
2820
|
+
const hasMessageChildren = stackedChildren.length > 0;
|
|
2821
|
+
if (!hasMessageChildren) {
|
|
2822
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(TextAreaCompoundContext.Provider, { value: contextValue, children: textAreaElement });
|
|
2823
|
+
}
|
|
2824
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(TextAreaCompoundContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
2825
|
+
textAreaElement,
|
|
2826
|
+
stackedChildren
|
|
2827
|
+
] }) });
|
|
2828
|
+
}
|
|
2829
|
+
var attachStatics2 = (component) => {
|
|
2830
|
+
component.HelperMessage = TextAreaHelperMessage;
|
|
2831
|
+
component.ErrorMessage = TextAreaErrorMessage;
|
|
2832
|
+
component.displayName = "TextArea";
|
|
2833
|
+
return component;
|
|
2834
|
+
};
|
|
2835
|
+
var TextAreaBase = (0, import_react46.forwardRef)(function TextAreaBase2(props, ref) {
|
|
2836
|
+
return TextAreaInner(props, ref);
|
|
2837
|
+
});
|
|
2838
|
+
var TextArea = attachStatics2(TextAreaBase);
|
|
2560
2839
|
|
|
2561
2840
|
// src/toast/toast.tsx
|
|
2562
|
-
var
|
|
2563
|
-
var
|
|
2564
|
-
var
|
|
2841
|
+
var import_clsx39 = __toESM(require("clsx"));
|
|
2842
|
+
var import_react47 = require("react");
|
|
2843
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
2565
2844
|
var CLOSE_TIME_MSEC = 5e3;
|
|
2566
2845
|
function Toast({
|
|
2567
2846
|
state = "information",
|
|
@@ -2571,8 +2850,8 @@ function Toast({
|
|
|
2571
2850
|
children,
|
|
2572
2851
|
onClickClose
|
|
2573
2852
|
}) {
|
|
2574
|
-
const [isRemoving, setIsRemoving] = (0,
|
|
2575
|
-
const handleClose = (0,
|
|
2853
|
+
const [isRemoving, setIsRemoving] = (0, import_react47.useState)(false);
|
|
2854
|
+
const handleClose = (0, import_react47.useCallback)(() => {
|
|
2576
2855
|
if (isAnimation) {
|
|
2577
2856
|
setIsRemoving(true);
|
|
2578
2857
|
} else {
|
|
@@ -2580,17 +2859,17 @@ function Toast({
|
|
|
2580
2859
|
}
|
|
2581
2860
|
}, [isAnimation, onClickClose]);
|
|
2582
2861
|
const handleAnimationEnd = (e) => window.getComputedStyle(e.currentTarget).opacity === "0" && onClickClose();
|
|
2583
|
-
const wrapperClasses = (0,
|
|
2862
|
+
const wrapperClasses = (0, import_clsx39.default)("pointer-events-auto flex items-start gap-1 bg-white p-4 shadow-floatingShadow", {
|
|
2584
2863
|
["animate-toast-in"]: isAnimation && !isRemoving,
|
|
2585
2864
|
["animate-toast-out opacity-0"]: isAnimation && isRemoving
|
|
2586
2865
|
});
|
|
2587
|
-
const iconClasses = (0,
|
|
2866
|
+
const iconClasses = (0, import_clsx39.default)("flex items-center", {
|
|
2588
2867
|
"fill-supportSuccess": state === "success",
|
|
2589
2868
|
"fill-supportError": state === "error",
|
|
2590
2869
|
"fill-supportWarning": state === "warning",
|
|
2591
2870
|
"fill-supportInfo": state === "information"
|
|
2592
2871
|
});
|
|
2593
|
-
const textClasses = (0,
|
|
2872
|
+
const textClasses = (0, import_clsx39.default)("typography-body13regular flex-1 pt-[3px]", {
|
|
2594
2873
|
"text-supportError": state === "error",
|
|
2595
2874
|
"text-text01": state === "success" || state === "warning" || state === "information"
|
|
2596
2875
|
});
|
|
@@ -2600,7 +2879,7 @@ function Toast({
|
|
|
2600
2879
|
warning: "warning",
|
|
2601
2880
|
information: "information-filled"
|
|
2602
2881
|
};
|
|
2603
|
-
(0,
|
|
2882
|
+
(0, import_react47.useEffect)(() => {
|
|
2604
2883
|
const timer = window.setTimeout(() => {
|
|
2605
2884
|
if (isAutoClose) {
|
|
2606
2885
|
setIsRemoving(true);
|
|
@@ -2608,45 +2887,45 @@ function Toast({
|
|
|
2608
2887
|
}, CLOSE_TIME_MSEC);
|
|
2609
2888
|
return () => window.clearTimeout(timer);
|
|
2610
2889
|
}, [isAutoClose]);
|
|
2611
|
-
return /* @__PURE__ */ (0,
|
|
2612
|
-
/* @__PURE__ */ (0,
|
|
2613
|
-
/* @__PURE__ */ (0,
|
|
2614
|
-
/* @__PURE__ */ (0,
|
|
2890
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: wrapperClasses, style: { width }, onAnimationEnd: handleAnimationEnd, children: [
|
|
2891
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: iconClasses, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Icon, { name: iconName[state] }) }),
|
|
2892
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("p", { className: textClasses, children }),
|
|
2893
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)(IconButton, { icon: "close", size: "medium", variant: "text", onClick: handleClose, isNoPadding: true })
|
|
2615
2894
|
] });
|
|
2616
2895
|
}
|
|
2617
2896
|
|
|
2618
2897
|
// src/toast/toast-provider.tsx
|
|
2619
|
-
var
|
|
2898
|
+
var import_react48 = require("react");
|
|
2620
2899
|
var import_react_dom3 = require("react-dom");
|
|
2621
|
-
var
|
|
2622
|
-
var ToastContext = (0,
|
|
2900
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
2901
|
+
var ToastContext = (0, import_react48.createContext)({});
|
|
2623
2902
|
var ToastProvider = ({ children }) => {
|
|
2624
|
-
const [isClientRender, setIsClientRender] = (0,
|
|
2625
|
-
const [toasts, setToasts] = (0,
|
|
2626
|
-
const addToast = (0,
|
|
2903
|
+
const [isClientRender, setIsClientRender] = (0, import_react48.useState)(false);
|
|
2904
|
+
const [toasts, setToasts] = (0, import_react48.useState)([]);
|
|
2905
|
+
const addToast = (0, import_react48.useCallback)(({ message, state }) => {
|
|
2627
2906
|
setToasts((prev) => [...prev, { id: Math.trunc(Math.random() * 1e5), message, state }]);
|
|
2628
2907
|
}, []);
|
|
2629
|
-
const removeToast = (0,
|
|
2908
|
+
const removeToast = (0, import_react48.useCallback)((id) => {
|
|
2630
2909
|
setToasts((prev) => prev.filter((snackbar) => snackbar.id !== id));
|
|
2631
2910
|
}, []);
|
|
2632
|
-
(0,
|
|
2911
|
+
(0, import_react48.useEffect)(() => {
|
|
2633
2912
|
setIsClientRender(true);
|
|
2634
2913
|
}, []);
|
|
2635
|
-
return /* @__PURE__ */ (0,
|
|
2914
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(ToastContext.Provider, { value: { addToast, removeToast }, children: [
|
|
2636
2915
|
children,
|
|
2637
2916
|
isClientRender && (0, import_react_dom3.createPortal)(
|
|
2638
|
-
/* @__PURE__ */ (0,
|
|
2917
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("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__ */ (0, import_jsx_runtime57.jsx)(Toast, { state, isAutoClose: true, isAnimation: true, onClickClose: () => removeToast(id), width: 475, children: message }, id)) }),
|
|
2639
2918
|
document.body
|
|
2640
2919
|
)
|
|
2641
2920
|
] });
|
|
2642
2921
|
};
|
|
2643
2922
|
var useToast = () => {
|
|
2644
|
-
return (0,
|
|
2923
|
+
return (0, import_react48.useContext)(ToastContext);
|
|
2645
2924
|
};
|
|
2646
2925
|
|
|
2647
2926
|
// src/toggle/toggle.tsx
|
|
2648
|
-
var
|
|
2649
|
-
var
|
|
2927
|
+
var import_clsx40 = __toESM(require("clsx"));
|
|
2928
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
2650
2929
|
function Toggle({
|
|
2651
2930
|
id,
|
|
2652
2931
|
size = "medium",
|
|
@@ -2656,7 +2935,7 @@ function Toggle({
|
|
|
2656
2935
|
labelPosition = "right",
|
|
2657
2936
|
isDisabled = false
|
|
2658
2937
|
}) {
|
|
2659
|
-
const baseClasses = (0,
|
|
2938
|
+
const baseClasses = (0, import_clsx40.default)("relative flex items-center rounded-full", {
|
|
2660
2939
|
"bg-disabledOn": isDisabled && isChecked,
|
|
2661
2940
|
"bg-disabled01": isDisabled && !isChecked,
|
|
2662
2941
|
"bg-interactive01 peer-hover:bg-hover01": !isDisabled && isChecked,
|
|
@@ -2664,16 +2943,16 @@ function Toggle({
|
|
|
2664
2943
|
"w-8 h-4 px-[3px]": size === "small",
|
|
2665
2944
|
"w-12 h-6 px-1": size === "medium" || size === "large"
|
|
2666
2945
|
});
|
|
2667
|
-
const inputClasses = (0,
|
|
2946
|
+
const inputClasses = (0, import_clsx40.default)(
|
|
2668
2947
|
"peer absolute inset-0 z-[1] opacity-0",
|
|
2669
2948
|
isDisabled ? "cursor-not-allowed" : "cursor-pointer"
|
|
2670
2949
|
);
|
|
2671
|
-
const indicatorClasses = (0,
|
|
2950
|
+
const indicatorClasses = (0, import_clsx40.default)("rounded-full bg-iconOnColor", {
|
|
2672
2951
|
"w-2.5 h-2.5": size === "small",
|
|
2673
2952
|
"w-4 h-4": size === "medium" || size === "large",
|
|
2674
2953
|
"ml-auto": isChecked
|
|
2675
2954
|
});
|
|
2676
|
-
const labelClasses = (0,
|
|
2955
|
+
const labelClasses = (0, import_clsx40.default)("break-all", {
|
|
2677
2956
|
"mr-2": labelPosition === "left",
|
|
2678
2957
|
"ml-2": labelPosition === "right",
|
|
2679
2958
|
"typography-label14regular": size === "small" || size === "medium",
|
|
@@ -2681,9 +2960,9 @@ function Toggle({
|
|
|
2681
2960
|
"pointer-events-none cursor-not-allowed text-disabled01": isDisabled,
|
|
2682
2961
|
"cursor-pointer text-text01": !isDisabled
|
|
2683
2962
|
});
|
|
2684
|
-
return /* @__PURE__ */ (0,
|
|
2685
|
-
label != null && labelPosition === "left" && /* @__PURE__ */ (0,
|
|
2686
|
-
/* @__PURE__ */ (0,
|
|
2963
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "relative flex flex-[0_0_auto] items-center", children: [
|
|
2964
|
+
label != null && labelPosition === "left" && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("label", { htmlFor: id, className: labelClasses, children: label }),
|
|
2965
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
2687
2966
|
"input",
|
|
2688
2967
|
{
|
|
2689
2968
|
className: inputClasses,
|
|
@@ -2695,23 +2974,23 @@ function Toggle({
|
|
|
2695
2974
|
disabled: isDisabled
|
|
2696
2975
|
}
|
|
2697
2976
|
),
|
|
2698
|
-
/* @__PURE__ */ (0,
|
|
2699
|
-
label != null && labelPosition === "right" && /* @__PURE__ */ (0,
|
|
2977
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { className: baseClasses, children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: indicatorClasses }) }),
|
|
2978
|
+
label != null && labelPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("label", { htmlFor: id, className: labelClasses, children: label })
|
|
2700
2979
|
] });
|
|
2701
2980
|
}
|
|
2702
2981
|
|
|
2703
2982
|
// src/tooltip/tooltip.tsx
|
|
2704
|
-
var
|
|
2983
|
+
var import_react50 = require("react");
|
|
2705
2984
|
var import_react_dom4 = require("react-dom");
|
|
2706
2985
|
|
|
2707
2986
|
// src/tooltip/tooltip-content.tsx
|
|
2708
|
-
var
|
|
2987
|
+
var import_clsx42 = __toESM(require("clsx"));
|
|
2709
2988
|
|
|
2710
2989
|
// src/tooltip/tail-icon.tsx
|
|
2711
|
-
var
|
|
2712
|
-
var
|
|
2990
|
+
var import_clsx41 = __toESM(require("clsx"));
|
|
2991
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
2713
2992
|
var TailIcon = (props) => {
|
|
2714
|
-
const tailClasses = (0,
|
|
2993
|
+
const tailClasses = (0, import_clsx41.default)("absolute fill-uiBackgroundTooltip", {
|
|
2715
2994
|
"rotate-180": props.verticalPosition === "bottom",
|
|
2716
2995
|
"rotate-0": props.verticalPosition !== "bottom",
|
|
2717
2996
|
"-top-1": props.verticalPosition === "bottom" && props.size === "small",
|
|
@@ -2726,9 +3005,9 @@ var TailIcon = (props) => {
|
|
|
2726
3005
|
"left-1/2 -translate-x-2": props.horizontalAlign === "center" && props.size !== "small"
|
|
2727
3006
|
});
|
|
2728
3007
|
if (props.size === "small") {
|
|
2729
|
-
return /* @__PURE__ */ (0,
|
|
3008
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("svg", { className: tailClasses, width: "8", height: "4", viewBox: "0 0 8 4", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("path", { d: "M4 4L0 0H8L4 4Z" }) });
|
|
2730
3009
|
} else {
|
|
2731
|
-
return /* @__PURE__ */ (0,
|
|
3010
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
2732
3011
|
"svg",
|
|
2733
3012
|
{
|
|
2734
3013
|
className: tailClasses,
|
|
@@ -2737,14 +3016,14 @@ var TailIcon = (props) => {
|
|
|
2737
3016
|
viewBox: "0 0 14 8",
|
|
2738
3017
|
fill: "none",
|
|
2739
3018
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2740
|
-
children: /* @__PURE__ */ (0,
|
|
3019
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("path", { d: "M7 8L0 0H14L7 8Z" })
|
|
2741
3020
|
}
|
|
2742
3021
|
);
|
|
2743
3022
|
}
|
|
2744
3023
|
};
|
|
2745
3024
|
|
|
2746
3025
|
// src/tooltip/tooltip-content.tsx
|
|
2747
|
-
var
|
|
3026
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
2748
3027
|
var TooltipContent = ({
|
|
2749
3028
|
content,
|
|
2750
3029
|
horizontalAlign,
|
|
@@ -2754,7 +3033,7 @@ var TooltipContent = ({
|
|
|
2754
3033
|
maxWidth,
|
|
2755
3034
|
isPortal = false
|
|
2756
3035
|
}) => {
|
|
2757
|
-
const tooltipWrapperClasses = (0,
|
|
3036
|
+
const tooltipWrapperClasses = (0, import_clsx42.default)("absolute z-tooltip m-auto flex", {
|
|
2758
3037
|
"top-0": !isPortal && verticalPosition === "top",
|
|
2759
3038
|
"bottom-0": !isPortal && verticalPosition === "bottom",
|
|
2760
3039
|
"justify-start": horizontalAlign === "left",
|
|
@@ -2763,7 +3042,7 @@ var TooltipContent = ({
|
|
|
2763
3042
|
"w-[24px]": size === "small",
|
|
2764
3043
|
"w-[46px]": size !== "small"
|
|
2765
3044
|
});
|
|
2766
|
-
const tooltipBodyClasses = (0,
|
|
3045
|
+
const tooltipBodyClasses = (0, import_clsx42.default)(
|
|
2767
3046
|
"absolute z-tooltip inline-block w-max rounded bg-uiBackgroundTooltip text-textOnColor",
|
|
2768
3047
|
{
|
|
2769
3048
|
"typography-body12regular": size === "small",
|
|
@@ -2780,7 +3059,7 @@ var TooltipContent = ({
|
|
|
2780
3059
|
transform: `translate(${tooltipPosition.translateX}, ${tooltipPosition.translateY})`,
|
|
2781
3060
|
...tooltipPosition
|
|
2782
3061
|
} : {};
|
|
2783
|
-
return /* @__PURE__ */ (0,
|
|
3062
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { className: tooltipWrapperClasses, style: tooltipWrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
|
|
2784
3063
|
"div",
|
|
2785
3064
|
{
|
|
2786
3065
|
className: tooltipBodyClasses,
|
|
@@ -2789,16 +3068,16 @@ var TooltipContent = ({
|
|
|
2789
3068
|
},
|
|
2790
3069
|
children: [
|
|
2791
3070
|
content,
|
|
2792
|
-
/* @__PURE__ */ (0,
|
|
3071
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(TailIcon, { size, verticalPosition, horizontalAlign })
|
|
2793
3072
|
]
|
|
2794
3073
|
}
|
|
2795
3074
|
) });
|
|
2796
3075
|
};
|
|
2797
3076
|
|
|
2798
3077
|
// src/tooltip/tooltip-hook.ts
|
|
2799
|
-
var
|
|
3078
|
+
var import_react49 = require("react");
|
|
2800
3079
|
var useTooltip = () => {
|
|
2801
|
-
const calculatePosition = (0,
|
|
3080
|
+
const calculatePosition = (0, import_react49.useCallback)(
|
|
2802
3081
|
(args) => {
|
|
2803
3082
|
const result = {
|
|
2804
3083
|
maxWidth: "none",
|
|
@@ -2850,7 +3129,7 @@ var useTooltip = () => {
|
|
|
2850
3129
|
};
|
|
2851
3130
|
|
|
2852
3131
|
// src/tooltip/tooltip.tsx
|
|
2853
|
-
var
|
|
3132
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
2854
3133
|
function Tooltip({
|
|
2855
3134
|
children,
|
|
2856
3135
|
content,
|
|
@@ -2862,8 +3141,8 @@ function Tooltip({
|
|
|
2862
3141
|
portalTarget
|
|
2863
3142
|
}) {
|
|
2864
3143
|
const { calculatePosition } = useTooltip();
|
|
2865
|
-
const [isVisible, setIsVisible] = (0,
|
|
2866
|
-
const [tooltipPosition, setTooltipPosition] = (0,
|
|
3144
|
+
const [isVisible, setIsVisible] = (0, import_react50.useState)(false);
|
|
3145
|
+
const [tooltipPosition, setTooltipPosition] = (0, import_react50.useState)({
|
|
2867
3146
|
maxWidth: "none",
|
|
2868
3147
|
width: "auto",
|
|
2869
3148
|
left: "0px",
|
|
@@ -2872,23 +3151,23 @@ function Tooltip({
|
|
|
2872
3151
|
translateX: "0",
|
|
2873
3152
|
translateY: "0"
|
|
2874
3153
|
});
|
|
2875
|
-
const targetRef = (0,
|
|
2876
|
-
const handleMouseOverWrapper = (0,
|
|
3154
|
+
const targetRef = (0, import_react50.useRef)(null);
|
|
3155
|
+
const handleMouseOverWrapper = (0, import_react50.useCallback)(() => {
|
|
2877
3156
|
if (isDisabledHover) {
|
|
2878
3157
|
return;
|
|
2879
3158
|
}
|
|
2880
3159
|
setIsVisible(true);
|
|
2881
3160
|
}, [isDisabledHover]);
|
|
2882
|
-
const handleMouseOutWrapper = (0,
|
|
3161
|
+
const handleMouseOutWrapper = (0, import_react50.useCallback)(() => {
|
|
2883
3162
|
setIsVisible(false);
|
|
2884
3163
|
}, []);
|
|
2885
|
-
(0,
|
|
3164
|
+
(0, import_react50.useEffect)(() => {
|
|
2886
3165
|
if (targetRef.current === null) return;
|
|
2887
3166
|
const dimensions = targetRef.current?.getBoundingClientRect();
|
|
2888
3167
|
const position = calculatePosition({ dimensions, maxWidth, verticalPosition, horizontalAlign, tooltipSize: size });
|
|
2889
3168
|
setTooltipPosition(position);
|
|
2890
3169
|
}, [calculatePosition, horizontalAlign, maxWidth, size, verticalPosition]);
|
|
2891
|
-
return /* @__PURE__ */ (0,
|
|
3170
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
2892
3171
|
"div",
|
|
2893
3172
|
{
|
|
2894
3173
|
ref: targetRef,
|
|
@@ -2897,7 +3176,7 @@ function Tooltip({
|
|
|
2897
3176
|
onMouseLeave: handleMouseOutWrapper,
|
|
2898
3177
|
children: [
|
|
2899
3178
|
children,
|
|
2900
|
-
isVisible && (portalTarget == null ? /* @__PURE__ */ (0,
|
|
3179
|
+
isVisible && (portalTarget == null ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
2901
3180
|
TooltipContent,
|
|
2902
3181
|
{
|
|
2903
3182
|
content,
|
|
@@ -2908,7 +3187,7 @@ function Tooltip({
|
|
|
2908
3187
|
tooltipPosition
|
|
2909
3188
|
}
|
|
2910
3189
|
) : (0, import_react_dom4.createPortal)(
|
|
2911
|
-
/* @__PURE__ */ (0,
|
|
3190
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
2912
3191
|
TooltipContent,
|
|
2913
3192
|
{
|
|
2914
3193
|
isPortal: true,
|