flowbite-angular 1.3.0 → 20.0.2

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 (309) 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/flowbite-angular.css +2 -0
  99. package/{alert → form}/README.md +2 -2
  100. package/form/index.d.ts +684 -0
  101. package/{breadcrumb → icon/brand}/README.md +2 -2
  102. package/icon/brand/index.d.ts +66 -0
  103. package/icon/index.d.ts +322 -5
  104. package/icon/outline/README.md +4 -0
  105. package/icon/outline/arrows/index.d.ts +46 -0
  106. package/icon/outline/e-commerce/index.d.ts +18 -0
  107. package/icon/outline/emoji/index.d.ts +8 -0
  108. package/icon/outline/files-folders/index.d.ts +37 -0
  109. package/icon/outline/general/index.d.ts +140 -0
  110. package/icon/outline/index.d.ts +2 -0
  111. package/icon/outline/media/index.d.ts +20 -0
  112. package/icon/outline/text/index.d.ts +15 -0
  113. package/icon/outline/user/index.d.ts +12 -0
  114. package/icon/outline/weather/index.d.ts +4 -0
  115. package/icon/solid/README.md +4 -0
  116. package/icon/solid/arrows/index.d.ts +12 -0
  117. package/icon/solid/brands/index.d.ts +28 -0
  118. package/icon/solid/e-commerce/index.d.ts +16 -0
  119. package/icon/solid/emoji/index.d.ts +8 -0
  120. package/icon/solid/files-folder/index.d.ts +37 -0
  121. package/icon/solid/general/index.d.ts +118 -0
  122. package/icon/solid/index.d.ts +2 -0
  123. package/icon/solid/media/index.d.ts +19 -0
  124. package/icon/solid/text/index.d.ts +6 -0
  125. package/icon/solid/user/index.d.ts +12 -0
  126. package/icon/solid/weather/index.d.ts +4 -0
  127. package/index.d.ts +126 -3
  128. package/indicator/index.d.ts +242 -4
  129. package/modal/index.d.ts +458 -16
  130. package/navbar/index.d.ts +1467 -24
  131. package/package.json +133 -38
  132. package/pagination/README.md +4 -0
  133. package/pagination/index.d.ts +1135 -0
  134. package/sidebar/index.d.ts +880 -24
  135. package/styles/flowbite-angular.css +8 -0
  136. package/styles/part/animation.css +0 -0
  137. package/styles/part/color.css +125 -0
  138. package/styles/part/font-size.css +67 -0
  139. package/styles/part/rounded.css +11 -0
  140. package/styles/part/shadow.css +9 -0
  141. package/styles/part/spacing.css +38 -0
  142. package/{badge → tab}/README.md +2 -2
  143. package/tab/index.d.ts +791 -0
  144. package/theme-toggle/README.md +4 -0
  145. package/theme-toggle/index.d.ts +342 -0
  146. package/{button → tooltip}/README.md +2 -2
  147. package/tooltip/index.d.ts +158 -0
  148. package/accordion/accordion-content.component.d.ts +0 -69
  149. package/accordion/accordion-content.theme.d.ts +0 -28
  150. package/accordion/accordion-content.theme.service.d.ts +0 -19
  151. package/accordion/accordion-panel.component.d.ts +0 -67
  152. package/accordion/accordion-panel.theme.d.ts +0 -23
  153. package/accordion/accordion-panel.theme.service.d.ts +0 -20
  154. package/accordion/accordion-title.component.d.ts +0 -106
  155. package/accordion/accordion-title.theme.d.ts +0 -35
  156. package/accordion/accordion-title.theme.service.d.ts +0 -19
  157. package/accordion/accordion.component.d.ts +0 -61
  158. package/accordion/accordion.theme.d.ts +0 -29
  159. package/accordion/accordion.theme.service.d.ts +0 -19
  160. package/alert/alert.component.d.ts +0 -150
  161. package/alert/alert.theme.d.ts +0 -39
  162. package/alert/alert.theme.service.d.ts +0 -19
  163. package/badge/badge.component.d.ts +0 -196
  164. package/badge/badge.theme.d.ts +0 -53
  165. package/badge/badge.theme.service.d.ts +0 -19
  166. package/base-component.directive.d.ts +0 -51
  167. package/breadcrumb/breadcrumb-item.component.d.ts +0 -84
  168. package/breadcrumb/breadcrumb-item.theme.d.ts +0 -33
  169. package/breadcrumb/breadcrumb-item.theme.service.d.ts +0 -19
  170. package/breadcrumb/breadcrumb.component.d.ts +0 -43
  171. package/breadcrumb/breadcrumb.theme.d.ts +0 -29
  172. package/breadcrumb/breadcrumb.theme.service.d.ts +0 -19
  173. package/button/button.component.d.ts +0 -250
  174. package/button/button.theme.d.ts +0 -79
  175. package/button/button.theme.service.d.ts +0 -19
  176. package/core/flowbite.theme.init.d.ts +0 -9
  177. package/core/index.d.ts +0 -1
  178. package/dark-theme-toggle/README.md +0 -4
  179. package/dark-theme-toggle/dark-theme-toggle.component.d.ts +0 -51
  180. package/dark-theme-toggle/dark-theme-toggle.theme.d.ts +0 -23
  181. package/dark-theme-toggle/dark-theme-toggle.theme.service.d.ts +0 -19
  182. package/dark-theme-toggle/index.d.ts +0 -3
  183. package/dropdown/README.md +0 -4
  184. package/dropdown/dropdown-divider.component.d.ts +0 -36
  185. package/dropdown/dropdown-divider.theme.d.ts +0 -23
  186. package/dropdown/dropdown-divider.theme.service.d.ts +0 -19
  187. package/dropdown/dropdown-header.component.d.ts +0 -42
  188. package/dropdown/dropdown-header.theme.d.ts +0 -28
  189. package/dropdown/dropdown-header.theme.service.d.ts +0 -19
  190. package/dropdown/dropdown-item.component.d.ts +0 -36
  191. package/dropdown/dropdown-item.theme.d.ts +0 -23
  192. package/dropdown/dropdown-item.theme.service.d.ts +0 -19
  193. package/dropdown/dropdown.component.d.ts +0 -136
  194. package/dropdown/dropdown.theme.d.ts +0 -56
  195. package/dropdown/dropdown.theme.service.d.ts +0 -19
  196. package/fesm2022/flowbite-angular-core.mjs +0 -322
  197. package/fesm2022/flowbite-angular-core.mjs.map +0 -1
  198. package/fesm2022/flowbite-angular-dark-theme-toggle.mjs +0 -139
  199. package/fesm2022/flowbite-angular-dark-theme-toggle.mjs.map +0 -1
  200. package/fesm2022/flowbite-angular-router-link-active.mjs +0 -68
  201. package/fesm2022/flowbite-angular-router-link-active.mjs.map +0 -1
  202. package/fesm2022/flowbite-angular-router-link.mjs +0 -73
  203. package/fesm2022/flowbite-angular-router-link.mjs.map +0 -1
  204. package/fesm2022/flowbite-angular-sanitize-html.mjs +0 -39
  205. package/fesm2022/flowbite-angular-sanitize-html.mjs.map +0 -1
  206. package/fesm2022/flowbite-angular-scroll-top.mjs +0 -193
  207. package/fesm2022/flowbite-angular-scroll-top.mjs.map +0 -1
  208. package/fesm2022/flowbite-angular-theme.mjs +0 -78
  209. package/fesm2022/flowbite-angular-theme.mjs.map +0 -1
  210. package/fesm2022/flowbite-angular-utils.mjs +0 -210
  211. package/fesm2022/flowbite-angular-utils.mjs.map +0 -1
  212. package/flowbite.theme.service.d.ts +0 -12
  213. package/icon/icon-registry.d.ts +0 -45
  214. package/icon/icon.component.d.ts +0 -22
  215. package/icon/trusted-types.d.ts +0 -15
  216. package/indicator/indicators.component.d.ts +0 -224
  217. package/indicator/indicators.theme.d.ts +0 -59
  218. package/indicator/indicators.theme.service.d.ts +0 -19
  219. package/modal/modal-body.component.d.ts +0 -36
  220. package/modal/modal-body.theme.d.ts +0 -23
  221. package/modal/modal-body.theme.service.d.ts +0 -19
  222. package/modal/modal-footer.component.d.ts +0 -36
  223. package/modal/modal-footer.theme.d.ts +0 -23
  224. package/modal/modal-footer.theme.service.d.ts +0 -19
  225. package/modal/modal-header.component.d.ts +0 -60
  226. package/modal/modal-header.theme.d.ts +0 -32
  227. package/modal/modal-header.theme.service.d.ts +0 -19
  228. package/modal/modal.component.d.ts +0 -146
  229. package/modal/modal.theme.d.ts +0 -35
  230. package/modal/modal.theme.service.d.ts +0 -19
  231. package/navbar/navbar-brand.component.d.ts +0 -36
  232. package/navbar/navbar-brand.theme.d.ts +0 -23
  233. package/navbar/navbar-brand.theme.service.d.ts +0 -19
  234. package/navbar/navbar-content.component.d.ts +0 -50
  235. package/navbar/navbar-content.theme.d.ts +0 -28
  236. package/navbar/navbar-content.theme.service.d.ts +0 -19
  237. package/navbar/navbar-icon-button.component.d.ts +0 -59
  238. package/navbar/navbar-icon-button.theme.d.ts +0 -26
  239. package/navbar/navbar-icon-button.theme.service.d.ts +0 -19
  240. package/navbar/navbar-item.component.d.ts +0 -67
  241. package/navbar/navbar-item.theme.d.ts +0 -26
  242. package/navbar/navbar-item.theme.service.d.ts +0 -19
  243. package/navbar/navbar-toggle.component.d.ts +0 -51
  244. package/navbar/navbar-toggle.theme.d.ts +0 -23
  245. package/navbar/navbar-toggle.theme.service.d.ts +0 -19
  246. package/navbar/navbar.component.d.ts +0 -121
  247. package/navbar/navbar.theme.d.ts +0 -21
  248. package/navbar/navbar.theme.service.d.ts +0 -19
  249. package/router-link/README.md +0 -4
  250. package/router-link/flowbite-router-link.directive.d.ts +0 -28
  251. package/router-link/index.d.ts +0 -1
  252. package/router-link-active/README.md +0 -4
  253. package/router-link-active/flowbite-router-link-active.directive.d.ts +0 -37
  254. package/router-link-active/index.d.ts +0 -1
  255. package/sanitize-html/README.md +0 -4
  256. package/sanitize-html/index.d.ts +0 -1
  257. package/sanitize-html/sanitize-html.pipe.d.ts +0 -20
  258. package/scroll-top/README.md +0 -4
  259. package/scroll-top/index.d.ts +0 -4
  260. package/scroll-top/scroll-top.component.d.ts +0 -114
  261. package/scroll-top/scroll-top.theme.d.ts +0 -39
  262. package/scroll-top/scroll-top.theme.service.d.ts +0 -19
  263. package/sidebar/sidebar-item-group.component.d.ts +0 -100
  264. package/sidebar/sidebar-item-group.theme.d.ts +0 -31
  265. package/sidebar/sidebar-item-group.theme.service.d.ts +0 -19
  266. package/sidebar/sidebar-item.component.d.ts +0 -101
  267. package/sidebar/sidebar-item.theme.d.ts +0 -33
  268. package/sidebar/sidebar-item.theme.service.d.ts +0 -19
  269. package/sidebar/sidebar-menu.component.d.ts +0 -93
  270. package/sidebar/sidebar-menu.theme.d.ts +0 -30
  271. package/sidebar/sidebar-menu.theme.service.d.ts +0 -19
  272. package/sidebar/sidebar-page-content.component.d.ts +0 -46
  273. package/sidebar/sidebar-page-content.theme.d.ts +0 -27
  274. package/sidebar/sidebar-page-content.theme.service.d.ts +0 -19
  275. package/sidebar/sidebar-toggle.component.d.ts +0 -95
  276. package/sidebar/sidebar-toggle.theme.d.ts +0 -34
  277. package/sidebar/sidebar-toggle.theme.service.d.ts +0 -19
  278. package/sidebar/sidebar.component.d.ts +0 -84
  279. package/sidebar/sidebar.theme.d.ts +0 -22
  280. package/sidebar/sidebar.theme.service.d.ts +0 -19
  281. package/tailwind.config.js +0 -303
  282. package/theme/README.md +0 -4
  283. package/theme/flowbite-theme.directive.d.ts +0 -36
  284. package/theme/index.d.ts +0 -1
  285. package/type-definitions/colors/flowbite.colors.d.ts +0 -19
  286. package/type-definitions/colors/flowbite.gradient-colors.d.ts +0 -11
  287. package/type-definitions/colors/flowbite.gradient-duo-tone-colors.d.ts +0 -12
  288. package/type-definitions/colors/index.d.ts +0 -3
  289. package/type-definitions/flowbite.boolean.d.ts +0 -14
  290. package/type-definitions/flowbite.class.d.ts +0 -6
  291. package/type-definitions/flowbite.combination.d.ts +0 -8
  292. package/type-definitions/flowbite.content-positions.d.ts +0 -6
  293. package/type-definitions/flowbite.deep-partial.d.ts +0 -6
  294. package/type-definitions/flowbite.heading-levels.d.ts +0 -4
  295. package/type-definitions/flowbite.positions.d.ts +0 -14
  296. package/type-definitions/flowbite.router-link-parameter.d.ts +0 -5
  297. package/type-definitions/flowbite.sizes.d.ts +0 -10
  298. package/type-definitions/flowbite.themes.d.ts +0 -4
  299. package/type-definitions/index.d.ts +0 -12
  300. package/utils/README.md +0 -4
  301. package/utils/icon.list.d.ts +0 -7
  302. package/utils/id.generator.d.ts +0 -59
  303. package/utils/index.d.ts +0 -8
  304. package/utils/theme/clone-deep.d.ts +0 -7
  305. package/utils/theme/create-class.d.ts +0 -7
  306. package/utils/theme/create-theme.d.ts +0 -7
  307. package/utils/theme/is-object.d.ts +0 -7
  308. package/utils/theme/merge-theme.d.ts +0 -8
  309. package/utils/theme/to-string.d.ts +0 -7
