@shoplflow/base 0.29.0 → 0.30.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.cjs CHANGED
@@ -2896,7 +2896,8 @@ exports.TreeItem = (_a) => {
2896
2896
  depth = 0,
2897
2897
  initialIsOpen,
2898
2898
  isOpen,
2899
- disabled = false
2899
+ disabled = false,
2900
+ onClick
2900
2901
  } = _b, rest = __objRest(_b, [
2901
2902
  "children",
2902
2903
  "label",
@@ -2905,7 +2906,8 @@ exports.TreeItem = (_a) => {
2905
2906
  "depth",
2906
2907
  "initialIsOpen",
2907
2908
  "isOpen",
2908
- "disabled"
2909
+ "disabled",
2910
+ "onClick"
2909
2911
  ]);
2910
2912
  const [isOpened, setIsOpened] = React3__namespace.default.useState(initialIsOpen != null ? initialIsOpen : false);
2911
2913
  const CloneChildren = React3__namespace.default.Children.map(children, (child) => {
@@ -2923,6 +2925,16 @@ exports.TreeItem = (_a) => {
2923
2925
  e.stopPropagation();
2924
2926
  setIsOpened((prev) => !prev);
2925
2927
  };
2928
+ const handleClickTreeItem = (e) => {
2929
+ if (disabled || !onClick) {
2930
+ return;
2931
+ }
2932
+ return onClick(e);
2933
+ };
2934
+ const LeftSourceClone = leftSource ? React3__namespace.default.cloneElement(leftSource, __spreadValues({
2935
+ disabled,
2936
+ onClick
2937
+ }, rest)) : leftSource;
2926
2938
  React3.useEffect(() => {
2927
2939
  if (isOpen !== void 0) {
2928
2940
  setIsOpened(isOpen);
@@ -2937,10 +2949,11 @@ exports.TreeItem = (_a) => {
2937
2949
  variants: fadeInOut
2938
2950
  }, AnimateKey), {
2939
2951
  layout: true,
2940
- key: String(label)
2952
+ key: String(label),
2953
+ onClick: handleClickTreeItem
2941
2954
  }), rest),
2942
2955
  /* @__PURE__ */ jsxRuntime.jsxs(LeftElementWrapper, { children: [
2943
- leftSource,
2956
+ LeftSourceClone && LeftSourceClone,
2944
2957
  /* @__PURE__ */ jsxRuntime.jsx(exports.StackContainer, { padding: "0 0 0 4px", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Text, { typography: "body1_400", lineClamp: 1, color: disabled ? "neutral350" : "neutral700", children: label }) })
2945
2958
  ] }),
2946
2959
  /* @__PURE__ */ jsxRuntime.jsxs(RightElementWrapper, { children: [
@@ -3983,6 +3996,151 @@ var Pagination = (_a) => {
3983
3996
  };
3984
3997
  Pagination.SizeSelector = PaginationSizeSelector_default;
3985
3998
  exports.Pagination = Pagination;
3999
+ var getLabelStyleByStatus = (selected, disabled) => {
4000
+ if (disabled) {
4001
+ return react$1.css`
4002
+ cursor: not-allowed;
4003
+ opacity: 0.5;
4004
+ `;
4005
+ }
4006
+ if (selected) {
4007
+ return react$1.css`
4008
+ cursor: default;
4009
+ background-color: ${exports.colorTokens.neutral0};
4010
+ `;
4011
+ }
4012
+ };
4013
+ var getLabelStyleBySizeVar = (sizeVar) => {
4014
+ switch (sizeVar) {
4015
+ case "S": {
4016
+ return react$1.css`
4017
+ padding: 4px 8px;
4018
+ `;
4019
+ }
4020
+ case "M": {
4021
+ return react$1.css`
4022
+ padding: 8px;
4023
+ `;
4024
+ }
4025
+ default: {
4026
+ return;
4027
+ }
4028
+ }
4029
+ };
4030
+ var StyledToggleButton = styled6__default.default.div`
4031
+ display: flex;
4032
+ padding: ${exports.spacingTokens.spacing04};
4033
+ align-items: center;
4034
+ background-color: ${exports.colorTokens.neutral150};
4035
+ border-radius: ${exports.borderRadiusTokens.borderRadius06};
4036
+ `;
4037
+ var StyledToggleInner = styled6__default.default.button`
4038
+ height: fit-content;
4039
+ width: fit-content;
4040
+ cursor: pointer;
4041
+
4042
+ & input:checked + label {
4043
+ background-color: ${exports.colorTokens.neutral0};
4044
+ cursor: default;
4045
+ }
4046
+ `;
4047
+ var StyledToggleInnerLabel = styled6__default.default.label`
4048
+ display: flex;
4049
+ align-items: center;
4050
+ justify-content: center;
4051
+ min-width: ${({ width }) => `${width}px`};
4052
+ padding: 0 12px;
4053
+ border-radius: 6px;
4054
+ background-color: transparent;
4055
+ ${({ disabled, selected }) => getLabelStyleByStatus(selected, Boolean(disabled))}
4056
+ ${({ sizeVar }) => getLabelStyleBySizeVar(sizeVar)}
4057
+
4058
+ &:hover {
4059
+ ${({ disabled }) => !disabled && react$1.css`
4060
+ cursor: pointer;
4061
+ background-color: ${exports.colorTokens.neutral400_5};
4062
+ `}
4063
+ }
4064
+ `;
4065
+ var StyledToggleInnerInput = styled6__default.default.input`
4066
+ position: absolute;
4067
+ width: 0;
4068
+ height: 0;
4069
+ opacity: 0;
4070
+ visibility: hidden;
4071
+ `;
4072
+ var ToggleButtonContext = React3.createContext(null);
4073
+ var useToggleButton = () => {
4074
+ const context = React3.useContext(ToggleButtonContext);
4075
+ if (!context) {
4076
+ throw new Error("ToggleInnerButton \uCEF4\uD3EC\uB10C\uD2B8\uB294 ToggleButton \uB0B4\uBD80\uC5D0\uC11C \uC0AC\uC6A9\uD574\uC8FC\uC138\uC694");
4077
+ }
4078
+ return context;
4079
+ };
4080
+ var ToggleButton = (_a) => {
4081
+ var _b = _a, {
4082
+ fixedWidth,
4083
+ children,
4084
+ targetName,
4085
+ onChange,
4086
+ selectedValue,
4087
+ sizeVar = "S"
4088
+ } = _b, rest = __objRest(_b, [
4089
+ "fixedWidth",
4090
+ "children",
4091
+ "targetName",
4092
+ "onChange",
4093
+ "selectedValue",
4094
+ "sizeVar"
4095
+ ]);
4096
+ return /* @__PURE__ */ jsxRuntime.jsx(ToggleButtonContext.Provider, { value: { fixedWidth, targetName, onChange, selectedValue, sizeVar }, children: /* @__PURE__ */ jsxRuntime.jsx(StyledToggleButton, __spreadProps(__spreadValues({ "data-shoplflow": "ToggleButton" }, rest), { children })) });
4097
+ };
4098
+ var ToggleInnerRadio = React3.forwardRef(
4099
+ (_a, ref) => {
4100
+ var _b = _a, { label, disabled, value, id } = _b, rest = __objRest(_b, ["label", "disabled", "value", "id"]);
4101
+ const { fixedWidth, onChange, targetName, selectedValue, sizeVar } = useToggleButton();
4102
+ let selected = false;
4103
+ if (selectedValue && selectedValue === value) {
4104
+ selected = true;
4105
+ }
4106
+ return /* @__PURE__ */ jsxRuntime.jsxs(StyledToggleInner, { disabled, children: [
4107
+ /* @__PURE__ */ jsxRuntime.jsx(
4108
+ StyledToggleInnerInput,
4109
+ __spreadProps(__spreadValues({
4110
+ width: fixedWidth,
4111
+ disabled,
4112
+ selected,
4113
+ value,
4114
+ id,
4115
+ type: "radio",
4116
+ ref,
4117
+ name: targetName
4118
+ }, rest), {
4119
+ onChange
4120
+ })
4121
+ ),
4122
+ /* @__PURE__ */ jsxRuntime.jsx(
4123
+ StyledToggleInnerLabel,
4124
+ {
4125
+ htmlFor: id,
4126
+ width: fixedWidth,
4127
+ disabled,
4128
+ selected,
4129
+ sizeVar,
4130
+ children: /* @__PURE__ */ jsxRuntime.jsx(exports.Text, { lineClamp: 1, wordBreak: "break-all", typography: "body2_400", children: label })
4131
+ }
4132
+ )
4133
+ ] });
4134
+ }
4135
+ );
4136
+ ToggleButton.InnerRadio = ToggleInnerRadio;
4137
+ exports.ToggleButton = ToggleButton;
4138
+
4139
+ // src/components/ToggleButton/ToggleButton.types.ts
4140
+ exports.ToggleButtonSizeVariants = {
4141
+ S: "S",
4142
+ M: "M"
4143
+ };
3986
4144
  var SpaceMarginWrapper = styled6__default.default(framerMotion.motion.div)`
3987
4145
  position: relative;
3988
4146
  display: flex;