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,282 +1,376 @@
1
- import { mergeTheme, CLOSE_SVG_ICON, createTheme } from 'flowbite-angular/utils';
1
+ import { createTheme, mergeDeep, colorToTheme } from 'flowbite-angular';
2
2
  import * as i0 from '@angular/core';
3
- import { InjectionToken, inject, Injectable, makeEnvironmentProviders, model, Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
3
+ import { InjectionToken, inject, input, booleanAttribute, computed, Directive } from '@angular/core';
4
+ import { createStateToken, createStateProvider, createStateInjector, createState } from 'ng-primitives/state';
4
5
  import { twMerge } from 'tailwind-merge';
5
- import { BaseComponent, booleanToFlowbiteBoolean } from 'flowbite-angular';
6
- import { IconRegistry, IconComponent } from 'flowbite-angular/icon';
7
- import { FlowbiteRouterLinkDirective } from 'flowbite-angular/router-link';
8
- import { DomSanitizer } from '@angular/platform-browser';
6
+ import * as i2 from 'ng-primitives/button';
7
+ import { NgpButton } from 'ng-primitives/button';
8
+ import * as i3 from 'ng-primitives/interactions';
9
+ import { NgpFocus } from 'ng-primitives/interactions';
9
10
 
11
+ const flowbiteBadgeTheme = createTheme({
12
+ host: {
13
+ base: 'inline-flex items-center justify-center font-medium',
14
+ transition: '',
15
+ border: {
16
+ on: 'border',
17
+ off: 'border-0',
18
+ },
19
+ color: {
20
+ default: {
21
+ light: 'border-gray-300 bg-gray-100 text-gray-800',
22
+ dark: 'dark:border-gray-900 dark:bg-gray-800 dark:text-gray-100',
23
+ },
24
+ info: {
25
+ light: 'border-blue-300 bg-blue-100 text-blue-800',
26
+ dark: 'dark:border-blue-900 dark:bg-blue-800 dark:text-blue-100',
27
+ },
28
+ failure: {
29
+ light: 'border-red-300 bg-red-100 text-red-800',
30
+ dark: 'dark:border-red-900 dark:bg-red-800 dark:text-red-100',
31
+ },
32
+ success: {
33
+ light: 'border-green-300 bg-green-100 text-green-800',
34
+ dark: 'dark:border-green-900 dark:bg-green-800 dark:text-green-100',
35
+ },
36
+ warning: {
37
+ light: 'border-yellow-300 bg-yellow-100 text-yellow-800',
38
+ dark: 'dark:border-yellow-900 dark:bg-yellow-800 dark:text-yellow-100',
39
+ },
40
+ primary: {
41
+ light: 'bg-primary-100 text-primary-800 border-primary-300',
42
+ dark: 'dark:text-primary-100 dark:bg-primary-800 dark:border-primary-900',
43
+ },
44
+ },
45
+ pill: {
46
+ on: 'rounded-full',
47
+ off: 'rounded',
48
+ },
49
+ size: {
50
+ xs: 'p-1 text-xs',
51
+ sm: 'p-1.5 text-sm',
52
+ },
53
+ },
54
+ });
55
+
56
+ const defaultFlowbiteBadgeConfig = {
57
+ baseTheme: flowbiteBadgeTheme,
58
+ color: 'default',
59
+ border: false,
60
+ pill: false,
61
+ size: 'sm',
62
+ customTheme: {},
63
+ };
64
+ const FlowbiteBadgeConfigToken = new InjectionToken('FlowbiteBadgeConfigToken');
10
65
  /**
11
- * `InjectionToken` used to import `BadgeTheme` value
12
- *
13
- * @example
14
- * ```
15
- * var theme = inject(FLOWBITE_BADGE_THEME_TOKEN)
16
- * ```
66
+ * Provide the default Badge configuration
67
+ * @param config The Badge configuration
68
+ * @returns The provider
17
69
  */
18
- const FLOWBITE_BADGE_THEME_TOKEN = new InjectionToken('FLOWBITE_BADGE_THEME_TOKEN');
19
- class BadgeThemeService {
20
- constructor() {
21
- this.baseTheme = inject(FLOWBITE_BADGE_THEME_TOKEN);
22
- }
23
- getClasses(properties) {
24
- const theme = mergeTheme(this.baseTheme, properties.customStyle);
25
- const output = {
26
- rootClass: twMerge(theme.root.base, theme.root.color[properties.color], theme.root.hasBorder[properties.hasBorder], theme.root.size[properties.size], theme.root.isPill[properties.isPill == 'enabled' || properties.isIconOnly == 'enabled'
27
- ? 'enabled'
28
- : properties.isPill], theme.root.isIconOnly[properties.isIconOnly], theme.root.link[properties.link ? 'enabled' : 'disabled']),
29
- closeButtonClass: twMerge(theme.closeButton.base, theme.closeButton.color[properties.color]),
30
- };
31
- return output;
32
- }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: BadgeThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
34
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: BadgeThemeService, providedIn: 'root' }); }
35
- }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: BadgeThemeService, decorators: [{
37
- type: Injectable,
38
- args: [{
39
- providedIn: 'root',
40
- }]
41
- }] });
42
-
43
- const FLOWBITE_BADGE_COLOR_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BADGE_COLOR_DEFAULT_VALUE');
44
- const FLOWBITE_BADGE_HAS_BORDER_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BADGE_HAS_BORDER_DEFAULT_VALUE');
45
- const FLOWBITE_BADGE_SIZE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BADGE_SIZE_DEFAULT_VALUE');
46
- const FLOWBITE_BADGE_IS_ICON_ONLY_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BADGE_IS_ICON_ONLY_DEFAULT_VALUE');
47
- const FLOWBITE_BADGE_IS_PILL_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BADGE_IS_PILL_DEFAULT_VALUE');
48
- const FLOWBITE_BADGE_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BADGE_CUSTOM_STYLE_DEFAULT_VALUE');
49
- const FLOWBITE_BADGE_IS_DISMISSABLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BADGE_IS_DISMISSABLE_DEFAULT_VALUE');
50
- const FLOWBITE_BADGE_ON_DISMISS_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BADGE_ON_DISMISS_DEFAULT_VALUE');
51
- const badgeDefaultValueProvider = makeEnvironmentProviders([
52
- {
53
- provide: FLOWBITE_BADGE_COLOR_DEFAULT_VALUE,
54
- useValue: 'primary',
55
- },
56
- {
57
- provide: FLOWBITE_BADGE_HAS_BORDER_DEFAULT_VALUE,
58
- useValue: false,
59
- },
60
- {
61
- provide: FLOWBITE_BADGE_SIZE_DEFAULT_VALUE,
62
- useValue: 'xs',
63
- },
64
- {
65
- provide: FLOWBITE_BADGE_IS_ICON_ONLY_DEFAULT_VALUE,
66
- useValue: false,
67
- },
68
- {
69
- provide: FLOWBITE_BADGE_IS_PILL_DEFAULT_VALUE,
70
- useValue: false,
71
- },
70
+ const provideFlowbiteBadgeConfig = (config) => [
72
71
  {
73
- provide: FLOWBITE_BADGE_CUSTOM_STYLE_DEFAULT_VALUE,
74
- useValue: {},
72
+ provide: FlowbiteBadgeConfigToken,
73
+ useValue: { ...defaultFlowbiteBadgeConfig, ...config },
75
74
  },
76
- {
77
- provide: FLOWBITE_BADGE_IS_DISMISSABLE_DEFAULT_VALUE,
78
- useValue: false,
79
- },
80
- {
81
- provide: FLOWBITE_BADGE_ON_DISMISS_DEFAULT_VALUE,
82
- useValue: undefined,
83
- },
84
- ]);
75
+ ];
85
76
  /**
86
- * @see https://flowbite.com/docs/components/badge/
77
+ * Inject the Badge configuration
78
+ * @see {@link defaultFlowbiteBadgeConfig}
79
+ * @returns The configuration
87
80
  */
