flowbite-angular 1.3.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 +339 -479
  15. package/fesm2022/flowbite-angular-accordion.mjs.map +1 -1
  16. package/fesm2022/flowbite-angular-alert.mjs +308 -240
  17. package/fesm2022/flowbite-angular-alert.mjs.map +1 -1
  18. package/fesm2022/flowbite-angular-badge.mjs +332 -238
  19. package/fesm2022/flowbite-angular-badge.mjs.map +1 -1
  20. package/fesm2022/flowbite-angular-breadcrumb.mjs +262 -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 +189 -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 +272 -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 +337 -486
  83. package/fesm2022/flowbite-angular-modal.mjs.map +1 -1
  84. package/fesm2022/flowbite-angular-navbar.mjs +600 -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 +400 -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 -196
  163. package/badge/badge.theme.d.ts +0 -53
  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 -139
  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 -193
  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,283 +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
- },
65
+ const provideFlowbiteAlertConfig = (config) => [
55
66
  {
56
- provide: FLOWBITE_ALERT_HAS_BORDER_DEFAULT_VALUE,
57
- useValue: false,
67
+ provide: FlowbiteAlertConfigToken,
68
+ useValue: { ...defaultFlowbiteAlertConfig, ...config },
58
69
  },
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
- },
71
- {
72
- provide: FLOWBITE_ALERT_ADDITIONAL_CONTENT_DEFAULT_VALUE,
73
- useValue: null,
74
- },
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);
90
- /**
91
- * Service injected used to generate class
92
- */
93
- this.themeService = inject(AlertThemeService);
94
- /**
95
- * `IcoRegistry` service
96
- */
97
- this.iconRegistry = inject(IconRegistry);
98
- /**
99
- * `DomSanitizer` service
100
- */
101
- this.domSanitizer = inject(DomSanitizer);
102
- //#region properties
103
- /**
104
- * Set the indicator color
105
- *
106
- * @default primary
107
- */
108
- this.color = model(inject(FLOWBITE_ALERT_COLOR_DEFAULT_VALUE));
85
+ this.config = injectFlowbiteAlertConfig();
109
86
  /**
110
- * Set if the alert has border
111
- *
112
- * @default false
87
+ * @see {@link injectFlowbiteAlertConfig}
113
88
  */
114
- this.hasBorder = model(inject(FLOWBITE_ALERT_HAS_BORDER_DEFAULT_VALUE));
89
+ this.color = input(this.config.color);
115
90
  /**
116
- * Set if the alert has border accent
117
- *
118
- * @default false
91
+ * @see {@link injectFlowbiteAlertConfig}
119
92
  */
120
- this.hasBorderAccent = model(inject(FLOWBITE_ALERT_HAS_BORDER_ACCENT_DEFAULT_VALUE));
93
+ this.border = input(this.config.border, { transform: booleanAttribute });
121
94
  /**
122
- * Set the custom style for this alert
95
+ * @see {@link injectFlowbiteAlertConfig}
123
96
  */
124
- this.customStyle = model(inject(FLOWBITE_ALERT_CUSTOM_STYLE_DEFAULT_VALUE));
97
+ this.accent = input(this.config.accent, { transform: booleanAttribute });
125
98
  /**
126
- * Set the custom icon
127
- *
128
- * @default null
99
+ * @see {@link injectFlowbiteAlertConfig}
129
100
  */
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));
149
- }
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();
113
+ this.state = flowbiteAlertState(this);
171
114
  }
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
121
  standalone: true,
204
- imports: [NgTemplateOutlet, IconComponent],
205
- selector: 'flowbite-alert',
206
- template: `
207
- <div class="flex items-center">
208
- <ng-container [ngTemplateOutlet]="icon()"></ng-container>
209
- <div>
210
- <ng-content />
211
- </div>
212
- @if (isDismissable()) {
213
- <button
214
- type="button"
215
- [class]="contentClasses()!.closeButtonClass"
216
- aria-label="Close"
217
- (click)="onDismissClick()">
218
- <span class="sr-only">Close</span>
219
- <flowbite-icon
220
- svgIcon="flowbite-angular:close"
221
- class="h-5 w-5" />
222
- </button>
223
- }
224
- </div>
225
- <ng-container [ngTemplateOutlet]="additionalContent()"></ng-container>
122
+ selector: `
123
+ div[flowbiteAlert]
226
124
  `,
125
+ exportAs: 'flowbiteAlert',
126
+ hostDirectives: [],
127
+ providers: [provideFlowbiteAlertState()],
227
128
  host: {
228
- '[attr.role]': 'alert',
229
- '[@onDestroyAnimation]': '',
129
+ '[class]': `theme().host.root`,
230
130
  },
231
- animations: [
232
- trigger('onDestroyAnimation', [
233
- transition(':enter', [style({ opacity: 0 }), animate('300ms', style({ opacity: 1 }))]),
234
- transition(':leave', [animate('300ms', style({ opacity: 0 }))]),
235
- ]),
236
- ],
237
- encapsulation: ViewEncapsulation.None,
238
- changeDetection: ChangeDetectionStrategy.OnPush,
239
131
  }]
240
132
  }] });
241
133
 
242
- /**
243
- * Default theme for `AlertComponent`
244
- */
245
- const alertTheme = createTheme({
246
- root: {
247
- 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: '',
248
138
  color: {
249
- primary: 'text-primary-800 dark:text-primary-400 bg-primary-50 dark:bg-gray-800 border-primary-300 dark:border-primary-800',
250
- dark: 'text-gray-800 dark:text-gray-300 bg-gray-100 dark:bg-gray-800 border-gray-300 dark:border-gray-600',
251
- blue: 'text-blue-800 dark:text-blue-400 bg-blue-50 dark:bg-gray-800 border-blue-300 dark:border-blue-800',
252
- red: 'text-red-800 dark:text-red-400 bg-red-100 dark:bg-gray-800 border-red-300 dark:border-red-800',
253
- green: 'text-green-800 dark:text-green-400 bg-green-100 dark:bg-gray-800 border-green-300 dark:border-green-800',
254
- yellow: 'text-yellow-800 dark:text-yellow-300 bg-yellow-100 dark:bg-gray-800 border-yellow-300 dark:border-yellow-800',
255
- },
256
- hasBorder: {
257
- enabled: 'border',
258
- disabled: 'border-0',
259
- },
260
- hasBorderAccent: {
261
- enabled: 'border-t-4',
262
- 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
+ },
263
163
  },
264
164
  },
265
- closeButton: {
266
- 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: '',
267
249
  color: {
268
- primary: 'text-primary-500 dark:text-primary-600 hover:bg-primary-200 dark:hover:bg-primary-300',
269
- dark: 'text-gray-500 dark:text-gray-600 hover:bg-gray-200 dark:hover:bg-gray-300',
270
- blue: 'text-blue-500 dark:text-blue-600 hover:bg-blue-200 dark:hover:bg-blue-300',
271
- red: 'text-red-500 dark:text-red-600 hover:bg-red-200 dark:hover:bg-red-300',
272
- green: 'text-green-500 dark:text-green-600 hover:bg-green-200 dark:hover:bg-green-300',
273
- 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
+ },
274
274
  },
275
275
  },
276
276
  });
277
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
+
278
346
  /**
279
347
  * Generated bundle index. Do not edit.
280
348
  */
281
349
 
282
- 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 };
283
351
  //# sourceMappingURL=flowbite-angular-alert.mjs.map