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,320 +1,240 @@
1
- import { mergeTheme, createTheme } from 'flowbite-angular/utils';
1
+ import { createStateToken, createStateProvider, createStateInjector, createState } from 'ng-primitives/state';
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, Directive, computed } from '@angular/core';
4
+ import { createTheme, mergeDeep, colorToTheme } from 'flowbite-angular';
5
+ import * as i1 from 'ng-primitives/button';
6
+ import { NgpButton } from 'ng-primitives/button';
7
+ import * as i2 from 'ng-primitives/interactions';
8
+ import { NgpFocus } from 'ng-primitives/interactions';
4
9
  import { twMerge } from 'tailwind-merge';
5
- import { BaseComponent, booleanToFlowbiteBoolean } from 'flowbite-angular';
6
- import { NgTemplateOutlet } from '@angular/common';
7
10
 
11
+ const FlowbiteBaseButtonStateToken = createStateToken('Flowbite BaseButton');
12
+ const provideFlowbiteBaseButtonState = createStateProvider(FlowbiteBaseButtonStateToken);
13
+ const injectFlowbiteBaseButtonState = createStateInjector(FlowbiteBaseButtonStateToken);
14
+ const flowbiteBaseButtonState = createState(FlowbiteBaseButtonStateToken);
15
+
16
+ const defaultFlowbiteBaseButtonConfig = {
17
+ color: 'default',
18
+ size: 'md',
19
+ pill: false,
20
+ outline: false,
21
+ };
22
+ const FlowbiteBaseButtonConfigToken = new InjectionToken('FlowbiteBaseButtonConfigToken');
8
23
  /**
9
- * `InjectionToken` used to import `ButtonTheme` value
10
- *
11
- * @example
12
- * ```
13
- * var theme = inject(FLOWBITE_BUTTON_THEME_TOKEN)
14
- * ```
24
+ * Provide the default BaseButton configuration
25
+ * @param config The BaseButton configuration
26
+ * @returns The provider
15
27
  */
16
- const FLOWBITE_BUTTON_THEME_TOKEN = new InjectionToken('FLOWBITE_BUTTON_THEME_TOKEN');
17
- class ButtonThemeService {
18
- constructor() {
19
- this.baseTheme = inject(FLOWBITE_BUTTON_THEME_TOKEN);
20
- }
21
- getClasses(properties) {
22
- const theme = mergeTheme(this.baseTheme, properties.customStyle);
23
- const output = {
24
- rootClass: twMerge(properties.gradientDuoTone && properties.fill == 'outline'
25
- ? theme.root.base['span']
26
- : `${theme.root.base['default']} ${theme.root.size[properties.size]}`, properties.gradientDuoTone
27
- ? theme.root.gradientDuoTone[properties.gradientDuoTone][properties.fill]
28
- : properties.gradientMonochrome
29
- ? theme.root.gradientMonochrome[properties.gradientMonochrome]
30
- : theme.root.color[properties.color][properties.fill], theme.root.isPill[properties.isPill], theme.root.isDisabled[properties.isDisabled]),
31
- spanClass: twMerge(theme.span.base, theme.span.isPill[properties.isPill], theme.span.size[properties.size]),
32
- };
33
- return output;
34
- }
35
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ButtonThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
36
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ButtonThemeService, providedIn: 'root' }); }
37
- }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ButtonThemeService, decorators: [{
39
- type: Injectable,
40
- args: [{
41
- providedIn: 'root',
42
- }]
43
- }] });
44
-
45
- const FLOWBITE_BUTTON_COLOR_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BUTTON_COLOR_DEFAULT_VALUE');
46
- const FLOWBITE_BUTTON_SIZE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BUTTON_SIZE_DEFAULT_VALUE');
47
- const FLOWBITE_BUTTON_IS_PILL_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BUTTON_IS_PILL_DEFAULT_VALUE');
48
- const FLOWBITE_BUTTON_FILL_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BUTTON_FILL_DEFAULT_VALUE');
49
- const FLOWBITE_BUTTON_IS_DISABLED_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BUTTON_IS_DISABLED_DEFAULT_VALUE');
50
- const FLOWBITE_BUTTON_GRADIENT_MONOCHROME_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BUTTON_GRADIENT_MONOCHROME_DEFAULT_VALUE');
51
- const FLOWBITE_BUTTON_GRADIENT_DUOTONE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BUTTON_GRADIENT_DUOTONE_DEFAULT_VALUE');
52
- const FLOWBITE_BUTTON_CUSTOM_STYLE_DEFAULT_VALUE = new InjectionToken('FLOWBITE_BUTTON_CUSTOM_STYLE_DEFAULT_VALUE');
53
- const buttonDefaultValueProvider = makeEnvironmentProviders([
54
- {
55
- provide: FLOWBITE_BUTTON_COLOR_DEFAULT_VALUE,
56
- useValue: 'primary',
57
- },
58
- {
59
- provide: FLOWBITE_BUTTON_SIZE_DEFAULT_VALUE,
60
- useValue: 'md',
61
- },
62
- {
63
- provide: FLOWBITE_BUTTON_IS_PILL_DEFAULT_VALUE,
64
- useValue: false,
65
- },
66
- {
67
- provide: FLOWBITE_BUTTON_FILL_DEFAULT_VALUE,
68
- useValue: 'solid',
69
- },
70
- {
71
- provide: FLOWBITE_BUTTON_IS_DISABLED_DEFAULT_VALUE,
72
- useValue: false,
73
- },
74
- {
75
- provide: FLOWBITE_BUTTON_GRADIENT_MONOCHROME_DEFAULT_VALUE,
76
- useValue: undefined,
77
- },
78
- {
79
- provide: FLOWBITE_BUTTON_GRADIENT_DUOTONE_DEFAULT_VALUE,
80
- useValue: undefined,
81
- },
28
+ const provideFlowbiteBaseButtonConfig = (config) => [
82
29
  {
83
- provide: FLOWBITE_BUTTON_CUSTOM_STYLE_DEFAULT_VALUE,
84
- useValue: {},
30
+ provide: FlowbiteBaseButtonConfigToken,
31
+ useValue: { ...defaultFlowbiteBaseButtonConfig, ...config },
85
32
  },
86
- ]);
33
+ ];
87
34
  /**
88
- * @see https://flowbite.com/docs/components/buttons/
35
+ * Inject the BaseButton configuration
36
+ * @see {@link defaultFlowbiteBaseButtonConfig}
37
+ * @returns The configuration
89
38
  */
