@easy-shadcn/react
Version:
Use shadcn/ui easy&enhance like component library
99 lines (93 loc) • 3.56 kB
JavaScript
;
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;