UNPKG

@fxshelf/button-kit

Version:

Animated button shelf for React and Vue — switch styles by variant string. Zero animation-lib deps. Copy-as-source friendly.

1 lines • 2.71 kB
{"version":3,"sources":["../src/core/variants.ts","../src/react/Button.tsx"],"names":["jsx"],"mappings":";;;;;;;;AACO,IAAM,eAAA,GAAkB;AAAA,EAC7B,OAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF;AAIO,IAAM,eAAA,GAAiC,OAAA;AAEvC,SAAS,eAAe,OAAA,EAAiC;AAC9D,EAAA,IACE,OAAA,IAAW,IAAA,IACV,eAAA,CAAsC,QAAA,CAAS,OAAO,CAAA,EACvD;AACA,IAAA,OAAO,OAAA;AAAA,EACT;AACA,EAAA,OAAO,eAAA;AACT;AAEO,SAAS,iBAAiB,OAAA,EAA0B;AACzD,EAAA,OAAO,CAAA,eAAA,EAAkB,cAAA,CAAe,OAAO,CAAC,CAAA,CAAA;AAClD;ACLO,SAAS,MAAA,CAAO;AAAA,EACrB,OAAA,GAAU,OAAA;AAAA,EACV,QAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA,GAAO,QAAA;AAAA,EACP,GAAG;AACL,CAAA,EAAgB;AACd,EAAA,MAAM,OAAA,GAAU,CAAC,gBAAA,CAAiB,OAAO,CAAA,EAAG,SAAS,CAAA,CAClD,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA;AAEX,EAAA,uBACEA,cAAA,CAAC,YAAO,IAAA,EAAY,SAAA,EAAW,SAAS,KAAA,EAAe,GAAG,MACvD,QAAA,EACH,CAAA;AAEJ","file":"index.cjs","sourcesContent":["/** Built-in button looks. Pass any of these as `variant`. */\nexport const BUTTON_VARIANTS = [\n 'solid',\n 'outline',\n 'soft',\n 'glow',\n 'neon',\n 'shimmer',\n 'chroma',\n 'liquid',\n 'wipe',\n 'glass',\n] as const\n\nexport type ButtonVariant = (typeof BUTTON_VARIANTS)[number]\n\nexport const DEFAULT_VARIANT: ButtonVariant = 'solid'\n\nexport function resolveVariant(variant?: string): ButtonVariant {\n if (\n variant != null &&\n (BUTTON_VARIANTS as readonly string[]).includes(variant)\n ) {\n return variant as ButtonVariant\n }\n return DEFAULT_VARIANT\n}\n\nexport function variantClassName(variant?: string): string {\n return `fx-btn fx-btn--${resolveVariant(variant)}`\n}\n","'use client'\n\nimport {\n type ButtonHTMLAttributes,\n type CSSProperties,\n type ReactNode,\n} from 'react'\nimport {\n BUTTON_VARIANTS,\n type ButtonVariant,\n variantClassName,\n} from '../core/variants'\nimport '../core/styles.css'\n\nexport type ButtonProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n 'className' | 'style' | 'children'\n> & {\n /** Switch look by name: solid | outline | soft | glow | neon | shimmer | chroma | liquid | wipe | glass. */\n variant?: ButtonVariant | (string & {})\n children?: ReactNode\n className?: string\n style?: CSSProperties\n}\n\nexport function Button({\n variant = 'solid',\n children,\n className,\n style,\n type = 'button',\n ...rest\n}: ButtonProps) {\n const classes = [variantClassName(variant), className]\n .filter(Boolean)\n .join(' ')\n\n return (\n <button type={type} className={classes} style={style} {...rest}>\n {children}\n </button>\n )\n}\n\nexport { BUTTON_VARIANTS, type ButtonVariant }\nexport default Button\n"]}