@@ -1,582 +1,433 @@
1
- import { mergeTheme, CLOSE_SVG_ICON, createTheme } from 'flowbite-angular/utils';
1
+ import { createTheme, mergeDeep } from 'flowbite-angular';
2
2
  import * as i0 from '@angular/core';
3
- import { InjectionToken, inject, Injectable, makeEnvironmentProviders, model, Component, ViewEncapsulation, ChangeDetectionStrategy, contentChild, viewChild, TemplateRef, ViewContainerRef } from '@angular/core';
3
+ import { InjectionToken, inject, input, computed, Directive } from '@angular/core';
4
+ import { createStateToken, createStateProvider, createStateInjector, createState } from 'ng-primitives/state';
5
+ import * as i1 from 'ng-primitives/dialog';
6
+ import { NgpDialog, NgpDialogOverlay, NgpDialogTitle, NgpDialogDescription } from 'ng-primitives/dialog';
4
7
  import { twMerge } from 'tailwind-merge';
5
- import { BaseComponent, booleanToFlowbiteBoolean } from 'flowbite-angular';
6
- import { IconRegistry, IconComponent } from 'flowbite-angular/icon';
7
- import { DomSanitizer } from '@angular/platform-browser';
8
- import { Router, NavigationStart } from '@angular/router';
9
- import { Subject, takeUntil, filter } from 'rxjs';
10
8
 
