flowbite-angular 1.2.0 → 20.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. package/README.md +30 -39
  2. package/accordion/index.d.ts +569 -16
  3. package/alert/index.d.ts +602 -4
  4. package/badge/index.d.ts +636 -4
  5. package/breadcrumb/index.d.ts +452 -8
  6. package/button/index.d.ts +335 -4
  7. package/button-group/README.md +4 -0
  8. package/button-group/index.d.ts +85 -0
  9. package/{core → card}/README.md +2 -2
  10. package/card/index.d.ts +640 -0
  11. package/{accordion → clipboard}/README.md +2 -2
  12. package/clipboard/index.d.ts +103 -0
  13. package/dropdown/index.d.ts +536 -16
  14. package/fesm2022/flowbite-angular-accordion.mjs +340 -479
  15. package/fesm2022/flowbite-angular-accordion.mjs.map +1 -1
  16. package/fesm2022/flowbite-angular-alert.mjs +309 -240
  17. package/fesm2022/flowbite-angular-alert.mjs.map +1 -1
  18. package/fesm2022/flowbite-angular-badge.mjs +334 -136
  19. package/fesm2022/flowbite-angular-badge.mjs.map +1 -1
  20. package/fesm2022/flowbite-angular-breadcrumb.mjs +263 -191
  21. package/fesm2022/flowbite-angular-breadcrumb.mjs.map +1 -1
  22. package/fesm2022/flowbite-angular-button-group.mjs +86 -0
  23. package/fesm2022/flowbite-angular-button-group.mjs.map +1 -0
  24. package/fesm2022/flowbite-angular-button.mjs +190 -270
  25. package/fesm2022/flowbite-angular-button.mjs.map +1 -1
  26. package/fesm2022/flowbite-angular-card.mjs +344 -0
  27. package/fesm2022/flowbite-angular-card.mjs.map +1 -0
  28. package/fesm2022/flowbite-angular-clipboard.mjs +174 -0
  29. package/fesm2022/flowbite-angular-clipboard.mjs.map +1 -0
  30. package/fesm2022/flowbite-angular-dropdown.mjs +273 -459
  31. package/fesm2022/flowbite-angular-dropdown.mjs.map +1 -1
  32. package/fesm2022/flowbite-angular-form.mjs +444 -0
  33. package/fesm2022/flowbite-angular-form.mjs.map +1 -0
  34. package/fesm2022/flowbite-angular-icon-brand.mjs +71 -0
  35. package/fesm2022/flowbite-angular-icon-brand.mjs.map +1 -0
  36. package/fesm2022/flowbite-angular-icon-outline-arrows.mjs +51 -0
  37. package/fesm2022/flowbite-angular-icon-outline-arrows.mjs.map +1 -0
  38. package/fesm2022/flowbite-angular-icon-outline-e-commerce.mjs +23 -0
  39. package/fesm2022/flowbite-angular-icon-outline-e-commerce.mjs.map +1 -0
  40. package/fesm2022/flowbite-angular-icon-outline-emoji.mjs +13 -0
  41. package/fesm2022/flowbite-angular-icon-outline-emoji.mjs.map +1 -0
  42. package/fesm2022/flowbite-angular-icon-outline-files-folders.mjs +42 -0
  43. package/fesm2022/flowbite-angular-icon-outline-files-folders.mjs.map +1 -0
  44. package/fesm2022/flowbite-angular-icon-outline-general.mjs +145 -0
  45. package/fesm2022/flowbite-angular-icon-outline-general.mjs.map +1 -0
  46. package/fesm2022/flowbite-angular-icon-outline-media.mjs +25 -0
  47. package/fesm2022/flowbite-angular-icon-outline-media.mjs.map +1 -0
  48. package/fesm2022/flowbite-angular-icon-outline-text.mjs +20 -0
  49. package/fesm2022/flowbite-angular-icon-outline-text.mjs.map +1 -0
  50. package/fesm2022/flowbite-angular-icon-outline-user.mjs +17 -0
  51. package/fesm2022/flowbite-angular-icon-outline-user.mjs.map +1 -0
  52. package/fesm2022/flowbite-angular-icon-outline-weather.mjs +9 -0
  53. package/fesm2022/flowbite-angular-icon-outline-weather.mjs.map +1 -0
  54. package/fesm2022/flowbite-angular-icon-outline.mjs +6 -0
  55. package/fesm2022/flowbite-angular-icon-outline.mjs.map +1 -0
  56. package/fesm2022/flowbite-angular-icon-solid-arrows.mjs +17 -0
  57. package/fesm2022/flowbite-angular-icon-solid-arrows.mjs.map +1 -0
  58. package/fesm2022/flowbite-angular-icon-solid-brands.mjs +33 -0
  59. package/fesm2022/flowbite-angular-icon-solid-brands.mjs.map +1 -0
  60. package/fesm2022/flowbite-angular-icon-solid-e-commerce.mjs +21 -0
  61. package/fesm2022/flowbite-angular-icon-solid-e-commerce.mjs.map +1 -0
  62. package/fesm2022/flowbite-angular-icon-solid-emoji.mjs +13 -0
  63. package/fesm2022/flowbite-angular-icon-solid-emoji.mjs.map +1 -0
  64. package/fesm2022/flowbite-angular-icon-solid-files-folder.mjs +42 -0
  65. package/fesm2022/flowbite-angular-icon-solid-files-folder.mjs.map +1 -0
  66. package/fesm2022/flowbite-angular-icon-solid-general.mjs +123 -0
  67. package/fesm2022/flowbite-angular-icon-solid-general.mjs.map +1 -0
  68. package/fesm2022/flowbite-angular-icon-solid-media.mjs +24 -0
  69. package/fesm2022/flowbite-angular-icon-solid-media.mjs.map +1 -0
  70. package/fesm2022/flowbite-angular-icon-solid-text.mjs +11 -0
  71. package/fesm2022/flowbite-angular-icon-solid-text.mjs.map +1 -0
  72. package/fesm2022/flowbite-angular-icon-solid-user.mjs +17 -0
  73. package/fesm2022/flowbite-angular-icon-solid-user.mjs.map +1 -0
  74. package/fesm2022/flowbite-angular-icon-solid-weather.mjs +9 -0
  75. package/fesm2022/flowbite-angular-icon-solid-weather.mjs.map +1 -0
  76. package/fesm2022/flowbite-angular-icon-solid.mjs +6 -0
  77. package/fesm2022/flowbite-angular-icon-solid.mjs.map +1 -0
  78. package/fesm2022/flowbite-angular-icon.mjs +318 -219
  79. package/fesm2022/flowbite-angular-icon.mjs.map +1 -1
  80. package/fesm2022/flowbite-angular-indicator.mjs +119 -231
  81. package/fesm2022/flowbite-angular-indicator.mjs.map +1 -1
  82. package/fesm2022/flowbite-angular-modal.mjs +338 -486
  83. package/fesm2022/flowbite-angular-modal.mjs.map +1 -1
  84. package/fesm2022/flowbite-angular-navbar.mjs +601 -604
  85. package/fesm2022/flowbite-angular-navbar.mjs.map +1 -1
  86. package/fesm2022/flowbite-angular-pagination.mjs +994 -0
  87. package/fesm2022/flowbite-angular-pagination.mjs.map +1 -0
  88. package/fesm2022/flowbite-angular-sidebar.mjs +403 -776
  89. package/fesm2022/flowbite-angular-sidebar.mjs.map +1 -1
  90. package/fesm2022/flowbite-angular-tab.mjs +465 -0
  91. package/fesm2022/flowbite-angular-tab.mjs.map +1 -0
  92. package/fesm2022/flowbite-angular-theme-toggle.mjs +263 -0
  93. package/fesm2022/flowbite-angular-theme-toggle.mjs.map +1 -0
  94. package/fesm2022/flowbite-angular-tooltip.mjs +117 -0
  95. package/fesm2022/flowbite-angular-tooltip.mjs.map +1 -0
  96. package/fesm2022/flowbite-angular.mjs +53 -66
  97. package/fesm2022/flowbite-angular.mjs.map +1 -1
  98. package/{alert → form}/README.md +2 -2
  99. package/form/index.d.ts +684 -0
  100. package/{breadcrumb → icon/brand}/README.md +2 -2
  101. package/icon/brand/index.d.ts +66 -0
  102. package/icon/index.d.ts +322 -5
  103. package/icon/outline/README.md +4 -0
  104. package/icon/outline/arrows/index.d.ts +46 -0
  105. package/icon/outline/e-commerce/index.d.ts +18 -0
  106. package/icon/outline/emoji/index.d.ts +8 -0
  107. package/icon/outline/files-folders/index.d.ts +37 -0
  108. package/icon/outline/general/index.d.ts +140 -0
  109. package/icon/outline/index.d.ts +2 -0
  110. package/icon/outline/media/index.d.ts +20 -0
  111. package/icon/outline/text/index.d.ts +15 -0
  112. package/icon/outline/user/index.d.ts +12 -0
  113. package/icon/outline/weather/index.d.ts +4 -0
  114. package/icon/solid/README.md +4 -0
  115. package/icon/solid/arrows/index.d.ts +12 -0
  116. package/icon/solid/brands/index.d.ts +28 -0
  117. package/icon/solid/e-commerce/index.d.ts +16 -0
  118. package/icon/solid/emoji/index.d.ts +8 -0
  119. package/icon/solid/files-folder/index.d.ts +37 -0
  120. package/icon/solid/general/index.d.ts +118 -0
  121. package/icon/solid/index.d.ts +2 -0
  122. package/icon/solid/media/index.d.ts +19 -0
  123. package/icon/solid/text/index.d.ts +6 -0
  124. package/icon/solid/user/index.d.ts +12 -0
  125. package/icon/solid/weather/index.d.ts +4 -0
  126. package/index.d.ts +126 -3
  127. package/indicator/index.d.ts +242 -4
  128. package/modal/index.d.ts +458 -16
  129. package/navbar/index.d.ts +1467 -24
  130. package/package.json +137 -42
  131. package/pagination/README.md +4 -0
  132. package/pagination/index.d.ts +1135 -0
  133. package/sidebar/index.d.ts +880 -24
  134. package/styles/flowbite-angular.css +8 -0
  135. package/styles/part/animation.css +0 -0
  136. package/styles/part/color.css +125 -0
  137. package/styles/part/font-size.css +67 -0
  138. package/styles/part/rounded.css +11 -0
  139. package/styles/part/shadow.css +9 -0
  140. package/styles/part/spacing.css +38 -0
  141. package/{badge → tab}/README.md +2 -2
  142. package/tab/index.d.ts +791 -0
  143. package/theme-toggle/README.md +4 -0
  144. package/theme-toggle/index.d.ts +342 -0
  145. package/{button → tooltip}/README.md +2 -2
  146. package/tooltip/index.d.ts +158 -0
  147. package/accordion/accordion-content.component.d.ts +0 -69
  148. package/accordion/accordion-content.theme.d.ts +0 -28
  149. package/accordion/accordion-content.theme.service.d.ts +0 -19
  150. package/accordion/accordion-panel.component.d.ts +0 -67
  151. package/accordion/accordion-panel.theme.d.ts +0 -23
  152. package/accordion/accordion-panel.theme.service.d.ts +0 -20
  153. package/accordion/accordion-title.component.d.ts +0 -106
  154. package/accordion/accordion-title.theme.d.ts +0 -35
  155. package/accordion/accordion-title.theme.service.d.ts +0 -19
  156. package/accordion/accordion.component.d.ts +0 -61
  157. package/accordion/accordion.theme.d.ts +0 -29
  158. package/accordion/accordion.theme.service.d.ts +0 -19
  159. package/alert/alert.component.d.ts +0 -150
  160. package/alert/alert.theme.d.ts +0 -39
  161. package/alert/alert.theme.service.d.ts +0 -19
  162. package/badge/badge.component.d.ts +0 -122
  163. package/badge/badge.theme.d.ts +0 -45
  164. package/badge/badge.theme.service.d.ts +0 -19
  165. package/base-component.directive.d.ts +0 -51
  166. package/breadcrumb/breadcrumb-item.component.d.ts +0 -84
  167. package/breadcrumb/breadcrumb-item.theme.d.ts +0 -33
  168. package/breadcrumb/breadcrumb-item.theme.service.d.ts +0 -19
  169. package/breadcrumb/breadcrumb.component.d.ts +0 -43
  170. package/breadcrumb/breadcrumb.theme.d.ts +0 -29
  171. package/breadcrumb/breadcrumb.theme.service.d.ts +0 -19
  172. package/button/button.component.d.ts +0 -250
  173. package/button/button.theme.d.ts +0 -79
  174. package/button/button.theme.service.d.ts +0 -19
  175. package/core/flowbite.theme.init.d.ts +0 -9
  176. package/core/index.d.ts +0 -1
  177. package/dark-theme-toggle/README.md +0 -4
  178. package/dark-theme-toggle/dark-theme-toggle.component.d.ts +0 -51
  179. package/dark-theme-toggle/dark-theme-toggle.theme.d.ts +0 -23
  180. package/dark-theme-toggle/dark-theme-toggle.theme.service.d.ts +0 -19
  181. package/dark-theme-toggle/index.d.ts +0 -3
  182. package/dropdown/README.md +0 -4
  183. package/dropdown/dropdown-divider.component.d.ts +0 -36
  184. package/dropdown/dropdown-divider.theme.d.ts +0 -23
  185. package/dropdown/dropdown-divider.theme.service.d.ts +0 -19
  186. package/dropdown/dropdown-header.component.d.ts +0 -42
  187. package/dropdown/dropdown-header.theme.d.ts +0 -28
  188. package/dropdown/dropdown-header.theme.service.d.ts +0 -19
  189. package/dropdown/dropdown-item.component.d.ts +0 -36
  190. package/dropdown/dropdown-item.theme.d.ts +0 -23
  191. package/dropdown/dropdown-item.theme.service.d.ts +0 -19
  192. package/dropdown/dropdown.component.d.ts +0 -136
  193. package/dropdown/dropdown.theme.d.ts +0 -56
  194. package/dropdown/dropdown.theme.service.d.ts +0 -19
  195. package/fesm2022/flowbite-angular-core.mjs +0 -322
  196. package/fesm2022/flowbite-angular-core.mjs.map +0 -1
  197. package/fesm2022/flowbite-angular-dark-theme-toggle.mjs +0 -138
  198. package/fesm2022/flowbite-angular-dark-theme-toggle.mjs.map +0 -1
  199. package/fesm2022/flowbite-angular-router-link-active.mjs +0 -68
  200. package/fesm2022/flowbite-angular-router-link-active.mjs.map +0 -1
  201. package/fesm2022/flowbite-angular-router-link.mjs +0 -73
  202. package/fesm2022/flowbite-angular-router-link.mjs.map +0 -1
  203. package/fesm2022/flowbite-angular-sanitize-html.mjs +0 -39
  204. package/fesm2022/flowbite-angular-sanitize-html.mjs.map +0 -1
  205. package/fesm2022/flowbite-angular-scroll-top.mjs +0 -192
  206. package/fesm2022/flowbite-angular-scroll-top.mjs.map +0 -1
  207. package/fesm2022/flowbite-angular-theme.mjs +0 -78
  208. package/fesm2022/flowbite-angular-theme.mjs.map +0 -1
  209. package/fesm2022/flowbite-angular-utils.mjs +0 -210
  210. package/fesm2022/flowbite-angular-utils.mjs.map +0 -1
  211. package/flowbite.theme.service.d.ts +0 -12
  212. package/icon/icon-registry.d.ts +0 -45
  213. package/icon/icon.component.d.ts +0 -22
  214. package/icon/trusted-types.d.ts +0 -15
  215. package/indicator/indicators.component.d.ts +0 -224
  216. package/indicator/indicators.theme.d.ts +0 -59
  217. package/indicator/indicators.theme.service.d.ts +0 -19
  218. package/modal/modal-body.component.d.ts +0 -36
  219. package/modal/modal-body.theme.d.ts +0 -23
  220. package/modal/modal-body.theme.service.d.ts +0 -19
  221. package/modal/modal-footer.component.d.ts +0 -36
  222. package/modal/modal-footer.theme.d.ts +0 -23
  223. package/modal/modal-footer.theme.service.d.ts +0 -19
  224. package/modal/modal-header.component.d.ts +0 -60
  225. package/modal/modal-header.theme.d.ts +0 -32
  226. package/modal/modal-header.theme.service.d.ts +0 -19
  227. package/modal/modal.component.d.ts +0 -146
  228. package/modal/modal.theme.d.ts +0 -35
  229. package/modal/modal.theme.service.d.ts +0 -19
  230. package/navbar/navbar-brand.component.d.ts +0 -36
  231. package/navbar/navbar-brand.theme.d.ts +0 -23
  232. package/navbar/navbar-brand.theme.service.d.ts +0 -19
  233. package/navbar/navbar-content.component.d.ts +0 -50
  234. package/navbar/navbar-content.theme.d.ts +0 -28
  235. package/navbar/navbar-content.theme.service.d.ts +0 -19
  236. package/navbar/navbar-icon-button.component.d.ts +0 -59
  237. package/navbar/navbar-icon-button.theme.d.ts +0 -26
  238. package/navbar/navbar-icon-button.theme.service.d.ts +0 -19
  239. package/navbar/navbar-item.component.d.ts +0 -67
  240. package/navbar/navbar-item.theme.d.ts +0 -26
  241. package/navbar/navbar-item.theme.service.d.ts +0 -19
  242. package/navbar/navbar-toggle.component.d.ts +0 -51
  243. package/navbar/navbar-toggle.theme.d.ts +0 -23
  244. package/navbar/navbar-toggle.theme.service.d.ts +0 -19
  245. package/navbar/navbar.component.d.ts +0 -121
  246. package/navbar/navbar.theme.d.ts +0 -21
  247. package/navbar/navbar.theme.service.d.ts +0 -19
  248. package/router-link/README.md +0 -4
  249. package/router-link/flowbite-router-link.directive.d.ts +0 -28
  250. package/router-link/index.d.ts +0 -1
  251. package/router-link-active/README.md +0 -4
  252. package/router-link-active/flowbite-router-link-active.directive.d.ts +0 -37
  253. package/router-link-active/index.d.ts +0 -1
  254. package/sanitize-html/README.md +0 -4
  255. package/sanitize-html/index.d.ts +0 -1
  256. package/sanitize-html/sanitize-html.pipe.d.ts +0 -20
  257. package/scroll-top/README.md +0 -4
  258. package/scroll-top/index.d.ts +0 -4
  259. package/scroll-top/scroll-top.component.d.ts +0 -114
  260. package/scroll-top/scroll-top.theme.d.ts +0 -39
  261. package/scroll-top/scroll-top.theme.service.d.ts +0 -19
  262. package/sidebar/sidebar-item-group.component.d.ts +0 -100
  263. package/sidebar/sidebar-item-group.theme.d.ts +0 -31
  264. package/sidebar/sidebar-item-group.theme.service.d.ts +0 -19
  265. package/sidebar/sidebar-item.component.d.ts +0 -101
  266. package/sidebar/sidebar-item.theme.d.ts +0 -33
  267. package/sidebar/sidebar-item.theme.service.d.ts +0 -19
  268. package/sidebar/sidebar-menu.component.d.ts +0 -93
  269. package/sidebar/sidebar-menu.theme.d.ts +0 -30
  270. package/sidebar/sidebar-menu.theme.service.d.ts +0 -19
  271. package/sidebar/sidebar-page-content.component.d.ts +0 -46
  272. package/sidebar/sidebar-page-content.theme.d.ts +0 -27
  273. package/sidebar/sidebar-page-content.theme.service.d.ts +0 -19
  274. package/sidebar/sidebar-toggle.component.d.ts +0 -95
  275. package/sidebar/sidebar-toggle.theme.d.ts +0 -34
  276. package/sidebar/sidebar-toggle.theme.service.d.ts +0 -19
  277. package/sidebar/sidebar.component.d.ts +0 -84
  278. package/sidebar/sidebar.theme.d.ts +0 -22
  279. package/sidebar/sidebar.theme.service.d.ts +0 -19
  280. package/tailwind.config.js +0 -303
  281. package/theme/README.md +0 -4
  282. package/theme/flowbite-theme.directive.d.ts +0 -36
  283. package/theme/index.d.ts +0 -1
  284. package/type-definitions/colors/flowbite.colors.d.ts +0 -19
  285. package/type-definitions/colors/flowbite.gradient-colors.d.ts +0 -11
  286. package/type-definitions/colors/flowbite.gradient-duo-tone-colors.d.ts +0 -12
  287. package/type-definitions/colors/index.d.ts +0 -3
  288. package/type-definitions/flowbite.boolean.d.ts +0 -14
  289. package/type-definitions/flowbite.class.d.ts +0 -6
  290. package/type-definitions/flowbite.combination.d.ts +0 -8
  291. package/type-definitions/flowbite.content-positions.d.ts +0 -6
  292. package/type-definitions/flowbite.deep-partial.d.ts +0 -6
  293. package/type-definitions/flowbite.heading-levels.d.ts +0 -4
  294. package/type-definitions/flowbite.positions.d.ts +0 -14
  295. package/type-definitions/flowbite.router-link-parameter.d.ts +0 -5
  296. package/type-definitions/flowbite.sizes.d.ts +0 -10
  297. package/type-definitions/flowbite.themes.d.ts +0 -4
  298. package/type-definitions/index.d.ts +0 -12
  299. package/utils/README.md +0 -4
  300. package/utils/icon.list.d.ts +0 -7
  301. package/utils/id.generator.d.ts +0 -59
  302. package/utils/index.d.ts +0 -8
  303. package/utils/theme/clone-deep.d.ts +0 -7
  304. package/utils/theme/create-class.d.ts +0 -7
  305. package/utils/theme/create-theme.d.ts +0 -7
  306. package/utils/theme/is-object.d.ts +0 -7
  307. package/utils/theme/merge-theme.d.ts +0 -8
  308. package/utils/theme/to-string.d.ts +0 -7
