UNPKG

@kloudlite/design-system

Version:

A design system for building ambitious products.

92 lines (88 loc) 2.4 kB
"use client"; // components/atoms/select-primitive.tsx import { useId, useMemo as useMemo2 } from "react"; // components/utils.tsx import classNames from "classnames"; import { useMemo } from "react"; import { v4 } from "uuid"; var cn = (...props) => { return classNames(...props); }; // components/atoms/select-primitive.tsx import { jsx, jsxs } from "react/jsx-runtime"; var Option = ({ children, value = "", disabled, ...props }) => { return /* @__PURE__ */ jsx("option", { value, disabled, ...props, children }); }; var Root = (props) => { const { disabled, value, onChange, className, children, label, size = "md", block = true, error, ...extraProps } = props; const tempId = useId(); const id = useMemo2(() => tempId, []); return /* @__PURE__ */ jsxs("div", { className: "kl-flex kl-flex-col", children: [ /* @__PURE__ */ jsxs( "div", { className: cn("kl-flex kl-items-center", { "kl-pb-md": !!label }), children: [ /* @__PURE__ */ jsx( "label", { className: "kl-flex-1 kl-select-none kl-bodyMd-medium kl-text-text-default", htmlFor: id, children: label } ), /* @__PURE__ */ jsx( "div", { className: cn({ "kl-h-4xl": !!label }) } ) ] } ), /* @__PURE__ */ jsx( "select", { ...extraProps, id, disabled, value, onChange, className: cn( "kl-bodyMd kl-py-lg kl-pl-lg kl-pr-5xl kl-text-text-default kl-border-border-default kl-bg-surface-basic-input kl-transition-all kl-rounded kl-border kl-flex kl-flex-row kl-items-center kl-relative kl-outline-none disabled:kl-bg-surface-basic-input disabled:kl-text-text-disabled disabled:kl-border-border-disabled kl-ring-offset-1 focus-within:kl-ring-2 focus-within:kl-ring-border-focus kl-appearance-none", { "kl-w-full": block, "kl-py-lg": size === "md", "kl-py-xl": size === "lg" }, className ), children } ) ] }); }; var SelectPrimitive = { Root, Option }; var select_primitive_default = SelectPrimitive; export { Root, select_primitive_default as default };