9
+ const flowbiteModalTheme = createTheme({
10
+ host: {
11
+ base: 'h-max w-full rounded-lg bg-white shadow dark:bg-gray-700',
12
+ transition: '',
13
+ size: {
14
+ sm: 'max-w-md',
15
+ md: 'max-w-lg',
16
+ lg: 'max-w-4xl',
17
+ xl: 'max-w-7xl',
18
+ },
19
+ },
20
+ });
21
+
22
+ const defaultFlowbiteModalConfig = {
23
+ baseTheme: flowbiteModalTheme,
24
+ size: 'md',
25
+ customTheme: {},
26
+ };
27
+ const FlowbiteModalConfigToken = new InjectionToken('FlowbiteModalConfigToken');
11
28
  /**
12
- * `InjectionToken` used to import `ModalBodyTheme` value
13
- *
14
- * @example
15
- * ```
16
- * var theme = inject(FLOWBITE_MODAL_BODY_THEME_TOKEN)
17
- * ```
29
+ * Provide the default Modal configuration
30
+ * @param config The Modal configuration
31
+ * @returns The provider
18
32
  */
19
- const FLOWBITE_MODAL_BODY_THEME_TOKEN = new InjectionToken('FLOWBITE_MODAL_BODY_THEME_TOKEN');
20
- class ModalBodyThemeService {
21
- constructor() {
22
- this.baseTheme = inject(FLOWBITE_MODAL_BODY_THEME_TOKEN);
23
- }
24
- getClasses(properties) {
25
- const theme = mergeTheme(this.baseTheme, properties.customStyle);
26
- const output = {
27
- rootClass: twMerge(theme.root.base),
28
- };
29
- return output;
30
- }
31
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalBodyThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
32
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalBodyThemeService, providedIn: 'root' }); }
33
- }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalBodyThemeService, decorators: [{
35
- type: Injectable,
36
- args: [{
37
- providedIn: 'root',
38
- }]
39
- }] });
40
-
41
- const FLOWBITE_MODAL_BODY_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_BODY_CUSTOM_STYLE_DEFAULT_VALUE');
42
- const modalBodyDefaultValueProvider = makeEnvironmentProviders([
33
+ const provideFlowbiteModalConfig = (config) => [
43
34
  {
44
- provide: FLOWBITE_MODAL_BODY_CUSTOM_STYLE_DEFAULT_VALUE,
45
- useValue: {},
35
+ provide: FlowbiteModalConfigToken,
36
+ useValue: { ...defaultFlowbiteModalConfig, ...config },
46
37
  },
47
- ]);
38
+ ];
48
39
  /**
49
- * @see https://flowbite.com/docs/components/modal/
40
+ * Inject the Modal configuration
41
+ * @see {@link defaultFlowbiteModalConfig}
42
+ * @returns The configuration
50
43
  */
51
- class ModalBodyComponent extends BaseComponent {
44
+ const injectFlowbiteModalConfig = () => inject(FlowbiteModalConfigToken, { optional: true }) ?? defaultFlowbiteModalConfig;
45
+
46
+ const FlowbiteModalStateToken = createStateToken('Flowbite Modal');
47
+ const provideFlowbiteModalState = createStateProvider(FlowbiteModalStateToken);
48
+ const injectFlowbiteModalState = createStateInjector(FlowbiteModalStateToken);
49
+ const flowbiteModalState = createState(FlowbiteModalStateToken);
50
+
51
+ class Modal {
52
52
  constructor() {
53
- super(...arguments);
53
+ this.config = injectFlowbiteModalConfig();
54
54
  /**
55
- * Service injected used to generate class
55
+ * @see {@link injectFlowbiteModalConfig}
56
56
  */
57
- this.themeService = inject(ModalBodyThemeService);
57
+ this.size = input(this.config.size);
58
58
  /**
59
- * The parent `ModalComponent`
59
+ * @see {@link injectFlowbiteModalConfig}
60
60
  */
61
- this.modalComponent = inject(ModalComponent);
62
- //#region properties
61
+ this.customTheme = input(this.config.customTheme);
62
+ this.theme = computed(() => {
63
+ const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
64
+ return {
65
+ host: {
66
+ root: twMerge(mergedTheme.host.base, mergedTheme.host.transition, mergedTheme.host.size[this.state.size()]),
67
+ },
68
+ };
69
+ });
63
70
  /**
64
- * Set the custom style for this modal body
71
+ * @internal
65
72
  */
66
- this.customStyle = model(inject(FLOWBITE_MODAL_BODY_CUSTOM_STYLE_DEFAULT_VALUE));
67
- }
68
- //#endregion
69
- //#region BaseComponent implementation
70
- fetchClass() {
71
- return this.themeService.getClasses({
72
- customStyle: this.customStyle(),
73
- });
73
+ this.state = flowbiteModalState(this);
74
74
  }
75
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalBodyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
76
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.4", type: ModalBodyComponent, isStandalone: true, selector: "flowbite-modal-body", inputs: { customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { customStyle: "customStyleChange" }, usesInheritance: true, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
75
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: Modal, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
76
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: Modal, isStandalone: true, selector: "\n div[flowbiteModal],\n section[flowbiteModal]\n ", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteModalState()], exportAs: ["flowbiteModal"], hostDirectives: [{ directive: i1.NgpDialog, inputs: ["id", "id", "ngpDialogRole", "role", "ngpDialogModal", "modal"] }], ngImport: i0 }); }
77
77
  }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalBodyComponent, decorators: [{
79
- type: Component,
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: Modal, decorators: [{
79
+ type: Directive,
80
80
  args: [{
81
81
  standalone: true,
82
- selector: 'flowbite-modal-body',
83
- template: `<ng-content />`,
84
- encapsulation: ViewEncapsulation.None,
85
- changeDetection: ChangeDetectionStrategy.OnPush,
82
+ selector: `
83
+ div[flowbiteModal],
84
+ section[flowbiteModal]
85
+ `,
86
+ exportAs: 'flowbiteModal',
87
+ hostDirectives: [
88
+ {
89
+ directive: NgpDialog,
90
+ inputs: ['id:id', 'ngpDialogRole:role', 'ngpDialogModal:modal'],
91
+ outputs: [],
92
+ },
93
+ ],
94
+ providers: [provideFlowbiteModalState()],
95
+ host: { '[class]': `theme().host.root` },
86
96
  }]
87
97
  }] });