@@ -1,282 +1,351 @@
1
- import { mergeTheme, CLOSE_SVG_ICON, createTheme } from 'flowbite-angular/utils';
1
+ import { createTheme, mergeDeep, colorToTheme } from 'flowbite-angular';
2
2
  import * as i0 from '@angular/core';
3
- import { InjectionToken, inject, Injectable, makeEnvironmentProviders, model, Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
3
+ import { InjectionToken, inject, input, booleanAttribute, computed, Directive } from '@angular/core';
4
+ import { createStateToken, createStateProvider, createStateInjector, createState } from 'ng-primitives/state';
4
5
  import { twMerge } from 'tailwind-merge';
5
- import { BaseComponent, booleanToFlowbiteBoolean } from 'flowbite-angular';
6
- import { IconRegistry, IconComponent } from 'flowbite-angular/icon';
7
- import { trigger, transition, style, animate } from '@angular/animations';
8
- import { NgTemplateOutlet } from '@angular/common';
9
- import { DomSanitizer } from '@angular/platform-browser';
6
+ import * as i1 from 'ng-primitives/button';
7
+ import { NgpButton } from 'ng-primitives/button';
8
+ import * as i2 from 'ng-primitives/interactions';
9
+ import { NgpFocus } from 'ng-primitives/interactions';
10
10
 
11
+ const flowbiteAlertTheme = createTheme({
12
+ host: {
13
+ base: 'mb-4 rounded-lg p-4',
14
+ transition: '',
15
+ color: {
16
+ default: {
17
+ light: 'border-gray-200 bg-gray-50',
18
+ dark: 'dark:border-gray-700 dark:bg-gray-950',
19
+ },
20
+ info: {
21
+ light: 'border-blue-200 bg-blue-50',
22
+ dark: 'dark:border-blue-700 dark:bg-blue-950',
23
+ },
24
+ failure: {
25
+ light: 'border-red-200 bg-red-50',
26
+ dark: 'dark:border-red-700 dark:bg-red-950',
27
+ },
28
+ success: {
29
+ light: 'border-green-200 bg-green-50',
30
+ dark: 'dark:border-green-700 dark:bg-green-950',
31
+ },
32
+ warning: {
33
+ light: 'border-yellow-200 bg-yellow-50',
34
+ dark: 'dark:border-yellow-700 dark:bg-yellow-950',
35
+ },
36
+ primary: {
37
+ light: 'bg-primary-50 border-primary-200',
38
+ dark: 'dark:bg-primary-950 dark:border-primary-700',
39
+ },
40
+ },
41
+ border: {
42
+ on: 'border',
43
+ off: 'border-0',
44
+ },
45
+ accent: {
46
+ on: 'border-t-4',
47
+ off: '',
48
+ },
49
+ },
50
+ });
51
+
52
+ const defaultFlowbiteAlertConfig = {
53
+ baseTheme: flowbiteAlertTheme,
54
+ color: 'default',
55
+ border: false,
56
+ accent: false,
57
+ customTheme: {},
58
+ };
59
+ const FlowbiteAlertConfigToken = new InjectionToken('FlowbiteAlertConfigToken');
11
60
  /**
12
- * `InjectionToken` used to import `AlertTheme` value
13
- *
14
- * @example
15
- * ```
16
- * var theme = inject(FLOWBITE_ALERT_THEME_TOKEN)
17
- * ```
61
+ * Provide the default Alert configuration
62
+ * @param config The Alert configuration
63
+ * @returns The provider
18
64
  */
19
- const FLOWBITE_ALERT_THEME_TOKEN = new InjectionToken('FLOWBITE_ALERT_THEME_TOKEN');
20
- class AlertThemeService {
21
- constructor() {
22
- this.baseTheme = inject(FLOWBITE_ALERT_THEME_TOKEN);
23
- }
24
- getClasses(properties) {
25
- const theme = mergeTheme(this.baseTheme, properties.customStyle);
26
- const output = {
27
- rootClass: twMerge(theme.root.base, theme.root.color[properties.color], theme.root.hasBorder[properties.hasBorder], theme.root.hasBorderAccent[properties.hasBorderAccent]),
28
- closeButtonClass: twMerge(theme.closeButton.base, theme.closeButton.color[properties.color]),
29
- };
30
- return output;
31
- }
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: AlertThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
33
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: AlertThemeService, providedIn: 'root' }); }
34
- }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: AlertThemeService, decorators: [{
36
- type: Injectable,
37
- args: [{
38
- providedIn: 'root',
39
- }]
40
- }] });
41
-
42
- const FLOWBITE_ALERT_COLOR_DEFAULT_VALUE = new InjectionToken('FLOWBITE_ALERT_COLOR_DEFAULT_VALUE');
43
- const FLOWBITE_ALERT_HAS_BORDER_DEFAULT_VALUE = new InjectionToken('FLOWBITE_ALERT_HAS_BORDER_DEFAULT_VALUE');
44
- const FLOWBITE_ALERT_HAS_BORDER_ACCENT_DEFAULT_VALUE = new InjectionToken('FLOWBITE_ALERT_HAS_BORDER_ACCENT_DEFAULT_VALUE');
45
- const FLOWBITE_ALERT_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_ALERT_CUSTOM_STYLE_DEFAULT_VALUE');
46
- const FLOWBITE_ALERT_ICON_DEFAULT_VALUE = new InjectionToken('FLOWBITE_ALERT_ICON_DEFAULT_VALUE');
47
- const FLOWBITE_ALERT_ADDITIONAL_CONTENT_DEFAULT_VALUE = new InjectionToken('FLOWBITE_ALERT_ADDITIONAL_CONTENT_DEFAULT_VALUE');
48
- const FLOWBITE_ALERT_IS_DISMISSABLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_ALERT_IS_DISMISSABLE_DEFAULT_VALUE');
49
- const FLOWBITE_ALERT_ON_DISMISS_DEFAULT_VALUE = new InjectionToken('FLOWBITE_ALERT_ON_DISMISS_DEFAULT_VALUE');
50
- const alertDefaultValueProvider = makeEnvironmentProviders([
51
- {
52
- provide: FLOWBITE_ALERT_COLOR_DEFAULT_VALUE,
53
- useValue: 'primary',
54
- },
55
- {
56
- provide: FLOWBITE_ALERT_HAS_BORDER_DEFAULT_VALUE,
57
- useValue: false,
58
- },
59
- {
60
- provide: FLOWBITE_ALERT_HAS_BORDER_ACCENT_DEFAULT_VALUE,
61
- useValue: false,
62
- },
63
- {
64
- provide: FLOWBITE_ALERT_CUSTOM_STYLE_DEFAULT_VALUE,
65
- useValue: {},
66
- },
67
- {
68
- provide: FLOWBITE_ALERT_ICON_DEFAULT_VALUE,
69
- useValue: null,
70
- },
65
+ const provideFlowbiteAlertConfig = (config) => [
71
66
  {
72
- provide: FLOWBITE_ALERT_ADDITIONAL_CONTENT_DEFAULT_VALUE,
73
- useValue: null,
67
+ provide: FlowbiteAlertConfigToken,
68
+ useValue: { ...defaultFlowbiteAlertConfig, ...config },
74
69
  },
75
- {
76
- provide: FLOWBITE_ALERT_IS_DISMISSABLE_DEFAULT_VALUE,
77
- useValue: false,
78
- },
79
- {
80
- provide: FLOWBITE_ALERT_ON_DISMISS_DEFAULT_VALUE,
81
- useValue: undefined,
82
- },
83
- ]);
70
+ ];
84
71
  /**
85
- * @see https://flowbite.com/docs/components/alerts/
72
+ * Inject the Alert configuration
73
+ * @see {@link defaultFlowbiteAlertConfig}
74
+ * @returns The configuration
86
75
  */
