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,321 +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
- },
28
+ const provideFlowbiteBaseButtonConfig = (config) => [
78
29
  {
79
- provide: FLOWBITE_BUTTON_GRADIENT_DUOTONE_DEFAULT_VALUE,
80
- useValue: undefined,
30
+ provide: FlowbiteBaseButtonConfigToken,
31
+ useValue: { ...defaultFlowbiteBaseButtonConfig, ...config },
81
32
  },
82
- {
83
- provide: FLOWBITE_BUTTON_CUSTOM_STYLE_DEFAULT_VALUE,
84
- useValue: {},
85
- },
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));
110
- /**
111
- * Set if the button is pill
112
- *
113
- * @default false
114
- */
115
- this.isPill = model(inject(FLOWBITE_BUTTON_IS_PILL_DEFAULT_VALUE));
43
+ this.config = injectFlowbiteBaseButtonConfig();
116
44
  /**
117
- * Set the button fill
118
- *
119
- * @default solid
45
+ * @see {@link injectFlowbiteBaseButtonConfig}
120
46
  */
121
- this.fill = model(inject(FLOWBITE_BUTTON_FILL_DEFAULT_VALUE));
47
+ this.color = input(this.config.color);
122
48
  /**
123
- * Set if the button is disabled
124
- *
125
- * @default false
49
+ * @see {@link injectFlowbiteBaseButtonConfig}
126
50
  */
127
- this.isDisabled = model(inject(FLOWBITE_BUTTON_IS_DISABLED_DEFAULT_VALUE));
51
+ this.size = input(this.config.size);
128
52
  /**
129
- * Set the button gradient monochrome
130
- *
131
- * @default undefined
53
+ * @see {@link injectFlowbiteBaseButtonConfig}
132
54
  */
133
- this.gradientMonochrome = model(inject(FLOWBITE_BUTTON_GRADIENT_MONOCHROME_DEFAULT_VALUE));
55
+ this.pill = input(this.config.pill, { transform: booleanAttribute });
134
56
  /**
135
- * Set the button gradient duotone
136
- *
137
- * @default undefined
57
+ * @see {@link injectFlowbiteBaseButtonConfig}
138
58
  */
139
- this.gradientDuoTone = model(inject(FLOWBITE_BUTTON_GRADIENT_DUOTONE_DEFAULT_VALUE));
59
+ this.outline = input(this.config.outline, { transform: booleanAttribute });
140
60
  /**
141
- * Set the custom style for this button
61
+ * @internal
142
62
  */
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
- });
63
+ this.state = flowbiteBaseButtonState(this);
158
64
  }
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" />
167
- }
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
71
  standalone: true,
178
- imports: [NgTemplateOutlet],
179
- selector: 'flowbite-button',
180
- template: `
181
- @if (gradientDuoTone() && fill() === 'outline') {
182
- <span [class]="contentClasses().spanClass">
183
- <ng-content *ngTemplateOutlet="content" />
184
- </span>
185
- } @else {
186
- <ng-content *ngTemplateOutlet="content" />
187
- }
188
-
189
- <ng-template #content>
190
- <ng-content />
191
- </ng-template>
192
- `,
193
- host: {
194
- '[attr.type]': 'button',
195
- },
196
- encapsulation: ViewEncapsulation.None,
197
- changeDetection: ChangeDetectionStrategy.OnPush,
72
+ providers: [provideFlowbiteBaseButtonState()],
198
73
  }]
199
74
  }] });
200
75
 
201
- /**
202
- * Default theme for `ButtonComponent`
203
- */
204
- const buttonTheme = createTheme({
205
- root: {
206
- base: {
207
- default: 'cursor-pointer group flex h-min w-fit items-center justify-center p-0.5 text-center font-medium focus:z-10',
208
- 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',
209
92
  },
210
93
  color: {
211
- dark: {
212
- 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',
213
- 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',
214
- },
215
- primary: {
216
- 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',
217
- 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',
218
- },
219
- red: {
220
- 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',
221
- 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',
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',
222
97
  },
223
- blue: {
224
- 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',
225
- 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',
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',
226
101
  },
227
- light: {
228
- 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',
229
- 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',
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',
230
105
  },
231
- purple: {
232
- 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',
233
- 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',
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',
234
109
  },
235
- green: {
236
- 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',
237
- 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',
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',
238
113
  },
239
- yellow: {
240
- 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',
241
- 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',
242
117
  },
243
118
  },
244
- isDisabled: {
245
- enabled: 'cursor-not-allowed opacity-50',
246
- disabled: '',
247
- },
248
- gradientMonochrome: {
249
- 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',
250
- 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',
251
- 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',
252
- 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',
253
- 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',
254
- 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',
255
- 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',
256
- 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',
257
- },
258
- gradientDuoTone: {
259
- purpleToBlue: {
260
- 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',
261
- 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',
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',
262
123
  },
263
- cyanToBlue: {
264
- 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',
265
- 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',
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',
266
127
  },
267
- greenToBlue: {
268
- 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',
269
- 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',
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',
270
131
  },
271
- purpleToPink: {
272
- 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',
273
- 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',
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',
274
135
  },
275
- pinkToOrange: {
276
- 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',
277
- 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',
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',
278
139
  },
279
- tealToLime: {
280
- 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',
281
- 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',
282
- },
283
- redToYellow: {
284
- 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',
285
- 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',
286
143
  },
287
144
  },
288
- size: {
289
- xs: 'text-xs py-2 px-3',
290
- sm: 'text-sm py-2 px-3',
291
- md: 'text-sm px-5 py-2.5',
292
- lg: 'text-base py-3 px-5',
293
- xl: 'text-base px-6 py-3.5',
294
- },
295
- isPill: {
296
- enabled: 'rounded-full',
297
- disabled: 'rounded-lg',
298
- },
299
- },
300
- span: {
301
- 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',
302
- isPill: {
303
- enabled: 'rounded-full',
304
- disabled: 'rounded-md',
305
- },
306
- size: {
307
- xs: 'text-xs py-2 px-3',
308
- sm: 'text-sm py-2 px-3',
309
- md: 'text-sm px-5 py-2.5',
310
- lg: 'text-base py-3 px-5',
311
- xl: 'text-base px-6 py-3.5',
312
- },
313
145
  },
314
146
  });
315
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
+
316
235
  /**
317
236
  * Generated bundle index. Do not edit.
318
237
  */
319
238
 
320
- 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 };
321
240
  //# sourceMappingURL=flowbite-angular-button.mjs.map