88
98
 
99
+ const flowbiteModalOverlayTheme = createTheme({
100
+ host: {
101
+ base: 'fixed inset-0 flex bg-gray-900/50 p-4 dark:bg-gray-900/80',
102
+ transition: '',
103
+ position: {
104
+ 'top-left': 'items-start justify-start',
105
+ 'top-center': 'items-start justify-center',
106
+ 'top-right': 'items-start justify-end',
107
+ 'center-left': 'items-center justify-start',
108
+ center: 'items-center justify-center',
109
+ 'center-right': 'items-center justify-end',
110
+ 'bottom-left': 'items-end justify-start',
111
+ 'bottom-center': 'items-end justify-center',
112
+ 'bottom-right': 'items-end justify-end',
113
+ },
114
+ },
115
+ });
116
+
117
+ const defaultFlowbiteModalOverlayConfig = {
118
+ baseTheme: flowbiteModalOverlayTheme,
119
+ position: 'center',
120
+ customTheme: {},
121
+ };
122
+ const FlowbiteModalOverlayConfigToken = new InjectionToken('FlowbiteModalOverlayConfigToken');
89
123
  /**
90
- * `InjectionToken` used to import `ModalFooterTheme` value
91
- *
92
- * @example
93
- * ```
94
- * var theme = inject(FLOWBITE_MODAL_FOOTER_THEME_TOKEN)
95
- * ```
124
+ * Provide the default ModalOverlay configuration
125
+ * @param config The ModalOverlay configuration
126
+ * @returns The provider
96
127
  */
97
- const FLOWBITE_MODAL_FOOTER_THEME_TOKEN = new InjectionToken('FLOWBITE_MODAL_FOOTER_THEME_TOKEN');
98
- class ModalFooterThemeService {
99
- constructor() {
100
- this.baseTheme = inject(FLOWBITE_MODAL_FOOTER_THEME_TOKEN);
101
- }
102
- getClasses(properties) {
103
- const theme = mergeTheme(this.baseTheme, properties.customStyle);
104
- const output = {
105
- rootClass: twMerge(theme.root.base),
106
- };
107
- return output;
108
- }
109
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalFooterThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
110
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalFooterThemeService, providedIn: 'root' }); }
111
- }
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalFooterThemeService, decorators: [{
113
- type: Injectable,
114
- args: [{
115
- providedIn: 'root',
116
- }]
117
- }] });
118
-
119
- const FLOWBITE_MODAL_FOOTER_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_FOOTER_CUSTOM_STYLE_DEFAULT_VALUE');
120
- const modalFooterDefaultValueProvider = makeEnvironmentProviders([
128
+ const provideFlowbiteModalOverlayConfig = (config) => [
121
129
  {
122
- provide: FLOWBITE_MODAL_FOOTER_CUSTOM_STYLE_DEFAULT_VALUE,
123
- useValue: {},
130
+ provide: FlowbiteModalOverlayConfigToken,
131
+ useValue: { ...defaultFlowbiteModalOverlayConfig, ...config },
124
132
  },
125
- ]);
133
+ ];
126
134
  /**
127
- * @see https://flowbite.com/docs/components/modal/
135
+ * Inject the ModalOverlay configuration
136
+ * @see {@link defaultFlowbiteModalOverlayConfig}
137
+ * @returns The configuration
128
138
  */
129
- class ModalFooterComponent extends BaseComponent {
139
+ const injectFlowbiteModalOverlayConfig = () => inject(FlowbiteModalOverlayConfigToken, { optional: true }) ?? defaultFlowbiteModalOverlayConfig;
140
+
141
+ const FlowbiteModalOverlayStateToken = createStateToken('Flowbite ModalOverlay');
142
+ const provideFlowbiteModalOverlayState = createStateProvider(FlowbiteModalOverlayStateToken);
143
+ const injectFlowbiteModalOverlayState = createStateInjector(FlowbiteModalOverlayStateToken);
144
+ const flowbiteModalOverlayState = createState(FlowbiteModalOverlayStateToken);
145
+
146
+ class ModalOverlay {
130
147
  constructor() {
131
- super(...arguments);
148
+ this.config = injectFlowbiteModalOverlayConfig();
132
149
  /**
133
- * Service injected used to generate class
150
+ * @see {@link injectFlowbiteModalOverlayConfig}
134
151
  */
135
- this.themeService = inject(ModalFooterThemeService);
152
+ this.position = input(this.config.position);
136
153
  /**
137
- * The parent `ModalComponent`
154
+ * @see {@link injectFlowbiteModalOverlayConfig}
138
155
  */
139
- this.modalComponent = inject(ModalComponent);
140
- //#region properties
156
+ this.customTheme = input(this.config.customTheme);
157
+ this.theme = computed(() => {
158
+ const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
159
+ return {
160
+ host: {
161
+ root: twMerge(mergedTheme.host.base, mergedTheme.host.transition, mergedTheme.host.position[this.state.position()]),
162
+ },
163
+ };
164
+ });
141
165
  /**
142
- * Set the custom style for this modal footer
166
+ * @internal
143
167
  */
144
- this.customStyle = model(inject(FLOWBITE_MODAL_FOOTER_CUSTOM_STYLE_DEFAULT_VALUE));
168
+ this.state = flowbiteModalOverlayState(this);
145
169
  }
146
- //#endregion
147
- //#region BaseComponent implementation
148
- fetchClass() {
149
- return this.themeService.getClasses({
150
- customStyle: this.customStyle(),
151
- });
152
- }
153
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalFooterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
154
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.4", type: ModalFooterComponent, isStandalone: true, selector: "flowbite-modal-footer", inputs: { customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { customStyle: "customStyleChange" }, usesInheritance: true, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
170
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ModalOverlay, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
171
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: ModalOverlay, isStandalone: true, selector: "\n div[flowbiteModalOverlay]\n ", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteModalOverlayState()], exportAs: ["flowbiteModalOverlay"], hostDirectives: [{ directive: i1.NgpDialogOverlay, inputs: ["ngpDialogOverlayCloseOnClick", "closeOnClick"] }], ngImport: i0 }); }
155
172
  }
156
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalFooterComponent, decorators: [{
157
- type: Component,
173
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ModalOverlay, decorators: [{
174
+ type: Directive,
158
175
  args: [{
159
176
  standalone: true,
160
- selector: 'flowbite-modal-footer',
161
- template: `<ng-content />`,
162
- encapsulation: ViewEncapsulation.None,
163
- changeDetection: ChangeDetectionStrategy.OnPush,
177
+ selector: `
178
+ div[flowbiteModalOverlay]
179
+ `,
180
+ exportAs: 'flowbiteModalOverlay',
181
+ hostDirectives: [
182
+ {
183
+ directive: NgpDialogOverlay,
184
+ inputs: ['ngpDialogOverlayCloseOnClick:closeOnClick'],
185
+ outputs: [],
186
+ },
187
+ ],
188
+ providers: [provideFlowbiteModalOverlayState()],
189
+ host: { '[class]': `theme().host.root` },
164
190
  }]
165
191
  }] });
166
192
 
