UNPKG

@kloudlite/design-system

Version:

A design system for building ambitious products.

193 lines (187 loc) 6.12 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/radio.tsx var radio_exports = {}; __export(radio_exports, { Item: () => Item2, Root: () => Root2, default: () => radio_default }); module.exports = __toCommonJS(radio_exports); var RadioGroupPrimitive = __toESM(require("@radix-ui/react-radio-group"), 1); var import_react2 = __toESM(require("react"), 1); // components/bounce-it.tsx var import_framer_motion = require("framer-motion"); // components/utils.tsx var import_classnames = __toESM(require("classnames"), 1); var import_react = require("react"); var import_uuid = require("uuid"); var cn = (...props) => { return (0, import_classnames.default)(...props); }; // components/bounce-it.tsx var import_jsx_runtime = require("react/jsx-runtime"); var BounceIt = ({ disable = false, onClick = (_) => { }, className = "", ...etc }) => { if (disable) { return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { children: etc.children }); } return /* @__PURE__ */ (0, import_jsx_runtime.jsx)( import_framer_motion.motion.div, { tabIndex: -1, className: cn("kl-inline-block", className), initial: { y: 0 }, whileTap: { y: 0.5 }, transition: { ease: "anticipate", duration: 0.1 }, onClick, ...etc } ); }; // components/atoms/radio.tsx var import_jsx_runtime2 = require("react/jsx-runtime"); var Item2 = ({ disabled = false, value = "", children, className = "", withBounceEffect = true, labelPlacement = "right" }) => { const id = (0, import_react2.useId)(); const rend = () => { return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)( "label", { htmlFor: id, className: cn( "kl-flex kl-items-center kl-w-fit", { "kl-cursor-pointer": !disabled, "kl-flex-row-reverse": labelPlacement === "left", "kl-flex-row": labelPlacement === "right" }, className ), "aria-label": value, children: [ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( RadioGroupPrimitive.Item, { className: cn( "kl-w-2xl kl-h-2xl kl-outline-none kl-rounded-full kl-border pulsable pulsable-hidden kl-ring-border-focus focus:kl-ring-2 kl-transition-all kl-flex kl-items-center kl-justify-center kl-border-border-default", { "hover:kl-bg-surface-basic-hovered": !disabled, "data-[state=checked]:kl-border-border-primary": !disabled, "data-[disabled]:kl-border-border-disabled": disabled } ), value, id, disabled, "aria-label": value, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( RadioGroupPrimitive.Indicator, { className: cn("kl-block kl-w-lg kl-h-lg kl-rounded-full", { "kl-bg-icon-disabled": disabled, "kl-bg-surface-primary-default": !disabled }) } ) } ), /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( "div", { className: cn( { "kl-text-text-disabled": disabled, "kl-text-text-default kl-cursor-pointer": !disabled }, "kl-bodyMd-medium kl-pl-lg kl-select-none kl-flex-1" ), children } ) ] } ); }; return withBounceEffect ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(BounceIt, { children: rend() }) : rend(); }; var Root2 = ({ value, onChange = () => { }, label, disabled = false, children, className = "", labelPlacement = "right", withBounceEffect = true, direction = "vertical" }) => { return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)( RadioGroupPrimitive.Root, { className: cn( "flex ", { "kl-flex-row kl-gap-x-xl": direction === "horizontal", "kl-flex-col kl-gap-y-xl": direction === "vertical" }, className ), value, "aria-label": label || "Radio choice", disabled, onValueChange: onChange, children: [ label && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "kl-bodyMd-medium", children: label }), import_react2.default.Children.map( children, (child) => (0, import_react2.cloneElement)(child, { labelPlacement, withBounceEffect }) ) ] } ); }; var Radio = { Root: Root2, Item: Item2 }; var radio_default = Radio;