UNPKG

@easy-shadcn/react

Version:

Use shadcn/ui easy&enhance like component library

99 lines (93 loc) 3.56 kB
'use strict'; var React2 = require('react'); var ToggleGroupPrimitive = require('@radix-ui/react-toggle-group'); var utils = require('@easy-shadcn/utils'); var TogglePrimitive = require('@radix-ui/react-toggle'); var classVarianceAuthority = require('class-variance-authority'); var jsxRuntime = require('react/jsx-runtime'); function _interopNamespace(e) { if (e && e.__esModule) return e; var n = Object.create(null); if (e) { Object.keys(e).forEach(function (k) { if (k !== 'default') { var d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, get: function () { return e[k]; } }); } }); } n.default = e; return Object.freeze(n); } var React2__namespace = /*#__PURE__*/_interopNamespace(React2); var ToggleGroupPrimitive__namespace = /*#__PURE__*/_interopNamespace(ToggleGroupPrimitive); var TogglePrimitive__namespace = /*#__PURE__*/_interopNamespace(TogglePrimitive); var toggleVariants = classVarianceAuthority.cva( "inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground", { variants: { variant: { default: "bg-transparent", outline: "border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground" }, size: { default: "h-9 px-3", sm: "h-8 px-2", lg: "h-10 px-3" } }, defaultVariants: { variant: "default", size: "default" } } ); var Toggle = React2__namespace.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx( TogglePrimitive__namespace.Root, { ref, className: utils.cn(toggleVariants({ variant, size, className })), ...props } )); Toggle.displayName = TogglePrimitive__namespace.Root.displayName; var ToggleGroupContext = React2__namespace.createContext({ size: "default", variant: "default" }); var ToggleGroup = React2__namespace.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx( ToggleGroupPrimitive__namespace.Root, { ref, className: utils.cn("flex items-center justify-center gap-1", className), ...props, children: /* @__PURE__ */ jsxRuntime.jsx(ToggleGroupContext.Provider, { value: { variant, size }, children }) } )); ToggleGroup.displayName = ToggleGroupPrimitive__namespace.Root.displayName; var ToggleGroupItem = React2__namespace.forwardRef(({ className, children, variant, size, ...props }, ref) => { const context = React2__namespace.useContext(ToggleGroupContext); return /* @__PURE__ */ jsxRuntime.jsx( ToggleGroupPrimitive__namespace.Item, { ref, className: utils.cn( toggleVariants({ variant: context.variant || variant, size: context.size || size }), className ), ...props, children } ); }); ToggleGroupItem.displayName = ToggleGroupPrimitive__namespace.Item.displayName; var Toggle2 = ({ options, ...resetProps }) => { return /* @__PURE__ */ jsxRuntime.jsx(ToggleGroup, { ...resetProps, children: options.map(({ value, label, ...resetOpt }) => /* @__PURE__ */ jsxRuntime.jsx(ToggleGroupItem, { value, ...resetOpt, children: label }, value)) }); }; exports.Toggle = Toggle2;