193
+ const flowbiteModalHeaderTheme = createTheme({
194
+ host: {
195
+ base: 'items-center justify-between rounded-t border-b border-gray-200 p-5 text-xl font-medium text-gray-900 dark:border-gray-600 dark:text-white',
196
+ transition: '',
197
+ },
198
+ });
199
+
200
+ const defaultFlowbiteModalHeaderConfig = {
201
+ baseTheme: flowbiteModalHeaderTheme,
202
+ customTheme: {},
203
+ };
204
+ const FlowbiteModalHeaderConfigToken = new InjectionToken('FlowbiteModalHeaderConfigToken');
167
205
  /**
168
- * `InjectionToken` used to import `ModalHeaderTheme` value
169
- *
170
- * @example
171
- * ```
172
- * var theme = inject(FLOWBITE_MODAL_HEADER_THEME_TOKEN)
173
- * ```
206
+ * Provide the default ModalHeader configuration
207
+ * @param config The ModalHeader configuration
208
+ * @returns The provider
174
209
  */
175
- const FLOWBITE_MODAL_HEADER_THEME_TOKEN = new InjectionToken('FLOWBITE_MODAL_HEADER_THEME_TOKEN');
176
- class ModalHeaderThemeService {
177
- constructor() {
178
- this.baseTheme = inject(FLOWBITE_MODAL_HEADER_THEME_TOKEN);
179
- }
180
- getClasses(properties) {
181
- const theme = mergeTheme(this.baseTheme, properties.customStyle);
182
- const output = {
183
- rootClass: twMerge(theme.root.base),
184
- modalHeaderTitleClass: twMerge(theme.title.base),
185
- modalHeaderButtonClass: twMerge(theme.button.base),
186
- };
187
- return output;
188
- }
189
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalHeaderThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
190
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalHeaderThemeService, providedIn: 'root' }); }
191
- }
192
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalHeaderThemeService, decorators: [{
193
- type: Injectable,
194
- args: [{
195
- providedIn: 'root',
196
- }]
197
- }] });
198
-
199
- const FLOWBITE_MODAL_HEADER_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_HEADER_CUSTOM_STYLE_DEFAULT_VALUE');
200
- const modalHeaderDefaultValueProvider = makeEnvironmentProviders([
210
+ const provideFlowbiteModalHeaderConfig = (config) => [
201
211
  {
202
- provide: FLOWBITE_MODAL_HEADER_CUSTOM_STYLE_DEFAULT_VALUE,
203
- useValue: {},
212
+ provide: FlowbiteModalHeaderConfigToken,
213
+ useValue: { ...defaultFlowbiteModalHeaderConfig, ...config },
204
214
  },
205
- ]);
215
+ ];
206
216
  /**
207
- * @see https://flowbite.com/docs/components/modal/
217
+ * Inject the ModalHeader configuration
218
+ * @see {@link defaultFlowbiteModalHeaderConfig}
219
+ * @returns The configuration
208
220
  */
209
- class ModalHeaderComponent extends BaseComponent {
221
+ const injectFlowbiteModalHeaderConfig = () => inject(FlowbiteModalHeaderConfigToken, { optional: true }) ?? defaultFlowbiteModalHeaderConfig;
222
+
223
+ const FlowbiteModalHeaderStateToken = createStateToken('Flowbite ModalHeader');
224
+ const provideFlowbiteModalHeaderState = createStateProvider(FlowbiteModalHeaderStateToken);
225
+ const injectFlowbiteModalHeaderState = createStateInjector(FlowbiteModalHeaderStateToken);
226
+ const flowbiteModalHeaderState = createState(FlowbiteModalHeaderStateToken);
227
+
228
+ class ModalHeader {
210
229
  constructor() {
211
- super(...arguments);
230
+ this.config = injectFlowbiteModalHeaderConfig();
212
231
  /**
213
- * Service injected used to generate class
232
+ * @see {@link injectFlowbiteModalHeaderConfig}
214
233
  */
215
- this.stateService = inject(ModalHeaderThemeService);
216
- /**
217
- * The parent `ModalComponent`
218
- */
219
- this.modalComponent = inject(ModalComponent);
220
- /**
221
- * `IconRegistry` service
222
- */
223
- this.iconRegistry = inject(IconRegistry);
224
- /**
225
- * `DomSanitizer` service
226
- */
227
- this.domSanitizer = inject(DomSanitizer);
228
- //#region properties
234
+ this.customTheme = input(this.config.customTheme);
235
+ this.theme = computed(() => {
236
+ const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
237
+ return {
238
+ host: {
239
+ root: twMerge(mergedTheme.host.base, mergedTheme.host.transition),
240
+ },
241
+ };
242
+ });
229
243
  /**
230
- * Set the custom style for this modal header
244
+ * @internal
231
245
  */
232
- this.customStyle = model(inject(FLOWBITE_MODAL_HEADER_CUSTOM_STYLE_DEFAULT_VALUE));
233
- }
234
- //#endregion
235
- //#region BaseComponent implementation
236
- fetchClass() {
237
- return this.stateService.getClasses({
238
- customStyle: this.customStyle(),
239
- });
246
+ this.state = flowbiteModalHeaderState(this);
240
247
  }
241
- init() {
242
- this.iconRegistry.addRawSvgIconInNamepsace('flowbite-angular', 'close', this.domSanitizer.bypassSecurityTrustHtml(CLOSE_SVG_ICON));
243
- }
244
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalHeaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
245
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.4", type: ModalHeaderComponent, isStandalone: true, selector: "flowbite-modal-header", inputs: { customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { customStyle: "customStyleChange" }, usesInheritance: true, ngImport: i0, template: `
246
- <h3 [class]="contentClasses().modalHeaderTitleClass">
247
- <ng-content />
248
- </h3>
249
- <button
250
- type="button"
251
- [class]="contentClasses().modalHeaderButtonClass"
252
- data-modal-hide="medium-modal"
253
- (click)="modalComponent.close()">
254
- <flowbite-icon
255
- svgIcon="flowbite-angular:close"
256
- class="w-5 h-5" />
257
- <span class="sr-only">Close modal</span>
258
- </button>
259
- `, isInline: true, dependencies: [{ kind: "component", type: IconComponent, selector: "flowbite-icon", inputs: ["svgIcon"], outputs: ["svgIconChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
248
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ModalHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
249
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: ModalHeader, isStandalone: true, selector: "\n h1[flowbiteModalHeader],\n h2[flowbiteModalHeader],\n h3[flowbiteModalHeader],\n h4[flowbiteModalHeader],\n h5[flowbiteModalHeader],\n h6[flowbiteModalHeader]\n ", inputs: { customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteModalHeaderState()], exportAs: ["flowbiteModalHeader"], hostDirectives: [{ directive: i1.NgpDialogTitle, inputs: ["id", "id"] }], ngImport: i0 }); }
260
250
  }
261
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalHeaderComponent, decorators: [{
262
- type: Component,
251
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ModalHeader, decorators: [{
252
+ type: Directive,
263
253
  args: [{
264
254
  standalone: true,
265
- imports: [IconComponent],
266
- selector: 'flowbite-modal-header',
267
- template: `
268
- <h3 [class]="contentClasses().modalHeaderTitleClass">
269
- <ng-content />
270
- </h3>
271
- <button
272
- type="button"
273
- [class]="contentClasses().modalHeaderButtonClass"
274
- data-modal-hide="medium-modal"
275
- (click)="modalComponent.close()">
276
- <flowbite-icon
277
- svgIcon="flowbite-angular:close"
278
- class="w-5 h-5" />
279
- <span class="sr-only">Close modal</span>
280
- </button>
255
+ selector: `
256
+ h1[flowbiteModalHeader],
257
+ h2[flowbiteModalHeader],
258
+ h3[flowbiteModalHeader],
259
+ h4[flowbiteModalHeader],
260
+ h5[flowbiteModalHeader],
261
+ h6[flowbiteModalHeader]
281
262
  `,
282
- encapsulation: ViewEncapsulation.None,
283
- changeDetection: ChangeDetectionStrategy.OnPush,
263
+ exportAs: 'flowbiteModalHeader',
264
+ hostDirectives: [
265
+ {
266
+ directive: NgpDialogTitle,
267
+ inputs: ['id:id'],
268
+ outputs: [],
269
+ },
270
+ ],
271
+ providers: [provideFlowbiteModalHeaderState()],
272
+ host: { '[class]': `theme().host.root` },
284
273
  }]
