@carton-org/react-neumorphism
Version:
A React component library implementing the neumorphism design style
42 lines (41 loc) • 7.62 kB
JavaScript
import { jsxs as W, jsx as g } from "@emotion/react/jsx-runtime";
import { withTheme as H, css as y } from "@emotion/react";
import { forwardRef as J, useRef as N, useState as u } from "react";
import { StyledContainer as h, StyledHeader as k, StyledDropdownContent as r, StyledContentWrapper as F, StyledOptionItem as w } from "./dropdown.styles.js";
import { useClickOutside as T } from "../../hooks/useClickOutside.js";
import e from "../Typography/Typography.js";
import { useForwardRef as Y } from "../../hooks/useForwardRef.js";
import { CarretDownIcon as S } from "../../icons/CarretDownIcon.js";
const U = (c) => /* @__PURE__ */ y({
transition: "transform 0.3s ease-in-out",
transform: c ? "rotate(180deg)" : "rotate(0deg)"
}, process.env.NODE_ENV === "production" ? "" : ";label:rotateOpenIconStyle;", process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9iZW4vRG9jdW1lbnRzL1Byb2plY3RzL3JlYWN0LW5ldW1vcnBoaXNtZS9zcmMvbGliL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtDRSIsImZpbGUiOiIvVXNlcnMvYmVuL0RvY3VtZW50cy9Qcm9qZWN0cy9yZWFjdC1uZXVtb3JwaGlzbWUvc3JjL2xpYi9jb21wb25lbnRzL0Ryb3Bkb3duL0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcywgd2l0aFRoZW1lIH0gZnJvbSBcIkBlbW90aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1xuICBTdHlsZWRDb250YWluZXIsXG4gIFN0eWxlZENvbnRlbnRXcmFwcGVyLFxuICBTdHlsZWREcm9wZG93bkNvbnRlbnQsXG4gIFN0eWxlZEhlYWRlcixcbiAgU3R5bGVkT3B0aW9uSXRlbSxcbn0gZnJvbSBcIi4vZHJvcGRvd24uc3R5bGVzXCI7XG5pbXBvcnQgeyBTaXplcyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IENhcnJldERvd25JY29uIH0gZnJvbSBcIi4uLy4uL2ljb25zXCI7XG5pbXBvcnQgeyB1c2VDbGlja091dHNpZGUgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlQ2xpY2tPdXRzaWRlXCI7XG5pbXBvcnQgVHlwb2dyYXBoeSBmcm9tIFwiLi4vVHlwb2dyYXBoeS9UeXBvZ3JhcGh5XCI7XG5pbXBvcnQgeyB1c2VGb3J3YXJkUmVmIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUZvcndhcmRSZWZcIjtcblxuaW50ZXJmYWNlIE9wdGlvbiB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBEcm9wZG93blByb3BzIHtcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBvcHRpb25zOiBPcHRpb25bXTtcbiAgb25DaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICBzaXplPzogU2l6ZXM7XG4gIGRyb3Bkb3duSGVhZGVyTGFiZWxTdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG4gIGRyb3Bkb3duSGVhZGVyU3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuICBkcm9wZG93bkNvbnRlbnRTdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG4gIGRyb3Bkb3duT3B0aW9uTGFiZWxTdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG4gIGRyb3Bkb3duT3B0aW9uSXRlbVN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbn1cblxuY29uc3Qgcm90YXRlT3Blbkljb25TdHlsZSA9IChvcGVuOiBib29sZWFuKSA9PlxuICBjc3Moe1xuICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3MgZWFzZS1pbi1vdXRcIixcbiAgICB0cmFuc2Zvcm06IG9wZW4gPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICB9KTtcblxuY29uc3QgRHJvcGRvd24gPSBmb3J3YXJkUmVmPEhUTUxEaXZFbGVtZW50LCBEcm9wZG93blByb3BzPihcbiAgKFxuICAgIHtcbiAgICAgIHZhbHVlLFxuICAgICAgcGxhY2Vob2xkZXIsXG4gICAgICBvcHRpb25zLFxuICAgICAgb25DaGFuZ2UsXG4gICAgICBzaXplID0gXCJzbVwiLFxuICAgICAgZHJvcGRvd25IZWFkZXJMYWJlbFN0eWxlLFxuICAgICAgZHJvcGRvd25IZWFkZXJTdHlsZSxcbiAgICAgIGRyb3Bkb3duQ29udGVudFN0eWxlLFxuICAgICAgZHJvcGRvd25PcHRpb25MYWJlbFN0eWxlLFxuICAgICAgZHJvcGRvd25PcHRpb25JdGVtU3R5bGUsXG4gICAgfSxcbiAgICByZWYsXG4gICkgPT4ge1xuICAgIGNvbnN0IGRyb3Bkb3duQ29udGFpbmVyUmVmID0gdXNlRm9yd2FyZFJlZjxIVE1MRGl2RWxlbWVudD4ocmVmKTtcbiAgICBjb25zdCBkcm9wZG93bkhlYWRlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gICAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbY3VycmVudFZhbHVlLCBzZXRDdXJyZW50VmFsdWVdID0gdXNlU3RhdGU8c3RyaW5nIHwgdW5kZWZpbmVkPih2YWx1ZSk7XG5cbiAgICBjb25zdCBjdXJyZW50T3B0aW9uID0gb3B0aW9ucy5maW5kKFxuICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSBjdXJyZW50VmFsdWUsXG4gICAgKTtcbiAgICBjb25zdCBkaXNwbGF5UGxhY2Vob2xkZXIgPSBjdXJyZW50T3B0aW9uID09PSB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCB0b2dnbGVEcm9wZG93biA9IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgc2V0SXNPcGVuKChwcmV2KSA9PiAhcHJldik7XG4gICAgfTtcblxuICAgIHVzZUNsaWNrT3V0c2lkZShkcm9wZG93bkNvbnRhaW5lclJlZiwgKCkgPT4gc2V0SXNPcGVuKGZhbHNlKSk7XG5cbiAgICBjb25zdCBoYW5kbGVPcHRpb25TZWxlY3Rpb24gPSAoXG4gICAgICBldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRGl2RWxlbWVudD4sXG4gICAgICBvcHRpb246IE9wdGlvbixcbiAgICApID0+IHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgc2V0Q3VycmVudFZhbHVlKG9wdGlvbi52YWx1ZSk7XG4gICAgICBvbkNoYW5nZShvcHRpb24udmFsdWUpO1xuICAgICAgdG9nZ2xlRHJvcGRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZENvbnRhaW5lciByZWY9e2Ryb3Bkb3duQ29udGFpbmVyUmVmfT5cbiAgICAgICAgPFN0eWxlZEhlYWRlclxuICAgICAgICAgIG9uQ2xpY2s9e3RvZ2dsZURyb3Bkb3dufVxuICAgICAgICAgIHJlZj17ZHJvcGRvd25IZWFkZXJSZWZ9XG4gICAgICAgICAgJGlzUGxhY2Vob2xkZXI9e2Rpc3BsYXlQbGFjZWhvbGRlcn1cbiAgICAgICAgICAkc2l6ZT17c2l6ZX1cbiAgICAgICAgICAkZHJvcGRvd25IZWFkZXJTdHlsZT17ZHJvcGRvd25IZWFkZXJTdHlsZX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUeXBvZ3JhcGh5IHNpemU9e3NpemV9IGxhYmVsU3R5bGU9e2Ryb3Bkb3duSGVhZGVyTGFiZWxTdHlsZX0+XG4gICAgICAgICAgICB7Y3VycmVudE9wdGlvbj8ubGFiZWwgPz8gcGxhY2Vob2xkZXJ9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxDYXJyZXREb3duSWNvbiBjdXN0b21TdHlsZXM9e3JvdGF0ZU9wZW5JY29uU3R5bGUoaXNPcGVuKX0gLz5cbiAgICAgICAgPC9TdHlsZWRIZWFkZXI+XG4gICAgICAgIDxTdHlsZWREcm9wZG93bkNvbnRlbnQgb25DbGljaz17dG9nZ2xlRHJvcGRvd259ICRpc09wZW49e2lzT3Blbn0+XG4gICAgICAgICAgPFN0eWxlZENvbnRlbnRXcmFwcGVyXG4gICAgICAgICAgICAkc2l6ZT17c2l6ZX1cbiAgICAgICAgICAgICRkcm9wZG93bkNvbnRlbnRTdHlsZT17ZHJvcGRvd25Db250ZW50U3R5bGV9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge29wdGlvbnMubWFwKChvcHRpb24pID0+IChcbiAgICAgICAgICAgICAgPFN0eWxlZE9wdGlvbkl0ZW1cbiAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAkc2l6ZT17c2l6ZX1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZXZlbnQpID0+IGhhbmRsZU9wdGlvblNlbGVjdGlvbihldmVudCwgb3B0aW9uKX1cbiAgICAgICAgICAgICAgICAkZHJvcGRvd25PcHRpb25MYWJlbFN0eWxlPXtkcm9wZG93bk9wdGlvbkl0ZW1TdHlsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHNpemU9e3NpemV9IGxhYmVsU3R5bGU9e2Ryb3Bkb3duT3B0aW9uTGFiZWxTdHlsZX0+XG4gICAgICAgICAgICAgICAgICB7b3B0aW9uLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgPC9TdHlsZWRPcHRpb25JdGVtPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9TdHlsZWRDb250ZW50V3JhcHBlcj5cbiAgICAgICAgPC9TdHlsZWREcm9wZG93bkNvbnRlbnQ+XG4gICAgICA8L1N0eWxlZENvbnRhaW5lcj5cbiAgICApO1xuICB9LFxuKTtcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFRoZW1lKERyb3Bkb3duKTtcbiJdfQ== */"), z = J(({
value: c,
placeholder: R,
options: d,
onChange: n,
size: l = "sm",
dropdownHeaderLabelStyle: i,
dropdownHeaderStyle: B,
dropdownContentStyle: V,
dropdownOptionLabelStyle: v,
dropdownOptionItemStyle: m
}, o) => {
const Z = Y(o), t = N(null), [G, X] = u(!1), [x, s] = u(c), C = d.find((I) => I.value === x), p = C === void 0, A = (I) => {
I.stopPropagation(), X((b) => !b);
};
T(Z, () => X(!1));
const a = (I, b) => {
I.stopPropagation(), s(b.value), n(b.value), A(I);
};
return /* @__PURE__ */ W(h, { ref: Z, children: [
/* @__PURE__ */ W(k, { onClick: A, ref: t, $isPlaceholder: p, $size: l, $dropdownHeaderStyle: B, children: [
/* @__PURE__ */ g(e, { size: l, labelStyle: i, children: (C == null ? void 0 : C.label) ?? R }),
/* @__PURE__ */ g(S, { customStyles: U(G) })
] }),
/* @__PURE__ */ g(r, { onClick: A, $isOpen: G, children: /* @__PURE__ */ g(F, { $size: l, $dropdownContentStyle: V, children: d.map((I) => /* @__PURE__ */ g(w, { $size: l, onClick: (b) => a(b, I), $dropdownOptionLabelStyle: m, children: /* @__PURE__ */ g(e, { size: l, labelStyle: v, children: I.label }) }, I.value)) }) })
] });
}), K = H(z);
export {
K as default
};