87
- class AlertComponent extends BaseComponent {
76
+ const injectFlowbiteAlertConfig = () => inject(FlowbiteAlertConfigToken, { optional: true }) ?? defaultFlowbiteAlertConfig;
77
+
78
+ const FlowbiteAlertStateToken = createStateToken('Flowbite Alert');
79
+ const provideFlowbiteAlertState = createStateProvider(FlowbiteAlertStateToken);
80
+ const injectFlowbiteAlertState = createStateInjector(FlowbiteAlertStateToken);
81
+ const flowbiteAlertState = createState(FlowbiteAlertStateToken);
82
+
83
+ class Alert {
88
84
  constructor() {
89
- super(...arguments);
85
+ this.config = injectFlowbiteAlertConfig();
90
86
  /**
91
- * Service injected used to generate class
87
+ * @see {@link injectFlowbiteAlertConfig}
92
88
  */
93
- this.themeService = inject(AlertThemeService);
89
+ this.color = input(this.config.color);
94
90
  /**
95
- * `IcoRegistry` service
91
+ * @see {@link injectFlowbiteAlertConfig}
96
92
  */
97
- this.iconRegistry = inject(IconRegistry);
93
+ this.border = input(this.config.border, { transform: booleanAttribute });
98
94
  /**
99
- * `DomSanitizer` service
95
+ * @see {@link injectFlowbiteAlertConfig}
100
96
  */
101
- this.domSanitizer = inject(DomSanitizer);
102
- //#region properties
97
+ this.accent = input(this.config.accent, { transform: booleanAttribute });
103
98
  /**
104
- * Set the indicator color
105
- *
106
- * @default primary
99
+ * @see {@link injectFlowbiteAlertConfig}
107
100
  */
108
- this.color = model(inject(FLOWBITE_ALERT_COLOR_DEFAULT_VALUE));
109
- /**
110
- * Set if the alert has border
111
- *
112
- * @default false
113
- */
114
- this.hasBorder = model(inject(FLOWBITE_ALERT_HAS_BORDER_DEFAULT_VALUE));
115
- /**
116
- * Set if the alert has border accent
117
- *
118
- * @default false
119
- */
120
- this.hasBorderAccent = model(inject(FLOWBITE_ALERT_HAS_BORDER_ACCENT_DEFAULT_VALUE));
121
- /**
122
- * Set the custom style for this alert
123
- */
124
- this.customStyle = model(inject(FLOWBITE_ALERT_CUSTOM_STYLE_DEFAULT_VALUE));
125
- /**
126
- * Set the custom icon
127
- *
128
- * @default null
129
- */
130
- this.icon = model(inject(FLOWBITE_ALERT_ICON_DEFAULT_VALUE));
131
- /**
132
- * Set the additional content
133
- *
134
- * @default null
135
- */
136
- this.additionalContent = model(inject(FLOWBITE_ALERT_ADDITIONAL_CONTENT_DEFAULT_VALUE));
137
- /**
138
- * Set if the alert is dismissable
139
- *
140
- * @default false
141
- */
142
- this.isDismissable = model(inject(FLOWBITE_ALERT_IS_DISMISSABLE_DEFAULT_VALUE));
101
+ this.customTheme = input(this.config.customTheme);
102
+ this.theme = computed(() => {
103
+ const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
104
+ return {
105
+ host: {
106
+ root: twMerge(mergedTheme.host.base, mergedTheme.host.transition, colorToTheme(mergedTheme.host.color, this.state.color()), mergedTheme.host.border[this.state.border() ? 'on' : 'off'], mergedTheme.host.accent[this.state.accent() ? 'on' : 'off']),
107
+ },
108
+ };
109
+ });
143
110
  /**
144
- * Set the function called when the alert is dismissed
145
- *
146
- * @default undefined
111
+ * @internal
147
112
  */
148
- this.onDismiss = model(inject(FLOWBITE_ALERT_ON_DISMISS_DEFAULT_VALUE));
113
+ this.state = flowbiteAlertState(this);
149
114
  }
150
- //#endregion
151
- //#region BaseComponent implementation
152
- fetchClass() {
153
- return this.themeService.getClasses({
154
- color: this.color(),
155
- hasBorder: booleanToFlowbiteBoolean(this.hasBorder()),
156
- hasBorderAccent: booleanToFlowbiteBoolean(this.hasBorderAccent()),
157
- customStyle: this.customStyle(),
158
- });
159
- }
160
- init() {
161
- this.iconRegistry.addRawSvgIconInNamepsace('flowbite-angular', 'close', this.domSanitizer.bypassSecurityTrustHtml(CLOSE_SVG_ICON));
162
- }
163
- //#endregion
164
- /**
165
- * Call the onDismiss function if it's not undefined
166
- */
167
- onDismissClick() {
168
- const func = this.onDismiss();
169
- if (func)
170
- func();
171
- }
172
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: AlertComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
173
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.4", type: AlertComponent, isStandalone: true, selector: "flowbite-alert", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, hasBorder: { classPropertyName: "hasBorder", publicName: "hasBorder", isSignal: true, isRequired: false, transformFunction: null }, hasBorderAccent: { classPropertyName: "hasBorderAccent", publicName: "hasBorderAccent", isSignal: true, isRequired: false, transformFunction: null }, customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, additionalContent: { classPropertyName: "additionalContent", publicName: "additionalContent", isSignal: true, isRequired: false, transformFunction: null }, isDismissable: { classPropertyName: "isDismissable", publicName: "isDismissable", isSignal: true, isRequired: false, transformFunction: null }, onDismiss: { classPropertyName: "onDismiss", publicName: "onDismiss", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { color: "colorChange", hasBorder: "hasBorderChange", hasBorderAccent: "hasBorderAccentChange", customStyle: "customStyleChange", icon: "iconChange", additionalContent: "additionalContentChange", isDismissable: "isDismissableChange", onDismiss: "onDismissChange" }, host: { properties: { "attr.role": "alert", "@onDestroyAnimation": "" } }, usesInheritance: true, ngImport: i0, template: `
174
- <div class="flex items-center">
175
- <ng-container [ngTemplateOutlet]="icon()"></ng-container>
176
- <div>
177
- <ng-content />
178
- </div>
179
- @if (isDismissable()) {
180
- <button
181
- type="button"
182
- [class]="contentClasses()!.closeButtonClass"
183
- aria-label="Close"
184
- (click)="onDismissClick()">
185
- <span class="sr-only">Close</span>
186
- <flowbite-icon
187
- svgIcon="flowbite-angular:close"
188
- class="h-5 w-5" />
189
- </button>
190
- }
191
- </div>
192
- <ng-container [ngTemplateOutlet]="additionalContent()"></ng-container>
193
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconComponent, selector: "flowbite-icon", inputs: ["svgIcon"], outputs: ["svgIconChange"] }], animations: [
194
- trigger('onDestroyAnimation', [
195
- transition(':enter', [style({ opacity: 0 }), animate('300ms', style({ opacity: 1 }))]),
196
- transition(':leave', [animate('300ms', style({ opacity: 0 }))]),
197
- ]),
198
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
115
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: Alert, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
116
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: Alert, isStandalone: true, selector: "\n div[flowbiteAlert]\n ", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, accent: { classPropertyName: "accent", publicName: "accent", isSignal: true, isRequired: false, transformFunction: null }, customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteAlertState()], exportAs: ["flowbiteAlert"], ngImport: i0 }); }
199
117
  }