285
274
  }] });
286
275
 
276
+ const flowbiteModalContentTheme = createTheme({
277
+ host: {
278
+ base: 'block space-y-6 p-6',
279
+ transition: '',
280
+ },
281
+ });
282
+
283
+ const defaultFlowbiteModalContentConfig = {
284
+ baseTheme: flowbiteModalContentTheme,
285
+ customTheme: {},
286
+ };
287
+ const FlowbiteModalContentConfigToken = new InjectionToken('FlowbiteModalContentConfigToken');
287
288
  /**
288
- * `InjectionToken` used to import `ModalTheme` value
289
- *
290
- * @example
291
- * ```
292
- * var theme = inject(FLOWBITE_MODAL_THEME_TOKEN)
293
- * ```
289
+ * Provide the default ModalContent configuration
290
+ * @param config The ModalContent configuration
291
+ * @returns The provider
294
292
  */
295
- const FLOWBITE_MODAL_THEME_TOKEN = new InjectionToken('FLOWBITE_MODAL_THEME_TOKEN');
296
- class ModalThemeService {
297
- constructor() {
298
- this.baseTheme = inject(FLOWBITE_MODAL_THEME_TOKEN);
299
- }
300
- getClasses(properties) {
301
- const theme = mergeTheme(this.baseTheme, properties.customStyle);
302
- const output = {
303
- rootClass: twMerge(theme.root.base),
304
- modalWrapperClass: twMerge(theme.wrapper.base, theme.wrapper.position[properties.position]),
305
- modalContainerClass: twMerge(theme.container.base, theme.container.size[properties.size]),
306
- modalContentClass: twMerge(theme.content.base),
307
- };
308
- return output;
309
- }
310
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
311
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalThemeService, providedIn: 'root' }); }
312
- }
313
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalThemeService, decorators: [{
314
- type: Injectable,
315
- args: [{
316
- providedIn: 'root',
317
- }]
318
- }] });
319
-
320
- const FLOWBITE_MODAL_SIZE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_SIZE_DEFAULT_VALUE');
321
- const FLOWBITE_MODAL_POSITION_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_POSITION_DEFAULT_VALUE');
322
- const FLOWBITE_MODAL_IS_DISMISSABLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_IS_DISMISSABLE_DEFAULT_VALUE');
323
- const FLOWBITE_MODAL_IS_OPEN_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_IS_OPEN_DEFAULT_VALUE');
324
- const FLOWBITE_MODAL_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_MODAL_CUSTOM_STYLE_DEFAULT_VALUE');
325
- const modalDefaultValueProvider = makeEnvironmentProviders([
293
+ const provideFlowbiteModalContentConfig = (config) => [
326
294
  {
327
- provide: FLOWBITE_MODAL_SIZE_DEFAULT_VALUE,
328
- useValue: 'md',
295
+ provide: FlowbiteModalContentConfigToken,
296
+ useValue: { ...defaultFlowbiteModalContentConfig, ...config },
329
297
  },
330
- {
331
- provide: FLOWBITE_MODAL_POSITION_DEFAULT_VALUE,
332
- useValue: 'center',
333
- },
334
- {
335
- provide: FLOWBITE_MODAL_IS_DISMISSABLE_DEFAULT_VALUE,
336
- useValue: false,
337
- },
338
- {
339
- provide: FLOWBITE_MODAL_IS_OPEN_DEFAULT_VALUE,
340
- useValue: false,
341
- },
342
- {
343
- provide: FLOWBITE_MODAL_CUSTOM_STYLE_DEFAULT_VALUE,
344
- useValue: {},
345
- },
346
- ]);
298
+ ];
347
299
  /**
348
- * @see https://flowbite.com/docs/components/modal/
300
+ * Inject the ModalContent configuration
301
+ * @see {@link defaultFlowbiteModalContentConfig}
302
+ * @returns The configuration
349
303
  */
