bootstrap-italia 2.17.3 → 3.0.0-alpha.0

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 (155) hide show
  1. package/README.EN.md +1 -1
  2. package/README.md +1 -1
  3. package/dist/css/bootstrap-italia.min.css +1 -9
  4. package/dist/css/bootstrap-italia.min.css.map +1 -1
  5. package/dist/fonts/Titillium_Sans_Pro/OFL.txt +92 -0
  6. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Bold.woff +0 -0
  7. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Bold.woff2 +0 -0
  8. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-BoldItalic.woff +0 -0
  9. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-BoldItalic.woff2 +0 -0
  10. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Italic.woff +0 -0
  11. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Italic.woff2 +0 -0
  12. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Light.woff +0 -0
  13. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Light.woff2 +0 -0
  14. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-LightItalic.woff +0 -0
  15. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-LightItalic.woff2 +0 -0
  16. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Regular.woff +0 -0
  17. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Regular.woff2 +0 -0
  18. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Semibold.woff +0 -0
  19. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-Semibold.woff2 +0 -0
  20. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-SemiboldItalic.woff +0 -0
  21. package/dist/fonts/Titillium_Sans_Pro/TitilliumSansPro-SemiboldItalic.woff2 +0 -0
  22. package/dist/js/bootstrap-italia.bundle.min.js +10 -10
  23. package/dist/js/bootstrap-italia.min.js +4 -4
  24. package/dist/plugins/dropdown.js +1 -1
  25. package/dist/plugins/dropdown.js.map +1 -1
  26. package/dist/plugins/fonts-loader.js +340 -111
  27. package/dist/plugins/fonts-loader.js.map +1 -1
  28. package/dist/version.js +1 -1
  29. package/dist/version.js.map +1 -1
  30. package/package.json +3 -3
  31. package/src/fonts/Titillium_Sans_Pro/OFL.txt +92 -0
  32. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Bold.woff +0 -0
  33. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Bold.woff2 +0 -0
  34. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-BoldItalic.woff +0 -0
  35. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-BoldItalic.woff2 +0 -0
  36. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Italic.woff +0 -0
  37. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Italic.woff2 +0 -0
  38. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Light.woff +0 -0
  39. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Light.woff2 +0 -0
  40. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-LightItalic.woff +0 -0
  41. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-LightItalic.woff2 +0 -0
  42. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Regular.woff +0 -0
  43. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Regular.woff2 +0 -0
  44. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Semibold.woff +0 -0
  45. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-Semibold.woff2 +0 -0
  46. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-SemiboldItalic.woff +0 -0
  47. package/src/fonts/Titillium_Sans_Pro/TitilliumSansPro-SemiboldItalic.woff2 +0 -0
  48. package/src/js/plugins/dropdown.js +1 -1
  49. package/src/js/plugins/fonts-loader.js +340 -111
  50. package/src/js/version.js +1 -1
  51. package/src/scss/base/_maps.scss +11 -0
  52. package/src/scss/base/_mixins.scss +2 -1
  53. package/src/scss/base/_reboot.scss +15 -147
  54. package/src/scss/base/_root.scss +272 -45
  55. package/src/scss/base/_utilities.scss +3 -3
  56. package/src/scss/base/_variables.scss +44 -55
  57. package/src/scss/base/_version.scss +1 -1
  58. package/src/scss/base/mixins/_banner.scss +7 -9
  59. package/src/scss/base/mixins/_focus.scss +14 -0
  60. package/src/scss/bootstrap-italia.scss +29 -32
  61. package/src/scss/components/_accept-overlay.scss +74 -50
  62. package/src/scss/components/_accordion.scss +120 -97
  63. package/src/scss/components/_affix.scss +14 -0
  64. package/src/scss/components/_alert.scss +60 -45
  65. package/src/scss/components/_anchor.scss +14 -0
  66. package/src/scss/components/_avatar.scss +236 -369
  67. package/src/scss/components/_back-to-top.scss +70 -54
  68. package/src/scss/components/_badge.scss +69 -36
  69. package/src/scss/components/_bottomnav.scss +14 -0
  70. package/src/scss/components/_breadcrumb.scss +78 -71
  71. package/src/scss/components/_button-group.scss +21 -7
  72. package/src/scss/components/_buttons.scss +289 -318
  73. package/src/scss/components/_calendar.scss +22 -8
  74. package/src/scss/components/_callout.scss +133 -125
  75. package/src/scss/components/_card-old.scss +14 -0
  76. package/src/scss/components/_card.scss +476 -518
  77. package/src/scss/components/_carousel.scss +14 -0
  78. package/src/scss/components/_chips.scss +150 -209
  79. package/src/scss/components/_code.scss +31 -6
  80. package/src/scss/components/_cookiebar.scss +14 -0
  81. package/src/scss/components/_dimmer.scss +14 -0
  82. package/src/scss/components/_dropdown.scss +144 -179
  83. package/src/scss/components/_figcaption.scss +14 -0
  84. package/src/scss/components/_font.scss +14 -0
  85. package/src/scss/components/_footer.scss +99 -75
  86. package/src/scss/components/_forward.scss +14 -0
  87. package/src/scss/components/_grid.scss +31 -22
  88. package/src/scss/components/_gridlist.scss +41 -19
  89. package/src/scss/components/_header.scss +150 -142
  90. package/src/scss/components/_headercenter.scss +129 -193
  91. package/src/scss/components/_headercentertheme.scss +14 -0
  92. package/src/scss/components/_headernavbar.scss +22 -14
  93. package/src/scss/components/_headernavbartheme.scss +16 -2
  94. package/src/scss/components/_headerslim.scss +133 -137
  95. package/src/scss/components/_headerslimtheme.scss +14 -0
  96. package/src/scss/components/_hero.scss +93 -202
  97. package/src/scss/components/_images.scss +14 -0
  98. package/src/scss/components/_imgresponsive.scss +14 -0
  99. package/src/scss/components/_linklist.scss +241 -262
  100. package/src/scss/components/_list-group.scss +26 -14
  101. package/src/scss/components/_list.scss +66 -123
  102. package/src/scss/components/_map.scss +14 -0
  103. package/src/scss/components/_masonry-loader.scss +14 -0
  104. package/src/scss/components/_megamenu.scss +191 -256
  105. package/src/scss/components/_modal.scss +115 -204
  106. package/src/scss/components/_nav.scss +43 -41
  107. package/src/scss/components/_navbar.scss +408 -91
  108. package/src/scss/components/_navigation.scss +56 -459
  109. package/src/scss/components/_navigationtheme.scss +109 -171
  110. package/src/scss/components/_navscroll.scss +210 -208
  111. package/src/scss/components/_navscrolltheme.scss +14 -0
  112. package/src/scss/components/_notifications.scss +14 -0
  113. package/src/scss/components/_offcanvas.scss +14 -0
  114. package/src/scss/components/_overlay-panel.scss +14 -0
  115. package/src/scss/components/_page-scroll.scss +14 -0
  116. package/src/scss/components/_pagination.scss +135 -80
  117. package/src/scss/components/_placeholders.scss +14 -0
  118. package/src/scss/components/_point-list.scss +15 -0
  119. package/src/scss/components/_popover.scss +29 -19
  120. package/src/scss/components/_print.scss +14 -0
  121. package/src/scss/components/_progress-bars.scss +14 -0
  122. package/src/scss/components/_progress-donuts.scss +14 -0
  123. package/src/scss/components/_progress-spinners.scss +14 -0
  124. package/src/scss/components/_rating-list.scss +14 -0
  125. package/src/scss/components/_rating.scss +76 -45
  126. package/src/scss/components/_sections.scss +51 -30
  127. package/src/scss/components/_sidebar.scss +119 -121
  128. package/src/scss/components/_sidebarthemes.scss +14 -0
  129. package/src/scss/components/_skiplinks.scss +14 -0
  130. package/src/scss/components/_steppers.scss +14 -0
  131. package/src/scss/components/_sticky.scss +14 -0
  132. package/src/scss/components/_tab.scss +14 -0
  133. package/src/scss/components/_tables.scss +14 -0
  134. package/src/scss/components/_thumbnav.scss +14 -0
  135. package/src/scss/components/_timeline.scss +14 -0
  136. package/src/scss/components/_toasts.scss +14 -0
  137. package/src/scss/components/_toolbar.scss +14 -0
  138. package/src/scss/components/_tooltip.scss +23 -9
  139. package/src/scss/components/_type.scss +176 -176
  140. package/src/scss/components/_videoplayer.scss +25 -5
  141. package/src/scss/forms/_accessible-autocomplete.scss +25 -27
  142. package/src/scss/forms/_autocomplete.scss +99 -144
  143. package/src/scss/forms/_form-control.scss +47 -116
  144. package/src/scss/forms/_form-input-file.scss +7 -6
  145. package/src/scss/forms/_form-input-number.scss +38 -22
  146. package/src/scss/forms/_form-input-upload.scss +149 -147
  147. package/src/scss/forms/_form-password.scss +14 -11
  148. package/src/scss/forms/_form-select.scss +3 -92
  149. package/src/scss/forms/_forms.scss +304 -247
  150. package/src/scss/forms/_input-group.scss +23 -36
  151. package/src/scss/forms/_just-validate.scss +11 -12
  152. package/src/scss/utilities/focus.scss +3 -12
  153. package/src/scss/utilities/icons.scss +59 -13
  154. package/src/scss/components/_pager.scss +0 -166
  155. package/src/scss/forms/_form-text.scss +0 -11
