flowbite-angular
Version:
<div align="center"> <h1>:construction: flowbite-angular (unreleased) :construction:</h1> <p> <a href="https://flowbite.com"> <img alt="Flowbite - Tailwind CSS components" width="350" src="https://flowbite.s3.amazonaws.com/github/logo-github
1 lines • 28.5 kB
Source Map (JSON)
{"version":3,"file":"flowbite-angular-button.mjs","sources":["../../../../libs/flowbite-angular/button/button.theme.service.ts","../../../../libs/flowbite-angular/button/button.component.ts","../../../../libs/flowbite-angular/button/button.theme.ts","../../../../libs/flowbite-angular/button/flowbite-angular-button.ts"],"sourcesContent":["import type { ButtonClass, ButtonProperties, ButtonTheme } from './button.theme';\n\nimport type { FlowbiteThemeService } from 'flowbite-angular';\nimport { mergeTheme } from 'flowbite-angular/utils';\n\nimport { inject, Injectable, InjectionToken } from '@angular/core';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * `InjectionToken` used to import `ButtonTheme` value\n *\n * @example\n * ```\n * var theme = inject(FLOWBITE_BUTTON_THEME_TOKEN)\n * ```\n */\nexport const FLOWBITE_BUTTON_THEME_TOKEN = new InjectionToken<ButtonTheme>(\n 'FLOWBITE_BUTTON_THEME_TOKEN'\n);\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ButtonThemeService implements FlowbiteThemeService<ButtonProperties> {\n private readonly baseTheme = inject(FLOWBITE_BUTTON_THEME_TOKEN);\n\n public getClasses(properties: ButtonProperties): ButtonClass {\n const theme: ButtonTheme = mergeTheme(this.baseTheme, properties.customStyle);\n\n const output: ButtonClass = {\n rootClass: twMerge(\n properties.gradientDuoTone && properties.fill == 'outline'\n ? theme.root.base['span']\n : `${theme.root.base['default']} ${theme.root.size[properties.size]}`,\n properties.gradientDuoTone\n ? theme.root.gradientDuoTone[properties.gradientDuoTone][properties.fill]\n : properties.gradientMonochrome\n ? theme.root.gradientMonochrome[properties.gradientMonochrome]\n : theme.root.color[properties.color][properties.fill],\n theme.root.isPill[properties.isPill],\n theme.root.isDisabled[properties.isDisabled]\n ),\n spanClass: twMerge(\n theme.span.base,\n theme.span.isPill[properties.isPill],\n theme.span.size[properties.size]\n ),\n };\n\n return output;\n }\n}\n","import type {\n ButtonClass,\n ButtonColors,\n ButtonDuoToneColors,\n ButtonFill,\n ButtonMonochromeColors,\n ButtonSizes,\n ButtonTheme,\n} from './button.theme';\nimport { ButtonThemeService } from './button.theme.service';\n\nimport type { DeepPartial } from 'flowbite-angular';\nimport { BaseComponent, booleanToFlowbiteBoolean } from 'flowbite-angular';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n InjectionToken,\n makeEnvironmentProviders,\n model,\n ViewEncapsulation,\n} from '@angular/core';\n\nexport const FLOWBITE_BUTTON_COLOR_DEFAULT_VALUE = new InjectionToken<keyof ButtonColors>(\n 'FLOWBITE_BUTTON_COLOR_DEFAULT_VALUE'\n);\n\nexport const FLOWBITE_BUTTON_SIZE_DEFAULT_VALUE = new InjectionToken<keyof ButtonSizes>(\n 'FLOWBITE_BUTTON_SIZE_DEFAULT_VALUE'\n);\n\nexport const FLOWBITE_BUTTON_IS_PILL_DEFAULT_VALUE = new InjectionToken<boolean>(\n 'FLOWBITE_BUTTON_IS_PILL_DEFAULT_VALUE'\n);\n\nexport const FLOWBITE_BUTTON_FILL_DEFAULT_VALUE = new InjectionToken<keyof ButtonFill>(\n 'FLOWBITE_BUTTON_FILL_DEFAULT_VALUE'\n);\n\nexport const FLOWBITE_BUTTON_IS_DISABLED_DEFAULT_VALUE = new InjectionToken<boolean>(\n 'FLOWBITE_BUTTON_IS_DISABLED_DEFAULT_VALUE'\n);\n\nexport const FLOWBITE_BUTTON_GRADIENT_MONOCHROME_DEFAULT_VALUE = new InjectionToken<\n keyof ButtonMonochromeColors | undefined\n>('FLOWBITE_BUTTON_GRADIENT_MONOCHROME_DEFAULT_VALUE');\n\nexport const FLOWBITE_BUTTON_GRADIENT_DUOTONE_DEFAULT_VALUE = new InjectionToken<\n keyof ButtonDuoToneColors | undefined\n>('FLOWBITE_BUTTON_GRADIENT_DUOTONE_DEFAULT_VALUE');\n\nexport const FLOWBITE_BUTTON_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken<\n DeepPartial<ButtonTheme>\n>('FLOWBITE_BUTTON_CUSTOM_STYLE_DEFAULT_VALUE');\n\nexport const buttonDefaultValueProvider = makeEnvironmentProviders([\n {\n provide: FLOWBITE_BUTTON_COLOR_DEFAULT_VALUE,\n useValue: 'primary',\n },\n {\n provide: FLOWBITE_BUTTON_SIZE_DEFAULT_VALUE,\n useValue: 'md',\n },\n {\n provide: FLOWBITE_BUTTON_IS_PILL_DEFAULT_VALUE,\n useValue: false,\n },\n {\n provide: FLOWBITE_BUTTON_FILL_DEFAULT_VALUE,\n useValue: 'solid',\n },\n {\n provide: FLOWBITE_BUTTON_IS_DISABLED_DEFAULT_VALUE,\n useValue: false,\n },\n {\n provide: FLOWBITE_BUTTON_GRADIENT_MONOCHROME_DEFAULT_VALUE,\n useValue: undefined,\n },\n {\n provide: FLOWBITE_BUTTON_GRADIENT_DUOTONE_DEFAULT_VALUE,\n useValue: undefined,\n },\n {\n provide: FLOWBITE_BUTTON_CUSTOM_STYLE_DEFAULT_VALUE,\n useValue: {},\n },\n]);\n\n/**\n * @see https://flowbite.com/docs/components/buttons/\n */\n@Component({\n standalone: true,\n imports: [NgTemplateOutlet],\n selector: 'flowbite-button',\n template: `\n @if (gradientDuoTone() && fill() === 'outline') {\n <span [class]=\"contentClasses().spanClass\">\n <ng-content *ngTemplateOutlet=\"content\" />\n </span>\n } @else {\n <ng-content *ngTemplateOutlet=\"content\" />\n }\n\n <ng-template #content>\n <ng-content />\n </ng-template>\n `,\n host: {\n '[attr.type]': 'button',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent extends BaseComponent<ButtonClass> {\n /**\n * Service injected used to generate class\n */\n public readonly themeService = inject(ButtonThemeService);\n\n //#region properties\n /**\n * Set the button color\n *\n * @default primary\n */\n public color = model(inject(FLOWBITE_BUTTON_COLOR_DEFAULT_VALUE));\n /**\n * Set the button size\n *\n * @default md\n */\n public size = model(inject(FLOWBITE_BUTTON_SIZE_DEFAULT_VALUE));\n /**\n * Set if the button is pill\n *\n * @default false\n */\n public isPill = model(inject(FLOWBITE_BUTTON_IS_PILL_DEFAULT_VALUE));\n /**\n * Set the button fill\n *\n * @default solid\n */\n public fill = model(inject(FLOWBITE_BUTTON_FILL_DEFAULT_VALUE));\n /**\n * Set if the button is disabled\n *\n * @default false\n */\n public isDisabled = model(inject(FLOWBITE_BUTTON_IS_DISABLED_DEFAULT_VALUE));\n /**\n * Set the button gradient monochrome\n *\n * @default undefined\n */\n public gradientMonochrome = model(inject(FLOWBITE_BUTTON_GRADIENT_MONOCHROME_DEFAULT_VALUE));\n /**\n * Set the button gradient duotone\n *\n * @default undefined\n */\n public gradientDuoTone = model(inject(FLOWBITE_BUTTON_GRADIENT_DUOTONE_DEFAULT_VALUE));\n /**\n * Set the custom style for this button\n */\n public customStyle = model(inject(FLOWBITE_BUTTON_CUSTOM_STYLE_DEFAULT_VALUE));\n //#endregion\n\n //#region BaseComponent implementation\n public override fetchClass(): ButtonClass {\n return this.themeService.getClasses({\n color: this.color(),\n isDisabled: booleanToFlowbiteBoolean(this.isDisabled()),\n fill: this.fill(),\n isPill: booleanToFlowbiteBoolean(this.isPill()),\n size: this.size(),\n gradientMonochrome: this.gradientMonochrome(),\n gradientDuoTone: this.gradientDuoTone(),\n customStyle: this.customStyle(),\n });\n }\n //#endregion\n}\n","import type {\n Combination,\n DeepPartial,\n FlowbiteBoolean,\n FlowbiteClass,\n FlowbiteColors,\n FlowbiteGradientColors,\n FlowbiteGradientDuoToneColors,\n FlowbiteSizes,\n} from 'flowbite-angular';\nimport { createTheme } from 'flowbite-angular/utils';\n\n//#region Component theme option\n/**\n * Available colors for `ButtonComponent`\n */\nexport interface ButtonColors\n extends Pick<\n FlowbiteColors,\n 'dark' | 'primary' | 'light' | 'blue' | 'red' | 'green' | 'yellow' | 'purple'\n > {\n [key: string]: string;\n}\n\n/**\n * Available monochrome colors for `ButtonComponent`\n */\nexport interface ButtonMonochromeColors\n extends Pick<\n FlowbiteGradientColors,\n 'blue' | 'green' | 'cyan' | 'teal' | 'lime' | 'red' | 'pink' | 'purple'\n > {\n [key: string]: string;\n}\n\n/**\n * Available duotone colors for `ButtonComponent`\n */\nexport type ButtonDuoToneColors = Pick<\n FlowbiteGradientDuoToneColors,\n | 'purpleToBlue'\n | 'cyanToBlue'\n | 'greenToBlue'\n | 'purpleToPink'\n | 'pinkToOrange'\n | 'tealToLime'\n | 'redToYellow'\n>;\n\n/**\n * Available sizes for `ButtonComponent`\n */\nexport interface ButtonSizes extends Pick<FlowbiteSizes, 'xs' | 'sm' | 'md' | 'lg' | 'xl'> {\n [key: string]: string;\n}\n\n/**\n * Available fill for `ButtonComponent`\n */\nexport interface ButtonFill {\n solid: string;\n outline: string;\n}\n\n/**\n * Available types for `ButtonComponent`\n */\nexport interface ButtonTypes {\n default: string;\n span: string;\n}\n//#endregion\n\n/**\n * Required properties for the class generation of `ButtonComponent`\n */\nexport interface ButtonProperties {\n color: keyof ButtonColors;\n gradientMonochrome?: keyof ButtonMonochromeColors;\n gradientDuoTone?: keyof ButtonDuoToneColors;\n size: keyof ButtonSizes;\n isPill: keyof FlowbiteBoolean;\n fill: keyof ButtonFill;\n isDisabled: keyof FlowbiteBoolean;\n customStyle: DeepPartial<ButtonTheme>;\n}\n\n/**\n * Theme definition for `ButtonComponent`\n */\nexport interface ButtonTheme {\n root: {\n base: ButtonTypes;\n color: Combination<keyof ButtonColors, keyof ButtonFill, string>;\n gradientMonochrome: ButtonMonochromeColors;\n gradientDuoTone: Combination<keyof ButtonDuoToneColors, keyof ButtonFill, string>;\n size: ButtonSizes;\n isPill: FlowbiteBoolean;\n isDisabled: FlowbiteBoolean;\n };\n span: {\n base: string;\n isPill: FlowbiteBoolean;\n size: ButtonSizes;\n };\n}\n\n/**\n * Default theme for `ButtonComponent`\n */\nexport const buttonTheme: ButtonTheme = createTheme({\n root: {\n base: {\n default:\n 'cursor-pointer group flex h-min w-fit items-center justify-center p-0.5 text-center font-medium focus:z-10',\n span: 'cursor-pointer group inline-flex relative items-center justify-center p-0.5 font-medium overflow-hidden',\n },\n color: {\n dark: {\n solid:\n 'text-white bg-gray-800 dark:bg-gray-800 border border-transparent dark:border-gray-700 hover:bg-gray-900 dark:hover:bg-gray-700 focus:ring-4 focus:ring-gray-300 dark:focus:ring-gray-800 disabled:hover:bg-gray-800 dark:disabled:hover:bg-gray-800',\n outline:\n 'text-gray-900 hover:text-white border border-gray-800 hover:bg-gray-900 dark:border-gray-600 dark:text-gray-400 dark:hover:text-white focus:ring-4 focus:outline-none focus:ring-gray-300 dark:hover:bg-gray-600 dark:focus:ring-gray-800',\n },\n primary: {\n solid:\n 'text-white bg-primary-700 border border-transparent hover:bg-primary-800 focus:ring-4 focus:ring-primary-300 dark:bg-primary-700 dark:hover:bg-primary-800 dark:focus:ring-primary-900',\n outline:\n 'text-primary-700 hover:text-white border border-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 dark:border-primary-500 dark:text-primary-500 dark:hover:text-white dark:hover:bg-primary-600 dark:focus:ring-primary-900',\n },\n red: {\n solid:\n 'text-white bg-red-700 border border-transparent hover:bg-red-800 focus:ring-4 focus:ring-red-300 dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-red-900',\n outline:\n 'text-red-700 hover:text-white border border-red-700 hover:bg-red-800 focus:ring-4 focus:outline-none focus:ring-red-300 dark:border-red-500 dark:text-red-500 dark:hover:text-white dark:hover:bg-red-600 dark:focus:ring-red-900',\n },\n blue: {\n solid:\n 'text-white bg-blue-700 border border-transparent hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800',\n outline:\n 'text-blue-700 hover:text-white border border-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 dark:border-blue-500 dark:text-blue-500 dark:hover:text-white dark:hover:bg-blue-600 dark:focus:ring-blue-800',\n },\n light: {\n solid:\n 'text-gray-900 bg-white border border-gray-300 hover:bg-gray-100 focus:ring-4 focus:ring-blue-300 dark:bg-gray-600 dark:text-white dark:border-gray-600 dark:hover:bg-gray-700 dark:hover:border-gray-700 dark:focus:ring-gray-700',\n outline:\n 'text-gray-900 bg-transparent border border-gray-200 hover:bg-white focus:ring-4 focus:ring-blue-300 dark:bg-transparent dark:text-white dark:border-white dark:hover:text-gray-900 dark:hover:bg-white dark:hover:border-gray-700 dark:focus:ring-gray-700',\n },\n purple: {\n solid:\n 'text-white bg-purple-700 border border-transparent hover:bg-purple-800 focus:ring-4 focus:ring-purple-300 dark:bg-purple-600 dark:hover:bg-purple-700 dark:focus:ring-purple-900',\n outline:\n 'text-purple-700 hover:text-white border border-purple-700 hover:bg-purple-800 focus:ring-4 focus:outline-none focus:ring-purple-300 dark:border-purple-400 dark:text-purple-400 dark:hover:text-white dark:hover:bg-purple-500 dark:focus:ring-purple-900',\n },\n green: {\n solid:\n 'text-white bg-green-700 border border-transparent hover:bg-green-800 focus:ring-4 focus:ring-green-300 dark:bg-green-600 dark:hover:bg-green-700 dark:focus:ring-green-800',\n outline:\n 'text-green-700 hover:text-white border border-green-700 hover:bg-green-800 focus:ring-4 focus:outline-none focus:ring-green-300 dark:border-green-500 dark:text-green-500 dark:hover:text-white dark:hover:bg-green-600 dark:focus:ring-green-800',\n },\n yellow: {\n solid:\n 'text-white bg-yellow-400 border border-transparent hover:bg-yellow-500 focus:ring-4 focus:ring-yellow-300 dark:focus:ring-yellow-900',\n outline:\n 'text-yellow-400 hover:text-white border border-yellow-400 hover:bg-yellow-500 focus:ring-4 focus:outline-none focus:ring-yellow-300 dark:border-yellow-300 dark:text-yellow-300 dark:hover:text-white dark:hover:bg-yellow-400 dark:focus:ring-yellow-900',\n },\n },\n isDisabled: {\n enabled: 'cursor-not-allowed opacity-50',\n disabled: '',\n },\n gradientMonochrome: {\n cyan: 'text-white bg-gradient-to-r from-cyan-400 via-cyan-500 to-cyan-600 hover:bg-gradient-to-br focus:ring-4 focus:ring-cyan-300 dark:focus:ring-cyan-800',\n red: 'text-white bg-gradient-to-r from-red-400 via-red-500 to-red-600 hover:bg-gradient-to-br focus:ring-4 focus:ring-red-300 dark:focus:ring-red-800',\n blue: 'text-white bg-gradient-to-r from-blue-500 via-blue-600 to-blue-700 hover:bg-gradient-to-br focus:ring-4 focus:ring-blue-300 dark:focus:ring-blue-800',\n lime: 'text-gray-900 bg-gradient-to-r from-lime-200 via-lime-400 to-lime-500 hover:bg-gradient-to-br focus:ring-4 focus:ring-lime-300 dark:focus:ring-lime-800',\n pink: 'text-white bg-gradient-to-r from-pink-400 via-pink-500 to-pink-600 hover:bg-gradient-to-br focus:ring-4 focus:ring-pink-300 dark:focus:ring-pink-800',\n purple:\n 'text-white bg-gradient-to-r from-purple-500 via-purple-600 to-purple-700 hover:bg-gradient-to-br focus:ring-4 focus:ring-purple-300 dark:focus:ring-purple-800',\n green:\n 'text-white bg-gradient-to-r from-green-400 via-green-500 to-green-600 hover:bg-gradient-to-br focus:ring-4 focus:ring-green-300 dark:focus:ring-green-800',\n teal: 'text-white bg-gradient-to-r from-teal-400 via-teal-500 to-teal-600 hover:bg-gradient-to-br focus:ring-4 focus:ring-teal-300 dark:focus:ring-teal-800',\n },\n gradientDuoTone: {\n purpleToBlue: {\n solid:\n 'text-white bg-gradient-to-br from-purple-600 to-blue-500 hover:bg-gradient-to-bl focus:ring-4 focus:outline-none focus:ring-blue-300 dark:focus:ring-blue-800',\n outline:\n 'text-gray-900 bg-gradient-to-br from-purple-600 to-blue-500 group-hover:from-purple-600 group-hover:to-blue-500 hover:text-white dark:text-white focus:ring-4 focus:outline-none focus:ring-blue-300 dark:focus:ring-blue-800',\n },\n cyanToBlue: {\n solid:\n 'text-white bg-gradient-to-r from-cyan-500 to-blue-500 hover:bg-gradient-to-bl focus:ring-4 focus:outline-none focus:ring-cyan-300 dark:focus:ring-cyan-800',\n outline:\n 'text-gray-900 bg-gradient-to-br from-cyan-500 to-blue-500 group-hover:from-cyan-500 group-hover:to-blue-500 hover:text-white dark:text-white focus:ring-4 focus:outline-none focus:ring-cyan-200 dark:focus:ring-cyan-800',\n },\n greenToBlue: {\n solid:\n 'text-white bg-gradient-to-br from-green-400 to-blue-600 hover:bg-gradient-to-bl focus:ring-4 focus:outline-none focus:ring-green-200 dark:focus:ring-green-800',\n outline:\n 'text-gray-900 bg-gradient-to-br from-green-400 to-blue-600 group-hover:from-green-400 group-hover:to-blue-600 hover:text-white dark:text-white focus:ring-4 focus:outline-none focus:ring-green-200 dark:focus:ring-green-800',\n },\n purpleToPink: {\n solid:\n 'text-white bg-gradient-to-r from-purple-500 to-pink-500 hover:bg-gradient-to-l focus:ring-4 focus:outline-none focus:ring-purple-200 dark:focus:ring-purple-800',\n outline:\n 'text-gray-900 bg-gradient-to-br from-purple-500 to-pink-500 group-hover:from-purple-500 group-hover:to-pink-500 hover:text-white dark:text-white focus:ring-4 focus:outline-none focus:ring-purple-200 dark:focus:ring-purple-800',\n },\n pinkToOrange: {\n solid:\n 'text-white bg-gradient-to-br from-pink-500 to-orange-400 hover:bg-gradient-to-bl focus:ring-4 focus:outline-none focus:ring-pink-200 dark:focus:ring-pink-800',\n outline:\n 'text-gray-900 bg-gradient-to-br from-pink-500 to-orange-400 group-hover:from-pink-500 group-hover:to-orange-400 hover:text-white dark:text-white focus:ring-4 focus:outline-none focus:ring-pink-200 dark:focus:ring-pink-800',\n },\n tealToLime: {\n solid:\n 'text-gray-900 bg-gradient-to-r from-teal-200 to-lime-200 hover:bg-gradient-to-l hover:from-teal-200 hover:to-lime-200 focus:ring-4 focus:outline-none focus:ring-lime-200 dark:focus:ring-teal-700',\n outline:\n 'text-gray-900 bg-gradient-to-br from-teal-300 to-lime-300 group-hover:from-teal-300 group-hover:to-lime-300 dark:text-white dark:hover:text-gray-900 focus:ring-4 focus:outline-none focus:ring-lime-200 dark:focus:ring-lime-800',\n },\n redToYellow: {\n solid:\n 'text-gray-900 bg-gradient-to-r from-red-200 via-red-300 to-yellow-200 hover:bg-gradient-to-bl focus:ring-4 focus:outline-none focus:ring-red-100 dark:focus:ring-red-400',\n outline:\n 'text-gray-900 bg-gradient-to-br from-red-200 via-red-300 to-yellow-200 group-hover:from-red-200 group-hover:via-red-300 group-hover:to-yellow-200 dark:text-white dark:hover:text-gray-900 focus:ring-4 focus:outline-none focus:ring-red-100 dark:focus:ring-red-400',\n },\n },\n size: {\n xs: 'text-xs py-2 px-3',\n sm: 'text-sm py-2 px-3',\n md: 'text-sm px-5 py-2.5',\n lg: 'text-base py-3 px-5',\n xl: 'text-base px-6 py-3.5',\n },\n isPill: {\n enabled: 'rounded-full',\n disabled: 'rounded-lg',\n },\n },\n span: {\n base: 'cursor-pointer relative inline-flex items-center bg-white transition-all duration-75 ease-in group-hover:bg-opacity-0 dark:bg-gray-900',\n isPill: {\n enabled: 'rounded-full',\n disabled: 'rounded-md',\n },\n size: {\n xs: 'text-xs py-2 px-3',\n sm: 'text-sm py-2 px-3',\n md: 'text-sm px-5 py-2.5',\n lg: 'text-base py-3 px-5',\n xl: 'text-base px-6 py-3.5',\n },\n },\n});\n\n/**\n * Generated class definition for `ButtonComponent`\n */\nexport interface ButtonClass extends FlowbiteClass {\n spanClass: string;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}