UNPKG

@kloudlite/design-system

Version:

A design system for building ambitious products.

239 lines (233 loc) 8.49 kB
"use strict"; "use client"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // components/atoms/select.tsx var select_exports = {}; __export(select_exports, { default: () => select_default }); module.exports = __toCommonJS(select_exports); var import_react_select = __toESM(require("@zener/react-select"), 1); // components/icons.tsx var import_react = require("@jengaicons/react"); var import_jsx_runtime = require("react/jsx-runtime"); // components/utils.tsx var import_classnames = __toESM(require("classnames"), 1); var import_react2 = require("react"); var import_uuid = require("uuid"); var cn = (...props) => { return (0, import_classnames.default)(...props); }; // components/atoms/animate-hide.tsx var import_framer_motion = require("framer-motion"); var import_jsx_runtime2 = require("react/jsx-runtime"); var AnimateHide = ({ children, show, initial = false, className, onClick }) => { return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_framer_motion.AnimatePresence, { initial, children: show && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( import_framer_motion.motion.div, { onClick, initial: { height: 0, opacity: 0, y: -5 }, animate: { height: "auto", opacity: 1, y: 0 }, exit: { opacity: 0, height: 0, y: -5 }, className: cn(className, "kl-overflow-hidden"), children } ) }); }; var animate_hide_default = AnimateHide; // components/atoms/select.tsx var import_jsx_runtime3 = require("react/jsx-runtime"); var menuItemRender = (props) => { const { innerProps, render, active, focused, disabled } = props; return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( "div", { ...innerProps, className: cn("kl-px-xl kl-py-lg kl-select-none", { "kl-bg-surface-basic-hovered": !!focused && !active && !disabled, "kl-bg-surface-basic-active": !!active, "kl-text-text-default": !disabled, "kl-text-text-disabled": !!disabled }), children: typeof render === "string" ? render : render?.({ active: !!active, focused: !!focused, disabled }) } ); }; var groupRender = ({ label }) => { return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "kl-bodySm-medium kl-text-text-disabled kl-px-lg kl-py-md", children: label }); }; var suffixRender = ({ loading, showclear, clear, error, disabled }) => { const iconSize = 16; return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)( "div", { className: cn( "kl-px-lg kl-flex kl-flex-row kl-items-center kl-gap-lg", error && !disabled ? "kl-text-text-critical" : "" ), children: [ loading && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "kl-animate-spin", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react.CircleNotch, { size: iconSize }) }), /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react.ChevronUpDown, { size: iconSize, color: "currentColor" }), showclear && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { onClick: clear, className: "kl-cursor-pointer", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react.X, { size: iconSize, color: "currentColor" }) }) ] } ); }; var Select = (props) => { const { value, options, label, size = "md", placeholder, message, error = false, onChange, disabled, valueRender, creatable, multiple, loading, onSearch, searchable, showclear, noOptionMessage, open, disableWhileLoading, createLabel, className, portalClass, tabIndex } = props; return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "kl-flex kl-flex-col", children: [ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "kl-flex kl-flex-col kl-gap-md", children: [ label && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "kl-bodyMd-medium kl-text-text-default kl-h-4xl", children: label }), /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "pulsable", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "pulsable pulsable-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( import_react_select.default, { className: className || (() => { const c = cn( "kl-rounded kl-flex kl-flex-row kl-items-center kl-border kl-bodyMd kl-outline-none kl-cursor-default", { "kl-py-[10px] kl-px-lg kl-h-[48px]": size === "lg", "kl-py-[6px] kl-px-lg kl-h-[36px]": size === "md" }, error && !disabled ? "kl-bg-surface-critical-subdued kl-border-text-critical kl-text-text-critical" : "" ); return { default: `${c} kl-border-border-default kl-bg-surface-basic-input kl-text-text-default`, disabled: `${c} kl-border-border-disabled kl-text-text-disabled`, focus: `${c} kl-bg-surface-basic-default kl-border-border-input kl-text-text-default kl-ring-offset-1 kl-ring-2 kl-ring-border-focus` }; }), tabIndex, open, menuClass: "kl-shadow-popover kl-bg-surface-basic-default kl-border kl-border-border-default kl-rounded kl-py-lg", portalClass, menuItemRender, value, options, placeholder: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( "div", { className: cn( error && !disabled ? "kl-text-text-critical/70" : "kl-text-text-disabled" ), children: placeholder } ), showclear, suffixRender: ({ clear, showclear: showclear2 }) => suffixRender({ loading: loading || false, clear, showclear: showclear2, error, disabled: !!disabled }), onChange, groupRender, disabled, valueRender, creatable, multiple, onSearch, searchable, noOptionMessage: noOptionMessage || /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "kl-flex kl-items-center kl-justify-center kl-text-text-default kl-bodyLg kl-p-2xl", children: "No options" }), disableWhileLoading, createLabel, onWheel: (e) => { e.stopPropagation(); }, onTouchMove: (e) => { e.stopPropagation(); } } ) }) }) ] }), /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(animate_hide_default, { show: !!message, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( "div", { className: cn( "kl-bodySm pulsable", { "kl-text-text-critical": !!error, "kl-text-text-default": !error }, "kl-pt-md" ), children: message } ) }) ] }); }; var select_default = Select;