@graupl/core 1.0.0-beta.22 → 1.0.0-beta.24
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.
- package/dist/css/base/button.css +2 -2
- package/dist/css/base/button.css.map +1 -1
- package/dist/css/base/form.css +2 -2
- package/dist/css/base/form.css.map +1 -1
- package/dist/css/base/link.css +2 -2
- package/dist/css/base/link.css.map +1 -1
- package/dist/css/base/table.css +2 -2
- package/dist/css/base/table.css.map +1 -1
- package/dist/css/base.css +2 -2
- package/dist/css/base.css.map +1 -1
- package/dist/css/component/accordion.css +2 -5
- package/dist/css/component/accordion.css.map +1 -1
- package/dist/css/component/alert.css +2 -2
- package/dist/css/component/alert.css.map +1 -1
- package/dist/css/component/badge.css +2 -2
- package/dist/css/component/badge.css.map +1 -1
- package/dist/css/component/card.css +2 -2
- package/dist/css/component/card.css.map +1 -1
- package/dist/css/component/carousel.css +2 -2
- package/dist/css/component/carousel.css.map +1 -1
- package/dist/css/component/disclosure.css +2 -2
- package/dist/css/component/disclosure.css.map +1 -1
- package/dist/css/component/input-group.css +2 -2
- package/dist/css/component/input-group.css.map +1 -1
- package/dist/css/component/list.css +2 -2
- package/dist/css/component/list.css.map +1 -1
- package/dist/css/component/menu.css +2 -2
- package/dist/css/component/menu.css.map +1 -1
- package/dist/css/component/navigation.css +2 -2
- package/dist/css/component/navigation.css.map +1 -1
- package/dist/css/component.css +2 -5
- package/dist/css/component.css.map +1 -1
- package/dist/css/graupl.css +2 -5
- package/dist/css/graupl.css.map +1 -1
- package/dist/css/init.css +2 -2
- package/dist/css/init.css.map +1 -1
- package/dist/css/layout/columns.css +2 -2
- package/dist/css/layout/columns.css.map +1 -1
- package/dist/css/layout/container.css +2 -2
- package/dist/css/layout/container.css.map +1 -1
- package/dist/css/layout/flex-columns.css +2 -2
- package/dist/css/layout/flex-columns.css.map +1 -1
- package/dist/css/layout.css +2 -5
- package/dist/css/layout.css.map +1 -1
- package/dist/css/normalize.css +2 -2
- package/dist/css/normalize.css.map +1 -1
- package/dist/css/state/focus.css +2 -2
- package/dist/css/state/focus.css.map +1 -1
- package/dist/css/state.css +2 -2
- package/dist/css/state.css.map +1 -1
- package/dist/css/theme/color.css +2 -2
- package/dist/css/theme/color.css.map +1 -1
- package/dist/css/theme/typography.css +2 -2
- package/dist/css/theme/typography.css.map +1 -1
- package/dist/css/theme.css +2 -2
- package/dist/css/theme.css.map +1 -1
- package/dist/css/utilities/alignment.css +1 -1
- package/dist/css/utilities/alignment.css.map +1 -1
- package/dist/css/utilities/background.css +2 -2
- package/dist/css/utilities/background.css.map +1 -1
- package/dist/css/utilities/border.css +2 -2
- package/dist/css/utilities/border.css.map +1 -1
- package/dist/css/utilities/color.css +2 -2
- package/dist/css/utilities/color.css.map +1 -1
- package/dist/css/utilities/container.css +1 -1
- package/dist/css/utilities/container.css.map +1 -1
- package/dist/css/utilities/display.css +2 -2
- package/dist/css/utilities/display.css.map +1 -1
- package/dist/css/utilities/flex.css +2 -2
- package/dist/css/utilities/flex.css.map +1 -1
- package/dist/css/utilities/gradient.css +2 -2
- package/dist/css/utilities/gradient.css.map +1 -1
- package/dist/css/utilities/height.css +2 -2
- package/dist/css/utilities/height.css.map +1 -1
- package/dist/css/utilities/inset.css +2 -2
- package/dist/css/utilities/inset.css.map +1 -1
- package/dist/css/utilities/justification.css +1 -1
- package/dist/css/utilities/justification.css.map +1 -1
- package/dist/css/utilities/list.css +1 -1
- package/dist/css/utilities/list.css.map +1 -1
- package/dist/css/utilities/order.css +2 -2
- package/dist/css/utilities/order.css.map +1 -1
- package/dist/css/utilities/position.css +2 -2
- package/dist/css/utilities/position.css.map +1 -1
- package/dist/css/utilities/ratio.css +2 -2
- package/dist/css/utilities/ratio.css.map +1 -1
- package/dist/css/utilities/spacing.css +2 -2
- package/dist/css/utilities/spacing.css.map +1 -1
- package/dist/css/utilities/typography.css +2 -2
- package/dist/css/utilities/typography.css.map +1 -1
- package/dist/css/utilities/visibility.css +2 -2
- package/dist/css/utilities/visibility.css.map +1 -1
- package/dist/css/utilities/visually-hidden.css +2 -2
- package/dist/css/utilities/visually-hidden.css.map +1 -1
- package/dist/css/utilities/width.css +2 -2
- package/dist/css/utilities/width.css.map +1 -1
- package/dist/css/utilities/z-index.css +1 -1
- package/dist/css/utilities/z-index.css.map +1 -1
- package/dist/css/utilities.css +2 -2
- package/dist/css/utilities.css.map +1 -1
- package/dist/js/accordion.js.map +1 -1
- package/dist/js/alert.js.map +1 -1
- package/dist/js/carousel.js.map +1 -1
- package/dist/js/component/accordion.cjs.js.map +1 -1
- package/dist/js/component/accordion.es.js.map +1 -1
- package/dist/js/component/accordion.iife.js.map +1 -1
- package/dist/js/component/alert.cjs.js.map +1 -1
- package/dist/js/component/alert.es.js.map +1 -1
- package/dist/js/component/alert.iife.js.map +1 -1
- package/dist/js/component/carousel.cjs.js.map +1 -1
- package/dist/js/component/carousel.es.js.map +1 -1
- package/dist/js/component/carousel.iife.js.map +1 -1
- package/dist/js/component/disclosure.cjs.js +2 -2
- package/dist/js/component/disclosure.cjs.js.map +1 -1
- package/dist/js/component/disclosure.es.js +2 -2
- package/dist/js/component/disclosure.es.js.map +1 -1
- package/dist/js/component/disclosure.iife.js +2 -2
- package/dist/js/component/disclosure.iife.js.map +1 -1
- package/dist/js/component/tabs.cjs.js +5 -0
- package/dist/js/component/tabs.cjs.js.map +1 -0
- package/dist/js/component/tabs.es.js +5 -0
- package/dist/js/component/tabs.es.js.map +1 -0
- package/dist/js/component/tabs.iife.js +5 -0
- package/dist/js/component/tabs.iife.js.map +1 -0
- package/dist/js/disclosure.js +2 -2
- package/dist/js/disclosure.js.map +1 -1
- package/dist/js/generator/accordion.cjs.js.map +1 -1
- package/dist/js/generator/accordion.es.js.map +1 -1
- package/dist/js/generator/accordion.iife.js.map +1 -1
- package/dist/js/generator/alert.cjs.js.map +1 -1
- package/dist/js/generator/alert.es.js.map +1 -1
- package/dist/js/generator/alert.iife.js.map +1 -1
- package/dist/js/generator/carousel.cjs.js.map +1 -1
- package/dist/js/generator/carousel.es.js.map +1 -1
- package/dist/js/generator/carousel.iife.js.map +1 -1
- package/dist/js/generator/disclosure.cjs.js +2 -2
- package/dist/js/generator/disclosure.cjs.js.map +1 -1
- package/dist/js/generator/disclosure.es.js +2 -2
- package/dist/js/generator/disclosure.es.js.map +1 -1
- package/dist/js/generator/disclosure.iife.js +2 -2
- package/dist/js/generator/disclosure.iife.js.map +1 -1
- package/dist/js/generator/navigation.cjs.js.map +1 -1
- package/dist/js/generator/navigation.es.js.map +1 -1
- package/dist/js/generator/navigation.iife.js.map +1 -1
- package/dist/js/generator/tabs.cjs.js +5 -0
- package/dist/js/generator/tabs.cjs.js.map +1 -0
- package/dist/js/generator/tabs.es.js +5 -0
- package/dist/js/generator/tabs.es.js.map +1 -0
- package/dist/js/generator/tabs.iife.js +5 -0
- package/dist/js/generator/tabs.iife.js.map +1 -0
- package/dist/js/graupl.js +5 -5
- package/dist/js/graupl.js.map +1 -1
- package/dist/js/navigation.js.map +1 -1
- package/dist/js/tabs.js +5 -0
- package/dist/js/tabs.js.map +1 -0
- package/package.json +4 -3
- package/src/js/disclosure/Disclosure.js +25 -45
- package/src/js/domHelpers.js +39 -22
- package/src/js/tabs/TabToggle.js +378 -0
- package/src/js/tabs/Tabs.js +1091 -0
- package/src/js/tabs/generator.js +32 -0
- package/src/js/tabs/index.js +5 -0
- package/src/scss/_defaults.scss +21 -88
- package/src/scss/_variables.scss +70 -0
- package/src/scss/base/button/_defaults.scss +2 -24
- package/src/scss/base/button/_index.scss +53 -52
- package/src/scss/base/button/_mixins.scss +24 -58
- package/src/scss/base/button/_variables.scss +139 -0
- package/src/scss/base/form/_defaults.scss +72 -2
- package/src/scss/base/form/_index.scss +196 -70
- package/src/scss/base/form/_variables.scss +166 -0
- package/src/scss/base/link/_defaults.scss +31 -0
- package/src/scss/base/link/_index.scss +177 -172
- package/src/scss/base/link/_variables.scss +215 -0
- package/src/scss/base/table/_defaults.scss +1 -11
- package/src/scss/base/table/_index.scss +126 -117
- package/src/scss/base/table/_variables.scss +214 -3
- package/src/scss/component/_index.scss +1 -0
- package/src/scss/component/accordion/_defaults.scss +73 -22
- package/src/scss/component/accordion/_index.scss +437 -62
- package/src/scss/component/accordion/_variables.scss +527 -101
- package/src/scss/component/alert/_defaults.scss +23 -32
- package/src/scss/component/alert/_index.scss +236 -30
- package/src/scss/component/alert/_variables.scss +155 -6
- package/src/scss/component/badge/_defaults.scss +1 -0
- package/src/scss/component/badge/_index.scss +25 -28
- package/src/scss/component/badge/_variables.scss +66 -2
- package/src/scss/component/card/_defaults.scss +64 -13
- package/src/scss/component/card/_index.scss +276 -30
- package/src/scss/component/card/_variables.scss +132 -0
- package/src/scss/component/carousel/_defaults.scss +73 -15
- package/src/scss/component/carousel/_index.scss +357 -41
- package/src/scss/component/carousel/_variables.scss +391 -0
- package/src/scss/component/disclosure/_index.scss +4 -4
- package/src/scss/component/disclosure/_variables.scss +127 -2
- package/src/scss/component/input-group/_defaults.scss +10 -3
- package/src/scss/component/input-group/_index.scss +72 -4
- package/src/scss/component/input-group/_variables.scss +37 -0
- package/src/scss/component/list/_defaults.scss +35 -2
- package/src/scss/component/list/_index.scss +159 -5
- package/src/scss/component/list/_variables.scss +152 -0
- package/src/scss/component/menu/_defaults.scss +49 -7
- package/src/scss/component/menu/_index.scss +325 -99
- package/src/scss/component/menu/_variables.scss +484 -1
- package/src/scss/component/navigation/_defaults.scss +45 -3
- package/src/scss/component/navigation/_index.scss +249 -98
- package/src/scss/component/navigation/_variables.scss +334 -5
- package/src/scss/component/tabs/_defaults.scss +82 -0
- package/src/scss/component/tabs/_index.scss +497 -0
- package/src/scss/component/tabs/_variables.scss +974 -0
- package/src/scss/layout/columns/_defaults.scss +5 -3
- package/src/scss/layout/columns/_index.scss +27 -21
- package/src/scss/layout/columns/_variables.scss +13 -0
- package/src/scss/layout/container/_defaults.scss +28 -11
- package/src/scss/layout/container/_index.scss +305 -161
- package/src/scss/layout/container/_variables.scss +148 -15
- package/src/scss/layout/flex-columns/_defaults.scss +5 -3
- package/src/scss/layout/flex-columns/_index.scss +28 -20
- package/src/scss/layout/flex-columns/_variables.scss +9 -0
- package/src/scss/mixins/_state.scss +37 -0
- package/src/scss/mixins/_theme.scss +36 -1
- package/src/scss/state/focus/_index.scss +17 -12
- package/src/scss/state/focus/_variables.scss +30 -4
- package/src/scss/theme/color/_defaults.scss +6 -35
- package/src/scss/theme/color/_index.scss +167 -1
- package/src/scss/theme/color/_variables.scss +155 -0
- package/src/scss/theme/typography/_defaults.scss +26 -19
- package/src/scss/theme/typography/_index.scss +176 -20
- package/src/scss/theme/typography/_variables.scss +186 -0
- package/src/scss/utilities/_template/_index.scss +0 -1
- package/src/scss/utilities/alignment/_defaults.scss +0 -33
- package/src/scss/utilities/alignment/_index.scss +24 -25
- package/src/scss/utilities/background/_defaults.scss +0 -77
- package/src/scss/utilities/background/_index.scss +32 -37
- package/src/scss/utilities/border/_defaults.scss +0 -33
- package/src/scss/utilities/border/_index.scss +25 -26
- package/src/scss/utilities/color/_defaults.scss +0 -19
- package/src/scss/utilities/color/_index.scss +22 -22
- package/src/scss/utilities/container/_defaults.scss +0 -11
- package/src/scss/utilities/container/_index.scss +20 -19
- package/src/scss/utilities/display/_defaults.scss +0 -11
- package/src/scss/utilities/display/_index.scss +20 -19
- package/src/scss/utilities/flex/_defaults.scss +0 -55
- package/src/scss/utilities/flex/_index.scss +28 -31
- package/src/scss/utilities/gradient/_defaults.scss +0 -28
- package/src/scss/utilities/gradient/_index.scss +27 -28
- package/src/scss/utilities/gradient/_variables.scss +15 -0
- package/src/scss/utilities/height/_defaults.scss +0 -8
- package/src/scss/utilities/height/_index.scss +22 -21
- package/src/scss/utilities/inset/_defaults.scss +0 -16
- package/src/scss/utilities/inset/_index.scss +20 -20
- package/src/scss/utilities/justification/_defaults.scss +0 -33
- package/src/scss/utilities/justification/_index.scss +24 -25
- package/src/scss/utilities/list/_defaults.scss +0 -22
- package/src/scss/utilities/list/_index.scss +22 -22
- package/src/scss/utilities/order/_defaults.scss +0 -8
- package/src/scss/utilities/order/_index.scss +20 -19
- package/src/scss/utilities/position/_defaults.scss +0 -11
- package/src/scss/utilities/position/_index.scss +20 -19
- package/src/scss/utilities/ratio/_defaults.scss +0 -8
- package/src/scss/utilities/ratio/_index.scss +22 -21
- package/src/scss/utilities/ratio/_variables.scss +6 -0
- package/src/scss/utilities/spacing/_defaults.scss +0 -11
- package/src/scss/utilities/spacing/_index.scss +18 -17
- package/src/scss/utilities/typography/_defaults.scss +0 -22
- package/src/scss/utilities/typography/_index.scss +27 -26
- package/src/scss/utilities/visibility/_defaults.scss +0 -11
- package/src/scss/utilities/visibility/_index.scss +19 -18
- package/src/scss/utilities/visually-hidden/_index.scss +19 -17
- package/src/scss/utilities/width/_defaults.scss +0 -8
- package/src/scss/utilities/width/_index.scss +21 -20
- package/src/scss/utilities/z-index/_defaults.scss +0 -11
- package/src/scss/utilities/z-index/_index.scss +19 -18
|
@@ -6,20 +6,43 @@
|
|
|
6
6
|
// They should not be used to define direct property values (i.e. font-size, color, etc.).
|
|
7
7
|
// Those should be defined as custom properties in the `_variables.scss` file.
|
|
8
8
|
|
|
9
|
+
@use "../../defaults" as root-defaults;
|
|
10
|
+
@use "../../functions/theme";
|
|
11
|
+
@use "sass:map";
|
|
12
|
+
|
|
9
13
|
// Card selectors.
|
|
10
|
-
$
|
|
11
|
-
$
|
|
12
|
-
$
|
|
13
|
-
$
|
|
14
|
-
$card-
|
|
15
|
-
$card-
|
|
16
|
-
$card-
|
|
17
|
-
$
|
|
18
|
-
$
|
|
19
|
-
$
|
|
20
|
-
$
|
|
21
|
-
$
|
|
22
|
-
$
|
|
14
|
+
$selector-base: root-defaults.$component-selector-base !default;
|
|
15
|
+
$modifier-selector-base: root-defaults.$modifier-selector-base !default;
|
|
16
|
+
$generate-base-theme-map: root-defaults.$generate-base-theme-maps !default;
|
|
17
|
+
$themeable: false !default;
|
|
18
|
+
$card-selector-base: $selector-base !default;
|
|
19
|
+
$card-selector: "card" !default;
|
|
20
|
+
$card-theme-selector-base: $modifier-selector-base !default;
|
|
21
|
+
$card-theme-selector-prefix: "" !default;
|
|
22
|
+
$card-image-selector-base: $selector-base !default;
|
|
23
|
+
$card-image-selector: "card-image" !default;
|
|
24
|
+
$card-content-selector-base: $selector-base !default;
|
|
25
|
+
$card-content-selector: "card-content" !default;
|
|
26
|
+
$card-body-selector-base: $selector-base !default;
|
|
27
|
+
$card-body-selector: "card-body" !default;
|
|
28
|
+
$card-header-selector-base: $selector-base !default;
|
|
29
|
+
$card-header-selector: "card-header" !default;
|
|
30
|
+
$card-footer-selector-base: $selector-base !default;
|
|
31
|
+
$card-footer-selector: "card-footer" !default;
|
|
32
|
+
$card-title-selector-base: $selector-base !default;
|
|
33
|
+
$card-title-selector: "card-title" !default;
|
|
34
|
+
$horizontal-card-selector-base: $modifier-selector-base !default;
|
|
35
|
+
$horizontal-card-selector: "horizontal" !default;
|
|
36
|
+
$horizontal-card-left-selector-base: $modifier-selector-base !default;
|
|
37
|
+
$horizontal-card-left-selector: "left" !default;
|
|
38
|
+
$horizontal-card-right-selector-base: $modifier-selector-base !default;
|
|
39
|
+
$horizontal-card-right-selector: "right" !default;
|
|
40
|
+
$vertical-card-top-selector-base: $modifier-selector-base !default;
|
|
41
|
+
$vertical-card-top-selector: "top" !default;
|
|
42
|
+
$vertical-card-bottom-selector-base: $modifier-selector-base !default;
|
|
43
|
+
$vertical-card-bottom-selector: "bottom" !default;
|
|
44
|
+
$inverse-card-selector-base: $modifier-selector-base !default;
|
|
45
|
+
$inverse-card-selector: "inverse" !default;
|
|
23
46
|
|
|
24
47
|
// Card properties.
|
|
25
48
|
$card-transform: none !default;
|
|
@@ -30,3 +53,31 @@ $card-content-ratio: 1fr !default;
|
|
|
30
53
|
$card-image-ratio: auto !default;
|
|
31
54
|
$horizontal-card-content-ratio: 3fr !default;
|
|
32
55
|
$horizontal-card-image-ratio: 2fr !default;
|
|
56
|
+
|
|
57
|
+
// Card transform properties.
|
|
58
|
+
$card-item-content-transform: translateY(-100%) !default;
|
|
59
|
+
$card-item-content-open-transform: translateY(0) !default;
|
|
60
|
+
|
|
61
|
+
// Card state theme defaults.
|
|
62
|
+
// This map is used to define the default colour shades for the
|
|
63
|
+
// themed card bases.
|
|
64
|
+
//
|
|
65
|
+
// e.g.
|
|
66
|
+
// Primary cards will use primary--900 as the text colour and primary--800 as the title colour.
|
|
67
|
+
//
|
|
68
|
+
// Secondary/tertiary cards will use the same shade for their respective colours.
|
|
69
|
+
$-card-theme-mappings: (
|
|
70
|
+
color: 900,
|
|
71
|
+
title-color: 700,
|
|
72
|
+
border-color: 700,
|
|
73
|
+
);
|
|
74
|
+
$card-theme-mappings: () !default;
|
|
75
|
+
|
|
76
|
+
// Merge the custom card state theme map with the default one.
|
|
77
|
+
@if $generate-base-theme-map {
|
|
78
|
+
$card-theme-mappings: map.merge($-card-theme-mappings, $card-theme-mappings);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
$-card-theme-map: theme.generate-property-map($card-theme-mappings);
|
|
82
|
+
$card-theme-map: () !default;
|
|
83
|
+
$card-theme-map: map.deep-merge($-card-theme-map, $card-theme-map);
|
|
@@ -1,14 +1,226 @@
|
|
|
1
1
|
// @graupl/core card component styles.
|
|
2
|
+
//
|
|
3
|
+
// This module provides the card component styles for vertical and horizontal layouts.
|
|
4
|
+
//
|
|
5
|
+
// The following selectors are generated by default:
|
|
6
|
+
// - `.card`: The card container.
|
|
7
|
+
// - `.card-image`: The card image wrapper.
|
|
8
|
+
// - `.card-content`: The card content wrapper.
|
|
9
|
+
// - `.card-body`: The main body region.
|
|
10
|
+
// - `.card-header`: The header region.
|
|
11
|
+
// - `.card-footer`: The footer region.
|
|
12
|
+
// - `.card-title`: The title element.
|
|
13
|
+
// - `.horizontal`: A modifier to use a horizontal layout for the card.
|
|
14
|
+
// - `.left`: A modifier to position the image on the left in a horizontal layout.
|
|
15
|
+
// - `.right`: A modifier to position the image on the right in a horizontal layout.
|
|
16
|
+
// - `.top`: A modifier to position the image on the top in a vertical layout.
|
|
17
|
+
// - `.bottom`: A modifier to position the image on the bottom in a vertical layout.
|
|
18
|
+
// - `.inverse`: A modifier to invert the image/content positioning.
|
|
19
|
+
//
|
|
20
|
+
// The following custom properties can be used to customize the card component:
|
|
21
|
+
// | Property | Description | Default Value |
|
|
22
|
+
// | --- | --- | --- |
|
|
23
|
+
// | `--graupl-card-padding-x` | Horizontal padding of the card. | `var(--graupl-spacer-0)` |
|
|
24
|
+
// | `--graupl-card-padding-y` | Vertical padding of the card. | `var(--graupl-spacer-0)` |
|
|
25
|
+
// | `--graupl-card-padding` | Shorthand padding of the card. | `var(--graupl-card-padding-y) var(--graupl-card-padding-x)` |
|
|
26
|
+
// | `--graupl-card-transition` | Transition applied to the card. | `transform var(--graupl-transition-duration-fast) var(--graupl-transition-timing-function)` |
|
|
27
|
+
// | `--graupl-card-transition-reduced-motion` | Transition when reduced motion is enabled. | `none` |
|
|
28
|
+
// | `--graupl-card-transform` | Base transform for the card. | `none` |
|
|
29
|
+
// | `--graupl-card-hover-transform` | Transform for hovered cards. | `none` |
|
|
30
|
+
// | `--graupl-card-column-gap` | Column gap inside the card. | `var(--graupl-spacer-0)` |
|
|
31
|
+
// | `--graupl-card-row-gap` | Row gap inside the card. | `var(--graupl-spacer-0)` |
|
|
32
|
+
// | `--graupl-card-gap` | Gap inside the card (column/row). | `var(--graupl-card-column-gap) var(--graupl-card-row-gap)` |
|
|
33
|
+
// | `--graupl-card-background` | Background colour of the card. | `var(--graupl-background)` |
|
|
34
|
+
// | `--graupl-card-color` | Text colour of the card. | `var(--graupl-color)` |
|
|
35
|
+
// | `--graupl-card-border-width` | Border width of the card. | `var(--graupl-border-top-width) var(--graupl-border-right-width) var(--graupl-border-bottom-width) var(--graupl-border-left-width)` |
|
|
36
|
+
// | `--graupl-card-border-style` | Border style of the card. | `var(--graupl-border-top-style) var(--graupl-border-right-style) var(--graupl-border-bottom-style) var(--graupl-border-left-style)` |
|
|
37
|
+
// | `--graupl-card-border-radius` | Border radius of the card. | `var(--graupl-border-top-left-radius) var(--graupl-border-top-right-radius) var(--graupl-border-bottom-right-radius) var(--graupl-border-bottom-left-radius)` |
|
|
38
|
+
// | `--graupl-card-border-color` | Border colour of the card. | `var(--graupl-card-color)` |
|
|
39
|
+
// | `--graupl-card-content-ratio` | Grid row ratio used for card content. | `1fr` |
|
|
40
|
+
// | `--graupl-card-image-ratio` | Grid row ratio used for card images. | `auto` |
|
|
41
|
+
// | `--graupl-horizontal-card-content-ratio` | Grid column ratio for horizontal cards (content area). | `3fr` |
|
|
42
|
+
// | `--graupl-horizontal-card-image-ratio` | Grid column ratio for horizontal cards (image area). | `2fr` |
|
|
43
|
+
// | `--graupl-card-image-padding` | Padding for the card image wrapper. | `var(--graupl-spacer-0) var(--graupl-spacer-0)` |
|
|
44
|
+
// | `--graupl-card-content-padding` | Padding for the card content wrapper. | `var(--graupl-spacer-3) var(--graupl-spacer-5)` |
|
|
45
|
+
// | `--graupl-card-content-gap` | Gap inside the card content (column/row). | `var(--graupl-card-content-column-gap) var(--graupl-card-content-row-gap)` |
|
|
46
|
+
// | `--graupl-card-title-color` | Text colour of the card title. | `var(--graupl-card-color)` |
|
|
47
|
+
// | `--graupl-card-title-font-size` | Font size of the card title. | `var(--graupl-h4)` |
|
|
48
|
+
// | `--graupl-card-title-font-weight` | Font weight of the card title. | `var(--graupl-font-weight-h4)` |
|
|
49
|
+
// | `--graupl-card-title-font-family` | Font family of the card title. | `var(--graupl-font-family-h4)` |
|
|
50
|
+
// | `--graupl-card-title-line-height` | Line height of the card title. | `var(--graupl-line-height-h4)` |
|
|
51
|
+
//
|
|
52
|
+
// The following sass variables can be used to customize the generation of the card component:
|
|
53
|
+
// | Variable | Description | Default Value |
|
|
54
|
+
// | --- | --- | --- |
|
|
55
|
+
// | `$selector-base` | Selector base for the component. | `"."` |
|
|
56
|
+
// | `$modifier-selector-base` | Selector base for component modifiers. | `"."` |
|
|
57
|
+
// | `$generate-base-theme-map` | A flag to generate the base theme maps for accordion variants. | `true` |
|
|
58
|
+
// | `$themeable` | Flag to generate theme modifiers. | `false` |
|
|
59
|
+
// | `$card-selector-base` | Selector base for the card container. | `$selector-base` |
|
|
60
|
+
// | `$card-selector` | Selector for the card container. | `"card"` |
|
|
61
|
+
// | `$card-image-selector-base` | Selector base for the image wrapper. | `$selector-base` |
|
|
62
|
+
// | `$card-image-selector` | Selector for the image wrapper. | `"card-image"` |
|
|
63
|
+
// | `$card-content-selector-base` | Selector base for the content wrapper. | `$selector-base` |
|
|
64
|
+
// | `$card-content-selector` | Selector for the content wrapper. | `"card-content"` |
|
|
65
|
+
// | `$card-body-selector-base` | Selector base for the body region. | `$selector-base` |
|
|
66
|
+
// | `$card-body-selector` | Selector for the body region. | `"card-body"` |
|
|
67
|
+
// | `$card-header-selector-base` | Selector base for the header region. | `$selector-base` |
|
|
68
|
+
// | `$card-header-selector` | Selector for the header region. | `"card-header"` |
|
|
69
|
+
// | `$card-footer-selector-base` | Selector base for the footer region. | `$selector-base` |
|
|
70
|
+
// | `$card-footer-selector` | Selector for the footer region. | `"card-footer"` |
|
|
71
|
+
// | `$card-title-selector-base` | Selector base for the title element. | `$selector-base` |
|
|
72
|
+
// | `$card-title-selector` | Selector for the title element. | `"card-title"` |
|
|
73
|
+
// | `$horizontal-card-selector-base` | Selector base for horizontal layout modifier. | `"."` |
|
|
74
|
+
// | `$horizontal-card-selector` | Selector for horizontal layout modifier. | `"horizontal"` |
|
|
75
|
+
// | `$horizontal-card-left-selector-base` | Selector base for left modifier. | `"."` |
|
|
76
|
+
// | `$horizontal-card-left-selector` | Selector for left modifier. | `"left"` |
|
|
77
|
+
// | `$horizontal-card-right-selector-base` | Selector base for right modifier. | `"."` |
|
|
78
|
+
// | `$horizontal-card-right-selector` | Selector for right modifier. | `"right"` |
|
|
79
|
+
// | `$vertical-card-top-selector-base` | Selector base for top modifier. | `"."` |
|
|
80
|
+
// | `$vertical-card-top-selector` | Selector for top modifier. | `"top"` |
|
|
81
|
+
// | `$vertical-card-bottom-selector-base` | Selector base for bottom modifier. | `"."` |
|
|
82
|
+
// | `$vertical-card-bottom-selector` | Selector for bottom modifier. | `"bottom"` |
|
|
83
|
+
// | `$inverse-card-selector-base` | Selector base for inverse layout modifier. | `"."` |
|
|
84
|
+
// | `$inverse-card-selector` | Selector for inverse layout modifier. | `"inverse"` |
|
|
85
|
+
// | `$card-transform` | Base transform for the card. | `none` |
|
|
86
|
+
// | `$card-hover-transform` | Hover transform for the card. | `none` |
|
|
87
|
+
// | `$card-content-ratio` | Grid ratio for content rows. | `1fr` |
|
|
88
|
+
// | `$card-image-ratio` | Grid ratio for image rows. | `auto` |
|
|
89
|
+
// | `$horizontal-card-content-ratio` | Grid ratio for content in horizontal layout. | `3fr` |
|
|
90
|
+
// | `$horizontal-card-image-ratio` | Grid ratio for images in horizontal layout. | `2fr` |
|
|
91
|
+
// | `$card-theme-mappings` | A map of properties and color shades used generate all card variants. | `()` |
|
|
92
|
+
// | `$card-theme-map` | A map of all properties, colors, and color shades used to generate all card variants. | `()` |
|
|
93
|
+
//
|
|
94
|
+
// ## Using `$card-theme-mappings`
|
|
95
|
+
//
|
|
96
|
+
// `$card-theme-mappings` is a 1-level map of properties and shade values.
|
|
97
|
+
//
|
|
98
|
+
// e.g.
|
|
99
|
+
// ```scss
|
|
100
|
+
// $card-theme-mappings: (
|
|
101
|
+
// border-color: 700,
|
|
102
|
+
// )
|
|
103
|
+
// ```
|
|
104
|
+
//
|
|
105
|
+
// This directly[1] maps to all card variants, telling them what shade to use for said property.
|
|
106
|
+
// All card variants will use the following based on the example above:
|
|
107
|
+
// - Primary cards will have their `--graupl-card-border-color` property set to `--graupl-theme-active--primary--700`,
|
|
108
|
+
// - Secondary cards will have their `--graupl-card-border-color` property set to `--graupl-theme-active--secondary--700`, and
|
|
109
|
+
// - Tertiary cards will have their `--graupl-card-border-color` property set to `--graupl-theme-active--tertiary--700`.
|
|
110
|
+
//
|
|
111
|
+
// You can use this to customize _all_ cards variants in the same way.
|
|
112
|
+
//
|
|
113
|
+
// For example, if you use the following map:
|
|
114
|
+
// ```scss
|
|
115
|
+
// $card-theme-mappings: (
|
|
116
|
+
// border-color: 500,
|
|
117
|
+
// )
|
|
118
|
+
// ```
|
|
119
|
+
//
|
|
120
|
+
// All card variants will use the following:
|
|
121
|
+
// - Primary cards will have their `--graupl-card-border-color` property set to `--graupl-theme-active--primary--500`,
|
|
122
|
+
// - Secondary cards will have their `--graupl-card-border-color` property set to `--graupl-theme-active--secondary--500`, and
|
|
123
|
+
// - Tertiary cards will have their `--graupl-card-border-color` property set to `--graupl-theme-active--tertiary--500`.
|
|
124
|
+
//
|
|
125
|
+
// [1] `$card-theme-mappings` gets parsed into a larger, more explicit map: `$card-theme-map`.
|
|
126
|
+
//
|
|
127
|
+
// Using `$card-theme-map`
|
|
128
|
+
//
|
|
129
|
+
// `$card-theme-map` is a multi-level map of properties, colors, and shade values.
|
|
130
|
+
//
|
|
131
|
+
// e.g.
|
|
132
|
+
// ```scss
|
|
133
|
+
// $card-theme-map: (
|
|
134
|
+
// primary: (
|
|
135
|
+
// border-color: (
|
|
136
|
+
// color: primary,
|
|
137
|
+
// shade: 700
|
|
138
|
+
// ),
|
|
139
|
+
// ),
|
|
140
|
+
// secondary: (
|
|
141
|
+
// border-color: (
|
|
142
|
+
// color: secondary,
|
|
143
|
+
// shade: 700
|
|
144
|
+
// ),
|
|
145
|
+
// ),
|
|
146
|
+
// tertiary: (
|
|
147
|
+
// border-color: (
|
|
148
|
+
// color: tertiary,
|
|
149
|
+
// shade: 700
|
|
150
|
+
// ),
|
|
151
|
+
// ),
|
|
152
|
+
// )
|
|
153
|
+
// ```
|
|
154
|
+
//
|
|
155
|
+
// This directly maps to all card variants, telling them what shade to use for said property.
|
|
156
|
+
// The card variants will use the following based on the example above:
|
|
157
|
+
// - Primary cards will have their `--graupl-card-border-color` property set to `--graupl-theme-active--primary--700`,
|
|
158
|
+
// - Secondary cards will have their `--graupl-card-border-color` property set to `--graupl-theme-active--secondary--700`, and
|
|
159
|
+
// - Tertiary cards will have their `--graupl-card-border-color` property set to `--graupl-theme-active--tertiary--700`.
|
|
160
|
+
//
|
|
161
|
+
// You can use this to customize card variants individually.
|
|
162
|
+
//
|
|
163
|
+
// For example, if you use the following map:
|
|
164
|
+
//
|
|
165
|
+
// ```scss
|
|
166
|
+
// $card-theme-map: (
|
|
167
|
+
// primary: (
|
|
168
|
+
// border-color: (
|
|
169
|
+
// color: secondary,
|
|
170
|
+
// shade: 700
|
|
171
|
+
// ),
|
|
172
|
+
// ),
|
|
173
|
+
// secondary: (
|
|
174
|
+
// border-color: (
|
|
175
|
+
// color: secondary,
|
|
176
|
+
// shade: 700
|
|
177
|
+
// ),
|
|
178
|
+
// ),
|
|
179
|
+
// tertiary: (
|
|
180
|
+
// border-color: (
|
|
181
|
+
// color: secondary,
|
|
182
|
+
// shade: 700
|
|
183
|
+
// ),
|
|
184
|
+
// ),
|
|
185
|
+
// )
|
|
186
|
+
// ```
|
|
187
|
+
//
|
|
188
|
+
// The card variants will use the following:
|
|
189
|
+
// - Primary cards will have their `--graupl-card-border-color` property set to `--graupl-theme-active--secondary--700`,
|
|
190
|
+
// - Secondary cards will have their `--graupl-card-border-color` property set to `--graupl-theme-active--secondary--700`, and
|
|
191
|
+
// - Tertiary cards will have their `--graupl-card-border-color` property set to `--graupl-theme-active--secondary--700`.
|
|
192
|
+
//
|
|
193
|
+
// @example
|
|
194
|
+
// <div class="card">
|
|
195
|
+
// <div class="card-image"><img src="https://picsum.photos/600/400" alt="Card image" /></div>
|
|
196
|
+
// <div class="card-content">
|
|
197
|
+
// <div class="card-header"><h3 class="card-title">Card Title</h3></div>
|
|
198
|
+
// <div class="card-body"><p>This is some text that describes the card.</p></div>
|
|
199
|
+
// <div class="card-footer"><a class="card stretched" href="#">Card Action</a></div>
|
|
200
|
+
// </div>
|
|
201
|
+
// </div>
|
|
202
|
+
//
|
|
203
|
+
// @example
|
|
204
|
+
// <div class="card horizontal right">
|
|
205
|
+
// <div class="card-image"><img src="https://picsum.photos/600/400" alt="Card image" /></div>
|
|
206
|
+
// <div class="card-content">
|
|
207
|
+
// <div class="card-header"><h3 class="card-title">Card Title</h3></div>
|
|
208
|
+
// <div class="card-body"><p>This is some text that describes the card.</p></div>
|
|
209
|
+
// <div class="card-footer"><a class="card stretched" href="#">Card Action</a></div>
|
|
210
|
+
// </div>
|
|
211
|
+
// </div>
|
|
2
212
|
|
|
3
213
|
@use "defaults";
|
|
4
214
|
@use "variables" as *;
|
|
5
215
|
@use "../../defaults" as root-defaults;
|
|
6
216
|
@use "../../mixins/layer" as *;
|
|
217
|
+
@use "../../mixins/theme";
|
|
7
218
|
@use "../../mixins/animation";
|
|
8
219
|
@use "../../mixins/container";
|
|
9
220
|
|
|
10
221
|
@include layer(component) {
|
|
11
|
-
|
|
222
|
+
// .card
|
|
223
|
+
#{defaults.$card-selector-base}#{defaults.$card-selector} {
|
|
12
224
|
display: grid;
|
|
13
225
|
position: relative;
|
|
14
226
|
grid-template-columns: [image-start content-start] 1fr [image-end content-end];
|
|
@@ -21,8 +233,9 @@
|
|
|
21
233
|
gap: $card-gap;
|
|
22
234
|
isolation: isolate;
|
|
23
235
|
|
|
236
|
+
// &, &.top
|
|
24
237
|
&,
|
|
25
|
-
&#{defaults.$vertical-card-top-selector} {
|
|
238
|
+
&#{defaults.$vertical-card-top-selector-base}#{defaults.$vertical-card-top-selector} {
|
|
26
239
|
grid-template-rows:
|
|
27
240
|
[image-start]
|
|
28
241
|
$card-image-ratio
|
|
@@ -31,8 +244,9 @@
|
|
|
31
244
|
[content-end];
|
|
32
245
|
}
|
|
33
246
|
|
|
34
|
-
|
|
35
|
-
&#{defaults.$
|
|
247
|
+
// &.bottom, &.inverse
|
|
248
|
+
&#{defaults.$vertical-card-bottom-selector-base}#{defaults.$vertical-card-bottom-selector},
|
|
249
|
+
&#{defaults.$inverse-card-selector-base}#{defaults.$inverse-card-selector} {
|
|
36
250
|
grid-template-rows:
|
|
37
251
|
[content-start]
|
|
38
252
|
$card-content-ratio
|
|
@@ -45,9 +259,11 @@
|
|
|
45
259
|
--#{root-defaults.$prefix}card-transform: #{$card-hover-transform};
|
|
46
260
|
}
|
|
47
261
|
|
|
48
|
-
|
|
262
|
+
// &.horizontal
|
|
263
|
+
&#{defaults.$horizontal-card-selector-base}#{defaults.$horizontal-card-selector} {
|
|
264
|
+
// &, &.left
|
|
49
265
|
&,
|
|
50
|
-
&#{defaults.$horizontal-card-left-selector} {
|
|
266
|
+
&#{defaults.$horizontal-card-left-selector-base}#{defaults.$horizontal-card-left-selector} {
|
|
51
267
|
--#{root-defaults.$prefix}card-content-ratio: #{$horizontal-card-content-ratio};
|
|
52
268
|
--#{root-defaults.$prefix}card-image-ratio: #{$horizontal-card-image-ratio};
|
|
53
269
|
|
|
@@ -59,7 +275,9 @@
|
|
|
59
275
|
[content-end];
|
|
60
276
|
grid-template-rows: [image-start content-start] 1fr [image-end content-end];
|
|
61
277
|
|
|
62
|
-
|
|
278
|
+
// .card-image
|
|
279
|
+
#{defaults.$card-image-selector-base}#{defaults.$card-image-selector}
|
|
280
|
+
img {
|
|
63
281
|
border-radius: calc(
|
|
64
282
|
$card-border-top-left-radius - min(
|
|
65
283
|
$card-border-top-width,
|
|
@@ -76,8 +294,9 @@
|
|
|
76
294
|
}
|
|
77
295
|
}
|
|
78
296
|
|
|
79
|
-
|
|
80
|
-
&#{defaults.$
|
|
297
|
+
// &.right, &.inverse
|
|
298
|
+
&#{defaults.$horizontal-card-right-selector-base}#{defaults.$horizontal-card-right-selector},
|
|
299
|
+
&#{defaults.$inverse-card-selector-base}#{defaults.$inverse-card-selector} {
|
|
81
300
|
grid-template-columns:
|
|
82
301
|
[content-start]
|
|
83
302
|
$card-content-ratio
|
|
@@ -85,7 +304,9 @@
|
|
|
85
304
|
$card-image-ratio
|
|
86
305
|
[image-end];
|
|
87
306
|
|
|
88
|
-
|
|
307
|
+
// .card-image
|
|
308
|
+
#{defaults.$card-image-selector-base}#{defaults.$card-image-selector}
|
|
309
|
+
img {
|
|
89
310
|
border-radius: 0
|
|
90
311
|
calc(
|
|
91
312
|
$card-border-top-right-radius - min(
|
|
@@ -105,7 +326,8 @@
|
|
|
105
326
|
}
|
|
106
327
|
}
|
|
107
328
|
|
|
108
|
-
|
|
329
|
+
// .card-image
|
|
330
|
+
#{defaults.$card-image-selector-base}#{defaults.$card-image-selector} {
|
|
109
331
|
grid-area: image;
|
|
110
332
|
padding: $card-image-padding;
|
|
111
333
|
|
|
@@ -129,7 +351,8 @@
|
|
|
129
351
|
}
|
|
130
352
|
}
|
|
131
353
|
|
|
132
|
-
|
|
354
|
+
// .card-content
|
|
355
|
+
#{defaults.$card-content-selector-base}#{defaults.$card-content-selector} {
|
|
133
356
|
display: flex;
|
|
134
357
|
grid-area: content;
|
|
135
358
|
flex-direction: column;
|
|
@@ -137,37 +360,44 @@
|
|
|
137
360
|
gap: $card-content-gap;
|
|
138
361
|
}
|
|
139
362
|
|
|
140
|
-
|
|
363
|
+
// .card-body
|
|
364
|
+
#{defaults.$card-body-selector-base}#{defaults.$card-body-selector} {
|
|
141
365
|
flex: 1 0 auto;
|
|
142
366
|
}
|
|
143
367
|
|
|
144
|
-
|
|
368
|
+
// .card-footer
|
|
369
|
+
#{defaults.$card-footer-selector-base}#{defaults.$card-footer-selector} {
|
|
145
370
|
flex: 0 0 auto;
|
|
146
371
|
}
|
|
147
372
|
|
|
148
|
-
|
|
373
|
+
// .card-title
|
|
374
|
+
#{defaults.$card-title-selector-base}#{defaults.$card-title-selector} {
|
|
149
375
|
flex: 0 0 auto;
|
|
150
376
|
}
|
|
151
377
|
|
|
152
378
|
@include container.trigger(force-vertical-card) {
|
|
153
|
-
|
|
154
|
-
|
|
379
|
+
// .card
|
|
380
|
+
#{defaults.$card-selector-base}#{defaults.$card-selector} {
|
|
381
|
+
// .horizontal
|
|
382
|
+
&#{defaults.$horizontal-card-selector-base}#{defaults.$horizontal-card-selector} {
|
|
383
|
+
// &, &.left, &.top, &.right, &.bottom, &.inverse
|
|
155
384
|
&,
|
|
156
|
-
&#{defaults.$horizontal-card-left-selector},
|
|
157
|
-
&#{defaults.$vertical-card-top-selector},
|
|
158
|
-
&#{defaults.$horizontal-card-right-selector},
|
|
159
|
-
&#{defaults.$vertical-card-bottom-selector},
|
|
160
|
-
&#{defaults.$inverse-card-selector} {
|
|
385
|
+
&#{defaults.$horizontal-card-left-selector-base}#{defaults.$horizontal-card-left-selector},
|
|
386
|
+
&#{defaults.$vertical-card-top-selector-base}#{defaults.$vertical-card-top-selector},
|
|
387
|
+
&#{defaults.$horizontal-card-right-selector-base}#{defaults.$horizontal-card-right-selector},
|
|
388
|
+
&#{defaults.$vertical-card-bottom-selector-base}#{defaults.$vertical-card-bottom-selector},
|
|
389
|
+
&#{defaults.$inverse-card-selector-base}#{defaults.$inverse-card-selector} {
|
|
161
390
|
--#{root-defaults.$prefix}horizontal-card-image-ratio: #{defaults.$card-image-ratio};
|
|
162
391
|
--#{root-defaults.$prefix}horizontal-card-content-ratio: #{defaults.$card-content-ratio};
|
|
163
392
|
|
|
164
393
|
grid-template-columns: [image-start content-start] 1fr [image-end content-end];
|
|
165
394
|
}
|
|
166
395
|
|
|
396
|
+
// &, &.left, &.top
|
|
167
397
|
&,
|
|
168
|
-
&#{defaults.$horizontal-card-left-selector},
|
|
169
|
-
&#{defaults.$horizontal-card-right-selector},
|
|
170
|
-
&#{defaults.$vertical-card-top-selector} {
|
|
398
|
+
&#{defaults.$horizontal-card-left-selector-base}#{defaults.$horizontal-card-left-selector},
|
|
399
|
+
&#{defaults.$horizontal-card-right-selector-base}#{defaults.$horizontal-card-right-selector},
|
|
400
|
+
&#{defaults.$vertical-card-top-selector-base}#{defaults.$vertical-card-top-selector} {
|
|
171
401
|
grid-template-rows:
|
|
172
402
|
[image-start]
|
|
173
403
|
$card-image-ratio
|
|
@@ -176,8 +406,9 @@
|
|
|
176
406
|
[content-end];
|
|
177
407
|
}
|
|
178
408
|
|
|
179
|
-
|
|
180
|
-
&#{defaults.$
|
|
409
|
+
// &.bottom, &.inverse
|
|
410
|
+
&#{defaults.$vertical-card-bottom-selector-base}#{defaults.$vertical-card-bottom-selector},
|
|
411
|
+
&#{defaults.$inverse-card-selector-base}#{defaults.$inverse-card-selector} {
|
|
181
412
|
grid-template-rows:
|
|
182
413
|
[content-start]
|
|
183
414
|
$card-content-ratio
|
|
@@ -190,20 +421,35 @@
|
|
|
190
421
|
}
|
|
191
422
|
|
|
192
423
|
@include animation.off {
|
|
193
|
-
|
|
424
|
+
// .card
|
|
425
|
+
#{#{defaults.$card-selector-base}}#{defaults.$card-selector} {
|
|
194
426
|
--#{root-defaults.$prefix}card-transition: #{$card-transition-reduced-motion};
|
|
195
427
|
}
|
|
196
428
|
}
|
|
197
429
|
}
|
|
198
430
|
|
|
199
431
|
@include layer(theme) {
|
|
200
|
-
|
|
432
|
+
// .card
|
|
433
|
+
#{#{defaults.$card-selector-base}}#{defaults.$card-selector} {
|
|
434
|
+
--#{root-defaults.$prefix}color: #{$card-color};
|
|
435
|
+
--#{root-defaults.$prefix}background: #{$card-background};
|
|
436
|
+
|
|
201
437
|
border-color: $card-border-color;
|
|
202
438
|
background: $card-background;
|
|
203
439
|
color: $card-color;
|
|
440
|
+
|
|
441
|
+
@if root-defaults.$themeable-components and defaults.$themeable {
|
|
442
|
+
@include theme.generate-modifiers(
|
|
443
|
+
defaults.$card-theme-map,
|
|
444
|
+
defaults.$card-theme-selector-base,
|
|
445
|
+
defaults.$card-theme-selector-prefix,
|
|
446
|
+
"card-"
|
|
447
|
+
);
|
|
448
|
+
}
|
|
204
449
|
}
|
|
205
450
|
|
|
206
|
-
|
|
451
|
+
// .card-title
|
|
452
|
+
#{defaults.$card-title-selector-base}#{defaults.$card-title-selector} {
|
|
207
453
|
color: $card-title-color;
|
|
208
454
|
font-size: $card-title-font-size;
|
|
209
455
|
font-weight: $card-title-font-weight;
|