88
- class BadgeComponent extends BaseComponent {
81
+ const injectFlowbiteBadgeConfig = () => inject(FlowbiteBadgeConfigToken, { optional: true }) ?? defaultFlowbiteBadgeConfig;
82
+
83
+ const FlowbiteBadgeStateToken = createStateToken('Flowbite Badge');
84
+ const provideFlowbiteBadgeState = createStateProvider(FlowbiteBadgeStateToken);
85
+ const injectFlowbiteBadgeState = createStateInjector(FlowbiteBadgeStateToken);
86
+ const flowbiteBadgeState = createState(FlowbiteBadgeStateToken);
87
+
88
+ class Badge {
89
89
  constructor() {
90
- super(...arguments);
91
- /**
92
- * Optional `FlowbiteRouterLinkDirective` injected
93
- */
94
- this.flowbiteRouterLink = inject(FlowbiteRouterLinkDirective, { optional: true });
95
- /**
96
- * Service injected used to generate class
97
- */
98
- this.themeService = inject(BadgeThemeService);
99
- /**
100
- * `IcoRegistry` service
101
- */
102
- this.iconRegistry = inject(IconRegistry);
103
- /**
104
- * `DomSanitizer` service
105
- */
106
- this.domSanitizer = inject(DomSanitizer);
107
- //#region properties
90
+ this.config = injectFlowbiteBadgeConfig();
108
91
  /**
109
- * Set the badge color
110
- *
111
- * @default primary
92
+ * @see {@link injectFlowbiteBadgeConfig}
112
93
  */
113
- this.color = model(inject(FLOWBITE_BADGE_COLOR_DEFAULT_VALUE));
94
+ this.color = input(this.config.color);
114
95
  /**
115
- * Set if the badge has border
116
- *
117
- * @default false
96
+ * @see {@link injectFlowbiteBadgeConfig}
118
97
  */
119
- this.hasBorder = model(inject(FLOWBITE_BADGE_HAS_BORDER_DEFAULT_VALUE));
98
+ this.border = input(this.config.border, { transform: booleanAttribute });
120
99
  /**
121
- * Set the badge size
122
- *
123
- * @default xs
100
+ * @see {@link injectFlowbiteBadgeConfig}
124
101
  */
125
- this.size = model(inject(FLOWBITE_BADGE_SIZE_DEFAULT_VALUE));
102
+ this.pill = input(this.config.pill, { transform: booleanAttribute });
126
103
  /**
127
- * Set if the badge is icon only
128
- *
129
- * @default false
104
+ * @see {@link injectFlowbiteBadgeConfig}
130
105
  */
131
- this.isIconOnly = model(inject(FLOWBITE_BADGE_IS_ICON_ONLY_DEFAULT_VALUE));
106
+ this.size = input(this.config.size);
132
107
  /**
133
- * Set if the badge is pill
134
- *
135
- * @default false
108
+ * @see {@link injectFlowbiteBadgeConfig}
136
109
  */
137
- this.isPill = model(inject(FLOWBITE_BADGE_IS_PILL_DEFAULT_VALUE));
110
+ this.customTheme = input(this.config.customTheme);
111
+ this.theme = computed(() => {
112
+ const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
113
+ return {
114
+ host: {
115
+ root: twMerge(mergedTheme.host.base, mergedTheme.host.transition, colorToTheme(mergedTheme.host.color, this.state.color()), mergedTheme.host.border[this.state.border() ? 'on' : 'off'], mergedTheme.host.pill[this.state.pill() ? 'on' : 'off'], mergedTheme.host.size[this.state.size()]),
116
+ },
117
+ };
118
+ });
138
119
  /**
139
- * Set the custom style for this badge
120
+ * @internal
140
121
  */
141
- this.customStyle = model(inject(FLOWBITE_BADGE_CUSTOM_STYLE_DEFAULT_VALUE));
122
+ this.state = flowbiteBadgeState(this);
123
+ }
124
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: Badge, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
125
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: Badge, isStandalone: true, selector: "\n span[flowbiteBadge]\n ", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, pill: { classPropertyName: "pill", publicName: "pill", isSignal: true, isRequired: false, transformFunction: null }, 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: [provideFlowbiteBadgeState()], exportAs: ["flowbiteBadge"], ngImport: i0 }); }
126
+ }
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: Badge, decorators: [{
128
+ type: Directive,
129
+ args: [{
130
+ standalone: true,
131
+ selector: `
132
+ span[flowbiteBadge]
133
+ `,
134
+ exportAs: 'flowbiteBadge',
135
+ hostDirectives: [],
136
+ providers: [provideFlowbiteBadgeState()],
137
+ host: {
138
+ '[class]': `theme().host.root`,
139
+ },
140
+ }]
141
+ }] });
142
+
143
+ const flowbiteBadgeLinkTheme = createTheme({
144
+ host: {
145
+ base: 'data-hover:cursor-pointer',
146
+ transition: '',
147
+ color: {
148
+ default: {
149
+ light: 'data-hover:bg-gray-200',
150
+ dark: 'dark:data-hover:bg-gray-700',
151
+ },
152
+ info: {
153
+ light: 'data-hover:bg-blue-200',
154
+ dark: 'dark:data-hover:bg-blue-900',
155
+ },
156
+ failure: {
157
+ light: 'data-hover:bg-red-200',
158
+ dark: 'dark:data-hover:bg-red-900',
159
+ },
160
+ success: {
161
+ light: 'data-hover:bg-green-200',
162
+ dark: 'dark:data-hover:bg-green-900',
163
+ },
164
+ warning: {
165
+ light: 'data-hover:bg-yellow-200',
166
+ dark: 'dark:data-hover:bg-yellow-900',
167
+ },
168
+ primary: {
169
+ light: 'data-hover:bg-primary-200',
170
+ dark: 'dark:data-hover:bg-primary-900',
171
+ },
172
+ },
173
+ },
174
+ });
175
+
176
+ const defaultFlowbiteBadgeLinkConfig = {
177
+ baseTheme: flowbiteBadgeLinkTheme,
178
+ customTheme: {},
179
+ };
180
+ const FlowbiteBadgeLinkConfigToken = new InjectionToken('FlowbiteBadgeLinkConfigToken');
181
+ /**
182
+ * Provide the default BadgeLink configuration
183
+ * @param config The BadgeLink configuration
184
+ * @returns The provider
185
+ */
186
+ const provideFlowbiteBadgeLinkConfig = (config) => [
187
+ {
188
+ provide: FlowbiteBadgeLinkConfigToken,
189
+ useValue: { ...defaultFlowbiteBadgeLinkConfig, ...config },
190
+ },
191
+ ];
192
+ /**
193
+ * Inject the BadgeLink configuration
194
+ * @see {@link defaultFlowbiteBadgeLinkConfig}
195
+ * @returns The configuration
196
+ */
197
+ const injectFlowbiteBadgeLinkConfig = () => inject(FlowbiteBadgeLinkConfigToken, { optional: true }) ?? defaultFlowbiteBadgeLinkConfig;
198
+
199
+ const FlowbiteBadgeLinkStateToken = createStateToken('Flowbite BadgeLink');
200
+ const provideFlowbiteBadgeLinkState = createStateProvider(FlowbiteBadgeLinkStateToken);
201
+ const injectFlowbiteBadgeLinkState = createStateInjector(FlowbiteBadgeLinkStateToken);
202
+ const flowbiteBadgeLinkState = createState(FlowbiteBadgeLinkStateToken);
203
+
204
+ class BadgeLink {
205
+ constructor() {
206
+ this.config = injectFlowbiteBadgeLinkConfig();
207
+ this.badgeState = injectFlowbiteBadgeState();
142
208
  /**
143
- * Set if the badge is dismissable
144
- *
145
- * @default false
209
+ * @see {@link injectFlowbiteBadgeLinkConfig}
146
210
  */
147
- this.isDismissable = model(inject(FLOWBITE_BADGE_IS_DISMISSABLE_DEFAULT_VALUE));
211
+ this.customTheme = input(this.config.customTheme);
212
+ this.theme = computed(() => {
213
+ const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
214
+ return {
215
+ host: {
216
+ root: twMerge(mergedTheme.host.base, mergedTheme.host.transition, colorToTheme(mergedTheme.host.color, this.badgeState().color())),
217
+ },
218
+ };
219
+ });
148
220
  /**
149
- * Set the function called when the badge is dismissed
150
- *
151
- * @default undefined
221
+ * @internal
152
222
  */
153
- this.onDismiss = model(inject(FLOWBITE_BADGE_ON_DISMISS_DEFAULT_VALUE));
154
- }
155
- //#endregion
156
- //#region BaseComponent implementation
157
- fetchClass() {
158
- return this.themeService.getClasses({
159
- color: this.color(),
160
- hasBorder: booleanToFlowbiteBoolean(this.hasBorder()),
161
- size: this.size(),
162
- isIconOnly: booleanToFlowbiteBoolean(this.isIconOnly()),
163
- isPill: booleanToFlowbiteBoolean(this.isPill()),
164
- link: this.flowbiteRouterLink?.routerLink.urlTree ?? null,
165
- customStyle: this.customStyle(),
166
- });
167
- }
168
- init() {
169
- this.iconRegistry.addRawSvgIconInNamepsace('flowbite-angular', 'close', this.domSanitizer.bypassSecurityTrustHtml(CLOSE_SVG_ICON));
170
- }
171
- //#endregion
172
- /**
173
- * Call the onDismiss function if it's not undefined
174
- */
175
- onDismissClick() {
176
- const func = this.onDismiss();
177
- if (func)
178
- func();
179
- }
180
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: BadgeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
181
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.4", type: BadgeComponent, isStandalone: true, selector: "flowbite-badge", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, hasBorder: { classPropertyName: "hasBorder", publicName: "hasBorder", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, isIconOnly: { classPropertyName: "isIconOnly", publicName: "isIconOnly", isSignal: true, isRequired: false, transformFunction: null }, isPill: { classPropertyName: "isPill", publicName: "isPill", isSignal: true, isRequired: false, transformFunction: null }, customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null }, isDismissable: { classPropertyName: "isDismissable", publicName: "isDismissable", isSignal: true, isRequired: false, transformFunction: null }, onDismiss: { classPropertyName: "onDismiss", publicName: "onDismiss", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { color: "colorChange", hasBorder: "hasBorderChange", size: "sizeChange", isIconOnly: "isIconOnlyChange", isPill: "isPillChange", customStyle: "customStyleChange", isDismissable: "isDismissableChange", onDismiss: "onDismissChange" }, usesInheritance: true, ngImport: i0, template: `
182
- <ng-content />
183
- @if (isDismissable()) {
184
- <button
185
- type="button"
186
- [class]="contentClasses()!.closeButtonClass"
187
- aria-label="Close"
188
- (click)="onDismissClick()">
189
- <span class="sr-only">Close</span>
190
- <flowbite-icon
191
- svgIcon="flowbite-angular:close"
192
- class="h-3 w-3" />
193
- </button>
223
+ this.state = flowbiteBadgeLinkState(this);
194
224
  }
195
- `, isInline: true, dependencies: [{ kind: "component", type: IconComponent, selector: "flowbite-icon", inputs: ["svgIcon"], outputs: ["svgIconChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
225
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BadgeLink, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
226
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: BadgeLink, isStandalone: true, selector: "\n button[flowbiteBadgeLink],\n a[flowbiteBadgeLink]\n ", inputs: { customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteBadgeLinkState()], exportAs: ["flowbiteBadgeLink"], hostDirectives: [{ directive: Badge, inputs: ["color", "color", "border", "border", "pill", "pill", "size", "size", "customTheme", "badgeCustomTheme"] }, { directive: i2.NgpButton, inputs: ["disabled", "disabled"] }, { directive: i3.NgpFocus }], ngImport: i0 }); }
196
227
  }
197
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: BadgeComponent, decorators: [{
198
- type: Component,
228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BadgeLink, decorators: [{
229
+ type: Directive,
199
230
  args: [{
200
231
  standalone: true,
201
- imports: [IconComponent],
202
- selector: 'flowbite-badge',
203
- template: `
204
- <ng-content />
205
- @if (isDismissable()) {
206
- <button
207
- type="button"
208
- [class]="contentClasses()!.closeButtonClass"
209
- aria-label="Close"
210
- (click)="onDismissClick()">
211
- <span class="sr-only">Close</span>
212
- <flowbite-icon
213
- svgIcon="flowbite-angular:close"
214
- class="h-3 w-3" />
215
- </button>
216
- }
232
+ selector: `
233
+ button[flowbiteBadgeLink],
234
+ a[flowbiteBadgeLink]
217
235
  `,
218
- encapsulation: ViewEncapsulation.None,
219
- changeDetection: ChangeDetectionStrategy.OnPush,
236
+ exportAs: 'flowbiteBadgeLink',
237
+ hostDirectives: [
238
+ {
239
+ directive: Badge,
240
+ inputs: ['color', 'border', 'pill', 'size', 'customTheme:badgeCustomTheme'],
241
+ outputs: [],
242
+ },
243
+ {
244
+ directive: NgpButton,
245
+ inputs: ['disabled:disabled'],
246
+ outputs: [],
247
+ },
248
+ {
249
+ directive: NgpFocus,
250
+ inputs: [],
251
+ outputs: [],
252
+ },
253
+ ],
254
+ providers: [provideFlowbiteBadgeLinkState()],
255
+ host: { '[class]': `theme().host.root` },
220
256
  }]
