flowbite-angular 1.2.0 → 20.0.1

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