350
- class ModalComponent extends BaseComponent {
304
+ const injectFlowbiteModalContentConfig = () => inject(FlowbiteModalContentConfigToken, { optional: true }) ?? defaultFlowbiteModalContentConfig;
305
+
306
+ const FlowbiteModalContentStateToken = createStateToken('Flowbite ModalContent');
307
+ const provideFlowbiteModalContentState = createStateProvider(FlowbiteModalContentStateToken);
308
+ const injectFlowbiteModalContentState = createStateInjector(FlowbiteModalContentStateToken);
309
+ const flowbiteModalContentState = createState(FlowbiteModalContentStateToken);
310
+
311
+ class ModalContent {
351
312
  constructor() {
352
- super(...arguments);
353
- this.destroyed = new Subject();
354
- /**
355
- * Service injected used to generate class
356
- */
357
- this.themeService = inject(ModalThemeService);
358
- /**
359
- * The child `ModalHeaderComponent`
360
- */
361
- this.modalHeaderChild = contentChild(ModalHeaderComponent);
362
- /**
363
- * The child `ModalBodyComponent`
364
- */
365
- this.modalBodyChild = contentChild.required(ModalBodyComponent);
366
- /**
367
- * The child `ModalFooterComponent`
368
- */
369
- this.modalFooterChild = contentChild(ModalFooterComponent);
370
- //#region template properties
371
- this.template = viewChild.required('modal', { read: TemplateRef });
372
- this.viewContainer = inject(ViewContainerRef);
373
- this.router = inject(Router);
374
- //#endregion
375
- //#region properties
376
- /**
377
- * Set the modal size
378
- *
379
- * @default md
380
- */
381
- this.size = model(inject(FLOWBITE_MODAL_SIZE_DEFAULT_VALUE));
382
- /**
383
- * Set the modal position
384
- *
385
- * @default center
386
- */
387
- this.position = model(inject(FLOWBITE_MODAL_POSITION_DEFAULT_VALUE));
313
+ this.config = injectFlowbiteModalContentConfig();
388
314
  /**
389
- * Set if the modal is dismissable
390
- *
391
- * @default false
315
+ * @see {@link injectFlowbiteModalContentConfig}
392
316
  */
393
- this.isDismissable = model(inject(FLOWBITE_MODAL_IS_DISMISSABLE_DEFAULT_VALUE));
394
- /**
395
- * Set if the modal is open
396
- *
397
- * @default false
398
- */
399
- this.isOpen = model(inject(FLOWBITE_MODAL_IS_OPEN_DEFAULT_VALUE));
317
+ this.customTheme = input(this.config.customTheme);
318
+ this.theme = computed(() => {
319
+ const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
320
+ return {
321
+ host: {
322
+ root: twMerge(mergedTheme.host.base, mergedTheme.host.transition),
323
+ },
324
+ };
325
+ });
400
326
  /**
401
- * Set the custom style for this modal
327
+ * @internal
402
328
  */
403
- this.customStyle = model(inject(FLOWBITE_MODAL_CUSTOM_STYLE_DEFAULT_VALUE));
404
- }
405
- //#endregion
406
- //#region BaseComponent implementation
407
- fetchClass() {
408
- return this.themeService.getClasses({
409
- isOpen: booleanToFlowbiteBoolean(this.isOpen()),
410
- size: this.size(),
411
- position: this.position(),
412
- customStyle: this.customStyle(),
413
- });
414
- }
415
- init() {
416
- // close modal if it's not destroyed on route change
417
- this.router.events
418
- .pipe(takeUntil(this.destroyed), filter(() => this.isOpen()), filter((event) => event instanceof NavigationStart))
419
- .subscribe(() => this.close());
420
- }
421
- //#endregion
422
- ngOnDestroy() {
423
- this.destroyed.next();
424
- this.destroyed.complete();
425
- }
426
- open() {
427
- this.isOpen.set(true);
428
- this.changeBackdrop();
429
- }
430
- close() {
431
- this.isOpen.set(false);
432
- this.changeBackdrop();
433
- }
434
- toggle() {
435
- this.isOpen.set(!this.isOpen());
436
- this.changeBackdrop();
437
- }
438
- // If isOpen changes, add or remove template
439
- changeBackdrop() {
440
- if (this.isOpen()) {
441
- this.createTemplate();
442
- }
443
- else {
444
- this.destroyTemplate();
445
- }
329
+ this.state = flowbiteModalContentState(this);
446
330
  }
447
- createTemplate() {
448
- if (this.embeddedView) {
449
- this.destroyTemplate();
450
- }
451
- this.embeddedView = this.viewContainer.createEmbeddedView(this.template());
452
- }
453
- destroyTemplate() {
454
- this.embeddedView?.destroy();
455
- }
456
- onKeydownHandler(event) {
457
- if (event.key === 'Escape') {
458
- this.close();
459
- }
460
- }
461
- onBackdropClick(event) {
462
- if (event.target == event.currentTarget && this.isDismissable()) {
463
- this.close();
464
- }
465
- }
466
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
467
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.4", type: ModalComponent, isStandalone: true, selector: "flowbite-modal", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, isDismissable: { classPropertyName: "isDismissable", publicName: "isDismissable", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { size: "sizeChange", position: "positionChange", isDismissable: "isDismissableChange", isOpen: "isOpenChange", customStyle: "customStyleChange" }, host: { attributes: { "tabindex": "-1" }, listeners: { "document:keydown": "onKeydownHandler($event)" } }, queries: [{ propertyName: "modalHeaderChild", first: true, predicate: ModalHeaderComponent, descendants: true, isSignal: true }, { propertyName: "modalBodyChild", first: true, predicate: ModalBodyComponent, descendants: true, isSignal: true }, { propertyName: "modalFooterChild", first: true, predicate: ModalFooterComponent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "template", first: true, predicate: ["modal"], descendants: true, read: TemplateRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
468
- <ng-template #modal>
469
- <div class="bg-gray-900 bg-opacity-50 dark:bg-opacity-80 fixed inset-0 z-[99]"></div>
470
-
471
- <div
472
- [class]="contentClasses().modalWrapperClass"
473
- (click)="onBackdropClick($event)">
474
- <div [class]="contentClasses().modalContainerClass">
475
- <div [class]="contentClasses().modalContentClass">
476
- <ng-content />
477
- </div>
478
- </div>
479
- </div>
480
- </ng-template>
481
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
331
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ModalContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
332
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: ModalContent, isStandalone: true, selector: "\n [flowbiteModalContent]\n ", inputs: { customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteModalContentState()], exportAs: ["flowbiteModalContent"], hostDirectives: [{ directive: i1.NgpDialogDescription, inputs: ["id", "id"] }], ngImport: i0 }); }
482
333
  }