@@ -1,298 +1,206 @@
1
- // Special list for long groups of cards, bootstrap row/cols grid
2
- ul.row.it-card-list {
3
- list-style-type: none;
4
- margin: 0;
5
- padding: 0;
1
+ // Component: card
2
+ //
3
+ // Description: Component styles for card
4
+ //
6
5
 
7
- > li.col,
8
- > li[class*='col-'] {
9
- border: none;
10
- background: transparent;
11
- margin-top: 0;
12
- display: block;
13
- transition: none;
14
- }
15
- }
6
+ // Variables
7
+ //
16
8
 
17
- // Improved responsive it-card-group with a @container aware twist
18
- .it-card-group {
19
- --#{$prefix}it-card-group-gap: #{$grid-gutter-width};
9
+ // Properties
10
+ //
20
11
 
21
- display: flex;
22
- flex-wrap: wrap;
12
+ .it-card {
13
+ --#{$prefix}card-background: var(--#{$prefix}color-background-inverse); // Controls the card background color, using color tokens
14
+ --#{$prefix}card-border-color: var(--#{$prefix}color-border-subtle); // Controls the card border color, using color tokens
15
+ --#{$prefix}card-border-radius: var(--#{$prefix}radius-smooth); // Controls the outer border radius of the card, using radius tokens
16
+ --#{$prefix}card-border-radius-inner: calc(
17
+ var(--#{$prefix}card-border-radius) - var(--#{$prefix}card-border-outside-width)
18
+ ); // Controls the inner border radius of the card
19
+ --#{$prefix}card-border-top-color: transparent; // Controls
20
+ --#{$prefix}card-border-top-width: 6px; // Controls the width of the top border
21
+ --#{$prefix}card-border-outside-width: 1px; // Controls the width of the outside border, used for calculating inner border radius
22
+ --#{$prefix}card-border-separator-width: 1px; // Controls the width of the separator border for card sections like body and footer
23
+ --#{$prefix}card-footer-background: transparent; // Controls the background color of the card footer, using color tokens
24
+ --#{$prefix}card-footer-text-color: var(--#{$prefix}color-text-muted); // Controls the text color of the card footer, using color tokens
25
+ --#{$prefix}card-spacing-x: var(--#{$prefix}spacing-s); // Controls the horizontal padding of the card, using spacing tokens
26
+ --#{$prefix}card-spacing-y: var(--#{$prefix}spacing-s); // Controls the vertical padding of the card, using spacing tokens
27
+ --#{$prefix}card-category-color: var(--#{$prefix}color-text-muted); // Controls the text color of the card category, using color tokens
28
+ --#{$prefix}card-category-font-weight: var(--#{$prefix}font-weight-solid); // Controls the font weight of the card category, using font weight tokens
29
+ --#{$prefix}card-category-font-size: var(--#{$prefix}label-font-size); // Controls the font size of the card category, using font size tokens
30
+ --#{$prefix}card-text-color: var(--#{$prefix}color-text-secondary); // Controls the main text color of the card, using color tokens
31
+ --#{$prefix}card-date-color: var(--#{$prefix}color-text-muted); // Controls the text color of the card date, using color tokens
32
+ --#{$prefix}card-date-font-size: var(--#{$prefix}label-font-size-s); // Controls the font size of the card date, using font size tokens
33
+ --#{$prefix}card-description-color: var(--#{$prefix}color-text-muted); // Controls the text color of the card description, using color tokens
34
+ --#{$prefix}card-height: auto; // Controls the height of the card, can be set to fixed value or auto
35
+ --#{$prefix}card-inline-min-height: 240px; // Controls the minimum height of inline cards, ensuring enough space for content and image
36
+ --#{$prefix}card-inline-mini-min-height: 160px; // Controls the minimum height of inline mini cards, ensuring enough space for content and image
37
+ --#{$prefix}card-link-color: var(--#{$prefix}color-text-secondary); // Controls the text color of links within the card, using color tokens
38
+ --#{$prefix}card-title-spacing-y: var(
39
+ --#{$prefix}card-spacing-y
40
+ ); // Controls the vertical spacing around the card title, using the card spacing variable for consistency
41
+ --#{$prefix}card-signature-font-size: var(--#{$prefix}label-font-size); // Controls the font size of the card signature, using font size tokens
42
+ --#{$prefix}card-signature-font-family: var(--#{$prefix}font-mono); // Controls the font family of the card signature, using font family tokens
43
+ }
23
44
 
