{"version":3,"file":"flowbite-angular-indicator.mjs","sources":["../../../../libs/flowbite-angular/indicator/src/indicator/theme.ts","../../../../libs/flowbite-angular/indicator/src/config/indicator-config.ts","../../../../libs/flowbite-angular/indicator/src/indicator/indicator-state.ts","../../../../libs/flowbite-angular/indicator/src/indicator/indicator.directive.ts","../../../../libs/flowbite-angular/indicator/src/index.ts","../../../../libs/flowbite-angular/indicator/src/flowbite-angular-indicator.ts"],"sourcesContent":["import type {\r\n  ColorToTheme,\r\n  FlowbiteBoolean,\r\n  FlowbiteColors,\r\n  FlowbitePositions,\r\n  FlowbiteSizes,\r\n} from 'flowbite-angular';\r\nimport { createTheme } from 'flowbite-angular';\r\n\r\nexport interface FlowbiteIndicatorColors\r\n  extends Pick<FlowbiteColors, 'default' | 'info' | 'failure' | 'success' | 'warning' | 'primary'> {\r\n  [key: string]: ColorToTheme;\r\n}\r\n\r\nexport interface FlowbiteIndicatorSizes\r\n  extends Pick<FlowbiteSizes, 'xs' | 'sm' | 'md' | 'lg' | 'xl'> {\r\n  [key: string]: string;\r\n}\r\n\r\nexport interface FlowbiteIndicatorPositions extends FlowbitePositions {\r\n  [key: string]: string;\r\n}\r\n\r\nexport interface FlowbiteIndicatorTheme {\r\n  host: FlowbiteIndicatorHostTheme;\r\n}\r\n\r\nexport interface FlowbiteIndicatorHostTheme {\r\n  base: string;\r\n  transition: string;\r\n  border: FlowbiteBoolean;\r\n  color: FlowbiteIndicatorColors;\r\n  size: FlowbiteIndicatorSizes;\r\n  position: FlowbiteIndicatorPositions;\r\n}\r\n\r\nexport const flowbiteIndicatorTheme: FlowbiteIndicatorTheme = createTheme({\r\n  host: {\r\n    base: 'inline-flex shrink-0 items-center justify-center rounded-full font-bold',\r\n    transition: '',\r\n    border: {\r\n      on: 'border-2',\r\n      off: 'border-none',\r\n    },\r\n    color: {\r\n      default: {\r\n        light: 'bg-gray-500',\r\n        dark: 'dark:bg-gray-500',\r\n      },\r\n      info: {\r\n        light: 'bg-blue-500',\r\n        dark: 'dark:bg-blue-500',\r\n      },\r\n      failure: {\r\n        light: 'bg-red-500',\r\n        dark: 'dark:bg-red-500',\r\n      },\r\n      success: {\r\n        light: 'bg-green-500',\r\n        dark: 'dark:bg-green-500',\r\n      },\r\n      warning: {\r\n        light: 'bg-yellow-500',\r\n        dark: 'dark:bg-yellow-500',\r\n      },\r\n      primary: {\r\n        light: 'bg-primary-500',\r\n        dark: 'dark:bg-primary-500',\r\n      },\r\n    },\r\n    size: {\r\n      xs: 'h-2 w-2 text-xs',\r\n      sm: 'h-3 w-3 text-sm',\r\n      md: 'h-4 w-4 text-sm',\r\n      lg: 'h-5 w-5 text-sm',\r\n      xl: 'h-6 w-6 text-sm',\r\n    },\r\n    position: {\r\n      'top-left': 'top-0 left-0 -translate-x-1/3 -translate-y-1/3',\r\n      'top-center': 'top-0 left-1/2 -translate-x-1/2 -translate-y-1/3',\r\n      'top-right': 'top-0 right-0 translate-x-1/3 -translate-y-1/3',\r\n      'center-left': 'top-1/2 left-0 -translate-x-1/3 -translate-y-1/2',\r\n      center: 'top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2',\r\n      'center-right': 'top-1/2 right-0 translate-x-1/3 -translate-y-1/2',\r\n      'bottom-left': 'bottom-0 left-0 -translate-x-1/3 translate-y-1/3',\r\n      'bottom-center': 'bottom-0 left-1/2 -translate-x-1/2 translate-y-1/3',\r\n      'bottom-right': 'right-0 bottom-0 translate-x-1/3 translate-y-1/3',\r\n    },\r\n  },\r\n});\r\n","import type {\r\n  FlowbiteIndicatorColors,\r\n  FlowbiteIndicatorPositions,\r\n  FlowbiteIndicatorSizes,\r\n} from '../indicator/theme';\r\nimport { flowbiteIndicatorTheme, type FlowbiteIndicatorTheme } from '../indicator/theme';\r\n\r\nimport type { DeepPartial } from 'flowbite-angular';\r\n\r\nimport type { Provider } from '@angular/core';\r\nimport { inject, InjectionToken } from '@angular/core';\r\n\r\nexport interface FlowbiteIndicatorConfig {\r\n  /**\r\n   * The default theme of indicator\r\n   */\r\n  baseTheme: FlowbiteIndicatorTheme;\r\n  /**\r\n   * The default color of indicator\r\n   */\r\n  color: keyof FlowbiteIndicatorColors;\r\n  /**\r\n   * The default size of indicator\r\n   */\r\n  size: keyof FlowbiteIndicatorSizes;\r\n  /**\r\n   * Whether the indicator has border\r\n   */\r\n  border: boolean;\r\n  /**\r\n   * The default position of indicator\r\n   */\r\n  position: keyof FlowbiteIndicatorPositions | undefined;\r\n  /**\r\n   * The custom theme of indicator\r\n   */\r\n  customTheme: DeepPartial<FlowbiteIndicatorTheme>;\r\n}\r\n\r\nexport const defaultFlowbiteIndicatorConfig: FlowbiteIndicatorConfig = {\r\n  baseTheme: flowbiteIndicatorTheme,\r\n  color: 'default',\r\n  size: 'md',\r\n  border: false,\r\n  position: undefined,\r\n  customTheme: {},\r\n};\r\n\r\nexport const FlowbiteIndicatorConfigToken = new InjectionToken<FlowbiteIndicatorConfig>(\r\n  'FlowbiteIndicatorConfigToken'\r\n);\r\n\r\n/**\r\n * Provide the default Indicator configuration\r\n * @param config The Indicator configuration\r\n * @returns The provider\r\n */\r\nexport const provideFlowbiteIndicatorConfig = (\r\n  config: Partial<FlowbiteIndicatorConfig>\r\n): Provider[] => [\r\n  {\r\n    provide: FlowbiteIndicatorConfigToken,\r\n    useValue: { ...defaultFlowbiteIndicatorConfig, ...config },\r\n  },\r\n];\r\n\r\n/**\r\n * Inject the Indicator configuration\r\n * @see {@link defaultFlowbiteIndicatorConfig}\r\n * @returns The configuration\r\n */\r\nexport const injectFlowbiteIndicatorConfig = (): FlowbiteIndicatorConfig =>\r\n  inject(FlowbiteIndicatorConfigToken, { optional: true }) ?? defaultFlowbiteIndicatorConfig;\r\n","import type { Indicator } from './indicator.directive';\r\n\r\nimport {\r\n  createState,\r\n  createStateInjector,\r\n  createStateProvider,\r\n  createStateToken,\r\n} from 'ng-primitives/state';\r\n\r\nexport const FlowbiteIndicatorStateToken = createStateToken<Indicator>('Flowbite Indicator');\r\nexport const provideFlowbiteIndicatorState = createStateProvider(FlowbiteIndicatorStateToken);\r\nexport const injectFlowbiteIndicatorState = createStateInjector(FlowbiteIndicatorStateToken);\r\nexport const flowbiteIndicatorState = createState(FlowbiteIndicatorStateToken);\r\n","import { injectFlowbiteIndicatorConfig } from '../config/indicator-config';\r\nimport { flowbiteIndicatorState, provideFlowbiteIndicatorState } from './indicator-state';\r\n\r\nimport { colorToTheme, mergeDeep } from 'flowbite-angular';\r\n\r\nimport { booleanAttribute, computed, Directive, input } from '@angular/core';\r\nimport { twMerge } from 'tailwind-merge';\r\n\r\n@Directive({\r\n  standalone: true,\r\n  selector: `\r\n    span[flowbiteIndicator]\r\n  `,\r\n  exportAs: 'flowbiteIndicator',\r\n  hostDirectives: [],\r\n  providers: [provideFlowbiteIndicatorState()],\r\n  host: { '[class]': `theme().host.root` },\r\n})\r\nexport class Indicator {\r\n  readonly config = injectFlowbiteIndicatorConfig();\r\n\r\n  /**\r\n   * @see {@link injectFlowbiteIndicatorConfig}\r\n   */\r\n  readonly color = input(this.config.color);\r\n  /**\r\n   * @see {@link injectFlowbiteIndicatorConfig}\r\n   */\r\n  readonly size = input(this.config.size);\r\n  /**\r\n   * @see {@link injectFlowbiteIndicatorConfig}\r\n   */\r\n  readonly border = input(this.config.border, { transform: booleanAttribute });\r\n  /**\r\n   * @see {@link injectFlowbiteIndicatorConfig}\r\n   */\r\n  readonly position = input(this.config.position);\r\n  /**\r\n   * @see {@link injectFlowbiteIndicatorConfig}\r\n   */\r\n  readonly customTheme = input(this.config.customTheme);\r\n\r\n  readonly theme = computed(() => {\r\n    const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());\r\n\r\n    return {\r\n      host: {\r\n        root: twMerge(\r\n          mergedTheme.host.base,\r\n          colorToTheme(mergedTheme.host.color, this.state.color()),\r\n          mergedTheme.host.size[this.state.size()],\r\n          mergedTheme.host.border[this.state.border() ? 'on' : 'off'],\r\n          this.state.position() && mergedTheme.host.position[this.state.position()!]\r\n        ),\r\n      },\r\n    };\r\n  });\r\n\r\n  /**\r\n   * @internal\r\n   */\r\n  readonly state = flowbiteIndicatorState<Indicator>(this);\r\n}\r\n","/* Indicator */\r\nexport * from './indicator/indicator.directive';\r\nexport * from './indicator/indicator-state';\r\nexport * from './indicator/theme';\r\n/* Config */\r\nexport * from './config/indicator-config';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}