483
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ModalComponent, decorators: [{
484
- type: Component,
334
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ModalContent, decorators: [{
335
+ type: Directive,
485
336
  args: [{
486
337
  standalone: true,
487
- selector: 'flowbite-modal',
488
- template: `
489
- <ng-template #modal>
490
- <div class="bg-gray-900 bg-opacity-50 dark:bg-opacity-80 fixed inset-0 z-[99]"></div>
491
-
492
- <div
493
- [class]="contentClasses().modalWrapperClass"
494
- (click)="onBackdropClick($event)">
495
- <div [class]="contentClasses().modalContainerClass">
496
- <div [class]="contentClasses().modalContentClass">
497
- <ng-content />
498
- </div>
499
- </div>
500
- </div>
501
- </ng-template>
338
+ selector: `
339
+ [flowbiteModalContent]
502
340
  `,
503
- host: {
504
- tabindex: '-1',
505
- '(document:keydown)': 'onKeydownHandler($event)',
506
- },
507
- encapsulation: ViewEncapsulation.None,
508
- changeDetection: ChangeDetectionStrategy.OnPush,
341
+ exportAs: 'flowbiteModalContent',
342
+ hostDirectives: [
343
+ {
344
+ directive: NgpDialogDescription,
345
+ inputs: ['id:id'],
346
+ outputs: [],
347
+ },
348
+ ],
349
+ providers: [provideFlowbiteModalContentState()],
350
+ host: { '[class]': `theme().host.root` },
509
351
  }]
510
352
  }] });
511
353
 
512
- const modalTheme = createTheme({
513
- root: {
514
- base: '',
515
- },
516
- wrapper: {
517
- base: 'fixed top-0 left-0 right-0 z-[100] w-full p-4 overflow-x-hidden overflow-y-auto md:inset-0 h-[calc(100%-1rem)] md:h-full flex',
518
- position: {
519
- 'top-left': 'items-start justify-start',
520
- 'top-center': 'items-start justify-center',
521
- 'top-right': 'items-start justify-end',
522
- 'center-left': 'items-center justify-start',
523
- center: 'items-center justify-center',
524
- 'center-right': 'items-center justify-end',
525
- 'bottom-left': 'items-end justify-start',
526
- 'bottom-center': 'items-end justify-center',
527
- 'bottom-right': 'items-end justify-end',
528
- },
529
- },
530
- container: {
531
- base: 'relative w-full h-full md:h-auto',
532
- size: {
533
- sm: 'max-w-md',
534
- md: 'max-w-lg',
535
- lg: 'max-w-4xl',
536
- xl: 'max-w-7xl',
537
- },
538
- },
539
- content: {
540
- base: 'relative bg-white rounded-lg shadow dark:bg-gray-700',
354
+ const flowbiteModalFooterTheme = createTheme({
355
+ host: {
356
+ base: 'flex items-center space-x-2 rounded-b border-t border-gray-200 p-6 dark:border-gray-600',
357
+ transition: '',
541
358
  },
542
359
  });
543
360
 
361
+ const defaultFlowbiteModalFooterConfig = {
362
+ baseTheme: flowbiteModalFooterTheme,
363
+ customTheme: {},
364
+ };
365
+ const FlowbiteModalFooterConfigToken = new InjectionToken('FlowbiteModalFooterConfigToken');
544
366
  /**
545
- * Default theme for `ModalComponent`
367
+ * Provide the default ModalFooter configuration
368
+ * @param config The ModalFooter configuration
369
+ * @returns The provider
546
370
  */
547
- const modalHeaderTheme = createTheme({
548
- root: {
549
- base: 'flex items-center justify-between p-5 border-b rounded-t dark:border-gray-600',
550
- },
551
- title: {
552
- base: 'text-xl font-medium text-gray-900 dark:text-white',
553
- },
554
- button: {
555
- base: 'text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-gray-600 dark:hover:text-white',
371
+ const provideFlowbiteModalFooterConfig = (config) => [
372
+ {
373
+ provide: FlowbiteModalFooterConfigToken,
374
+ useValue: { ...defaultFlowbiteModalFooterConfig, ...config },
556
375
  },
557
- });
558
-
376
+ ];
559
377
  /**
560
- * Default theme value for `ModalBodyComponent`
378
+ * Inject the ModalFooter configuration
379
+ * @see {@link defaultFlowbiteModalFooterConfig}
380
+ * @returns The configuration
561
381
  */
562
- const modalBodyTheme = createTheme({
563
- root: {
564
- base: 'block p-6 space-y-6',
565
- },
566
- });
382
+ const injectFlowbiteModalFooterConfig = () => inject(FlowbiteModalFooterConfigToken, { optional: true }) ?? defaultFlowbiteModalFooterConfig;
567
383
 
568
- /**
569
- * Default theme for `ModalFooterComponent`
570
- */
571
- const modalFooterTheme = createTheme({
572
- root: {
573
- base: 'flex items-center p-6 space-x-2 border-t border-gray-200 rounded-b dark:border-gray-600',
574
- },
575
- });
384
+ const FlowbiteModalFooterStateToken = createStateToken('Flowbite ModalFooter');
385
+ const provideFlowbiteModalFooterState = createStateProvider(FlowbiteModalFooterStateToken);
386
+ const injectFlowbiteModalFooterState = createStateInjector(FlowbiteModalFooterStateToken);
387
+ const flowbiteModalFooterState = createState(FlowbiteModalFooterStateToken);
388
+
389
+ class ModalFooter {
390
+ constructor() {
391
+ this.config = injectFlowbiteModalFooterConfig();
392
+ /**
393
+ * @see {@link injectFlowbiteModalFooterConfig}
394
+ */
395
+ this.customTheme = input(this.config.customTheme);
396
+ this.theme = computed(() => {
397
+ const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
398
+ return {
399
+ host: {
400
+ root: twMerge(mergedTheme.host.base, mergedTheme.host.transition),
401
+ },
402
+ };
403
+ });
404
+ /**
405
+ * @internal
406
+ */
407
+ this.state = flowbiteModalFooterState(this);
408
+ }
409
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ModalFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
410
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: ModalFooter, isStandalone: true, selector: "\n div[flowbiteModalFooter]\n ", inputs: { customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteModalFooterState()], exportAs: ["flowbiteModalFooter"], ngImport: i0 }); }
411
+ }
412
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: ModalFooter, decorators: [{
413
+ type: Directive,
414
+ args: [{
415
+ standalone: true,
416
+ selector: `
417
+ div[flowbiteModalFooter]
418
+ `,
419
+ exportAs: 'flowbiteModalFooter',
420
+ hostDirectives: [],
421
+ providers: [provideFlowbiteModalFooterState()],
422
+ host: { '[class]': `theme().host.root` },
423
+ }]
424
+ }] });
425
+
426
+ /* Modal */
576
427
 
577
428
  /**
578
429
  * Generated bundle index. Do not edit.
579
430
  */
580
431
 
581
- export { FLOWBITE_MODAL_BODY_CUSTOM_STYLE_DEFAULT_VALUE, FLOWBITE_MODAL_BODY_THEME_TOKEN, FLOWBITE_MODAL_CUSTOM_STYLE_DEFAULT_VALUE, FLOWBITE_MODAL_FOOTER_CUSTOM_STYLE_DEFAULT_VALUE, FLOWBITE_MODAL_FOOTER_THEME_TOKEN, FLOWBITE_MODAL_HEADER_CUSTOM_STYLE_DEFAULT_VALUE, FLOWBITE_MODAL_HEADER_THEME_TOKEN, FLOWBITE_MODAL_IS_DISMISSABLE_DEFAULT_VALUE, FLOWBITE_MODAL_IS_OPEN_DEFAULT_VALUE, FLOWBITE_MODAL_POSITION_DEFAULT_VALUE, FLOWBITE_MODAL_SIZE_DEFAULT_VALUE, FLOWBITE_MODAL_THEME_TOKEN, ModalBodyComponent, ModalBodyThemeService, ModalComponent, ModalFooterComponent, ModalFooterThemeService, ModalHeaderComponent, ModalHeaderThemeService, ModalThemeService, modalBodyDefaultValueProvider, modalBodyTheme, modalDefaultValueProvider, modalFooterDefaultValueProvider, modalFooterTheme, modalHeaderDefaultValueProvider, modalHeaderTheme, modalTheme };
432
+ export { FlowbiteModalConfigToken, FlowbiteModalContentConfigToken, FlowbiteModalContentStateToken, FlowbiteModalFooterConfigToken, FlowbiteModalFooterStateToken, FlowbiteModalHeaderConfigToken, FlowbiteModalHeaderStateToken, FlowbiteModalOverlayConfigToken, FlowbiteModalOverlayStateToken, FlowbiteModalStateToken, Modal, ModalContent, ModalFooter, ModalHeader, ModalOverlay, defaultFlowbiteModalConfig, defaultFlowbiteModalContentConfig, defaultFlowbiteModalFooterConfig, defaultFlowbiteModalHeaderConfig, defaultFlowbiteModalOverlayConfig, flowbiteModalContentState, flowbiteModalContentTheme, flowbiteModalFooterState, flowbiteModalFooterTheme, flowbiteModalHeaderState, flowbiteModalHeaderTheme, flowbiteModalOverlayState, flowbiteModalOverlayTheme, flowbiteModalState, flowbiteModalTheme, injectFlowbiteModalConfig, injectFlowbiteModalContentConfig, injectFlowbiteModalContentState, injectFlowbiteModalFooterConfig, injectFlowbiteModalFooterState, injectFlowbiteModalHeaderConfig, injectFlowbiteModalHeaderState, injectFlowbiteModalOverlayConfig, injectFlowbiteModalOverlayState, injectFlowbiteModalState, provideFlowbiteModalConfig, provideFlowbiteModalContentConfig, provideFlowbiteModalContentState, provideFlowbiteModalFooterConfig, provideFlowbiteModalFooterState, provideFlowbiteModalHeaderConfig, provideFlowbiteModalHeaderState, provideFlowbiteModalOverlayConfig, provideFlowbiteModalOverlayState, provideFlowbiteModalState };
582
433
  //# sourceMappingURL=flowbite-angular-modal.mjs.map