@transkripid/flowbite-react
Version:
Official React components built for Flowbite and Tailwind CSS - Transkrip.id fork
1 lines • 10.9 kB
Source Map (JSON)
{"version":3,"file":"Button.mjs","sources":["../../../src/components/Button/Button.tsx"],"sourcesContent":["import type { ElementType } from 'react';\nimport { forwardRef, type ReactNode } from 'react';\nimport { twMerge } from 'tailwind-merge';\nimport { mergeDeep } from '../../helpers/merge-deep';\nimport { getTheme } from '../../theme-store';\nimport type { DeepPartial } from '../../types';\nimport type {\n FlowbiteBoolean,\n FlowbiteColors,\n FlowbiteGradientColors,\n FlowbiteGradientDuoToneColors,\n FlowbiteSizes,\n} from '../Flowbite';\nimport { Spinner } from '../Spinner';\nimport { ButtonBase, type ButtonBaseProps } from './ButtonBase';\nimport type { PositionInButtonGroup } from './ButtonGroup';\nimport { ButtonGroup } from './ButtonGroup';\nimport type { PolymorphicComponentPropWithRef, PolymorphicRef } from '../../helpers/generic-as-prop';\n\nexport interface FlowbiteButtonTheme {\n base: string;\n fullSized: string;\n color: FlowbiteColors;\n disabled: string;\n isProcessing: string;\n spinnerSlot: string;\n spinnerLeftPosition: ButtonSizes;\n gradient: ButtonGradientColors;\n gradientDuoTone: ButtonGradientDuoToneColors;\n inner: FlowbiteButtonInnerTheme;\n label: string;\n outline: FlowbiteButtonOutlineTheme;\n pill: FlowbiteBoolean;\n size: ButtonSizes;\n}\n\nexport interface FlowbiteButtonInnerTheme {\n base: string;\n position: PositionInButtonGroup;\n outline: string;\n isProcessingPadding: ButtonSizes;\n}\n\nexport interface FlowbiteButtonOutlineTheme extends FlowbiteBoolean {\n color: ButtonOutlineColors;\n pill: FlowbiteBoolean;\n}\n\nexport interface ButtonColors\n extends Pick<FlowbiteColors, 'dark' | 'failure' | 'gray' | 'info' | 'light' | 'purple' | 'success' | 'warning'> {\n [key: string]: string;\n}\n\nexport interface ButtonGradientColors extends FlowbiteGradientColors {\n [key: string]: string;\n}\n\nexport interface ButtonGradientDuoToneColors extends FlowbiteGradientDuoToneColors {\n [key: string]: string;\n}\n\nexport interface ButtonOutlineColors extends Pick<FlowbiteColors, 'gray'> {\n [key: string]: string;\n}\n\nexport interface ButtonSizes extends Pick<FlowbiteSizes, 'xs' | 'sm' | 'lg' | 'xl'> {\n [key: string]: string;\n}\n\nexport type ButtonProps<T extends ElementType = 'button'> = PolymorphicComponentPropWithRef<\n T,\n {\n href?: string;\n color?: keyof FlowbiteColors;\n fullSized?: boolean;\n gradientDuoTone?: keyof ButtonGradientDuoToneColors;\n gradientMonochrome?: keyof ButtonGradientColors;\n target?: string;\n isProcessing?: boolean;\n processingLabel?: string;\n processingSpinner?: ReactNode;\n label?: ReactNode;\n outline?: boolean;\n pill?: boolean;\n positionInGroup?: keyof PositionInButtonGroup;\n size?: keyof ButtonSizes;\n theme?: DeepPartial<FlowbiteButtonTheme>;\n }\n>;\n\ntype ButtonComponentType = (<C extends React.ElementType = 'button'>(\n props: ButtonProps<C>,\n) => React.ReactNode | null) & { displayName?: string };\n\nconst ButtonComponentFn: ButtonComponentType = forwardRef(\n <T extends ElementType = 'button'>(\n {\n children,\n className,\n color = 'info',\n disabled,\n fullSized,\n isProcessing = false,\n processingLabel = 'Loading...',\n processingSpinner,\n gradientDuoTone,\n gradientMonochrome,\n label,\n outline = false,\n pill = false,\n positionInGroup = 'none',\n size = 'md',\n theme: customTheme = {},\n ...props\n }: ButtonProps<T>,\n ref: PolymorphicRef<T>,\n ) => {\n const { buttonGroup: groupTheme, button: buttonTheme } = getTheme();\n const theme = mergeDeep(buttonTheme, customTheme);\n\n const theirProps = props as ButtonBaseProps<T>;\n\n return (\n <ButtonBase\n ref={ref}\n disabled={disabled}\n className={twMerge(\n theme.base,\n disabled && theme.disabled,\n !gradientDuoTone && !gradientMonochrome && theme.color[color],\n gradientDuoTone && !gradientMonochrome && theme.gradientDuoTone[gradientDuoTone],\n !gradientDuoTone && gradientMonochrome && theme.gradient[gradientMonochrome],\n outline && (theme.outline.color[color] ?? theme.outline.color.default),\n theme.pill[pill ? 'on' : 'off'],\n fullSized && theme.fullSized,\n groupTheme.position[positionInGroup],\n className,\n )}\n {...theirProps}\n >\n <span\n className={twMerge(\n theme.inner.base,\n theme.outline[outline ? 'on' : 'off'],\n theme.outline.pill[outline && pill ? 'on' : 'off'],\n theme.size[size],\n outline && !theme.outline.color[color] && theme.inner.outline,\n isProcessing && theme.isProcessing,\n isProcessing && theme.inner.isProcessingPadding[size],\n theme.inner.position[positionInGroup],\n )}\n >\n <>\n {isProcessing && (\n <span className={twMerge(theme.spinnerSlot, theme.spinnerLeftPosition[size])}>\n {processingSpinner || <Spinner size={size} />}\n </span>\n )}\n {typeof children !== 'undefined' ? (\n children\n ) : (\n <span data-testid=\"flowbite-button-label\" className={twMerge(theme.label)}>\n {isProcessing ? processingLabel : label}\n </span>\n )}\n </>\n </span>\n </ButtonBase>\n );\n },\n);\n\nButtonComponentFn.displayName = 'Button';\nexport const Button = Object.assign(ButtonComponentFn, {\n Group: ButtonGroup,\n});\n"],"names":["ButtonComponentFn","forwardRef","t0","ref","$","_c","children","className","disabled","fullSized","gradientDuoTone","gradientMonochrome","label","processingSpinner","props","t1","t2","t3","t4","t5","t6","t7","t8","color","isProcessing","processingLabel","outline","pill","positionInGroup","size","theme","undefined","t9","customTheme","T0","t10","t11","t12","t13","t14","t15","t16","buttonGroup","groupTheme","button","buttonTheme","getTheme","mergeDeep","theirProps","ButtonBase","twMerge","base","gradient","default","position","inner","isProcessingPadding","jsx","spinnerSlot","spinnerLeftPosition","Spinner","t17","t18","t19","displayName","Button","Object","assign","Group","ButtonGroup"],"mappings":"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"}