90
- class ButtonComponent extends BaseComponent {
39
+ const injectFlowbiteBaseButtonConfig = () => inject(FlowbiteBaseButtonConfigToken, { optional: true }) ?? defaultFlowbiteBaseButtonConfig;
40
+
41
+ class BaseButton {
91
42
  constructor() {
92
- super(...arguments);
93
- /**
94
- * Service injected used to generate class
95
- */
96
- this.themeService = inject(ButtonThemeService);
97
- //#region properties
98
- /**
99
- * Set the button color
100
- *
101
- * @default primary
102
- */
103
- this.color = model(inject(FLOWBITE_BUTTON_COLOR_DEFAULT_VALUE));
104
- /**
105
- * Set the button size
106
- *
107
- * @default md
108
- */
109
- this.size = model(inject(FLOWBITE_BUTTON_SIZE_DEFAULT_VALUE));
43
+ this.config = injectFlowbiteBaseButtonConfig();
110
44
  /**
111
- * Set if the button is pill
112
- *
113
- * @default false
45
+ * @see {@link injectFlowbiteBaseButtonConfig}
114
46
  */
115
- this.isPill = model(inject(FLOWBITE_BUTTON_IS_PILL_DEFAULT_VALUE));
47
+ this.color = input(this.config.color);
116
48
  /**
117
- * Set the button fill
118
- *
119
- * @default solid
49
+ * @see {@link injectFlowbiteBaseButtonConfig}
120
50
  */
121
- this.fill = model(inject(FLOWBITE_BUTTON_FILL_DEFAULT_VALUE));
51
+ this.size = input(this.config.size);
122
52
  /**
123
- * Set if the button is disabled
124
- *
125
- * @default false
53
+ * @see {@link injectFlowbiteBaseButtonConfig}
126
54
  */
127
- this.isDisabled = model(inject(FLOWBITE_BUTTON_IS_DISABLED_DEFAULT_VALUE));
55
+ this.pill = input(this.config.pill, { transform: booleanAttribute });
128
56
  /**
129
- * Set the button gradient monochrome
130
- *
131
- * @default undefined
57
+ * @see {@link injectFlowbiteBaseButtonConfig}
132
58
  */
133
- this.gradientMonochrome = model(inject(FLOWBITE_BUTTON_GRADIENT_MONOCHROME_DEFAULT_VALUE));
59
+ this.outline = input(this.config.outline, { transform: booleanAttribute });
134
60
  /**
135
- * Set the button gradient duotone
136
- *
137
- * @default undefined
61
+ * @internal
138
62
  */
139
- this.gradientDuoTone = model(inject(FLOWBITE_BUTTON_GRADIENT_DUOTONE_DEFAULT_VALUE));
140
- /**
141
- * Set the custom style for this button
142
- */
143
- this.customStyle = model(inject(FLOWBITE_BUTTON_CUSTOM_STYLE_DEFAULT_VALUE));
144
- }
145
- //#endregion
146
- //#region BaseComponent implementation
147
- fetchClass() {
148
- return this.themeService.getClasses({
149
- color: this.color(),
150
- isDisabled: booleanToFlowbiteBoolean(this.isDisabled()),
151
- fill: this.fill(),
152
- isPill: booleanToFlowbiteBoolean(this.isPill()),
153
- size: this.size(),
154
- gradientMonochrome: this.gradientMonochrome(),
155
- gradientDuoTone: this.gradientDuoTone(),
156
- customStyle: this.customStyle(),
157
- });
158
- }
159
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
160
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.4", type: ButtonComponent, isStandalone: true, selector: "flowbite-button", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, isPill: { classPropertyName: "isPill", publicName: "isPill", isSignal: true, isRequired: false, transformFunction: null }, fill: { classPropertyName: "fill", publicName: "fill", isSignal: true, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, gradientMonochrome: { classPropertyName: "gradientMonochrome", publicName: "gradientMonochrome", isSignal: true, isRequired: false, transformFunction: null }, gradientDuoTone: { classPropertyName: "gradientDuoTone", publicName: "gradientDuoTone", isSignal: true, isRequired: false, transformFunction: null }, customStyle: { classPropertyName: "customStyle", publicName: "customStyle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { color: "colorChange", size: "sizeChange", isPill: "isPillChange", fill: "fillChange", isDisabled: "isDisabledChange", gradientMonochrome: "gradientMonochromeChange", gradientDuoTone: "gradientDuoToneChange", customStyle: "customStyleChange" }, host: { properties: { "attr.type": "button" } }, usesInheritance: true, ngImport: i0, template: `
161
- @if (gradientDuoTone() && fill() === 'outline') {
162
- <span [class]="contentClasses().spanClass">
163
- <ng-content *ngTemplateOutlet="content" />
164
- </span>
165
- } @else {
166
- <ng-content *ngTemplateOutlet="content" />
63
+ this.state = flowbiteBaseButtonState(this);
167
64
  }
168
-
169
- <ng-template #content>
170
- <ng-content />
171
- </ng-template>
172
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
65
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BaseButton, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
66
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: BaseButton, isStandalone: true, inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, pill: { classPropertyName: "pill", publicName: "pill", isSignal: true, isRequired: false, transformFunction: null }, outline: { classPropertyName: "outline", publicName: "outline", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideFlowbiteBaseButtonState()], ngImport: i0 }); }
173
67
  }
174
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: ButtonComponent, decorators: [{
175
- type: Component,
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: BaseButton, decorators: [{
69
+ type: Directive,
176
70
  args: [{
177
- imports: [NgTemplateOutlet],
178
- selector: 'flowbite-button',
179
- template: `
180
- @if (gradientDuoTone() && fill() === 'outline') {
181
- <span [class]="contentClasses().spanClass">
182
- <ng-content *ngTemplateOutlet="content" />
183
- </span>
184
- } @else {
185
- <ng-content *ngTemplateOutlet="content" />
186
- }
187
-
188
- <ng-template #content>
189
- <ng-content />
190
- </ng-template>
191
- `,
192
- host: {
193
- '[attr.type]': 'button',
194
- },
195
- encapsulation: ViewEncapsulation.None,
196
- changeDetection: ChangeDetectionStrategy.OnPush,
71
+ standalone: true,
72
+ providers: [provideFlowbiteBaseButtonState()],
197
73
  }]
198
74
  }] });
199
75
 
200
- /**
201
- * Default theme for `ButtonComponent`
202
- */
203
- const buttonTheme = createTheme({
204
- root: {
205
- base: {
206
- default: 'cursor-pointer group flex h-min w-fit items-center justify-center p-0.5 text-center font-medium focus:z-10',
207
- span: 'cursor-pointer group inline-flex relative items-center justify-center p-0.5 font-medium overflow-hidden',
76
+ const flowbiteButtonTheme = createTheme({
77
+ host: {
78
+ base: 'flex cursor-pointer items-center justify-center border text-center font-medium',
79
+ transition: '',
80
+ focus: 'data-focus:ring-2',
81
+ disabled: 'data-disabled:cursor-not-allowed data-disabled:opacity-75',
82
+ size: {
83
+ xs: 'px-3 py-2 text-xs',
84
+ sm: 'px-3 py-2 text-sm',
85
+ md: 'px-5 py-2.5 text-sm',
86
+ lg: 'px-5 py-3 text-base',
87
+ xl: 'px-6 py-3.5 text-base',
88
+ },
89
+ pill: {
90
+ on: 'rounded-full',
91
+ off: 'rounded-lg',
208
92
  },
209
93
  color: {
210
- dark: {
211
- solid: 'text-white bg-gray-800 dark:bg-gray-800 border border-transparent dark:border-gray-700 hover:bg-gray-900 dark:hover:bg-gray-700 focus:ring-4 focus:ring-gray-300 dark:focus:ring-gray-800 disabled:hover:bg-gray-800 dark:disabled:hover:bg-gray-800',
212
- outline: 'text-gray-900 hover:text-white border border-gray-800 hover:bg-gray-900 dark:border-gray-600 dark:text-gray-400 dark:hover:text-white focus:ring-4 focus:outline-none focus:ring-gray-300 dark:hover:bg-gray-600 dark:focus:ring-gray-800',
213
- },
214
- primary: {
215
- solid: 'text-white bg-primary-700 border border-transparent hover:bg-primary-800 focus:ring-4 focus:ring-primary-300 dark:bg-primary-700 dark:hover:bg-primary-800 dark:focus:ring-primary-900',
216
- outline: 'text-primary-700 hover:text-white border border-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 dark:border-primary-500 dark:text-primary-500 dark:hover:text-white dark:hover:bg-primary-600 dark:focus:ring-primary-900',
94
+ default: {
95
+ light: 'border-gray-200 bg-gray-100 text-gray-700 data-hover:bg-gray-200',
96
+ dark: 'dark:border-gray-900 dark:bg-gray-800 dark:text-gray-100 dark:data-hover:bg-gray-700',
217
97
  },
218
- red: {
219
- solid: 'text-white bg-red-700 border border-transparent hover:bg-red-800 focus:ring-4 focus:ring-red-300 dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-red-900',
220
- outline: 'text-red-700 hover:text-white border border-red-700 hover:bg-red-800 focus:ring-4 focus:outline-none focus:ring-red-300 dark:border-red-500 dark:text-red-500 dark:hover:text-white dark:hover:bg-red-600 dark:focus:ring-red-900',
98
+ info: {
99
+ light: 'border-blue-700 bg-blue-600 text-gray-100 data-hover:bg-blue-700',
100
+ dark: 'dark:border-blue-900 dark:bg-blue-800 dark:text-blue-100 dark:data-hover:bg-blue-900',
221
101
  },
222
- blue: {
223
- solid: 'text-white bg-blue-700 border border-transparent hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800',
224
- outline: 'text-blue-700 hover:text-white border border-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 dark:border-blue-500 dark:text-blue-500 dark:hover:text-white dark:hover:bg-blue-600 dark:focus:ring-blue-800',
102
+ failure: {
103
+ light: 'border-red-700 bg-red-600 text-gray-100 data-hover:bg-red-700',
104
+ dark: 'dark:border-red-900 dark:bg-red-800 dark:text-red-100 dark:data-hover:bg-red-900',
225
105
  },
226
- light: {
227
- solid: 'text-gray-900 bg-white border border-gray-300 hover:bg-gray-100 focus:ring-4 focus:ring-blue-300 dark:bg-gray-600 dark:text-white dark:border-gray-600 dark:hover:bg-gray-700 dark:hover:border-gray-700 dark:focus:ring-gray-700',
228
- outline: 'text-gray-900 bg-transparent border border-gray-200 hover:bg-white focus:ring-4 focus:ring-blue-300 dark:bg-transparent dark:text-white dark:border-white dark:hover:text-gray-900 dark:hover:bg-white dark:hover:border-gray-700 dark:focus:ring-gray-700',
106
+ success: {
107
+ light: 'border-green-700 bg-green-600 text-gray-100 data-hover:bg-green-700',
108
+ dark: 'dark:border-green-900 dark:bg-green-800 dark:text-green-100 dark:data-hover:bg-green-900',
229
109
  },
230
- purple: {
231
- solid: 'text-white bg-purple-700 border border-transparent hover:bg-purple-800 focus:ring-4 focus:ring-purple-300 dark:bg-purple-600 dark:hover:bg-purple-700 dark:focus:ring-purple-900',
232
- outline: 'text-purple-700 hover:text-white border border-purple-700 hover:bg-purple-800 focus:ring-4 focus:outline-none focus:ring-purple-300 dark:border-purple-400 dark:text-purple-400 dark:hover:text-white dark:hover:bg-purple-500 dark:focus:ring-purple-900',
110
+ warning: {
111
+ light: 'border-yellow-700 bg-yellow-600 text-gray-100 data-hover:bg-yellow-700',
112
+ dark: 'dark:border-yellow-900 dark:bg-yellow-800 dark:text-yellow-100 dark:data-hover:bg-yellow-900',
233
113
  },
234
- green: {
235
- solid: 'text-white bg-green-700 border border-transparent hover:bg-green-800 focus:ring-4 focus:ring-green-300 dark:bg-green-600 dark:hover:bg-green-700 dark:focus:ring-green-800',
236
- outline: 'text-green-700 hover:text-white border border-green-700 hover:bg-green-800 focus:ring-4 focus:outline-none focus:ring-green-300 dark:border-green-500 dark:text-green-500 dark:hover:text-white dark:hover:bg-green-600 dark:focus:ring-green-800',
237
- },
238
- yellow: {
239
- solid: 'text-white bg-yellow-400 border border-transparent hover:bg-yellow-500 focus:ring-4 focus:ring-yellow-300 dark:focus:ring-yellow-900',
240
- outline: 'text-yellow-400 hover:text-white border border-yellow-400 hover:bg-yellow-500 focus:ring-4 focus:outline-none focus:ring-yellow-300 dark:border-yellow-300 dark:text-yellow-300 dark:hover:text-white dark:hover:bg-yellow-400 dark:focus:ring-yellow-900',
114
+ primary: {
115
+ light: 'border-primary-800 bg-primary-700 data-hover:bg-primary-800 text-gray-100',
116
+ dark: 'dark:border-primary-900 dark:bg-primary-800 dark:text-primary-100 dark:data-hover:bg-primary-900',
241
117
  },
242
118
  },
243
- isDisabled: {
244
- enabled: 'cursor-not-allowed opacity-50',
245
- disabled: '',
246
- },
247
- gradientMonochrome: {
248
- cyan: 'text-white bg-gradient-to-r from-cyan-400 via-cyan-500 to-cyan-600 hover:bg-gradient-to-br focus:ring-4 focus:ring-cyan-300 dark:focus:ring-cyan-800',
249
- red: 'text-white bg-gradient-to-r from-red-400 via-red-500 to-red-600 hover:bg-gradient-to-br focus:ring-4 focus:ring-red-300 dark:focus:ring-red-800',
250
- blue: 'text-white bg-gradient-to-r from-blue-500 via-blue-600 to-blue-700 hover:bg-gradient-to-br focus:ring-4 focus:ring-blue-300 dark:focus:ring-blue-800',
251
- lime: 'text-gray-900 bg-gradient-to-r from-lime-200 via-lime-400 to-lime-500 hover:bg-gradient-to-br focus:ring-4 focus:ring-lime-300 dark:focus:ring-lime-800',
252
- pink: 'text-white bg-gradient-to-r from-pink-400 via-pink-500 to-pink-600 hover:bg-gradient-to-br focus:ring-4 focus:ring-pink-300 dark:focus:ring-pink-800',
253
- purple: 'text-white bg-gradient-to-r from-purple-500 via-purple-600 to-purple-700 hover:bg-gradient-to-br focus:ring-4 focus:ring-purple-300 dark:focus:ring-purple-800',
254
- green: 'text-white bg-gradient-to-r from-green-400 via-green-500 to-green-600 hover:bg-gradient-to-br focus:ring-4 focus:ring-green-300 dark:focus:ring-green-800',
255
- teal: 'text-white bg-gradient-to-r from-teal-400 via-teal-500 to-teal-600 hover:bg-gradient-to-br focus:ring-4 focus:ring-teal-300 dark:focus:ring-teal-800',
256
- },
257
- gradientDuoTone: {
258
- purpleToBlue: {
259
- solid: 'text-white bg-gradient-to-br from-purple-600 to-blue-500 hover:bg-gradient-to-bl focus:ring-4 focus:outline-none focus:ring-blue-300 dark:focus:ring-blue-800',
260
- outline: 'text-gray-900 bg-gradient-to-br from-purple-600 to-blue-500 group-hover:from-purple-600 group-hover:to-blue-500 hover:text-white dark:text-white focus:ring-4 focus:outline-none focus:ring-blue-300 dark:focus:ring-blue-800',
261
- },
262
- cyanToBlue: {
263
- solid: 'text-white bg-gradient-to-r from-cyan-500 to-blue-500 hover:bg-gradient-to-bl focus:ring-4 focus:outline-none focus:ring-cyan-300 dark:focus:ring-cyan-800',
264
- outline: 'text-gray-900 bg-gradient-to-br from-cyan-500 to-blue-500 group-hover:from-cyan-500 group-hover:to-blue-500 hover:text-white dark:text-white focus:ring-4 focus:outline-none focus:ring-cyan-200 dark:focus:ring-cyan-800',
119
+ colorOutline: {
120
+ default: {
121
+ light: 'border-gray-700 text-gray-700 data-hover:bg-gray-700 data-hover:text-gray-100',
122
+ dark: 'dark:border-gray-300 dark:text-gray-300 dark:data-hover:bg-gray-300 dark:data-hover:text-gray-700',
265
123
  },
266
- greenToBlue: {
267
- solid: 'text-white bg-gradient-to-br from-green-400 to-blue-600 hover:bg-gradient-to-bl focus:ring-4 focus:outline-none focus:ring-green-200 dark:focus:ring-green-800',
268
- outline: 'text-gray-900 bg-gradient-to-br from-green-400 to-blue-600 group-hover:from-green-400 group-hover:to-blue-600 hover:text-white dark:text-white focus:ring-4 focus:outline-none focus:ring-green-200 dark:focus:ring-green-800',
124
+ info: {
125
+ light: 'border-blue-700 text-blue-700 data-hover:bg-blue-700 data-hover:text-gray-100',
126
+ dark: 'dark:border-blue-700 dark:text-blue-600 dark:data-hover:bg-blue-700 dark:data-hover:text-gray-100',
269
127
  },
270
- purpleToPink: {
271
- solid: 'text-white bg-gradient-to-r from-purple-500 to-pink-500 hover:bg-gradient-to-l focus:ring-4 focus:outline-none focus:ring-purple-200 dark:focus:ring-purple-800',
272
- outline: 'text-gray-900 bg-gradient-to-br from-purple-500 to-pink-500 group-hover:from-purple-500 group-hover:to-pink-500 hover:text-white dark:text-white focus:ring-4 focus:outline-none focus:ring-purple-200 dark:focus:ring-purple-800',
128
+ failure: {
129
+ light: 'border-red-700 text-red-700 data-hover:bg-red-700 data-hover:text-red-100',
130
+ dark: 'dark:border-red-700 dark:text-red-600 dark:data-hover:bg-red-700 dark:data-hover:text-gray-100',
273
131
  },
274
- pinkToOrange: {
275
- solid: 'text-white bg-gradient-to-br from-pink-500 to-orange-400 hover:bg-gradient-to-bl focus:ring-4 focus:outline-none focus:ring-pink-200 dark:focus:ring-pink-800',
276
- outline: 'text-gray-900 bg-gradient-to-br from-pink-500 to-orange-400 group-hover:from-pink-500 group-hover:to-orange-400 hover:text-white dark:text-white focus:ring-4 focus:outline-none focus:ring-pink-200 dark:focus:ring-pink-800',
132
+ success: {
133
+ light: 'border-green-700 text-green-700 data-hover:bg-green-700 data-hover:text-green-100',
134
+ dark: 'dark:border-green-700 dark:text-green-600 dark:data-hover:bg-green-700 dark:data-hover:text-gray-100',
277
135
  },
278
- tealToLime: {
279
- solid: 'text-gray-900 bg-gradient-to-r from-teal-200 to-lime-200 hover:bg-gradient-to-l hover:from-teal-200 hover:to-lime-200 focus:ring-4 focus:outline-none focus:ring-lime-200 dark:focus:ring-teal-700',
280
- outline: 'text-gray-900 bg-gradient-to-br from-teal-300 to-lime-300 group-hover:from-teal-300 group-hover:to-lime-300 dark:text-white dark:hover:text-gray-900 focus:ring-4 focus:outline-none focus:ring-lime-200 dark:focus:ring-lime-800',
136
+ warning: {
137
+ light: 'border-yellow-700 text-yellow-700 data-hover:bg-yellow-700 data-hover:text-yellow-100',
138
+ dark: 'dark:border-yellow-700 dark:text-yellow-600 dark:data-hover:bg-yellow-700 dark:data-hover:text-gray-100',
281
139
  },
282
- redToYellow: {
283
- solid: 'text-gray-900 bg-gradient-to-r from-red-200 via-red-300 to-yellow-200 hover:bg-gradient-to-bl focus:ring-4 focus:outline-none focus:ring-red-100 dark:focus:ring-red-400',
284
- outline: 'text-gray-900 bg-gradient-to-br from-red-200 via-red-300 to-yellow-200 group-hover:from-red-200 group-hover:via-red-300 group-hover:to-yellow-200 dark:text-white dark:hover:text-gray-900 focus:ring-4 focus:outline-none focus:ring-red-100 dark:focus:ring-red-400',
140
+ primary: {
141
+ light: 'border-primary-700 text-primary-700 data-hover:bg-primary-700 data-hover:text-primary-100',
142
+ dark: 'dark:border-primary-700 dark:text-primary-600 dark:data-hover:bg-primary-700 dark:data-hover:text-gray-100',
285
143
  },
286
144
  },
287
- size: {
288
- xs: 'text-xs py-2 px-3',
289
- sm: 'text-sm py-2 px-3',
290
- md: 'text-sm px-5 py-2.5',
291
- lg: 'text-base py-3 px-5',
292
- xl: 'text-base px-6 py-3.5',
293
- },
294
- isPill: {
295
- enabled: 'rounded-full',
296
- disabled: 'rounded-lg',
297
- },
298
- },
299
- span: {
300
- base: 'cursor-pointer relative inline-flex items-center bg-white transition-all duration-75 ease-in group-hover:bg-opacity-0 dark:bg-gray-900',
301
- isPill: {
302
- enabled: 'rounded-full',
303
- disabled: 'rounded-md',
304
- },
305
- size: {
306
- xs: 'text-xs py-2 px-3',
307
- sm: 'text-sm py-2 px-3',
308
- md: 'text-sm px-5 py-2.5',
309
- lg: 'text-base py-3 px-5',
310
- xl: 'text-base px-6 py-3.5',
311
- },
312
145
  },
313
146
  });
314
147
 
148
+ const defaultFlowbiteButtonConfig = {
149
+ baseTheme: flowbiteButtonTheme,
150
+ customTheme: {},
151
+ };
152
+ const FlowbiteButtonConfigToken = new InjectionToken('FlowbiteButtonConfigToken');
153
+ /**
154
+ * Provide the default Button configuration
155
+ * @param config The Button configuration
156
+ * @returns The provider
157
+ */
158
+ const provideFlowbiteButtonConfig = (config) => [
159
+ {
160
+ provide: FlowbiteButtonConfigToken,
161
+ useValue: { ...defaultFlowbiteButtonConfig, ...config },
162
+ },
163
+ ];
164
+ /**
165
+ * Inject the Button configuration
166
+ * @see {@link defaultFlowbiteButtonConfig}
167
+ * @returns The configuration
168
+ */
169
+ const injectFlowbiteButtonConfig = () => inject(FlowbiteButtonConfigToken, { optional: true }) ?? defaultFlowbiteButtonConfig;
170
+
171
+ const FlowbiteButtonStateToken = createStateToken('Flowbite Button');
172
+ const provideFlowbiteButtonState = createStateProvider(FlowbiteButtonStateToken);
173
+ const injectFlowbiteButtonState = createStateInjector(FlowbiteButtonStateToken);
174
+ const flowbiteButtonState = createState(FlowbiteButtonStateToken);
175
+
176
+ class Button {
177
+ constructor() {
178
+ this.config = injectFlowbiteButtonConfig();
179
+ this.baseButtonState = injectFlowbiteBaseButtonState();
180
+ /**
181
+ * @see {@link injectFlowbiteButtonConfig}
182
+ */
183
+ this.customTheme = input(this.config.customTheme);
184
+ /**
185
+ * @internal
186
+ */
187
+ this.state = flowbiteButtonState(this);
188
+ this.theme = computed(() => {
189
+ const mergedTheme = mergeDeep(this.config.baseTheme, this.state.customTheme());
190
+ return {
191
+ host: {
192
+ root: twMerge(mergedTheme.host.base, mergedTheme.host.transition, mergedTheme.host.focus, mergedTheme.host.disabled, mergedTheme.host.size[this.baseButtonState().size()], mergedTheme.host.pill[this.baseButtonState().pill() ? 'on' : 'off'], this.baseButtonState().outline()
193
+ ? colorToTheme(mergedTheme.host.colorOutline, this.baseButtonState().color())
194
+ : colorToTheme(mergedTheme.host.color, this.baseButtonState().color())),
195
+ },
196
+ };
197
+ });
198
+ }
199
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: Button, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
200
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: Button, isStandalone: true, selector: "\n button[flowbiteButton],\n a[flowbiteButton]\n ", inputs: { customTheme: { classPropertyName: "customTheme", publicName: "customTheme", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme().host.root" } }, providers: [provideFlowbiteButtonState()], exportAs: ["flowbiteButton"], hostDirectives: [{ directive: i1.NgpButton, inputs: ["disabled", "disabled"] }, { directive: i2.NgpFocus, inputs: ["ngpFocusDisabled", "focusDisabled"], outputs: ["ngpFocus", "ngpFocus"] }, { directive: BaseButton, inputs: ["color", "color", "size", "size", "pill", "pill", "outline", "outline"] }], ngImport: i0 }); }
201
+ }
202
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: Button, decorators: [{
203
+ type: Directive,
204
+ args: [{
205
+ standalone: true,
206
+ selector: `
207
+ button[flowbiteButton],
208
+ a[flowbiteButton]
209
+ `,
210
+ exportAs: 'flowbiteButton',
211
+ hostDirectives: [
212
+ {
213
+ directive: NgpButton,
214
+ inputs: ['disabled:disabled'],
215
+ outputs: [],
216
+ },
217
+ {
218
+ directive: NgpFocus,
219
+ inputs: ['ngpFocusDisabled:focusDisabled'],
220
+ outputs: ['ngpFocus'],
221
+ },
222
+ {
223
+ directive: BaseButton,
224
+ inputs: ['color', 'size', 'pill', 'outline'],
225
+ outputs: [],
226
+ },
227
+ ],
228
+ providers: [provideFlowbiteButtonState()],
229
+ host: { '[class]': `theme().host.root` },
230
+ }]
231
+ }] });
232
+
233
+ /* Button */
234
+
315
235
  /**
316
236
  * Generated bundle index. Do not edit.
317
237
  */
318
238
 
319
- export { ButtonComponent, ButtonThemeService, FLOWBITE_BUTTON_COLOR_DEFAULT_VALUE, FLOWBITE_BUTTON_CUSTOM_STYLE_DEFAULT_VALUE, FLOWBITE_BUTTON_FILL_DEFAULT_VALUE, FLOWBITE_BUTTON_GRADIENT_DUOTONE_DEFAULT_VALUE, FLOWBITE_BUTTON_GRADIENT_MONOCHROME_DEFAULT_VALUE, FLOWBITE_BUTTON_IS_DISABLED_DEFAULT_VALUE, FLOWBITE_BUTTON_IS_PILL_DEFAULT_VALUE, FLOWBITE_BUTTON_SIZE_DEFAULT_VALUE, FLOWBITE_BUTTON_THEME_TOKEN, buttonDefaultValueProvider, buttonTheme };
239
+ export { BaseButton, Button, FlowbiteBaseButtonConfigToken, FlowbiteBaseButtonStateToken, FlowbiteButtonConfigToken, FlowbiteButtonStateToken, defaultFlowbiteBaseButtonConfig, defaultFlowbiteButtonConfig, flowbiteBaseButtonState, flowbiteButtonState, flowbiteButtonTheme, injectFlowbiteBaseButtonConfig, injectFlowbiteBaseButtonState, injectFlowbiteButtonConfig, injectFlowbiteButtonState, provideFlowbiteBaseButtonConfig, provideFlowbiteBaseButtonState, provideFlowbiteButtonConfig, provideFlowbiteButtonState };
320
240
  //# sourceMappingURL=flowbite-angular-button.mjs.map