221
257
  }] });
222
258
 
223
- /**
224
- * Default theme for `BadgeComponent`
225
- */
226
- const badgeTheme = createTheme({
227
- root: {
228
- base: 'flex h-fit items-center gap-1 font-semibold',
229
- color: {
230
- primary: 'bg-primary-100 dark:bg-primary-700 text-primary-800 dark:text-primary-300 group-hover:bg-primary-200 dark:group-hover:bg-primary-600 border-primary-300 dark:border-primary-800',
231
- dark: 'bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-300 group-hover:bg-gray-200 dark:group-hover:bg-gray-600 border-gray-300 dark:border-gray-600',
232
- blue: 'bg-blue-100 dark:bg-blue-200 text-blue-800 dark:text-blue-800 group-hover:bg-blue-200 dark:group-hover:bg-blue-300 border-blue-300 dark:border-blue-800',
233
- red: 'bg-red-100 dark:bg-red-200 text-red-800 dark:text-red-900 group-hover:bg-red-200 dark:group-hover:bg-red-300 border-red-300 dark:border-red-800',
234
- green: 'bg-green-100 dark:bg-green-200 text-green-800 dark:text-green-900 group-hover:bg-green-200 dark:group-hover:bg-green-300 border-green-300 dark:border-green-800',
235
- yellow: 'bg-yellow-100 dark:bg-yellow-200 text-yellow-800 dark:text-yellow-900 group-hover:bg-yellow-200 dark:group-hover:bg-yellow-300 border-yellow-300 dark:border-yellow-800',
236
- indigo: 'bg-indigo-100 dark:bg-indigo-200 text-indigo-800 dark:text-indigo-900 group-hover:bg-indigo-200 dark:group-hover:bg-indigo-300 border-indigo-300 dark:border-indigo-800',
237
- purple: 'bg-purple-100 dark:bg-purple-200 text-purple-800 dark:text-purple-900 group-hover:bg-purple-200 dark:group-hover:bg-purple-300 border-purple-300 dark:border-purple-800',
238
- pink: 'bg-pink-100 dark:bg-pink-200 text-pink-800 dark:text-pink-900 group-hover:bg-pink-200 dark:group-hover:bg-pink-300 border-pink-300 dark:border-pink-800',
239
- },
240
- hasBorder: {
241
- enabled: 'border',
242
- disabled: 'border-0',
243
- },
244
- size: {
245
- xs: 'text-xs p-1',
246
- sm: 'text-sm p-1.5',
247
- },
248
- isPill: {
249
- enabled: 'rounded-full',
250
- disabled: 'rounded',
251
- },
252
- link: {
253
- enabled: 'group cursor-pointer',
254
- disabled: '',
255
- },
256
- isIconOnly: {
257
- enabled: '',
258
- disabled: 'px-2 py-0.5',
259
- },
260
- },
261
- closeButton: {
262
- base: 'ms-1 inline-flex items-center rounded-sm p-1 focus:ring-2',
259
+ const flowbiteBadgeButtonTheme = createTheme({
260
+ host: {
261
+ base: 'flex rounded-lg p-1 first:mr-2 last:ml-2 data-hover:cursor-pointer',
263
262
  color: {
264
- primary: 'text-primary-500 dark:text-primary-600 hover:bg-primary-200 dark:hover:bg-primary-300',
265
- dark: 'text-gray-500 dark:text-gray-600 hover:bg-gray-200 dark:hover:bg-gray-300',
266
- blue: 'text-blue-500 dark:text-blue-600 hover:bg-blue-200 dark:hover:bg-blue-300',
267
- red: 'text-red-500 dark:text-red-600 hover:bg-red-200 dark:hover:bg-red-300',
268
- green: 'text-green-500 dark:text-green-600 hover:bg-green-200 dark:hover:bg-green-300',
269
- yellow: 'text-yellow-500 dark:text-yellow-600 hover:bg-yellow-200 dark:hover:bg-yellow-300',
270
- indigo: 'text-indigo-500 dark:text-indigo-600 hover:bg-indigo-200 dark:hover:bg-indigo-300',
271
- purple: 'text-purple-500 dark:text-purple-600 hover:bg-purple-200 dark:hover:bg-purple-300',
272
- pink: 'text-pink-500 dark:text-pink-600 hover:bg-pink-200 dark:hover:bg-pink-300',
263
+ default: {
264
+ light: 'data-hover:bg-gray-300',
265
+ dark: 'dark:data-hover:bg-gray-700',
266
+ },
267
+ info: {
268
+ light: 'data-hover:bg-blue-300',
269
+ dark: 'dark:data-hover:bg-blue-400',
270
+ },
271
+ failure: {
272
+ light: 'data-hover:bg-red-300',
273
+ dark: 'dark:data-hover:bg-red-400',
274
+ },
275
+ success: {
276
+ light: 'data-hover:bg-green-300',
277
+ dark: 'dark:data-hover:bg-green-400',
278
+ },
279
+ warning: {
280
+ light: 'data-hover:bg-yellow-300',
281
+ dark: 'dark:data-hover:bg-yellow-400',
282
+ },
283
+ primary: {
284
+ light: 'data-hover:bg-primary-300',
285
+ dark: 'dark:data-hover:bg-primary-400',
286
+ },
273
287
  },
274
288
  },
275
289
  });
276
290
 
291
+ const defaultFlowbiteBadgeButtonConfig = {
292
+ baseTheme: flowbiteBadgeButtonTheme,
293
+ customTheme: {},
294
+ };
295
+ const FlowbiteBadgeButtonConfigToken = new InjectionToken('FlowbiteBadgeButtonConfigToken');
296
+ /**
297
+ * Provide the default BadgeButton configuration
298
+ * @param config The BadgeButton configuration
299
+ * @returns The provider
300
+ */
301
+ const provideFlowbiteBadgeButtonConfig = (config) => [
302
+ {
303
+ provide: FlowbiteBadgeButtonConfigToken,
304
+ useValue: { ...defaultFlowbiteBadgeButtonConfig, ...config },
305
+ },
306
+ ];
307
+ /**
308
+ * Inject the BadgeButton configuration
309
+ * @see {@link defaultFlowbiteBadgeButtonConfig}
310
+ * @returns The configuration
311
+ */
312
+ const injectFlowbiteBadgeButtonConfig = () => inject(FlowbiteBadgeButtonConfigToken, { optional: true }) ?? defaultFlowbiteBadgeButtonConfig;
313
+
314
+ const FlowbiteBadgeButtonStateToken = createStateToken('Flowbite BadgeButton');
315
+ const provideFlowbiteBadgeButtonState = createStateProvider(FlowbiteBadgeButtonStateToken);
316
+ const injectFlowbiteBadgeButtonState = createStateInjector(FlowbiteBadgeButtonStateToken);
317
+ const flowbiteBadgeButtonState = createState(FlowbiteBadgeButtonStateToken);
318
+
319
+ class BadgeButton {
320
+ constructor() {
321
+ this.config = injectFlowbiteBadgeButtonConfig();
322
+ this.badgeState = injectFlowbiteBadgeState();
323
+ /**
324
+ * @see {@link injectFlowbiteBadgeButtonConfig}
325
+ */
326
+ this.customTheme = input(this.config.customTheme);
327
+ this.theme = computed(() => {
328
+ const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
329
+ return {
330
+ host: {
331
+ root: twMerge(mergedTheme.host.base, colorToTheme(mergedTheme.host.color, this.badgeState().color())),
332
+ },
333
+ };
334
+ });
335
+ /**
336
+ * @internal
337
+ */
338
+ this.state = flowbiteBadgeButtonState(this);
339
+ }
340
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BadgeButton, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
341
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: BadgeButton, isStandalone: true, selector: "\n button[flowbiteBadgeButton],\n a[flowbiteBadgeButton]\n ", inputs: { customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteBadgeButtonState()], exportAs: ["flowbiteBadgeButton"], hostDirectives: [{ directive: i2.NgpButton, inputs: ["disabled", "disabled"] }, { directive: i3.NgpFocus }], ngImport: i0 }); }
342
+ }
343
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BadgeButton, decorators: [{
344
+ type: Directive,
345
+ args: [{
346
+ standalone: true,
347
+ selector: `
348
+ button[flowbiteBadgeButton],
349
+ a[flowbiteBadgeButton]
350
+ `,
351
+ exportAs: 'flowbiteBadgeButton',
352
+ hostDirectives: [
353
+ {
354
+ directive: NgpButton,
355
+ inputs: ['disabled:disabled'],
356
+ outputs: [],
357
+ },
358
+ {
359
+ directive: NgpFocus,
360
+ inputs: [],
361
+ outputs: [],
362
+ },
363
+ ],
364
+ providers: [provideFlowbiteBadgeButtonState()],
365
+ host: { '[class]': `theme().host.root` },
366
+ }]
367
+ }] });
368
+
369
+ /* Badge */
370
+
277
371
  /**
278
372
  * Generated bundle index. Do not edit.
279
373
  */
