@updevs/components 1.0.0-alpha.1 → 1.0.0-alpha.3

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 (310) hide show
  1. package/README.md +5 -22
  2. package/assets/styles/_bootstrap-components.scss +38 -0
  3. package/assets/styles/_bootstrap-config.scss +7 -0
  4. package/assets/styles/_bootstrap-override.scss +78 -0
  5. package/assets/styles/_config.scss +9 -0
  6. package/assets/styles/_core.scss +71 -0
  7. package/assets/styles/_mixins.scss +2 -0
  8. package/assets/styles/_updevs.scss +9 -0
  9. package/assets/styles/_utilities.scss +98 -0
  10. package/assets/styles/_variables-dark.scss +17 -0
  11. package/assets/styles/_variables.scss +934 -0
  12. package/assets/styles/fonts/_webfonts.scss +15 -0
  13. package/assets/styles/layout/_animations.scss +62 -0
  14. package/assets/styles/layout/_core.scss +61 -0
  15. package/assets/styles/layout/_dark.scss +72 -0
  16. package/assets/styles/layout/_footer.scss +12 -0
  17. package/assets/styles/layout/_navbar.scss +380 -0
  18. package/assets/styles/layout/_page.scss +169 -0
  19. package/assets/styles/layout/_root.scss +72 -0
  20. package/assets/styles/mixins/_functions.scss +43 -0
  21. package/assets/styles/mixins/_mixins.scss +68 -0
  22. package/assets/styles/ui/_accordion.scss +24 -0
  23. package/assets/styles/ui/_alerts.scss +59 -0
  24. package/assets/styles/ui/_avatars.scss +118 -0
  25. package/assets/styles/ui/_badges.scss +79 -0
  26. package/assets/styles/ui/_breadcrumbs.scss +50 -0
  27. package/assets/styles/ui/_button-group.scss +16 -0
  28. package/assets/styles/ui/_buttons.scss +265 -0
  29. package/assets/styles/ui/_calendars.scss +104 -0
  30. package/assets/styles/ui/_cards.scss +586 -0
  31. package/assets/styles/ui/_carousel.scss +68 -0
  32. package/assets/styles/ui/_charts.scss +61 -0
  33. package/assets/styles/ui/_chips.scss +0 -0
  34. package/assets/styles/ui/_close.scss +7 -0
  35. package/assets/styles/ui/_datagrid.scss +17 -0
  36. package/assets/styles/ui/_dropdowns.scss +117 -0
  37. package/assets/styles/ui/_empty.scss +65 -0
  38. package/assets/styles/ui/_flags.scss +31 -0
  39. package/assets/styles/ui/_forms.scss +224 -0
  40. package/assets/styles/ui/_grid.scss +115 -0
  41. package/assets/styles/ui/_icons.scss +72 -0
  42. package/assets/styles/ui/_images.scss +15 -0
  43. package/assets/styles/ui/_legend.scss +12 -0
  44. package/assets/styles/ui/_lists.scss +127 -0
  45. package/assets/styles/ui/_loaders.scss +72 -0
  46. package/assets/styles/ui/_login.scss +3 -0
  47. package/assets/styles/ui/_markdown.scss +42 -0
  48. package/assets/styles/ui/_modals.scss +67 -0
  49. package/assets/styles/ui/_nav.scss +92 -0
  50. package/assets/styles/ui/_offcanvas.scss +17 -0
  51. package/assets/styles/ui/_pagination.scss +56 -0
  52. package/assets/styles/ui/_payments.scss +28 -0
  53. package/assets/styles/ui/_placeholder.scss +9 -0
  54. package/assets/styles/ui/_popovers.scss +2 -0
  55. package/assets/styles/ui/_progress.scss +107 -0
  56. package/assets/styles/ui/_ribbons.scss +156 -0
  57. package/assets/styles/ui/_stars.scss +13 -0
  58. package/assets/styles/ui/_status.scss +163 -0
  59. package/assets/styles/ui/_steps.scss +152 -0
  60. package/assets/styles/ui/_switch-icon.scss +211 -0
  61. package/assets/styles/ui/_tables.scss +150 -0
  62. package/assets/styles/ui/_tags.scss +57 -0
  63. package/assets/styles/ui/_timeline.scss +61 -0
  64. package/assets/styles/ui/_toasts.scss +19 -0
  65. package/assets/styles/ui/_toolbar.scss +10 -0
  66. package/assets/styles/ui/_tracking.scss +29 -0
  67. package/assets/styles/ui/_type.scss +169 -0
  68. package/assets/styles/ui/forms/_form-check.scss +91 -0
  69. package/assets/styles/ui/forms/_form-colorinput.scss +54 -0
  70. package/assets/styles/ui/forms/_form-custom.scss +28 -0
  71. package/assets/styles/ui/forms/_form-icon.scss +35 -0
  72. package/assets/styles/ui/forms/_form-imagecheck.scss +104 -0
  73. package/assets/styles/ui/forms/_form-selectgroup.scss +153 -0
  74. package/assets/styles/ui/forms/_validation.scss +13 -0
  75. package/assets/styles/ui/typo/_hr.scss +74 -0
  76. package/assets/styles/utils/_background.scss +15 -0
  77. package/assets/styles/utils/_colors.scss +40 -0
  78. package/assets/styles/utils/_opacity.scss +7 -0
  79. package/assets/styles/utils/_scroll.scss +47 -0
  80. package/assets/styles/utils/_shadow.scss +17 -0
  81. package/assets/styles/utils/_sizing.scss +10 -0
  82. package/assets/styles/utils/_text.scss +15 -0
  83. package/button/ng-package.json +7 -0
  84. package/button/src/button.component.html +8 -0
  85. package/button/src/button.component.scss +5 -0
  86. package/button/src/button.component.spec.ts +23 -0
  87. package/button/src/button.component.ts +154 -0
  88. package/button/src/index.ts +1 -0
  89. package/button/src/public-api.ts +2 -0
  90. package/button/src/upd-button.module.ts +17 -0
  91. package/card/ng-package.json +7 -0
  92. package/card/src/card.component.html +105 -0
  93. package/card/src/card.component.scss +47 -0
  94. package/card/src/card.component.spec.ts +23 -0
  95. package/card/src/card.component.ts +112 -0
  96. package/card/src/directives/card-actions.directive.spec.ts +8 -0
  97. package/card/src/directives/card-actions.directive.ts +11 -0
  98. package/card/src/directives/card-footer.directive.spec.ts +8 -0
  99. package/card/src/directives/card-footer.directive.ts +11 -0
  100. package/card/src/directives/card-header.directive.spec.ts +8 -0
  101. package/card/src/directives/card-header.directive.ts +11 -0
  102. package/card/src/directives/card-image.directive.spec.ts +8 -0
  103. package/card/src/directives/card-image.directive.ts +11 -0
  104. package/card/src/directives/public-api.ts +4 -0
  105. package/card/src/index.ts +1 -0
  106. package/card/src/public-api.ts +3 -0
  107. package/card/src/types/card-state.type.ts +1 -0
  108. package/card/src/types/card-style.type.ts +1 -0
  109. package/card/src/types/hover-effect.type.ts +1 -0
  110. package/card/src/types/public-api.ts +5 -0
  111. package/card/src/types/ribbon-style.type.ts +1 -0
  112. package/card/src/types/status-position.type.ts +1 -0
  113. package/card/src/upd-card.module.ts +32 -0
  114. package/dropdown/ng-package.json +7 -0
  115. package/dropdown/src/dropdown.component.html +32 -0
  116. package/dropdown/src/dropdown.component.scss +19 -0
  117. package/dropdown/src/dropdown.component.spec.ts +23 -0
  118. package/dropdown/src/dropdown.component.ts +182 -0
  119. package/dropdown/src/index.ts +1 -0
  120. package/dropdown/src/models/dropdown-item.ts +22 -0
  121. package/dropdown/src/models/dropdown-item.type.ts +1 -0
  122. package/dropdown/src/models/public-api.ts +2 -0
  123. package/dropdown/src/public-api.ts +3 -0
  124. package/dropdown/src/upd-dropdown.module.ts +25 -0
  125. package/form/ng-package.json +7 -0
  126. package/form/src/form.module.ts +10 -0
  127. package/form/src/index.ts +1 -0
  128. package/form/src/public-api.ts +1 -0
  129. package/form-controls/checkbox/ng-package.json +7 -0
  130. package/form-controls/checkbox/src/checkbox.component.html +7 -0
  131. package/form-controls/checkbox/src/checkbox.component.scss +0 -0
  132. package/form-controls/checkbox/src/checkbox.component.spec.ts +23 -0
  133. package/form-controls/checkbox/src/checkbox.component.ts +48 -0
  134. package/form-controls/checkbox/src/index.ts +1 -0
  135. package/form-controls/checkbox/src/public-api.ts +3 -0
  136. package/form-controls/checkbox/src/upd-checkbox.module.ts +19 -0
  137. package/form-controls/input/ng-package.json +7 -0
  138. package/form-controls/input/src/directives/input-append.directive.spec.ts +8 -0
  139. package/form-controls/input/src/directives/input-append.directive.ts +11 -0
  140. package/form-controls/input/src/directives/input-prepend.directive.spec.ts +8 -0
  141. package/form-controls/input/src/directives/input-prepend.directive.ts +11 -0
  142. package/form-controls/input/src/directives/public-api.ts +2 -0
  143. package/form-controls/input/src/index.ts +1 -0
  144. package/form-controls/input/src/input.component.html +82 -0
  145. package/form-controls/input/src/input.component.scss +13 -0
  146. package/form-controls/input/src/input.component.spec.ts +23 -0
  147. package/form-controls/input/src/input.component.ts +124 -0
  148. package/form-controls/input/src/public-api.ts +4 -0
  149. package/form-controls/input/src/types/input.type.ts +1 -0
  150. package/form-controls/input/src/types/loader-position.type.ts +1 -0
  151. package/form-controls/input/src/types/public-api.ts +2 -0
  152. package/form-controls/input/src/upd-input.module.ts +29 -0
  153. package/form-controls/radio/ng-package.json +7 -0
  154. package/form-controls/radio/src/index.ts +1 -0
  155. package/form-controls/radio/src/public-api.ts +2 -0
  156. package/form-controls/radio/src/radio.component.html +7 -0
  157. package/form-controls/radio/src/radio.component.scss +0 -0
  158. package/form-controls/radio/src/radio.component.spec.ts +23 -0
  159. package/form-controls/radio/src/radio.component.ts +47 -0
  160. package/form-controls/radio/src/upd-radio.module.ts +17 -0
  161. package/form-controls/select/ng-package.json +7 -0
  162. package/form-controls/select/src/components/multiple/select-multiple.component.html +41 -0
  163. package/form-controls/select/src/components/multiple/select-multiple.component.scss +6 -0
  164. package/form-controls/select/src/components/multiple/select-multiple.component.spec.ts +21 -0
  165. package/form-controls/select/src/components/multiple/select-multiple.component.ts +69 -0
  166. package/form-controls/select/src/components/shared.scss +40 -0
  167. package/form-controls/select/src/components/single/select.component.html +53 -0
  168. package/form-controls/select/src/components/single/select.component.scss +3 -0
  169. package/form-controls/select/src/components/single/select.component.spec.ts +23 -0
  170. package/form-controls/select/src/components/single/select.component.ts +58 -0
  171. package/form-controls/select/src/index.ts +1 -0
  172. package/form-controls/select/src/models/abstractions/base-select.component.ts +259 -0
  173. package/form-controls/select/src/models/public-api.ts +1 -0
  174. package/form-controls/select/src/models/select-item.ts +26 -0
  175. package/form-controls/select/src/public-api.ts +4 -0
  176. package/form-controls/select/src/upd-select.module.ts +32 -0
  177. package/form-controls/textarea/ng-package.json +7 -0
  178. package/form-controls/textarea/src/index.ts +1 -0
  179. package/form-controls/textarea/src/public-api.ts +2 -0
  180. package/form-controls/textarea/src/textarea.component.html +8 -0
  181. package/form-controls/textarea/src/textarea.component.scss +0 -0
  182. package/form-controls/textarea/src/textarea.component.spec.ts +23 -0
  183. package/form-controls/textarea/src/textarea.component.ts +47 -0
  184. package/form-controls/textarea/src/upd-textarea.module.ts +17 -0
  185. package/form-controls/time-picker/ng-package.json +7 -0
  186. package/form-controls/time-picker/src/assets/i18n/en.json +5 -0
  187. package/form-controls/time-picker/src/assets/i18n/pt.json +5 -0
  188. package/form-controls/time-picker/src/index.ts +1 -0
  189. package/form-controls/time-picker/src/public-api.ts +3 -0
  190. package/form-controls/time-picker/src/time-picker.component.html +17 -0
  191. package/form-controls/time-picker/src/time-picker.component.scss +10 -0
  192. package/form-controls/time-picker/src/time-picker.component.spec.ts +21 -0
  193. package/form-controls/time-picker/src/time-picker.component.ts +110 -0
  194. package/form-controls/time-picker/src/time-selector/time-selector.component.html +44 -0
  195. package/form-controls/time-picker/src/time-selector/time-selector.component.scss +47 -0
  196. package/form-controls/time-picker/src/time-selector/time-selector.component.spec.ts +21 -0
  197. package/form-controls/time-picker/src/time-selector/time-selector.component.ts +107 -0
  198. package/form-controls/time-picker/src/upd-time-picker.module.ts +39 -0
  199. package/layout/ng-package.json +7 -0
  200. package/layout/src/abstractions/base-page.component.ts +21 -0
  201. package/layout/src/abstractions/public-api.ts +1 -0
  202. package/layout/src/assets/i18n/en.json +5 -0
  203. package/layout/src/assets/i18n/pt.json +5 -0
  204. package/layout/src/index.ts +1 -0
  205. package/layout/src/layouts/blank-layout/blank-layout.component.html +1 -0
  206. package/layout/src/layouts/blank-layout/blank-layout.component.scss +0 -0
  207. package/layout/src/layouts/blank-layout/blank-layout.component.spec.ts +23 -0
  208. package/layout/src/layouts/blank-layout/blank-layout.component.ts +10 -0
  209. package/layout/src/layouts/blank-layout/blank-layout.module.ts +17 -0
  210. package/layout/src/layouts/public-api.ts +4 -0
  211. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.html +14 -0
  212. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.scss +0 -0
  213. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.spec.ts +23 -0
  214. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.ts +31 -0
  215. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.ts +52 -0
  216. package/layout/src/models/public-api.ts +1 -0
  217. package/layout/src/models/upd-layout-config.model.ts +71 -0
  218. package/layout/src/models/upd-layout.config.ts +37 -0
  219. package/layout/src/pages/auth-flow/auth-flow-routing.module.ts +21 -0
  220. package/layout/src/pages/auth-flow/auth-flow.module.ts +29 -0
  221. package/layout/src/pages/auth-flow/logged-out/logged-out.component.html +1 -0
  222. package/layout/src/pages/auth-flow/logged-out/logged-out.component.scss +0 -0
  223. package/layout/src/pages/auth-flow/logged-out/logged-out.component.spec.ts +23 -0
  224. package/layout/src/pages/auth-flow/logged-out/logged-out.component.ts +10 -0
  225. package/layout/src/pages/auth-flow/login/login.component.html +96 -0
  226. package/layout/src/pages/auth-flow/login/login.component.scss +0 -0
  227. package/layout/src/pages/auth-flow/login/login.component.spec.ts +23 -0
  228. package/layout/src/pages/auth-flow/login/login.component.ts +26 -0
  229. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.html +1 -0
  230. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.scss +0 -0
  231. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.spec.ts +23 -0
  232. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.ts +10 -0
  233. package/layout/src/pages/auth-flow/public-api.ts +5 -0
  234. package/layout/src/pages/public-api.ts +1 -0
  235. package/layout/src/partials/footer/footer-copyright.directive.spec.ts +8 -0
  236. package/layout/src/partials/footer/footer-copyright.directive.ts +9 -0
  237. package/layout/src/partials/footer/footer.component.html +30 -0
  238. package/layout/src/partials/footer/footer.component.scss +0 -0
  239. package/{src/lib/components.component.spec.ts → layout/src/partials/footer/footer.component.spec.ts} +6 -6
  240. package/layout/src/partials/footer/footer.component.ts +73 -0
  241. package/layout/src/partials/footer/public-api.ts +2 -0
  242. package/layout/src/partials/header/header-style.type.ts +1 -0
  243. package/layout/src/partials/header/header.component.html +163 -0
  244. package/layout/src/partials/header/header.component.scss +0 -0
  245. package/layout/src/partials/header/header.component.spec.ts +23 -0
  246. package/layout/src/partials/header/header.component.ts +86 -0
  247. package/layout/src/partials/header/public-api.ts +2 -0
  248. package/layout/src/partials/page-header/page-header.component.html +19 -0
  249. package/layout/src/partials/page-header/page-header.component.scss +0 -0
  250. package/layout/src/partials/page-header/page-header.component.spec.ts +23 -0
  251. package/layout/src/partials/page-header/page-header.component.ts +11 -0
  252. package/layout/src/partials/page-header/public-api.ts +1 -0
  253. package/layout/src/partials/public-api.ts +4 -0
  254. package/layout/src/partials/sidebar/public-api.ts +1 -0
  255. package/layout/src/partials/sidebar/sidebar.component.html +62 -0
  256. package/layout/src/partials/sidebar/sidebar.component.scss +0 -0
  257. package/layout/src/partials/sidebar/sidebar.component.spec.ts +23 -0
  258. package/layout/src/partials/sidebar/sidebar.component.ts +161 -0
  259. package/layout/src/public-api.ts +7 -0
  260. package/layout/src/services/public-api.ts +1 -0
  261. package/{src/lib/components.service.spec.ts → layout/src/services/upd-layout-config.service.spec.ts} +4 -4
  262. package/layout/src/services/upd-layout-config.service.ts +20 -0
  263. package/layout/src/tools/layout.constants.ts +18 -0
  264. package/layout/src/upd-layout.module.ts +34 -0
  265. package/link/ng-package.json +7 -0
  266. package/link/src/index.ts +1 -0
  267. package/link/src/link.component.html +3 -0
  268. package/link/src/link.component.scss +3 -0
  269. package/link/src/link.component.spec.ts +23 -0
  270. package/link/src/link.component.ts +48 -0
  271. package/link/src/public-api.ts +3 -0
  272. package/link/src/target.type.ts +1 -0
  273. package/link/src/upd-link.module.ts +17 -0
  274. package/list/ng-package.json +7 -0
  275. package/list/src/assets/i18n/en.json +5 -0
  276. package/list/src/assets/i18n/pt.json +5 -0
  277. package/list/src/index.ts +1 -0
  278. package/list/src/list.component.html +58 -0
  279. package/list/src/list.component.scss +21 -0
  280. package/list/src/list.component.spec.ts +23 -0
  281. package/list/src/list.component.ts +147 -0
  282. package/list/src/models/badge-position.type.ts +1 -0
  283. package/list/src/models/list-item.model.ts +35 -0
  284. package/list/src/models/list-item.ts +21 -0
  285. package/list/src/models/public-api.ts +2 -0
  286. package/list/src/public-api.ts +3 -0
  287. package/list/src/upd-list.module.ts +30 -0
  288. package/ng-package.json +9 -6
  289. package/package.json +8 -5
  290. package/popover/ng-package.json +7 -0
  291. package/popover/src/index.ts +1 -0
  292. package/popover/src/popover.component.html +20 -0
  293. package/popover/src/popover.component.scss +8 -0
  294. package/popover/src/popover.component.spec.ts +23 -0
  295. package/popover/src/popover.component.ts +53 -0
  296. package/popover/src/popover.directive.spec.ts +8 -0
  297. package/popover/src/popover.directive.ts +128 -0
  298. package/popover/src/public-api.ts +3 -0
  299. package/popover/src/upd-popover.module.ts +20 -0
  300. package/src/lib/index.ts +1 -0
  301. package/src/lib/public-api.ts +2 -0
  302. package/src/lib/types/component-size.type.ts +1 -0
  303. package/src/lib/types/public-api.ts +2 -0
  304. package/src/lib/types/validation-status.type.ts +1 -0
  305. package/src/lib/upd-components.module.ts +6 -0
  306. package/src/public-api.ts +1 -7
  307. package/tsconfig.lib.json +11 -11
  308. package/src/lib/components.component.ts +0 -14
  309. package/src/lib/components.module.ts +0 -17
  310. package/src/lib/components.service.ts +0 -9