200
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: AlertComponent, decorators: [{
201
- type: Component,
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: Alert, decorators: [{
119
+ type: Directive,
202
120
  args: [{
203
- imports: [NgTemplateOutlet, IconComponent],
204
- selector: 'flowbite-alert',
205
- template: `
206
- <div class="flex items-center">
207
- <ng-container [ngTemplateOutlet]="icon()"></ng-container>
208
- <div>
209
- <ng-content />
210
- </div>
211
- @if (isDismissable()) {
212
- <button
213
- type="button"
214
- [class]="contentClasses()!.closeButtonClass"
215
- aria-label="Close"
216
- (click)="onDismissClick()">
217
- <span class="sr-only">Close</span>
218
- <flowbite-icon
219
- svgIcon="flowbite-angular:close"
220
- class="h-5 w-5" />
221
- </button>
222
- }
223
- </div>
224
- <ng-container [ngTemplateOutlet]="additionalContent()"></ng-container>
121
+ standalone: true,
122
+ selector: `
123
+ div[flowbiteAlert]
225
124
  `,
125
+ exportAs: 'flowbiteAlert',
126
+ hostDirectives: [],
127
+ providers: [provideFlowbiteAlertState()],
226
128
  host: {
227
- '[attr.role]': 'alert',
228
- '[@onDestroyAnimation]': '',
129
+ '[class]': `theme().host.root`,
229
130
  },
230
- animations: [
231
- trigger('onDestroyAnimation', [
232
- transition(':enter', [style({ opacity: 0 }), animate('300ms', style({ opacity: 1 }))]),
233
- transition(':leave', [animate('300ms', style({ opacity: 0 }))]),
234
- ]),
235
- ],
236
- encapsulation: ViewEncapsulation.None,
237
- changeDetection: ChangeDetectionStrategy.OnPush,
238
131
  }]
239
132
  }] });
240
133
 
241
- /**
242
- * Default theme for `AlertComponent`
243
- */
244
- const alertTheme = createTheme({
245
- root: {
246
- base: 'flex flex-col gap-2 p-4 text-sm rounded-lg',
134
+ const flowbiteAlertButtonTheme = createTheme({
135
+ host: {
136
+ base: 'flex rounded-lg p-1 first:mr-2 data-hover:cursor-pointer',
137
+ transition: '',
247
138
  color: {
248
- primary: 'text-primary-800 dark:text-primary-400 bg-primary-50 dark:bg-gray-800 border-primary-300 dark:border-primary-800',
249
- dark: 'text-gray-800 dark:text-gray-300 bg-gray-100 dark:bg-gray-800 border-gray-300 dark:border-gray-600',
250
- blue: 'text-blue-800 dark:text-blue-400 bg-blue-50 dark:bg-gray-800 border-blue-300 dark:border-blue-800',
251
- red: 'text-red-800 dark:text-red-400 bg-red-100 dark:bg-gray-800 border-red-300 dark:border-red-800',
252
- green: 'text-green-800 dark:text-green-400 bg-green-100 dark:bg-gray-800 border-green-300 dark:border-green-800',
253
- yellow: 'text-yellow-800 dark:text-yellow-300 bg-yellow-100 dark:bg-gray-800 border-yellow-300 dark:border-yellow-800',
254
- },
255
- hasBorder: {
256
- enabled: 'border',
257
- disabled: 'border-0',
258
- },
259
- hasBorderAccent: {
260
- enabled: 'border-t-4',
261
- disabled: '',
139
+ default: {
140
+ light: 'data-hover:bg-gray-300',
141
+ dark: 'dark:data-hover:bg-gray-600',
142
+ },
143
+ info: {
144
+ light: 'data-hover:bg-blue-300',
145
+ dark: 'dark:data-hover:bg-blue-700',
146
+ },
147
+ failure: {
148
+ light: 'data-hover:bg-red-300',
149
+ dark: 'dark:data-hover:bg-red-700',
150
+ },
151
+ success: {
152
+ light: 'data-hover:bg-green-300',
153
+ dark: 'dark:data-hover:bg-green-600',
154
+ },
155
+ warning: {
156
+ light: 'data-hover:bg-yellow-300',
157
+ dark: 'dark:data-hover:bg-yellow-600',
158
+ },
159
+ primary: {
160
+ light: 'data-hover:bg-primary-300',
161
+ dark: 'dark:data-hover:bg-primary-700',
162
+ },
262
163
  },
263
164
  },
264
- closeButton: {
265
- base: '-mx-1.5 -my-1.5 ml-auto inline-flex h-8 w-8 rounded-lg p-1.5 focus:ring-2',
165
+ });
166
+
167
+ const defaultFlowbiteAlertButtonConfig = {
168
+ baseTheme: flowbiteAlertButtonTheme,
169
+ customTheme: {},
170
+ };
171
+ const FlowbiteAlertButtonConfigToken = new InjectionToken('FlowbiteAlertButtonConfigToken');
172
+ /**
173
+ * Provide the default AlertButton configuration
174
+ * @param config The AlertButton configuration
175
+ * @returns The provider
176
+ */
177
+ const provideFlowbiteAlertButtonConfig = (config) => [
178
+ {
179
+ provide: FlowbiteAlertButtonConfigToken,
180
+ useValue: { ...defaultFlowbiteAlertButtonConfig, ...config },
181
+ },
182
+ ];
183
+ /**
184
+ * Inject the AlertButton configuration
185
+ * @see {@link defaultFlowbiteAlertButtonConfig}
186
+ * @returns The configuration
187
+ */
188
+ const injectFlowbiteAlertButtonConfig = () => inject(FlowbiteAlertButtonConfigToken, { optional: true }) ?? defaultFlowbiteAlertButtonConfig;
189
+
190
+ const FlowbiteAlertButtonStateToken = createStateToken('Flowbite AlertButton');
191
+ const provideFlowbiteAlertButtonState = createStateProvider(FlowbiteAlertButtonStateToken);
192
+ const injectFlowbiteAlertButtonState = createStateInjector(FlowbiteAlertButtonStateToken);
193
+ const flowbiteAlertButtonState = createState(FlowbiteAlertButtonStateToken);
194
+
195
+ class AlertButton {
196
+ constructor() {
197
+ this.config = injectFlowbiteAlertButtonConfig();
198
+ this.alertState = injectFlowbiteAlertState();
199
+ /**
200
+ * @see {@link injectFlowbiteAlertButtonConfig}
201
+ */
202
+ this.customTheme = input(this.config.customTheme);
203
+ this.theme = computed(() => {
204
+ const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
205
+ return {
206
+ host: {
207
+ root: twMerge(mergedTheme.host.base, mergedTheme.host.transition, colorToTheme(mergedTheme.host.color, this.alertState().color())),
208
+ },
209
+ };
210
+ });
211
+ /**
212
+ * @internal
213
+ */
214
+ this.state = flowbiteAlertButtonState(this);
215
+ }
216
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AlertButton, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
217
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: AlertButton, isStandalone: true, selector: "\n button[flowbiteAlertButton],\n a[flowbiteAlertButton]\n ", inputs: { customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteAlertButtonState()], exportAs: ["flowbiteAlertButton"], hostDirectives: [{ directive: i1.NgpButton, inputs: ["disabled", "disabled"] }, { directive: i2.NgpFocus }], ngImport: i0 }); }
218
+ }
219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AlertButton, decorators: [{
220
+ type: Directive,
221
+ args: [{
222
+ standalone: true,
223
+ selector: `
224
+ button[flowbiteAlertButton],
225
+ a[flowbiteAlertButton]
226
+ `,
227
+ exportAs: 'flowbiteAlertButton',
228
+ hostDirectives: [
229
+ {
230
+ directive: NgpButton,
231
+ inputs: ['disabled:disabled'],
232
+ outputs: [],
233
+ },
234
+ {
235
+ directive: NgpFocus,
236
+ inputs: [],
237
+ outputs: [],
238
+ },
239
+ ],
240
+ providers: [provideFlowbiteAlertButtonState()],
241
+ host: { '[class]': `theme().host.root` },
242
+ }]
243
+ }] });
244
+
245
+ const flowbiteAlertContentTheme = createTheme({
246
+ host: {
247
+ base: 'flex items-center justify-between text-sm font-normal',
248
+ transition: '',
266
249
  color: {
267
- primary: 'text-primary-500 dark:text-primary-600 hover:bg-primary-200 dark:hover:bg-primary-300',
268
- dark: 'text-gray-500 dark:text-gray-600 hover:bg-gray-200 dark:hover:bg-gray-300',
269
- blue: 'text-blue-500 dark:text-blue-600 hover:bg-blue-200 dark:hover:bg-blue-300',
270
- red: 'text-red-500 dark:text-red-600 hover:bg-red-200 dark:hover:bg-red-300',
271
- green: 'text-green-500 dark:text-green-600 hover:bg-green-200 dark:hover:bg-green-300',
272
- yellow: 'text-yellow-500 dark:text-yellow-600 hover:bg-yellow-200 dark:hover:bg-yellow-300',
250
+ default: {
251
+ light: 'text-gray-800',
252
+ dark: 'dark:text-gray-300',
253
+ },
254
+ info: {
255
+ light: 'text-blue-800',
256
+ dark: 'dark:text-blue-300',
257
+ },
258
+ failure: {
259
+ light: 'text-red-800',
260
+ dark: 'dark:text-red-300',
261
+ },
262
+ success: {
263
+ light: 'text-green-800',
264
+ dark: 'dark:text-green-300',
265
+ },
266
+ warning: {
267
+ light: 'text-yellow-800',
268
+ dark: 'dark:text-yellow-300',
269
+ },
270
+ primary: {
271
+ light: 'text-primary-800',
272
+ dark: 'dark:text-primary-300',
273
+ },
273
274
  },
274
275
  },
275
276
  });
276
277
 
278
+ const defaultFlowbiteAlertContentConfig = {
279
+ baseTheme: flowbiteAlertContentTheme,
280
+ customTheme: {},
281
+ };
282
+ const FlowbiteAlertContentConfigToken = new InjectionToken('FlowbiteAlertContentConfigToken');
283
+ /**
284
+ * Provide the default AlertContent configuration
285
+ * @param config The AlertContent configuration
286
+ * @returns The provider
287
+ */
288
+ const provideFlowbiteAlertContentConfig = (config) => [
289
+ {
290
+ provide: FlowbiteAlertContentConfigToken,
291
+ useValue: { ...defaultFlowbiteAlertContentConfig, ...config },
292
+ },
293
+ ];
294
+ /**
295
+ * Inject the AlertContent configuration
296
+ * @see {@link defaultFlowbiteAlertContentConfig}
297
+ * @returns The configuration
298
+ */
299
+ const injectFlowbiteAlertContentConfig = () => inject(FlowbiteAlertContentConfigToken, { optional: true }) ?? defaultFlowbiteAlertContentConfig;
300
+
301
+ const FlowbiteAlertContentStateToken = createStateToken('Flowbite AlertContent');
302
+ const provideFlowbiteAlertContentState = createStateProvider(FlowbiteAlertContentStateToken);
303
+ const injectFlowbiteAlertContentState = createStateInjector(FlowbiteAlertContentStateToken);
304
+ const flowbiteAlertContentState = createState(FlowbiteAlertContentStateToken);
305
+
306
+ class AlertContent {
307
+ constructor() {
308
+ this.config = injectFlowbiteAlertContentConfig();
309
+ this.alertState = injectFlowbiteAlertState();
310
+ /**
311
+ * @see {@link injectFlowbiteAlertContentConfig}
312
+ */
313
+ this.customTheme = input(this.config.customTheme);
314
+ this.theme = computed(() => {
315
+ const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
316
+ return {
317
+ host: {
318
+ root: twMerge(mergedTheme.host.base, mergedTheme.host.transition, colorToTheme(mergedTheme.host.color, this.alertState().color())),
319
+ },
320
+ };
321
+ });
322
+ /**
323
+ * @internal
324
+ */
325
+ this.state = flowbiteAlertContentState(this);
326
+ }
327
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AlertContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
328
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: AlertContent, isStandalone: true, selector: "\n div[flowbiteAlertContent]\n ", inputs: { customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteAlertContentState()], exportAs: ["flowbiteAlertContent"], ngImport: i0 }); }
329
+ }
330
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AlertContent, decorators: [{
331
+ type: Directive,
332
+ args: [{
333
+ standalone: true,
334
+ selector: `
335
+ div[flowbiteAlertContent]
336
+ `,
337
+ exportAs: 'flowbiteAlertContent',
338
+ hostDirectives: [],
339
+ providers: [provideFlowbiteAlertContentState()],
340
+ host: { '[class]': `theme().host.root` },
341
+ }]
342
+ }] });
343
+
344
+ /* Alert */
345
+
277
346
  /**
278
347
  * Generated bundle index. Do not edit.
279
348
  */
280
349
 
281
- export { AlertComponent, AlertThemeService, FLOWBITE_ALERT_ADDITIONAL_CONTENT_DEFAULT_VALUE, FLOWBITE_ALERT_COLOR_DEFAULT_VALUE, FLOWBITE_ALERT_CUSTOM_STYLE_DEFAULT_VALUE, FLOWBITE_ALERT_HAS_BORDER_ACCENT_DEFAULT_VALUE, FLOWBITE_ALERT_HAS_BORDER_DEFAULT_VALUE, FLOWBITE_ALERT_ICON_DEFAULT_VALUE, FLOWBITE_ALERT_IS_DISMISSABLE_DEFAULT_VALUE, FLOWBITE_ALERT_ON_DISMISS_DEFAULT_VALUE, FLOWBITE_ALERT_THEME_TOKEN, alertDefaultValueProvider, alertTheme };
350
+ export { Alert, AlertButton, AlertContent, FlowbiteAlertButtonConfigToken, FlowbiteAlertButtonStateToken, FlowbiteAlertConfigToken, FlowbiteAlertContentConfigToken, FlowbiteAlertContentStateToken, FlowbiteAlertStateToken, defaultFlowbiteAlertButtonConfig, defaultFlowbiteAlertConfig, defaultFlowbiteAlertContentConfig, flowbiteAlertButtonState, flowbiteAlertButtonTheme, flowbiteAlertContentState, flowbiteAlertContentTheme, flowbiteAlertState, flowbiteAlertTheme, injectFlowbiteAlertButtonConfig, injectFlowbiteAlertButtonState, injectFlowbiteAlertConfig, injectFlowbiteAlertContentConfig, injectFlowbiteAlertContentState, injectFlowbiteAlertState, provideFlowbiteAlertButtonConfig, provideFlowbiteAlertButtonState, provideFlowbiteAlertConfig, provideFlowbiteAlertContentConfig, provideFlowbiteAlertContentState, provideFlowbiteAlertState };
282
351
  //# sourceMappingURL=flowbite-angular-alert.mjs.map