280
374
 
281
- export { BadgeComponent, BadgeThemeService, FLOWBITE_BADGE_COLOR_DEFAULT_VALUE, FLOWBITE_BADGE_CUSTOM_STYLE_DEFAULT_VALUE, FLOWBITE_BADGE_IS_ICON_ONLY_DEFAULT_VALUE, FLOWBITE_BADGE_IS_PILL_DEFAULT_VALUE, FLOWBITE_BADGE_SIZE_DEFAULT_VALUE, FLOWBITE_BADGE_THEME_TOKEN, badgeDefaultValueProvider, badgeTheme };
375
+ export { Badge, BadgeButton, BadgeLink, FlowbiteBadgeButtonConfigToken, FlowbiteBadgeButtonStateToken, FlowbiteBadgeConfigToken, FlowbiteBadgeLinkConfigToken, FlowbiteBadgeLinkStateToken, FlowbiteBadgeStateToken, defaultFlowbiteBadgeButtonConfig, defaultFlowbiteBadgeConfig, defaultFlowbiteBadgeLinkConfig, flowbiteBadgeButtonState, flowbiteBadgeButtonTheme, flowbiteBadgeLinkState, flowbiteBadgeLinkTheme, flowbiteBadgeState, flowbiteBadgeTheme, injectFlowbiteBadgeButtonConfig, injectFlowbiteBadgeButtonState, injectFlowbiteBadgeConfig, injectFlowbiteBadgeLinkConfig, injectFlowbiteBadgeLinkState, injectFlowbiteBadgeState, provideFlowbiteBadgeButtonConfig, provideFlowbiteBadgeButtonState, provideFlowbiteBadgeConfig, provideFlowbiteBadgeLinkConfig, provideFlowbiteBadgeLinkState, provideFlowbiteBadgeState };
282
376
  //# sourceMappingURL=flowbite-angular-badge.mjs.map