24
- // gap fallback
25
- margin: calc(-0.5 * var(--#{$prefix}it-card-group-gap));
45
+ // Styles
46
+ //
47
+ /* stylelint-disable-next-line no-duplicate-selectors */
48
+ .it-card {
49
+ position: relative;
50
+ display: flex;
51
+ flex-direction: column;
52
+ width: 100%;
53
+ min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106
54
+ height: var(--#{$prefix}card-height);
55
+ padding: var(--#{$prefix}card-spacing-y) var(--#{$prefix}card-spacing-x);
56
+ background-color: var(--#{$prefix}card-background);
57
+ color: var(--#{$prefix}card-text-color);
58
+ word-break: break-word;
59
+ overflow-wrap: break-word;
60
+ background-clip: border-box;
26
61
 
27
- > .it-card {
28
- margin: calc(0.5 * var(--#{$prefix}it-card-group-gap));
29
- // Default stacked on mobile
30
- flex: 0 0 calc(100% - var(--#{$prefix}it-card-group-gap));
62
+ // Card title styles
63
+ .it-card-title {
64
+ margin-bottom: var(--#{$prefix}spacing-xxs);
31
65
 
32
- // Responsive breakpoints
33
- @include media-breakpoint-up(sm) {
34
- flex: 0 0 calc(50% - 0.5 * var(--#{$prefix}it-card-group-gap));
35
- }
66
+ &.it-card-title-icon {
67
+ display: flex;
68
+ justify-content: space-between;
36
69
 
37
- @include media-breakpoint-up(md) {
38
- flex: 0 0 calc(33.333% - 0.667 * var(--#{$prefix}it-card-group-gap));
39
- }
70
+ .it-card-title-icon-wrapper {
71
+ margin-left: var(--#{$prefix}icon-spacing);
72
+ }
40
73
 
41
- @include media-breakpoint-up(lg) {
42
- flex: 0 0 calc(25% - 0.75 * var(--#{$prefix}it-card-group-gap));
74
+ // linked titles with icons goes fullwidth
75
+ > a {
76
+ display: flex;
77
+ justify-content: space-between;
78
+ width: 100%;
79
+ }
43
80
  }
44
81
  }
45
82
 
46
- @supports (gap: var(--#{$prefix}it-card-group-gap)) {
47
- margin: 0;
48
- gap: var(--#{$prefix}it-card-group-gap);
49
-
50
- > .it-card {
51
- margin: 0;
52
- }
83
+ // Card footer
84
+ .it-card-footer {
85
+ display: flex;
86
+ flex-wrap: wrap;
87
+ align-items: flex-end;
88
+ justify-content: flex-end;
89
+ margin-top: var(--#{$prefix}card-spacing-y);
90
+ gap: var(--#{$prefix}card-spacing-y);
91
+ color: var(--#{$prefix}card-footer-text-color);
53
92
  }
54
93
 
55
- // Predefined column layouts
56
- &.it-card-group-2-cols > .it-card,
57
- &.it-card-group-3-cols > .it-card,
58
- &.it-card-group-4-cols > .it-card {
59
- @include media-breakpoint-up(sm) {
60
- flex: 0 0 calc(50% - 0.5 * var(--#{$prefix}it-card-group-gap));
61
- }
94
+ // Card taxonomy area, can contain category, tags, date
95
+ .it-card-taxonomy {
96
+ flex-grow: 1;
62
97
  }
63
98
 
64
- &.it-card-group-3-cols > .it-card {
65
- @include media-breakpoint-up(md) {
66
- flex: 0 0 calc(33.333% - 0.667 * var(--#{$prefix}it-card-group-gap));
67
- }
99
+ // Card category, use <span> or <a> if possible
100
+ .it-card-category {
101
+ display: inline-block;
102
+ margin-bottom: 0;
103
+ color: var(--#{$prefix}card-category-color);
104
+ font-size: var(--#{$prefix}card-category-font-size);
105
+ font-weight: var(--#{$prefix}card-category-font-weight);
106
+ text-transform: uppercase;
68
107
  }
69
108
 
70
- &.it-card-group-4-cols > .it-card {
71
- @include media-breakpoint-up(md) {
72
- flex: 0 0 calc(33.333% - 0.667 * var(--#{$prefix}it-card-group-gap));
73
- }
74
-
75
- @include media-breakpoint-up(lg) {
76
- flex: 0 0 calc(25% - 0.75 * var(--#{$prefix}it-card-group-gap));
77
- }
109
+ // Card chips, use <ul><li> if possible
110
+ .it-card-chips {
111
+ display: flex;
112
+ flex-wrap: wrap;
113
+ margin-bottom: 0;
114
+ padding: 0;
115
+ list-style-type: none;
116
+ gap: calc(var(--#{$prefix}card-spacing-y) * 0.5); // use half spacing for gap
78
117
  }
79
118
 
80
- // Progressive enhancement with Container Queries
81
- @supports (container-type: inline-size) {
82
- // Only with .it-card-group-container-aware class
83
- &.it-card-group-container-aware {
84
- container-type: inline-size;
85
-
86
- > .it-card {
87
- // Reset Media Queries
88
- @include media-breakpoint-up(sm) {
89
- flex: auto;
90
- }
91
-
92
- @include media-breakpoint-up(md) {
93
- flex: auto;
94
- }
95
-
96
- @include media-breakpoint-up(lg) {
97
- flex: auto;
98
- }
99
-
100
- // Container Queries
101
- flex: 1 0 100%;
102
-
103
- @container (min-width: 500px) {
104
- flex: 0 0 calc(50% - 0.5 * var(--#{$prefix}it-card-group-gap));
105
- }
106
-
107
- @container (min-width: 800px) {
108
- flex: 0 0 calc(33.333% - 0.667 * var(--#{$prefix}it-card-group-gap));
109
- }
110
-
111
- @container (min-width: 1100px) {
112
- flex: 0 0 calc(25% - 0.75 * var(--#{$prefix}it-card-group-gap));
113
- }
114
- }
119
+ // Card date, use <time> if possible
120
+ .it-card-date {
121
+ color: var(--#{$prefix}card-date-color);
122
+ font-size: var(--#{$prefix}card-date-font-size);
123
+ }
115
124
 
116
- // Override specific coulmns in container mode
117
- &.it-card-group-2-cols > .it-card {
118
- @container (min-width: 500px) {
119
- flex: 0 0 calc(50% - 0.5 * var(--#{$prefix}it-card-group-gap));
120
- }
121
- }
125
+ // Card description list, use <dl><dt><dd> if possible
126
+ .it-card-description-list {
127
+ display: flex;
128
+ flex-direction: column;
129
+ padding-top: var(--#{$prefix}card-spacing-y);
130
+ padding-bottom: var(--#{$prefix}card-spacing-y);
131
+ border-top: var(--#{$prefix}card-border-separator-width) solid var(--#{$prefix}card-border-color);
132
+ border-bottom: var(--#{$prefix}card-border-separator-width) solid var(--#{$prefix}card-border-color);
133
+ color: var(--#{$prefix}card-description-color);
134
+ font-size: var(--#{$prefix}label-font-size);
135
+ line-height: var(--#{$prefix}label-leading);
136
+ gap: var(--#{$prefix}spacing-s);
122
137
 
123
- &.it-card-group-3-cols > .it-card {
124
- @container (min-width: 800px) {
125
- flex: 0 0 calc(33.333% - 0.667 * var(--#{$prefix}it-card-group-gap));
126
- }
127
- }
138
+ @include media-breakpoint-down(sm) {
139
+ display: flex;
140
+ flex-direction: column;
128
141
  }
129
- }
130
142
 
131
- // Option for equal height cards
132
- &.it-card-group-equal-height > .it-card {
133
- height: 100%;
134
- }
143
+ &:last-child {
144
+ margin-bottom: 0;
145
+ border-bottom: none;
146
+ }
135
147
 
136
- // Options for alignments
137
- &.it-card-group-center {
138
- justify-content: center;
139
- }
148
+ dt {
149
+ display: inline;
150
+ margin-right: 0.125rem;
151
+ font-weight: bold;
152
+ }
140
153
 
141
- &.it-card-group-end {
142
- justify-content: flex-end;
154
+ dd {
155
+ display: inline-block;
156
+ margin: 0;
157
+ }
143
158
  }
144
- }
145
159
 
146
- //
147
- // Base card structure It Card 2025
148
- //
149
- .it-card,
150
- article.it-card {
151
- --#{$prefix}it-card-bg: #{$white};
152
- --#{$prefix}it-card-body-spacer: 1rem;
153
- --#{$prefix}it-card-border-color: #{$gray-border};
154
- --#{$prefix}it-card-border-radius: 4px;
155
- --#{$prefix}it-card-border-top-color: transparent; // default background set to transparent
156
- --#{$prefix}it-card-border-top-width: 6px;
157
- --#{$prefix}it-card-border-outside-width: 1px; // xxx change to 2px if needed
158
- --#{$prefix}it-card-border-separator-width: 1px; // xxx change to 2px if needed
159
- --#{$prefix}it-card-cap-bg: transparent;
160
- --#{$prefix}it-card-cap-color: null;
161
- --#{$prefix}it-card-cap-padding-x: var(--#{$prefix}it-card-spacer-x);
162
- --#{$prefix}it-card-cap-padding-y: calc(var(--#{$prefix}it-card-spacer-y) * 2);
163
- --#{$prefix}it-card-category-color: #{$color-text-muted};
164
- --#{$prefix}it-card-category-fw: 600;
165
- --#{$prefix}it-card-category-l-spacing: 0.5px;
166
- --#{$prefix}it-card-category-m-bottom: 0;
167
- --#{$prefix}it-card-category-size: 1rem;
168
- --#{$prefix}it-card-chips-a-color: #{$color-text-secondary};
169
- --#{$prefix}it-card-chips-gap: 1rem;
170
- --#{$prefix}it-card-color: #{$color-text-secondary};
171
- --#{$prefix}it-card-date-color: #{$color-text-muted};
172
- --#{$prefix}it-card-date-size: 0.875rem;
173
- --#{$prefix}it-card-description-color: #{$color-text-muted};
174
- --#{$prefix}it-card-height: auto;
175
- --#{$prefix}it-card-inline-min-height: 240px;
176
- --#{$prefix}it-card-inline-mini-min-height: 160px;
177
- --#{$prefix}it-card-inner-border-radius: calc(var(--#{$prefix}it-card-border-radius) - var(--#{$prefix}it-card-border-outside-width));
178
- --#{$prefix}it-card-link-color: #{$color-text-secondary};
179
- --#{$prefix}it-card-list-group-item-padding-y: 0.75rem;
180
- --#{$prefix}it-card-p-color: #{$color-text-secondary};
181
- --#{$prefix}it-card-signature-size: 1rem;
182
- --#{$prefix}it-card-spacer-x: 1rem;
183
- --#{$prefix}it-card-spacer-y: 0.5rem;
184
- --#{$prefix}it-card-double-spacer-y: calc(2 * var(--#{$prefix}it-card-spacer-y));
185
- --#{$prefix}it-card-quad-spacer-y: calc(4 * var(--#{$prefix}it-card-spacer-y));
186
- --#{$prefix}it-card-title-spacer-y: var(--#{$prefix}it-card-spacer-y);
187
-
188
- display: flex;
189
- flex-direction: column;
190
- min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106
191
- height: var(--#{$prefix}it-card-height);
192
- padding: 0 0 var(--#{$prefix}it-card-spacer-y) 0;
193
- position: relative;
194
- width: 100%;
195
- overflow-wrap: break-word;
196
- word-break: break-word;
197
- background-color: var(--#{$prefix}it-card-bg);
198
- background-clip: border-box;
199
- color: var(--#{$prefix}it-card-color);
160
+ // Card action area, can contain buttons, links, etc.
161
+ .it-card-actions {
162
+ margin-top: var(--#{$prefix}card-spacing-y); // separate from sibling content (body or footer)
163
+ padding-top: var(--#{$prefix}card-spacing-y); // reset left/right padding to 0, using margin instead
164
+ border-top: var(--#{$prefix}card-border-separator-width) solid var(--#{$prefix}card-border-color);
165
+ background-color: var(--#{$prefix}card-footer-background);
166
+ font-size: var(--#{$prefix}label-font-size);
167
+ line-height: var(--#{$prefix}label-leading);
200
168
 
201
- &.border {
202
- border-width: var(--#{$prefix}it-card-border-outside-width) !important;
203
- }
204
-
205
- &.it-card-height-full {
206
- height: 100%;
169
+ &:last-child {
170
+ @include border-radius(0 0 var(--#{$prefix}card-border-radius-inner) var(--#{$prefix}card-border-radius-inner));
171
+ }
207
172
  }
208
173
 
174
+ // Card links
209
175
  .it-card-link {
210
- color: var(--#{$prefix}it-card-link-color);
176
+ color: var(--#{$prefix}card-link-color);
211
177
 
212
178
  &:hover {
213
179
  color: color-hover($color-text-secondary);
214
180
  }
215
181
 
216
182
  + .it-card-link {
217
- margin-left: var(--#{$prefix}it-card-spacer-x);
218
- }
219
- }
220
-
221
- // Card title styles
222
- .it-card-title {
223
- margin-top: calc(2 * var(--#{$prefix}it-card-title-spacer-y));
224
- margin-bottom: 0;
225
- padding: 0 var(--#{$prefix}it-card-spacer-x);
226
-
227
- &.it-card-title-icon {
228
- display: flex;
229
- flex-direction: row;
230
- justify-content: space-between;
231
-
232
- // Gap fallback
233
- > * {
234
- margin: 0.25rem;
235
- }
236
-
237
- @supports (gap: 0.5rem) {
238
- gap: 0.5rem;
239
-
240
- > * {
241
- margin: 0;
242
- }
243
- }
244
-
245
- .it-card-title-icon-wrapper {
246
- margin-left: 0.5rem;
247
- }
248
-
249
- // linked titles with icons goes fullwidth
250
- > a {
251
- display: flex;
252
- justify-content: space-between;
253
- width: 100%;
254
-
255
- // Gap fallback
256
- > * {
257
- margin: 0.25rem;
258
- }
259
-
260
- @supports (gap: 0.5rem) {
261
- gap: 0.5rem;
262
-
263
- > * {
264
- margin: 0;
265
- }
266
- }
267
- }
183
+ margin-left: var(--#{$prefix}card-spacing-x);
268
184
  }
269
185
  }
270
186
 
271
187
  // Card body and content
272
188
  .it-card-body {
273
189
  flex: 1 1 auto;
274
- padding: var(--#{$prefix}it-card-spacer-y) var(--#{$prefix}it-card-spacer-x);
275
- color: var(--#{$prefix}it-card-color);
190
+ color: var(--#{$prefix}card-text-color);
276
191
 
277
192
  // Card subtitle or event timeframe
278
193
  .it-card-subtitle {
279
- margin-bottom: var(--#{$prefix}it-card-spacer-y);
280
-
281
- font-weight: 600;
282
- font-size: 1.25rem; // equal h5
283
- line-height: 1.5rem;
284
-
285
- @include media-breakpoint-up(sm) {
286
- font-size: 1.5rem;
287
- line-height: 2rem;
288
- }
194
+ margin-bottom: var(--#{$prefix}spacing-xxs);
195
+ font-size: var(--#{$prefix}heading-5-font-size);
196
+ font-weight: var(--#{$prefix}font-weight-solid);
197
+ line-height: var(--#{$prefix}font-line-height-2);
289
198
  }
290
199
 
291
200
  // Card description
292
201
  .it-card-text {
293
- color: var(--#{$prefix}it-card-p-color);
294
- font-size: 1rem;
295
- line-height: 1.5rem;
202
+ font-size: var(--#{$prefix}font-size-base);
203
+ line-height: var(--#{$prefix}font-line-height-5);
296
204
 
297
205
  &:last-child {
298
206
  margin-bottom: 0;
@@ -301,200 +209,104 @@ article.it-card {
301
209
 
302
210
  // Card author
303
211
  .it-card-signature {
304
- font-family: $font-family-monospace;
305
- color: var(--#{$prefix}it-card-color);
306
- font-size: var(--#{$prefix}it-card-signature-size);
212
+ margin-bottom: calc(0.5 * var(--#{$prefix}card-title-spacing-y));
213
+ color: var(--#{$prefix}card-text-color);
214
+ font-family: var(--#{$prefix}card-signature-font-family);
215
+ font-size: var(--#{$prefix}card-signature-font-size);
307
216
  }
308
217
  }
309
218
 
310
- // Card footer
311
- .it-card-footer {
312
- margin: 0 var(--#{$prefix}it-card-cap-padding-x);
313
- padding: var(--#{$prefix}it-card-cap-padding-y) 0;
314
- color: var(--#{$prefix}it-card-cap-color);
315
- background-color: var(--#{$prefix}it-card-cap-bg);
316
- border-top: var(--#{$prefix}it-card-border-separator-width) solid var(--#{$prefix}it-card-border-color);
317
- font-size: 1rem;
318
- line-height: 1.5rem;
219
+ //
220
+ // Card Variants
319
221
 
320
- &:last-child {
321
- @include border-radius(0 0 var(--#{$prefix}it-card-inner-border-radius) var(--#{$prefix}it-card-inner-border-radius));
322
- }
222
+ // Card with image
223
+ &.it-card-image {
224
+ padding-top: 0; // reset padding when using image variant
323
225
  }
324
226
 
325
- // Card metadata holder <footer>
326
- footer {
327
- margin-top: var(--#{$prefix}it-card-double-spacer-y);
328
-
329
- &.it-card-related {
330
- display: flex;
331
- flex-direction: row;
332
- flex-wrap: wrap;
333
- justify-content: flex-end;
334
-
335
- // Gap fallback
336
- > * {
337
- margin: 0.5rem;
338
- }
339
-
340
- @supports (gap: 1rem) {
341
- gap: 1rem;
342
-
343
- > * {
344
- margin: 0;
345
- }
346
- }
347
-
348
- // Align items baseline and fallback
349
- align-items: flex-end;
350
-
351
- @supports (align-items: last baseline) {
352
- align-items: last baseline;
353
- }
227
+ &.it-card-image.it-card-inline,
228
+ &.it-card-image.it-card-inline-reverse {
229
+ padding-bottom: 0; // reset padding when using image variant
230
+ }
354
231
 
355
- &.it-card-footer {
356
- padding-bottom: var(--#{$prefix}it-card-cap-padding-y);
357
- padding-top: calc(var(--#{$prefix}it-card-cap-padding-y) * 0.5);
358
- border-top: none;
359
- }
360
- }
232
+ &.it-card-image.it-card-inline {
233
+ padding-left: 0; // reset padding when using image variant
234
+ }
361
235
 
362
- .it-card-taxonomy {
363
- flex-grow: 1;
364
- }
236
+ &.it-card-image.it-card-inline-reverse {
237
+ padding-right: 0; // reset padding when using image variant
238
+ }
365
239
 
366
- .it-card-category {
367
- display: inline-block;
368
- text-transform: uppercase;
369
- color: var(--#{$prefix}it-card-category-color);
370
- font-size: var(--#{$prefix}it-card-category-size);
371
- font-weight: var(--#{$prefix}it-card-category-fw);
372
- letter-spacing: var(--#{$prefix}it-card-category-l-spacing);
373
- margin-bottom: var(--#{$prefix}it-card-category-m-bottom);
374
- }
240
+ // Card with height 100%
241
+ &.it-card-height-full {
242
+ height: 100%;
243
+ }
375
244
 
376
- // If more than one Tag, use a list
377
- ul.it-card-chips {
245
+ // Profile card
246
+ &.it-card-profile {
247
+ .it-card-profile-header {
378
248
  display: flex;
379
- flex-wrap: wrap;
380
-
381
- // Gap fallback
382
- > li {
383
- margin: 0.25rem;
384
- }
249
+ flex-wrap: wrap-reverse;
250
+ align-items: center;
251
+ justify-content: space-between;
252
+ gap: var(--#{$prefix}card-spacing-x);
385
253
 
386
- @supports (gap: 0.5rem) {
387
- gap: 0.5rem;
254
+ .it-card-profile-content {
255
+ .it-card-profile-name {
256
+ margin-bottom: var(--#{$prefix}spacing-3xs);
257
+ }
388
258
 
389
- > li {
390
- margin: 0;
259
+ .it-card-profile-role,
260
+ .it-card-profile-type {
261
+ margin-bottom: 0;
262
+ font-size: var(--#{$prefix}label-font-size);
263
+ font-weight: var(--#{$prefix}font-weight-solid);
264
+ line-height: var(--#{$prefix}label-leading);
391
265
  }
392
266
  }
393
267
 
394
- padding: 0;
395
- margin-top: 0.5rem;
396
- margin-bottom: 0;
397
- list-style-type: none;
398
- line-height: 1.5;
399
- }
400
-
401
- .chip {
402
- margin: 0;
403
- line-height: 1.5; // reset default chip l-h
404
- }
405
-
406
- a.chip {
407
- color: var(--#{$prefix}it-card-chips-a-color);
408
- text-decoration: none;
409
- }
410
-
411
- // Card date, use <time> if possible
412
- .it-card-date {
413
- color: var(--#{$prefix}it-card-date-color);
414
- font-size: var(--#{$prefix}it-card-date-size);
415
- }
416
- }
417
-
418
- // Card can contain description lists, example: personal or place data
419
- .it-card-description-list,
420
- .it-card-body .it-card-description-list {
421
- border-top: var(--#{$prefix}it-card-border-separator-width) solid var(--#{$prefix}it-card-border-color);
422
- border-bottom: var(--#{$prefix}it-card-border-separator-width) solid var(--#{$prefix}it-card-border-color);
423
-
424
- font-size: 1rem;
425
- line-height: 1.5rem;
426
- color: var(--#{$prefix}it-card-description-color);
427
-
428
- padding-top: var(--#{$prefix}it-card-double-spacer-y);
429
- padding-bottom: var(--#{$prefix}it-card-double-spacer-y);
430
-
431
- &:last-child {
432
- margin-bottom: 0;
433
- padding-bottom: var(--#{$prefix}it-card-spacer-y);
434
- border-bottom: none;
435
- }
436
-
437
- display: flex;
438
- flex-direction: column;
439
-
440
- // gap fallback
441
- > * {
442
- margin: 0.25rem;
443
- }
268
+ .it-card-profile-image {
269
+ max-width: 80px;
270
+ max-height: 80px;
444
271
 
445
- @supports (gap: 0.5rem) {
446
- gap: 0.5rem;
272
+ figure {
273
+ margin-bottom: 0;
274
+ }
447
275
 
448
- > * {
449
- margin: 0;
276
+ .it-card-profile-image-icon-wrapper {
277
+ display: flex;
278
+ align-items: center;
279
+ justify-content: center;
280
+ background-color: var(--#{$prefix}color-background-muted);
281
+ }
450
282
  }
451
283
  }
452
284
 
453
- dt {
454
- display: inline;
455
- font-weight: bold;
456
- margin-right: 0.125rem;
457
- }
458
-
459
- dd {
460
- display: inline-block;
461
- margin: 0;
462
- }
463
-
464
- @include media-breakpoint-down(sm) {
465
- display: flex;
466
- flex-direction: column;
285
+ .it-card-body {
286
+ margin-top: var(--#{$prefix}card-spacing-y);
467
287
  }
468
288
  }
469
289
 
470
290
  // Card can contain special lists, example: Related articles to a main Tag card
471
291
  > .list-group,
472
292
  .it-card-body > .list-group {
473
- border-top: var(--#{$prefix}it-card-border-separator-width) solid var(--#{$prefix}it-card-border-color);
474
- border-bottom: var(--#{$prefix}it-card-border-separator-width) solid var(--#{$prefix}it-card-border-color);
293
+ margin-top: var(--#{$prefix}spacing-s);
294
+ margin-bottom: var(--#{$prefix}spacing-s);
295
+ border-top: var(--#{$prefix}card-border-separator-width) solid var(--#{$prefix}card-border-color);
296
+ border-bottom: var(--#{$prefix}card-border-separator-width) solid var(--#{$prefix}card-border-color);
475
297
 
476
- margin-top: var(--#{$prefix}it-card-double-spacer-y);
477
- margin-bottom: var(--#{$prefix}it-card-double-spacer-y);
478
-
479
- color: var(--#{$prefix}it-card-p-color);
298
+ .list-group-item {
299
+ padding: var(--#{$prefix}spacing-xs) 0;
300
+ }
480
301
 
481
302
  &:first-child {
482
303
  border-top-width: 0;
483
- @include border-top-radius(var(--#{$prefix}it-card-inner-border-radius));
304
+ @include border-top-radius(var(--#{$prefix}card-border-radius-inner));
484
305
  }
485
306
 
486
307
  &:last-child {
487
308
  border-bottom-width: 0;
488
- @include border-bottom-radius(var(--#{$prefix}it-card-inner-border-radius));
489
- }
490
- }
491
-
492
- .it-card-body > .list-group {
493
- margin-top: var(--#{$prefix}it-card-quad-spacer-y);
494
- margin-bottom: var(--#{$prefix}it-card-double-spacer-y);
495
-
496
- .list-group-item {
497
- padding: var(--#{$prefix}it-card-list-group-item-padding-y) 0;
309
+ @include border-bottom-radius(var(--#{$prefix}card-border-radius-inner));
498
310
  }
499
311
  }
500
312
 
@@ -504,18 +316,24 @@ article.it-card {
504
316
  }
505
317
 
506
318
  // Card image responsive wrapper and a11y DOM order hack
319
+ /* stylelint-disable-next-line no-duplicate-selectors */
507
320
  &.it-card-image {
508
- width: 100%;
321
+ @include border-top-radius(var(--#{$prefix}card-border-radius-inner));
322
+ @include border-bottom-radius(var(--#{$prefix}card-border-radius-inner));
323
+
324
+ // Reset margin because of '.ratio' positioning
325
+ figure {
326
+ margin-bottom: 0;
327
+ }
509
328
 
510
329
  .it-card-image-wrapper {
511
330
  order: -1;
512
331
  }
513
332
 
514
333
  &.rounded {
515
- @include border-top-radius(var(--#{$prefix}it-card-inner-border-radius));
516
-
517
334
  .it-card-image-wrapper img {
518
- @include border-top-radius(var(--#{$prefix}it-card-inner-border-radius));
335
+ border-top-left-radius: var(--#{$prefix}card-border-radius-inner);
336
+ border-top-right-radius: var(--#{$prefix}card-border-radius-inner);
519
337
  }
520
338
 
521
339
  &.it-card-border-top {
@@ -530,17 +348,27 @@ article.it-card {
530
348
  }
531
349
  }
532
350
 
533
- // Card special colored 4px border-top, mere aestethic, don't use for semantic meaning
351
+ // Full width image, outside the padding area
352
+ &.it-card-image:not(.it-card-inline) .it-card-image-wrapper {
353
+ display: block;
354
+ width: calc(100% + (2 * var(--#{$prefix}card-spacing-x))); // full width including padding area
355
+ margin-right: calc(-1 * var(--#{$prefix}card-spacing-x)); // negative margin to compensate padding
356
+ margin-bottom: calc(0.5 * var(--#{$prefix}card-spacing-y)); // spacing between image and content
357
+ margin-left: calc(-1 * var(--#{$prefix}card-spacing-x)); // negative margin to compensate padding
358
+ overflow: hidden;
359
+ }
360
+
361
+ // Card special colored border-top, mere aesthetic, don't use for semantic meaning
534
362
  &.it-card-border-top {
535
363
  &::after {
536
- content: '';
537
- display: block;
538
364
  position: absolute;
539
- left: 0;
540
- right: 0;
541
- height: var(--#{$prefix}it-card-border-top-width);
542
365
  top: 0;
543
- background: var(--#{$prefix}it-card-border-top-color);
366
+ right: 0;
367
+ left: 0;
368
+ content: '';
369
+ display: block;
370
+ height: var(--#{$prefix}card-border-top-width);
371
+ background: var(--#{$prefix}card-border-top-color);
544
372
  }
545
373
 
546
374
  &.rounded {
@@ -551,28 +379,30 @@ article.it-card {
551
379
 
552
380
  // Border Top Color
553
381
  &.it-card-border-top-primary::after {
554
- --#{$prefix}it-card-border-top-color: #{$primary};
382
+ --#{$prefix}card-border-top-color: var(--#{$prefix}color-border-primary);
555
383
  }
556
384
 
557
385
  &.it-card-border-top-secondary::after {
558
- --#{$prefix}it-card-border-top-color: #{$secondary};
386
+ --#{$prefix}card-border-top-color: var(--#{$prefix}color-border-secondary);
559
387
  }
560
388
 
561
389
  &.it-card-border-top-success::after {
562
- --#{$prefix}it-card-border-top-color: #{$success};
390
+ --#{$prefix}card-border-top-color: var(--#{$prefix}color-border-success);
563
391
  }
564
392
 
565
393
  &.it-card-border-top-warning::after {
566
- --#{$prefix}it-card-border-top-color: #{$warning};
394
+ --#{$prefix}card-border-top-color: var(--#{$prefix}color-border-warning);
567
395
  }
568
396
 
569
397
  &.it-card-border-top-danger::after {
570
- --#{$prefix}it-card-border-top-color: #{$danger};
398
+ --#{$prefix}card-border-top-color: var(--#{$prefix}color-border-danger);
571
399
  }
572
400
  }
573
401
 
574
402
  // Card profile
403
+ /* stylelint-disable-next-line no-duplicate-selectors */
575
404
  &.it-card-profile {
405
+ /* stylelint-disable-next-line no-duplicate-selectors */
576
406
  .it-card-profile-header {
577
407
  display: flex;
578
408
  flex-direction: row;
@@ -593,9 +423,9 @@ article.it-card {
593
423
  }
594
424
  }
595
425
 
596
- margin-top: calc(2 * var(--#{$prefix}it-card-title-spacer-y));
597
- margin-bottom: var(--#{$prefix}it-card-title-spacer-y);
598
- padding: 0 var(--#{$prefix}it-card-spacer-x);
426
+ margin-top: calc(2 * var(--#{$prefix}card-title-spacer-y));
427
+ margin-bottom: var(--#{$prefix}card-title-spacer-y);
428
+ padding: 0 var(--#{$prefix}card-spacer-x);
599
429
 
600
430
  .it-card-profile {
601
431
  flex: 1;
@@ -613,15 +443,15 @@ article.it-card {
613
443
  margin-bottom: 0;
614
444
  }
615
445
  }
616
-
446
+ /* stylelint-disable-next-line no-duplicate-selectors */
617
447
  .it-card-profile-image {
618
448
  max-width: 80px;
619
449
  max-height: 80px;
620
-
450
+ /* stylelint-disable-next-line no-duplicate-selectors */
621
451
  figure {
622
452
  margin-bottom: 0;
623
453
  }
624
-
454
+ /* stylelint-disable-next-line no-duplicate-selectors */
625
455
  .it-card-profile-image-icon-wrapper {
626
456
  display: flex;
627
457
  justify-content: center;
@@ -635,154 +465,282 @@ article.it-card {
635
465
 
636
466
  // Card presentation
637
467
  &.it-card-banner {
468
+ padding: var(--#{$prefix}spacing-m); // override default padding of card
638
469
  align-items: center;
639
470
  text-align: center;
640
- padding-top: calc(var(--#{$prefix}it-card-quad-spacer-y) + var(--#{$prefix}it-card-spacer-y));
641
- padding-bottom: calc(var(--#{$prefix}it-card-double-spacer-y) + var(--#{$prefix}it-card-spacer-y));
471
+ gap: var(--#{$prefix}spacing-s);
642
472
 
643
- @include media-breakpoint-down(sm) {
644
- padding-top: calc(var(--#{$prefix}it-card-double-spacer-y) + var(--#{$prefix}it-card-spacer-y));
645
- padding-bottom: var(--#{$prefix}it-card-spacer-y);
473
+ @include media-breakpoint-up(lg) {
474
+ padding: var(--#{$prefix}spacing-xl);
475
+ }
476
+
477
+ .it-card-title {
478
+ margin-bottom: 0;
646
479
  }
647
480
 
648
481
  .it-card-body .it-card-subtitle {
649
- font-weight: 500 !important;
482
+ font-weight: var(--#{$prefix}font-weight-weak);
650
483
  }
651
484
 
652
485
  .it-card-banner-icon-wrapper {
486
+ // display: flex;
487
+ // flex-direction: column;
653
488
  order: -1;
654
- width: 100%;
655
- display: flex;
656
- flex-direction: column;
657
- align-items: center;
489
+ // margin-bottom: var(--#{$prefix}spacing-s);
490
+ // width: 100%;
658
491
  }
659
492
 
660
493
  .it-card-footer {
494
+ padding-top: var(--#{$prefix}card-spacing-y);
661
495
  border-top: 0;
662
- padding-top: var(--#{$prefix}it-card-spacer-y);
663
496
  }
664
497
  }
665
498
 
499
+ &.it-card-inline .it-card-inline-content,
500
+ &.it-card-inline-mini .it-card-inline-content {
501
+ display: flex;
502
+ flex-direction: column;
503
+ flex: 1; // make content area grow to fill available space
504
+ padding: var(--#{$prefix}card-spacing-y) var(--#{$prefix}card-spacing-x);
505
+ }
506
+
666
507
  // Layout inline
667
508
  &.it-card-inline {
668
- @mixin it-card-inline-layout {
669
- flex-direction: row !important;
509
+ // Layout changes from stacked to row on md and up
510
+ @include media-breakpoint-up(md) {
511
+ flex-direction: row;
512
+ flex: 1;
670
513
 
671
- &:not(.it-card-banner) {
672
- padding-bottom: 0 !important;
514
+ // Set image order to last for inline reverse
515
+ &.it-card-inline-reverse .it-card-image-wrapper {
516
+ order: 1;
673
517
  }
674
518
 
675
- .it-card-inline-content {
676
- display: flex;
677
- flex-direction: column;
678
- justify-content: space-between;
679
- flex-grow: 1;
680
-
681
- .it-card-footer {
682
- margin-bottom: calc(var(--#{$prefix}it-card-cap-padding-y) * 0.5);
683
- }
519
+ // Changes for inline cards except mini variant
520
+ &:not(.it-card-inline-mini) {
521
+ min-height: var(--#{$prefix}card-inline-min-height);
684
522
 
685
- .it-card-related.it-card-footer {
686
- margin-bottom: 0;
687
- padding-bottom: var(--#{$prefix}it-card-cap-padding-y);
523
+ &.it-card-image .it-card-image-wrapper,
524
+ &.it-card-image .it-card-inline-content {
525
+ width: 50%;
688
526
  }
689
527
  }
528
+ }
690
529
 
691
- &.it-card-image {
692
- .it-card-image-wrapper {
693
- display: flex;
530
+ // Reset bottom padding for inline cards except banner variant
531
+ &:not(.it-card-banner) {
532
+ padding-bottom: 0 !important;
533
+ }
694
534
 
695
- .ratio {
696
- position: absolute;
697
- width: 100%;
698
- height: 100%;
699
- left: 0;
700
- top: 0;
701
- }
535
+ // Image wrapper inside inline card
536
+ &.it-card-image {
537
+ .it-card-image-wrapper {
538
+ position: relative;
539
+ width: 100%;
540
+ overflow: hidden;
541
+ }
542
+
543
+ .ratio {
544
+ height: 100%;
545
+ }
702
546
 
703
- position: relative;
704
- overflow: hidden;
547
+ &.rounded {
548
+ .it-card-image-wrapper img {
549
+ border-top-right-radius: 0;
550
+ border-bottom-left-radius: var(--#{$prefix}card-border-radius-inner);
705
551
  }
706
552
 
707
553
  &.it-card-inline-reverse {
708
- order: inherit;
709
-
710
- .it-card-image-wrapper {
711
- order: 1;
554
+ .it-card-image-wrapper img {
555
+ border-top-left-radius: 0;
556
+ border-top-right-radius: var(--#{$prefix}card-border-radius-inner);
557
+ border-bottom-left-radius: 0;
558
+ border-bottom-right-radius: var(--#{$prefix}card-border-radius-inner);
712
559
  }
713
560
  }
561
+ }
562
+ }
714
563
 
715
- // Image border radius adjustments
716
- &.rounded {
717
- .it-card-image-wrapper img {
718
- border-top-right-radius: 0;
719
- border-bottom-left-radius: var(--#{$prefix}it-card-inner-border-radius);
720
- }
564
+ // Mini variant for inline cards
565
+ &.it-card-inline-mini {
566
+ flex-direction: row; // default to row for mini
567
+ min-height: var(--#{$prefix}card-inline-mini-min-height);
721
568
 
722
- &.it-card-inline-reverse {
723
- .it-card-image-wrapper img {
724
- border-top-right-radius: var(--#{$prefix}it-card-inner-border-radius);
725
- border-bottom-right-radius: var(--#{$prefix}it-card-inner-border-radius);
726
- border-top-left-radius: 0;
727
- border-bottom-left-radius: 0;
728
- }
729
- }
730
- }
569
+ // Set image order to last for inline mini reverse
570
+ &.it-card-inline-reverse .it-card-image-wrapper {
571
+ order: 1;
572
+ }
573
+
574
+ .it-card-inline-content {
575
+ display: flex; // Manage space between title and footer
576
+ justify-content: space-between; // Manage space between title and footer
577
+ width: 75%;
578
+ }
579
+
580
+ // Image wrapper fixed width
581
+ .it-card-image-wrapper {
582
+ width: 25%;
731
583
  }
584
+ }
732
585
 
733
- &.it-card-banner {
586
+ // Banner variant for inline cards
587
+ &.it-card-banner {
588
+ @include media-breakpoint-up(md) {
589
+ flex-direction: row;
734
590
  align-items: flex-start;
735
591
  text-align: left;
736
- min-height: auto !important;
737
- padding-left: var(--bs-it-card-spacer-x);
738
- padding-right: var(--bs-it-card-spacer-x);
592
+ }
739
593
 
740
- .it-card-title {
741
- margin-top: 0;
742
- }
594
+ .it-card-inline-content {
595
+ padding: 0;
596
+ gap: var(--#{$prefix}spacing-xs);
597
+ }
598
+
599
+ &.it-card-inline-reverse {
600
+ order: inherit;
743
601
 
744
602
  .it-card-banner-icon-wrapper {
745
- width: auto;
603
+ order: 1;
746
604
  }
605
+ }
747
606
 
748
- &.it-card-inline-reverse {
749
- order: inherit;
750
- padding-right: var(--bs-it-card-spacer-x);
751
- padding-left: 0;
752
-
753
- .it-card-banner-icon-wrapper {
754
- order: 1;
755
- }
756
- }
607
+ &.it-card-inline-mini {
608
+ flex-direction: row; // card inline mini banner always row
609
+ text-align: left;
610
+ align-items: flex-start;
757
611
  }
758
612
  }
613
+ }
614
+ }
759
615
 
760
- &.it-card-inline-mini {
761
- @include it-card-inline-layout;
762
- min-height: var(--#{$prefix}it-card-inline-mini-min-height);
616
+ // Card Lists
617
+ //
763
618
 
764
- &.it-card-image .it-card-image-wrapper {
765
- width: 25%;
619
+ // Special list for long groups of cards, bootstrap row/cols grid
620
+ ul.it-card-list {
621
+ margin: 0;
622
+ padding: 0;
623
+ list-style-type: none;
624
+
625
+ > li.col,
626
+ > li[class*='col-'] {
627
+ display: block;
628
+ margin-top: 0;
629
+ border: none;
630
+ background: transparent;
631
+ transition: none;
632
+ }
633
+ }
634
+
635
+ // Improved responsive it-card-group with a @container aware twist
636
+ .it-card-group {
637
+ --#{$prefix}card-group-gap: 24px;
638
+ display: flex;
639
+ flex-wrap: wrap;
640
+ gap: var(--#{$prefix}card-group-gap);
641
+
642
+ > .it-card {
643
+ margin: 0;
644
+ }
645
+
646
+ // Progressive enhancement with Container Queries
647
+ @supports (container-type: inline-size) {
648
+ // Only with .it-card-group-container-aware class
649
+ &.it-card-group-container-aware {
650
+ container-type: inline-size;
651
+
652
+ > .it-card {
653
+ // Container Queries
654
+ flex: 1 0 100%;
655
+
656
+ // Reset media queries from small and up
657
+ @include media-breakpoint-up(sm) {
658
+ flex: auto;
659
+ }
660
+
661
+ @container (min-width: 500px) {
662
+ flex: 0 0 calc(50% - 0.5 * var(--#{$prefix}card-group-gap));
663
+ }
664
+
665
+ @container (min-width: 800px) {
666
+ flex: 0 0 calc(33.333% - 0.667 * var(--#{$prefix}card-group-gap));
667
+ }
668
+
669
+ @container (min-width: 1100px) {
670
+ flex: 0 0 calc(25% - 0.75 * var(--#{$prefix}card-group-gap));
671
+ }
766
672
  }
767
673
 
768
- &.it-card-image .it-card-inline-content {
769
- width: 75%;
674
+ // Override specific columns in container mode
675
+ &.it-card-group-2-cols > .it-card {
676
+ @container (min-width: 500px) {
677
+ flex: 0 0 calc(50% - 0.5 * var(--#{$prefix}card-group-gap));
678
+ }
679
+ }
680
+
681
+ &.it-card-group-3-cols > .it-card {
682
+ @container (min-width: 800px) {
683
+ flex: 0 0 calc(33.333% - 0.667 * var(--#{$prefix}card-group-gap));
684
+ }
770
685
  }
771
686
  }
687
+ }
688
+ /* stylelint-disable-next-line no-duplicate-selectors */
689
+ > .it-card {
690
+ // Default stacked on mobile
691
+ flex: 0 0 calc(100% - var(--#{$prefix}card-group-gap));
692
+ // margin: calc(0.5 * var(--#{$prefix}card-group-gap));
772
693
 
694
+ // Responsive breakpoints
773
695
  @include media-breakpoint-up(sm) {
774
- &:not(.it-card-inline-mini) {
775
- @include it-card-inline-layout;
776
- min-height: var(--#{$prefix}it-card-inline-min-height);
696
+ flex: 0 0 calc(50% - 0.5 * var(--#{$prefix}card-group-gap));
697
+ }
777
698
 
778
- &.it-card-image .it-card-image-wrapper {
779
- width: 50%;
780
- }
699
+ @include media-breakpoint-up(md) {
700
+ flex: 0 0 calc(33.333% - 0.667 * var(--#{$prefix}card-group-gap));
701
+ }
781
702
 
782
- &.it-card-image .it-card-inline-content {
783
- width: 50%;
784
- }
785
- }
703
+ @include media-breakpoint-up(lg) {
704
+ flex: 0 0 calc(25% - 0.75 * var(--#{$prefix}card-group-gap));
705
+ }
706
+ }
707
+
708
+ // Predefined column layouts
709
+ &.it-card-group-2-cols > .it-card,
710
+ &.it-card-group-3-cols > .it-card,
711
+ &.it-card-group-4-cols > .it-card {
712
+ @include media-breakpoint-up(sm) {
713
+ flex: 0 0 calc(50% - 0.5 * var(--#{$prefix}card-group-gap));
714
+ }
715
+ }
716
+
717
+ &.it-card-group-3-cols > .it-card {
718
+ @include media-breakpoint-up(md) {
719
+ flex: 0 0 calc(33.333% - 0.667 * var(--#{$prefix}card-group-gap));
720
+ }
721
+ }
722
+
723
+ &.it-card-group-4-cols > .it-card {
724
+ @include media-breakpoint-up(md) {
725
+ flex: 0 0 calc(33.333% - 0.667 * var(--#{$prefix}card-group-gap));
786
726
  }
727
+
728
+ @include media-breakpoint-up(lg) {
729
+ flex: 0 0 calc(25% - 0.75 * var(--#{$prefix}card-group-gap));
730
+ }
731
+ }
732
+
733
+ // Option for equal height cards
734
+ &.it-card-group-equal-height > .it-card {
735
+ height: 100%;
736
+ }
737
+
738
+ // Options for alignments
739
+ &.it-card-group-center {
740
+ justify-content: center;
741
+ }
742
+
743
+ &.it-card-group-end {
744
+ justify-content: flex-end;
787
745
  }
788
746
  }