@@ -0,0 +1,169 @@
1
+ .page {
2
+ display: flex;
3
+ flex-direction: column;
4
+ position: relative;
5
+ min-height: 100%;
6
+ }
7
+
8
+ .page-center {
9
+ .container {
10
+ margin-top: auto;
11
+ margin-bottom: auto;
12
+ }
13
+ }
14
+
15
+ .page-wrapper {
16
+ flex: 1;
17
+ display: flex;
18
+ flex-direction: column;
19
+
20
+ @media print {
21
+ margin: 0 !important;
22
+ }
23
+ }
24
+
25
+ .page-wrapper-full {
26
+ .page-body:first-child {
27
+ margin: 0;
28
+ border-top: 0;
29
+ }
30
+ }
31
+
32
+ // Content body
33
+ .page-body {
34
+ margin-top: var(--#{$prefix}page-padding-y);
35
+ margin-bottom: var(--#{$prefix}page-padding-y);
36
+ }
37
+
38
+ .page-body-card {
39
+ background: var(--#{$prefix}bg-surface);
40
+ border-top: var(--#{$prefix}border-width) var(--#{$prefix}border-style) $card-border-color;
41
+ padding: var(--#{$prefix}page-padding) 0;
42
+ margin-bottom: 0;
43
+ flex: 1;
44
+
45
+ .page-body ~ & {
46
+ margin-top: 0;
47
+ }
48
+ }
49
+
50
+ .page-cover {
51
+ background: no-repeat center/cover;
52
+ min-height: 9rem;
53
+
54
+ @include media-breakpoint-up(md) {
55
+ min-height: 12rem;
56
+ }
57
+
58
+ @include media-breakpoint-up(lg) {
59
+ min-height: 15rem;
60
+ }
61
+ }
62
+
63
+ .page-cover-overlay {
64
+ position: relative;
65
+
66
+ &:after {
67
+ content: "";
68
+ position: absolute;
69
+ top: 0;
70
+ left: 0;
71
+ right: 0;
72
+ bottom: 0;
73
+ background-image: $overlay-gradient;
74
+ }
75
+ }
76
+
77
+
78
+ .page-header {
79
+ display: flex;
80
+ flex-wrap: wrap;
81
+ min-height: 2.25rem;
82
+ flex-direction: column;
83
+ justify-content: center;
84
+
85
+ .page-wrapper & {
86
+ margin: var(--#{$prefix}page-padding-y) 0 0;
87
+ }
88
+ }
89
+
90
+ .page-header-border {
91
+ border-bottom: var(--#{$prefix}border-width) var(--#{$prefix}border-style) var(--#{$prefix}border-color);
92
+ padding: var(--#{$prefix}page-padding-y) 0;
93
+ margin: 0 !important;
94
+ background-color: var(--#{$prefix}bg-surface);
95
+ }
96
+
97
+ .page-pretitle {
98
+ @include subheader;
99
+ }
100
+
101
+ .page-title {
102
+ margin: 0;
103
+ font-size: $page-title-font-size;
104
+ line-height: $page-title-line-height;
105
+ font-weight: $page-title-font-weight;
106
+ color: inherit;
107
+ display: flex;
108
+ align-items: center;
109
+
110
+ svg {
111
+ width: 1.5rem;
112
+ height: 1.5rem;
113
+ margin-right: .25rem;
114
+ }
115
+ }
116
+
117
+ .page-title-lg {
118
+ font-size: $h1-font-size;
119
+ line-height: $h1-line-height;
120
+ }
121
+
122
+ .page-subtitle {
123
+ margin-top: .25rem;
124
+ color: var(--#{$prefix}secondary);
125
+ }
126
+
127
+ //
128
+ // Page cover
129
+ //
130
+ .page-cover {
131
+ --#{$prefix}page-cover-blur: 20px;
132
+ --#{$prefix}page-cover-padding: 1rem;
133
+ min-height: 6rem;
134
+ padding: var(--#{$prefix}page-cover-padding) 0;
135
+ position: relative;
136
+ overflow: hidden;
137
+ }
138
+
139
+ .page-cover-img {
140
+ position: absolute;
141
+ top: calc(-2 * var(--#{$prefix}page-cover-blur, 0));
142
+ left: calc(-2 * var(--#{$prefix}page-cover-blur, 0));
143
+ right: calc(-2 * var(--#{$prefix}page-cover-blur, 0));
144
+ bottom: calc(-2 * var(--#{$prefix}page-cover-blur, 0));
145
+ pointer-events: none;
146
+ filter: blur(var(--#{$prefix}page-cover-blur));
147
+ object-fit: cover;
148
+ background-size: cover;
149
+ background-position: center;
150
+ z-index: -1;
151
+ }
152
+
153
+ //
154
+ // Page tabs
155
+ //
156
+ .page-tabs {
157
+ margin-top: .5rem;
158
+ position: relative;
159
+ }
160
+
161
+ .page-header-tabs {
162
+ .nav-bordered {
163
+ border: 0;
164
+ }
165
+
166
+ + .page-body-card {
167
+ margin-top: 0;
168
+ }
169
+ }
@@ -0,0 +1,72 @@
1
+ :root,
2
+ :host {
3
+ font-size: 16px;
4
+ height: 100%;
5
+ }
6
+
7
+ :root,
8
+ :host,
9
+ [data-bs-theme="light"] {
10
+ @each $name, $color in map-merge($theme-colors, $gray-colors) {
11
+ --#{$prefix}#{$name}: #{$color};
12
+ --#{$prefix}#{$name}-rgb: #{to-rgb($color)};
13
+ --#{$prefix}#{$name}-fg: #{if(contrast-ratio($color) > $min-contrast-ratio, var(--#{$prefix}light), var(--#{$prefix}dark))};
14
+ --#{$prefix}#{$name}-darken: #{theme-color-darker($color)};
15
+ --#{$prefix}#{$name}-lt: #{theme-color-lighter($color)};
16
+ --#{$prefix}#{$name}-lt-rgb: #{to-rgb(theme-color-lighter($color))};
17
+ }
18
+
19
+ @each $name, $value in $spacers {
20
+ --#{$prefix}spacer-#{$name}: #{$value};
21
+ }
22
+ --#{$prefix}spacer: #{$spacer};
23
+
24
+ --#{$prefix}bg-surface: #{$bg-surface};
25
+ --#{$prefix}bg-surface-secondary: #{$bg-surface-secondary};
26
+ --#{$prefix}bg-surface-tertiary: #{$bg-surface-tertiary};
27
+ --#{$prefix}bg-surface-dark: #{$bg-surface-dark};
28
+ --#{$prefix}bg-forms: var(--#{$prefix}bg-surface);
29
+
30
+ --#{$prefix}border-color: #{$border-color};
31
+ --#{$prefix}border-color-translucent: #{$border-color-translucent};
32
+ --#{$prefix}border-dark-color: #{$border-dark-color};
33
+ --#{$prefix}border-dark-color-translucent: #{$border-dark-color-translucent};
34
+ --#{$prefix}border-active-color: #{$border-active-color};
35
+
36
+ --#{$prefix}icon-color: #{$icon-color};
37
+
38
+ --#{$prefix}active-bg: #{$active-bg};
39
+
40
+ --#{$prefix}disabled-bg: #{$disabled-bg};
41
+ --#{$prefix}disabled-color: #{$disabled-color};
42
+
43
+ --#{$prefix}code-color: #{$code-color};
44
+ --#{$prefix}code-bg: #{$code-bg};
45
+
46
+ --#{$prefix}dark-mode-border-color: #{$border-color-dark};
47
+ --#{$prefix}dark-mode-border-color-translucent: #{$border-color-translucent-dark};
48
+ --#{$prefix}dark-mode-border-color-active: #{$border-color-active-dark};
49
+ --#{$prefix}dark-mode-border-dark-color: #{$border-dark-color-dark};
50
+
51
+ --#{$prefix}page-padding: #{$page-padding};
52
+ --#{$prefix}page-padding-y: #{$page-padding-y};
53
+ @include media-breakpoint-down($cards-grid-breakpoint) {
54
+ --#{$prefix}page-padding: #{$page-padding-sm};
55
+ }
56
+
57
+ @each $name, $value in $font-weights {
58
+ --#{$prefix}font-weight-#{$name}: #{$value};
59
+ }
60
+
61
+ @each $name, $value in $font-sizes {
62
+ --#{$prefix}font-size-h#{$name}: #{$value};
63
+ }
64
+
65
+ @each $name, $value in $line-heights {
66
+ --#{$prefix}line-height-#{$name}: #{$value};
67
+ }
68
+
69
+ @each $name, $value in $box-shadows {
70
+ --#{$prefix}#{$name}: #{$value};
71
+ }
72
+ }
@@ -0,0 +1,43 @@
1
+ @function theme-color-lighter($color, $background: #fff) {
2
+ @return mix($color, $background, 10%);
3
+ }
4
+
5
+ @function theme-color-darker($color) {
6
+ @return shade-color($color, 10%);
7
+ }
8
+
9
+ @function str-replace($string, $search, $replace: "") {
10
+ $index: str-index($string, $search);
11
+
12
+ @if $index {
13
+ @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
14
+ }
15
+
16
+ @return $string;
17
+ }
18
+
19
+ @mixin media-breakpoint-down-than($name, $breakpoints: $grid-breakpoints) {
20
+ $prev: breakpoint-prev($name);
21
+
22
+ @if $prev == null {
23
+ @content;
24
+ } @else {
25
+ $max: breakpoint-max($prev, $breakpoints);
26
+
27
+ @if $max {
28
+ @media (max-width: $max) {
29
+ @content;
30
+ }
31
+ } @else {
32
+ @content;
33
+ }
34
+ }
35
+ }
36
+
37
+ @function breakpoint-prev($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {
38
+ $n: index($breakpoint-names, $name);
39
+ @if not $n {
40
+ @error "breakpoint `#{$name}` not found in `#{$breakpoints}`";
41
+ }
42
+ @return if($n > 1, nth($breakpoint-names, $n - 1), null);
43
+ }
@@ -0,0 +1,68 @@
1
+ @mixin subheader($include-color: true, $include-line-height: true) {
2
+ font-size: $h6-font-size;
3
+ font-weight: var(--#{$prefix}font-weight-bold);
4
+ text-transform: uppercase;
5
+ letter-spacing: .04em;
6
+
7
+ @if $include-line-height {
8
+ line-height: $h6-line-height;
9
+ }
10
+
11
+ @if ($include-color) {
12
+ color: var(--#{$prefix}secondary);
13
+ }
14
+ }
15
+
16
+ @mixin scrollbar($color: var(--#{$prefix}body-color-rgb)) {
17
+ #{if(&, "&", "*")} {
18
+ scrollbar-color: rgba(var(--#{$prefix}scrollbar-color, var(--#{$prefix}body-color-rgb)), .16) transparent;
19
+ }
20
+
21
+ #{if(&, "&", "*")}::-webkit-scrollbar {
22
+ width: 1rem;
23
+ height: 1rem;
24
+ @include transition(background $transition-time);
25
+ }
26
+
27
+ #{if(&, "&", "*")}::-webkit-scrollbar-thumb {
28
+ border-radius: 1rem;
29
+ border: 5px solid transparent;
30
+ box-shadow: inset 0 0 0 1rem rgba(var(--#{$prefix}scrollbar-color, var(--#{$prefix}body-color-rgb)), .16);
31
+ }
32
+
33
+ #{if(&, "&", "*")}::-webkit-scrollbar-track {
34
+ background: transparent;
35
+ }
36
+
37
+ #{if(&, "&", "*")}:hover::-webkit-scrollbar-thumb {
38
+ box-shadow: inset 0 0 0 1rem rgba(var(--#{$prefix}scrollbar-color, var(--#{$prefix}body-color-rgb)), .32);
39
+ }
40
+
41
+ #{if(&, "&", "*")}::-webkit-scrollbar-corner {
42
+ background: transparent;
43
+ }
44
+ }
45
+
46
+
47
+ @mixin autodark-image {
48
+ filter: brightness(0) invert(1);
49
+ }
50
+
51
+ //
52
+ // Elements list
53
+ //
54
+ @mixin elements-list($gap: .5rem) {
55
+ --#{$prefix}list-gap: #{$gap};
56
+ display: flex;
57
+ flex-wrap: wrap;
58
+ gap: var(--#{$prefix}list-gap);
59
+ }
60
+
61
+ @mixin focus-ring($show-border: false) {
62
+ outline: 0;
63
+ box-shadow: $focus-ring-box-shadow;
64
+
65
+ @if ($show-border) {
66
+ border-color: $focus-ring-border-color;
67
+ }
68
+ }
@@ -0,0 +1,24 @@
1
+ .accordion {
2
+ --#{$prefix}accordion-color: #{$accordion-color};
3
+ }
4
+
5
+ .accordion-button {
6
+ &:focus:not(:focus-visible) {
7
+ outline: none;
8
+ box-shadow: none;
9
+ }
10
+
11
+ &:after {
12
+ opacity: $text-secondary-opacity;
13
+ }
14
+
15
+ &:not(.collapsed) {
16
+ font-weight: var(--#{$prefix}font-weight-bold);
17
+ border-bottom-color: transparent;
18
+ box-shadow: none;
19
+
20
+ &:after {
21
+ opacity: 1;
22
+ }
23
+ }
24
+ }
@@ -0,0 +1,59 @@
1
+ .alert {
2
+ --#{$prefix}alert-color: #{var(--#{$prefix}secondary)};
3
+ --upd-alert-bg: #{var(--#{$prefix}surface)};
4
+ border: $alert-border-width var(--#{$prefix}border-style) $alert-border-color;
5
+ border-left: .25rem var(--#{$prefix}border-style) var(--#{$prefix}alert-color);
6
+ box-shadow: $alert-shadow;
7
+
8
+ > :last-child {
9
+ margin-bottom: 0;
10
+ }
11
+ }
12
+
13
+ .alert-important {
14
+ border-color: transparent;
15
+ background: var(--#{$prefix}alert-color);
16
+ color: #fff;
17
+
18
+ .alert-icon,
19
+ .alert-link,
20
+ .alert-title {
21
+ color: inherit;
22
+ }
23
+
24
+ .alert-link:hover {
25
+ color: inherit;
26
+ }
27
+
28
+ .btn-close {
29
+ filter: var(--#{$prefix}btn-close-white-filter);
30
+ }
31
+ }
32
+
33
+ .alert-link, {
34
+ &,
35
+ &:hover {
36
+ color: var(--#{$prefix}alert-color);
37
+ }
38
+ }
39
+
40
+ @each $name, $color in $theme-colors {
41
+ .alert-#{$name} {
42
+ --#{$prefix}alert-color: var(--#{$prefix}#{$name});
43
+ }
44
+ }
45
+
46
+ .alert-icon {
47
+ color: var(--#{$prefix}alert-color);
48
+ width: 1.5rem !important;
49
+ height: 1.5rem !important;
50
+ margin: -.125rem $alert-padding-x -.125rem 0;
51
+ }
52
+
53
+ .alert-title {
54
+ font-size: $h4-font-size;
55
+ line-height: $h4-line-height;
56
+ font-weight: var(--#{$prefix}font-weight-bold);
57
+ margin-bottom: .25rem;
58
+ color: var(--#{$prefix}alert-color);
59
+ }
@@ -0,0 +1,118 @@
1
+ .avatar {
2
+ --#{$prefix}avatar-size: #{$avatar-size};
3
+ --#{$prefix}avatar-status-size: #{$avatar-status-size};
4
+ --#{$prefix}avatar-bg: #{$avatar-bg};
5
+ --#{$prefix}avatar-box-shadow: #{$avatar-box-shadow};
6
+ --#{$prefix}avatar-font-size: #{$avatar-font-size};
7
+ --#{$prefix}avatar-icon-size: #{$avatar-icon-size};
8
+ position: relative;
9
+ width: var(--#{$prefix}avatar-size);
10
+ height: var(--#{$prefix}avatar-size);
11
+ font-size: var(--#{$prefix}avatar-font-size);
12
+ font-weight: var(--#{$prefix}font-weight-medium);
13
+ line-height: 1;
14
+ display: inline-flex;
15
+ align-items: center;
16
+ justify-content: center;
17
+ color: var(--#{$prefix}secondary);
18
+ text-align: center;
19
+ text-transform: uppercase;
20
+ vertical-align: bottom;
21
+ user-select: none;
22
+ background: var(--#{$prefix}avatar-bg) no-repeat center/cover;
23
+ border-radius: $avatar-border-radius;
24
+ box-shadow: var(--#{$prefix}avatar-box-shadow);
25
+
26
+ .icon {
27
+ width: var(--#{$prefix}avatar-icon-size);
28
+ height: var(--#{$prefix}avatar-icon-size);
29
+ }
30
+
31
+ .badge {
32
+ position: absolute;
33
+ right: 0;
34
+ bottom: 0;
35
+ border-radius: $border-radius-pill;
36
+ box-shadow: 0 0 0 calc(var(--#{$prefix}avatar-status-size) / 4) $card-bg;
37
+ }
38
+
39
+ @at-root a#{&} {
40
+ cursor: pointer;
41
+ }
42
+ }
43
+
44
+ .avatar-rounded {
45
+ border-radius: $border-radius-pill;
46
+ }
47
+
48
+ @each $avatar-size, $size in $avatar-sizes {
49
+ .avatar-#{$avatar-size} {
50
+ --#{$prefix}avatar-size: #{map-get($size, size)};
51
+ --#{$prefix}avatar-status-size: #{map-get($size, status-size)};
52
+ --#{$prefix}avatar-font-size: #{map-get($size, font-size)};
53
+ --#{$prefix}avatar-icon-size: #{map-get($size, icon-size)};
54
+ }
55
+
56
+ .avatar-#{$avatar-size} .badge:empty {
57
+ width: map-get($size, status-size);
58
+ height: map-get($size, status-size);
59
+ }
60
+ }
61
+
62
+ //
63
+ // Avatar list
64
+ //
65
+ .avatar-list {
66
+ @include elements-list;
67
+
68
+ a.avatar {
69
+ &:hover {
70
+ z-index: 1;
71
+ }
72
+ }
73
+ }
74
+
75
+ .avatar-list-stacked {
76
+ display: block;
77
+ --#{$prefix}list-gap: 0;
78
+
79
+ .avatar {
80
+ margin-right: calc(#{$avatar-list-spacing} * var(--#{$prefix}avatar-size)) !important;
81
+ box-shadow: var(--#{$prefix}avatar-box-shadow), 0 0 0 2px var(--#{$prefix}card-cap-bg, var(--#{$prefix}card-bg, var(--#{$prefix}bg-surface)));
82
+ }
83
+ }
84
+
85
+ //
86
+ // Avatar upload
87
+ //
88
+ .avatar-upload {
89
+ width: 4rem;
90
+ height: 4rem;
91
+ border: var(--#{$prefix}border-width) dashed var(--#{$prefix}border-color);
92
+ background: $form-check-input-bg;
93
+ flex-direction: column;
94
+ @include transition(color $transition-time, background-color $transition-time);
95
+
96
+ svg {
97
+ width: 1.5rem;
98
+ height: 1.5rem;
99
+ stroke-width: 1;
100
+ }
101
+
102
+ &:hover {
103
+ border-color: var(--#{$prefix}primary);
104
+ color: var(--#{$prefix}primary);
105
+ text-decoration: none;
106
+ }
107
+ }
108
+
109
+ .avatar-upload-text {
110
+ font-size: $h6-font-size;
111
+ line-height: 1;
112
+ margin-top: .25rem;
113
+ }
114
+
115
+ .avatar-cover {
116
+ margin-top: calc(-.5 * var(--#{$prefix}avatar-size));
117
+ box-shadow: 0 0 0 .25rem var(--#{$prefix}card-bg, var(--#{$prefix}body-bg));
118
+ }
@@ -0,0 +1,79 @@
1
+ .badge {
2
+ justify-content: center;
3
+ align-items: center;
4
+ background: $badge-bg-color;
5
+ overflow: hidden;
6
+ user-select: none;
7
+ border: var(--#{$prefix}border-width) var(--#{$prefix}border-style) transparent;
8
+ min-width: ($badge-padding-y * 2 ) + (divide($badge-font-size, 100%) * 1em);
9
+ font-weight: $headings-font-weight;
10
+ letter-spacing: .04em;
11
+ vertical-align: bottom;
12
+
13
+ @at-root a#{&} {
14
+ color: $card-bg;
15
+ }
16
+
17
+ .avatar {
18
+ box-sizing: content-box;
19
+ width: 1.25rem;
20
+ height: 1.25rem;
21
+ margin: 0 .5rem 0 -.5rem;
22
+ }
23
+
24
+ .icon {
25
+ width: 1em;
26
+ height: 1em;
27
+ font-size: 1rem;
28
+ stroke-width: 2;
29
+ }
30
+ }
31
+
32
+ .badge:empty,
33
+ .badge-empty {
34
+ display: inline-block;
35
+ width: $badge-empty-size;
36
+ height: $badge-empty-size;
37
+ min-width: 0;
38
+ min-height: auto;
39
+ padding: 0;
40
+ border-radius: $border-radius-pill;
41
+ vertical-align: baseline;
42
+ }
43
+
44
+ //
45
+ // Outline badge
46
+ //
47
+ .badge-outline {
48
+ background-color: transparent;
49
+ border: var(--#{$prefix}border-width) var(--#{$prefix}border-style) currentColor;
50
+ }
51
+
52
+ //
53
+ // Pill badge
54
+ //
55
+ .badge-pill {
56
+ border-radius: $border-radius-pill;
57
+ }
58
+
59
+ //
60
+ // Badges list
61
+ //
62
+ .badges-list {
63
+ @include elements-list;
64
+ }
65
+
66
+ //
67
+ // Notification badge
68
+ //
69
+ .badge-notification {
70
+ position: absolute !important;
71
+ top: 0 !important;
72
+ right: 0 !important;
73
+ transform: translate(50%, -50%);
74
+ z-index: 1;
75
+ }
76
+
77
+ .badge-blink {
78
+ animation: blink 2s infinite;
79
+ }
@@ -0,0 +1,50 @@
1
+ .breadcrumb {
2
+ --#{$prefix}breadcrumb-item-active-font-weight: #{$breadcrumb-active-font-weight};
3
+ --#{$prefix}breadcrumb-item-disabled-color: #{$breadcrumb-disabled-color};
4
+ --#{$prefix}breadcrumb-link-color: #{$breadcrumb-link-color};
5
+ padding: 0;
6
+ margin: 0;
7
+ background: transparent;
8
+
9
+ a {
10
+ color: var(--#{$prefix}breadcrumb-link-color);
11
+
12
+ &:hover {
13
+ text-decoration: underline;
14
+ }
15
+ }
16
+ }
17
+
18
+ .breadcrumb-muted {
19
+ --#{$prefix}breadcrumb-link-color: var(--#{$prefix}secondary);
20
+ }
21
+
22
+ .breadcrumb-item {
23
+ &.active {
24
+ font-weight: var(--#{$prefix}breadcrumb-item-active-font-weight);
25
+
26
+ a {
27
+ color: inherit;
28
+ pointer-events: none;
29
+ }
30
+ }
31
+
32
+ &.disabled {
33
+ color: var(--#{$prefix}breadcrumb-item-disabled-color);
34
+
35
+ &:before {
36
+ color: inherit;
37
+ }
38
+
39
+ a {
40
+ color: inherit;
41
+ pointer-events: none;
42
+ }
43
+ }
44
+ }
45
+
46
+ @each $name, $symbol in $breadcrumb-variants {
47
+ .breadcrumb-#{$name} {
48
+ --#{$prefix}breadcrumb-divider: "#{quote($symbol)}";
49
+ }
50
+ }
@@ -0,0 +1,16 @@
1
+ .btn-group,
2
+ .btn-group-vertical {
3
+ box-shadow: $input-box-shadow;
4
+
5
+ > .btn-check:checked + .btn,
6
+ > .btn:active,
7
+ > .btn.active {
8
+ z-index: 5;
9
+ }
10
+
11
+ > .btn-check:focus + .btn,
12
+ > .btn:hover,
13
+ > .btn:focus {
14
+ z-index: 1;
15
+ }
16
+ }