{"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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"}