@fxshelf/button-kit
Version:
Animated button shelf for React and Vue — switch styles by variant string. Zero animation-lib deps. Copy-as-source friendly.
82 lines (77 loc) • 2.42 kB
JavaScript
;
var ButtonKit = (() => {
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
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 __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var src_exports = {};
__export(src_exports, {
BUTTON_VARIANTS: () => BUTTON_VARIANTS,
Button: () => Button
});
// src/browser/react.ts
var globalReact = globalThis.React;
if (!globalReact) {
throw new Error(
'[button-kit] browser build: global "React" not found. Load a UMD build of React (react@18.3.x) before button-kit.'
);
}
var Fragment = globalReact.Fragment;
var createElement = globalReact.createElement;
// src/core/variants.ts
var BUTTON_VARIANTS = [
"solid",
"outline",
"soft",
"glow",
"neon",
"shimmer",
"chroma",
"liquid",
"wipe",
"glass"
];
var DEFAULT_VARIANT = "solid";
function resolveVariant(variant) {
if (variant != null && BUTTON_VARIANTS.includes(variant)) {
return variant;
}
return DEFAULT_VARIANT;
}
function variantClassName(variant) {
return `fx-btn fx-btn--${resolveVariant(variant)}`;
}
// src/browser/jsx-runtime.ts
function jsx(type, props, key) {
const create = createElement;
return key === void 0 ? create(type, props) : create(type, { ...props, key });
}
// src/react/Button.tsx
function Button({
variant = "solid",
children,
className,
style,
type = "button",
...rest
}) {
const classes = [variantClassName(variant), className].filter(Boolean).join(" ");
return /* @__PURE__ */ jsx("button", { type, className: classes, style, ...rest, children });
}
return __toCommonJS(src_exports);
})();
//# sourceMappingURL=button-kit.iife.js.map