@graupl/core 1.0.0-beta.19 → 1.0.0-beta.21
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/component/badge.css +2 -0
- package/dist/css/component/badge.css.map +1 -0
- package/dist/css/component/disclosure.css +2 -0
- package/dist/css/component/disclosure.css.map +1 -0
- package/dist/css/component.css +1 -1
- package/dist/css/component.css.map +1 -1
- package/dist/css/graupl.css +1 -1
- package/dist/css/graupl.css.map +1 -1
- package/dist/css/layout.css +1 -1
- package/dist/css/layout.css.map +1 -1
- package/dist/js/accordion.js +2 -2
- package/dist/js/accordion.js.map +1 -1
- package/dist/js/alert.js.map +1 -1
- package/dist/js/carousel.js +2 -2
- package/dist/js/carousel.js.map +1 -1
- package/dist/js/component/accordion.cjs.js +2 -2
- package/dist/js/component/accordion.cjs.js.map +1 -1
- package/dist/js/component/accordion.es.js +2 -2
- package/dist/js/component/accordion.es.js.map +1 -1
- package/dist/js/component/accordion.iife.js +2 -2
- 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 +2 -2
- package/dist/js/component/alert.iife.js.map +1 -1
- package/dist/js/component/carousel.cjs.js +2 -2
- package/dist/js/component/carousel.cjs.js.map +1 -1
- package/dist/js/component/carousel.es.js +2 -2
- package/dist/js/component/carousel.es.js.map +1 -1
- package/dist/js/component/carousel.iife.js +2 -2
- package/dist/js/component/carousel.iife.js.map +1 -1
- package/dist/js/component/disclosure.cjs.js +5 -0
- package/dist/js/component/disclosure.cjs.js.map +1 -0
- package/dist/js/component/disclosure.es.js +5 -0
- package/dist/js/component/disclosure.es.js.map +1 -0
- package/dist/js/component/disclosure.iife.js +5 -0
- package/dist/js/component/disclosure.iife.js.map +1 -0
- package/dist/js/generator/accordion.cjs.js +2 -2
- package/dist/js/generator/accordion.cjs.js.map +1 -1
- package/dist/js/generator/accordion.es.js +2 -2
- package/dist/js/generator/accordion.es.js.map +1 -1
- package/dist/js/generator/accordion.iife.js +2 -2
- 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 +2 -2
- package/dist/js/generator/alert.iife.js.map +1 -1
- package/dist/js/generator/carousel.cjs.js +2 -2
- package/dist/js/generator/carousel.cjs.js.map +1 -1
- package/dist/js/generator/carousel.es.js +2 -2
- package/dist/js/generator/carousel.es.js.map +1 -1
- package/dist/js/generator/carousel.iife.js +2 -2
- package/dist/js/generator/carousel.iife.js.map +1 -1
- package/dist/js/generator/disclosure.cjs.js +5 -0
- package/dist/js/generator/disclosure.cjs.js.map +1 -0
- package/dist/js/generator/disclosure.es.js +5 -0
- package/dist/js/generator/disclosure.es.js.map +1 -0
- package/dist/js/generator/disclosure.iife.js +5 -0
- package/dist/js/generator/disclosure.iife.js.map +1 -0
- 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 +1 -1
- package/dist/js/generator/navigation.iife.js.map +1 -1
- package/dist/js/graupl.js +6 -4
- package/dist/js/graupl.js.map +1 -1
- package/dist/js/navigation.js.map +1 -1
- package/package.json +1 -1
- package/scss/component/badge.scss +3 -0
- package/scss/component/disclosure.scss +3 -0
- package/src/js/TransactionalValue.js +140 -0
- package/src/js/accordion/Accordion.js +4 -4
- package/src/js/carousel/Carousel.js +1 -1
- package/src/js/disclosure/Disclosure.js +1378 -0
- package/src/js/disclosure/generator.js +47 -0
- package/src/js/disclosure/index.js +5 -0
- package/src/js/main.js +2 -0
- package/src/js/validate.js +7 -7
- package/src/scss/_index.scss +8 -8
- package/src/scss/base/_index.scss +4 -4
- package/src/scss/component/_index.scss +10 -8
- package/src/scss/component/badge/_defaults.scss +47 -0
- package/src/scss/component/badge/_index.scss +201 -0
- package/src/scss/component/badge/_variables.scss +112 -0
- package/src/scss/component/disclosure/_defaults.scss +45 -0
- package/src/scss/component/disclosure/_index.scss +214 -0
- package/src/scss/component/disclosure/_variables.scss +205 -0
- package/src/scss/layout/_index.scss +3 -3
- package/src/scss/theme/_index.scss +2 -2
- package/src/scss/utilities/_index.scss +21 -21
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import Disclosure from "./Disclosure.js";
|
|
2
|
+
import once from "@drupal/once";
|
|
3
|
+
|
|
4
|
+
const generate = ({
|
|
5
|
+
options = {},
|
|
6
|
+
context = document,
|
|
7
|
+
disclosureSelector = ".disclosure",
|
|
8
|
+
controllerSelector = ".disclosure-toggle",
|
|
9
|
+
} = {}) => {
|
|
10
|
+
once("graupl-disclosure-generator", disclosureSelector, context).forEach(
|
|
11
|
+
(disclosureElement) => {
|
|
12
|
+
const disclosureOptions = disclosureElement.dataset
|
|
13
|
+
.grauplDisclosureOptions
|
|
14
|
+
? JSON.parse(
|
|
15
|
+
disclosureElement.dataset.grauplDisclosureOptions.replace(/'/g, '"')
|
|
16
|
+
) || {}
|
|
17
|
+
: {};
|
|
18
|
+
|
|
19
|
+
const targettedControllerSelector = `${controllerSelector}[data-graupl-disclosure-target="${disclosureElement.id}"]`;
|
|
20
|
+
const [controllerElement] = once(
|
|
21
|
+
"graupl-disclosure-generator",
|
|
22
|
+
targettedControllerSelector,
|
|
23
|
+
context
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
if (!controllerElement) {
|
|
27
|
+
console.warn(
|
|
28
|
+
`No controller found for disclosure with ID "${disclosureElement.id}". Please ensure there is an element with the selector "${targettedControllerSelector}".`
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
once.remove("graupl-disclosure-generator", disclosureElement);
|
|
32
|
+
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
new Disclosure({
|
|
37
|
+
disclosureElement,
|
|
38
|
+
controllerElement,
|
|
39
|
+
initialize: true,
|
|
40
|
+
...options,
|
|
41
|
+
...disclosureOptions,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export default generate;
|
package/src/js/main.js
CHANGED
|
@@ -2,10 +2,12 @@ import accordionGenerator from "./accordion/generator.js";
|
|
|
2
2
|
import alertGenerator from "./alert/generator.js";
|
|
3
3
|
import carouselGenerator from "./carousel/generator.js";
|
|
4
4
|
import navigationGenerator from "./navigation/generator.js";
|
|
5
|
+
import disclosureGenerator from "./disclosure/generator.js";
|
|
5
6
|
|
|
6
7
|
document.addEventListener("DOMContentLoaded", () => {
|
|
7
8
|
accordionGenerator();
|
|
8
9
|
alertGenerator();
|
|
9
10
|
carouselGenerator();
|
|
10
11
|
navigationGenerator();
|
|
12
|
+
disclosureGenerator();
|
|
11
13
|
});
|
package/src/js/validate.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Check to see if the provided elements have a specific
|
|
2
|
+
* Check to see if the provided elements have a specific constructor.
|
|
3
3
|
*
|
|
4
4
|
* The values must be provided inside of an object
|
|
5
5
|
* so the variable name can be retrieved in case of errors.
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Will return `{ status: true }` if the check is successful.
|
|
11
11
|
*
|
|
12
|
-
* @param {object}
|
|
13
|
-
* @param {object} elements
|
|
14
|
-
* @return {Object<boolean, string>}
|
|
12
|
+
* @param {object} constructor - The constructor to check for.
|
|
13
|
+
* @param {object} elements - The element(s) to check.
|
|
14
|
+
* @return {Object<boolean, string>} - The result of the check.
|
|
15
15
|
*/
|
|
16
|
-
export function isValidInstance(
|
|
16
|
+
export function isValidInstance(constructor, elements) {
|
|
17
17
|
try {
|
|
18
18
|
if (typeof elements !== "object") {
|
|
19
19
|
const elementsType = typeof elements;
|
|
@@ -24,10 +24,10 @@ export function isValidInstance(contructor, elements) {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
for (const key in elements) {
|
|
27
|
-
if (!(elements[key] instanceof
|
|
27
|
+
if (!(elements[key] instanceof constructor)) {
|
|
28
28
|
const elementType = typeof elements[key];
|
|
29
29
|
throw new TypeError(
|
|
30
|
-
`${key} must be an instance of ${
|
|
30
|
+
`${key} must be an instance of ${constructor.name}. "${elementType}" given.`
|
|
31
31
|
);
|
|
32
32
|
}
|
|
33
33
|
}
|
package/src/scss/_index.scss
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
// @graupl/core styles.
|
|
2
2
|
|
|
3
3
|
// Forward the layer initialization.
|
|
4
|
-
@
|
|
4
|
+
@use "init";
|
|
5
5
|
|
|
6
6
|
// Forward normalize.
|
|
7
|
-
@
|
|
7
|
+
@use "normalize";
|
|
8
8
|
|
|
9
9
|
// Forward all layers.
|
|
10
|
-
@
|
|
11
|
-
@
|
|
12
|
-
@
|
|
13
|
-
@
|
|
14
|
-
@
|
|
15
|
-
@
|
|
10
|
+
@use "base";
|
|
11
|
+
@use "layout";
|
|
12
|
+
@use "component";
|
|
13
|
+
@use "state";
|
|
14
|
+
@use "theme";
|
|
15
|
+
@use "utilities";
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
// @graupl/core component styles.
|
|
2
2
|
|
|
3
|
-
@
|
|
4
|
-
@
|
|
5
|
-
@
|
|
6
|
-
@
|
|
7
|
-
@
|
|
8
|
-
@
|
|
9
|
-
@
|
|
10
|
-
@
|
|
3
|
+
@use "alert";
|
|
4
|
+
@use "accordion";
|
|
5
|
+
@use "badge";
|
|
6
|
+
@use "card";
|
|
7
|
+
@use "carousel";
|
|
8
|
+
@use "disclosure";
|
|
9
|
+
@use "input-group";
|
|
10
|
+
@use "list";
|
|
11
|
+
@use "menu";
|
|
12
|
+
@use "navigation";
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// @graupl/core badge base default values.
|
|
2
|
+
//
|
|
3
|
+
// Generally, these should not be used directly when styling bases unless a static value is needed.
|
|
4
|
+
// They are mainly used to provide class selectors, fallbacks for custom properties, or loop values.
|
|
5
|
+
//
|
|
6
|
+
// They should not be used to define direct property values (i.e. font-size, color, etc.).
|
|
7
|
+
// Those should be defined as custom properties in the `_variables.scss` file.
|
|
8
|
+
|
|
9
|
+
@use "../../defaults" as root-defaults;
|
|
10
|
+
@use "../../functions/theme";
|
|
11
|
+
@use "sass:map";
|
|
12
|
+
|
|
13
|
+
// Badge selectors.
|
|
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
|
+
$badge-selector-base: $selector-base !default;
|
|
18
|
+
$badge-selector: "badge" !default;
|
|
19
|
+
$badge-theme-selector-base: $modifier-selector-base !default;
|
|
20
|
+
$badge-theme-selector-prefix: "" !default;
|
|
21
|
+
|
|
22
|
+
// Badge state theme defaults.
|
|
23
|
+
// This map is used to define the default colour shades for the
|
|
24
|
+
// themed badge bases.
|
|
25
|
+
//
|
|
26
|
+
// e.g.
|
|
27
|
+
// Primary badges will use primary--900 as the text colour, primary--100 as the background
|
|
28
|
+
// and primary--900 as the border colour.
|
|
29
|
+
//
|
|
30
|
+
// Secondary/tertiary badges will use the same shade for their respective colours.
|
|
31
|
+
$-badge-theme-mappings: (
|
|
32
|
+
color: 900,
|
|
33
|
+
border-color: 700,
|
|
34
|
+
);
|
|
35
|
+
$badge-theme-mappings: () !default;
|
|
36
|
+
|
|
37
|
+
// Merge the custom badge state theme map with the default one.
|
|
38
|
+
@if $generate-base-theme-map {
|
|
39
|
+
$badge-theme-mappings: map.merge(
|
|
40
|
+
$-badge-theme-mappings,
|
|
41
|
+
$badge-theme-mappings
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
$-badge-theme-map: theme.generate-property-map($badge-theme-mappings);
|
|
46
|
+
$badge-theme-map: () !default;
|
|
47
|
+
$badge-theme-map: map.deep-merge($-badge-theme-map, $badge-theme-map);
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
// @graupl/core badge base styles.
|
|
2
|
+
//
|
|
3
|
+
// This module provides the base styles for the badge component.
|
|
4
|
+
//
|
|
5
|
+
// The badge component is meant to be used on <badge> or <a> elements, but can be applied to anything.
|
|
6
|
+
//
|
|
7
|
+
// The following selectors are generated by default:
|
|
8
|
+
// - `.badge`: The badge component.
|
|
9
|
+
// - `.primary`: A component modifier to use the primary colour for the badge component.
|
|
10
|
+
// - `.secondary`: A component modifier to use the secondary colour for the badge component.
|
|
11
|
+
// - `.tertiary`: A component modifier to use the tertiary colour for the badge component.
|
|
12
|
+
// - `.link`: A component modifier to make the badge component look like a link component.
|
|
13
|
+
//
|
|
14
|
+
// The following custom properties can be used to customize the badge component:
|
|
15
|
+
// | Property | Description | Default Value |
|
|
16
|
+
// | --- | --- | --- |
|
|
17
|
+
// | `--graupl-badge-font-size` | The font size of the badge component. | `var(--graupl-font-sm)` |
|
|
18
|
+
// | `--graupl-badge-background` | The background colour of the badge component. | `var(--graupl-background)` |
|
|
19
|
+
// | `--graupl-badge-color` | The text colour of the badge component. | `var(--graupl-color)` |
|
|
20
|
+
// | `--graupl-badge-border-color` | The border colour of the badge component. | `var(--graupl-border-color)` |
|
|
21
|
+
// | `--graupl-badge-padding-x` | The horizontal padding of the badge component. | `var(--graupl-spacer-5)` |
|
|
22
|
+
// | `--graupl-badge-padding-y` | The vertical padding of the badge component. | `var(--graupl-spacer-3)` |
|
|
23
|
+
// | `--graupl-badge-padding` | The padding of the badge component (combines y and x padding). | `var(--graupl-badge-padding-y) var(--graupl-badge-padding-x)` |
|
|
24
|
+
// | `--graupl-badge-border-top-width` | The top border width of the badge component. | `var(--graupl-border-top-width)` |
|
|
25
|
+
// | `--graupl-badge-border-right-width` | The right border width of the badge component. | `var(--graupl-border-right-width)` |
|
|
26
|
+
// | `--graupl-badge-border-bottom-width` | The bottom border width of the badge component. | `var(--graupl-border-bottom-width)` |
|
|
27
|
+
// | `--graupl-badge-border-left-width` | The left border width of the badge component. | `var(--graupl-border-left-width)` |
|
|
28
|
+
// | `--graupl-badge-border-width` | The border width of the badge component (combines top, right, bottom, and left widths). | `var(--graupl-badge-border-top-width) var(--graupl-badge-border-right-width) var(--graupl-badge-border-bottom-width) var(--graupl-badge-border-left-width)` |
|
|
29
|
+
// | `--graupl-badge-border-top-style` | The top border style of the badge component. | `var(--graupl-border-top-style)` |
|
|
30
|
+
// | `--graupl-badge-border-right-style` | The right border style of the badge component. | `var(--graupl-border-right-style)` |
|
|
31
|
+
// | `--graupl-badge-border-bottom-style` | The bottom border style of the badge component. | `var(--graupl-border-bottom-style)` |
|
|
32
|
+
// | `--graupl-badge-border-left-style` | The left border style of the badge component. | `var(--graupl-border-left-style)` |
|
|
33
|
+
// | `--graupl-badge-border-style` | The border style of the badge component (combines top, right, bottom, and left styles). | `var(--graupl-badge-border-top-style) var(--graupl-badge-border-right-style) var(--graupl-badge-border-bottom-style) var(--graupl-badge-border-left-style)` |
|
|
34
|
+
// | `--graupl-badge-border-top-left-radius` | The top-left border radius of the badge component. | `var(--graupl-border-top-left-radius)` |
|
|
35
|
+
// | `--graupl-badge-border-top-right-radius` | The top-right border radius of the badge component. | `var(--graupl-border-top-right-radius)` |
|
|
36
|
+
// | `--graupl-badge-border-bottom-right-radius` | The bottom-right border radius of the badge component. | `var(--graupl-border-bottom-right-radius)` |
|
|
37
|
+
// | `--graupl-badge-border-bottom-left-radius` | The bottom-left border radius of the badge component. | `var(--graupl-border-bottom-left-radius)` |
|
|
38
|
+
// | `--graupl-badge-border-radius` | The border radius of the badge component (combines top-left, top-right, bottom-right, and bottom-left radii). | `var(--graupl-badge-border-top-left-radius) var(--graupl-badge-border-top-right-radius) var(--graupl-badge-border-bottom-right-radius) var(--graupl-badge-border-bottom-left-radius)` |
|
|
39
|
+
//
|
|
40
|
+
// The following sass variables can be used to customize the generation of the badge component:
|
|
41
|
+
// | Variable | Description | Default Value |
|
|
42
|
+
// | --- | --- | --- |
|
|
43
|
+
// | `$selector-base` | The selector base for the component. | `.` |
|
|
44
|
+
// | `$modifier-selector-base` | The selector base for component modifiers. | `.` |
|
|
45
|
+
// | `$generate-base-theme-map` | A flag to generate the base theme maps for badge variants. | `true` |
|
|
46
|
+
// | `$badge-selector-base` | The selector base for the badge component. | `$selector-base` |
|
|
47
|
+
// | `$badge-selector` | The badge component selector. | `badge` |
|
|
48
|
+
// | `$badge-theme-selector-base` | The selector base for the badge theme component modifiers. | `$modifier-selector-base` |
|
|
49
|
+
// | `$badge-theme-selector-prefix` | The badge theme component modifier selector prefix. | `""` |
|
|
50
|
+
// | `$badge-theme-mappings` | A map of properties and color shades used generate all badge variants. | `()` |
|
|
51
|
+
// | `$badge-theme-map` | A map of all properties, colors, and color shades used to generate all badge variants. | `()` |
|
|
52
|
+
//
|
|
53
|
+
// Using `$badge-theme-mappings`
|
|
54
|
+
//
|
|
55
|
+
// `$badge-theme-mappings` is a 1-level map of properties and shade values.
|
|
56
|
+
//
|
|
57
|
+
// e.g.
|
|
58
|
+
// ```scss
|
|
59
|
+
// $badge-theme-mappings: (
|
|
60
|
+
// border-color: 700,
|
|
61
|
+
// )
|
|
62
|
+
// ```
|
|
63
|
+
//
|
|
64
|
+
// This directly[1] maps to all badge variants, telling them what shade to use for said property.
|
|
65
|
+
// All badge variants will use the following based on the example above:
|
|
66
|
+
// - Primary badges will have their `--graupl-badge-border-color` property set to `--graupl-theme-active--primary--700`,
|
|
67
|
+
// - Secondary badges will have their `--graupl-badge-border-color` property set to `--graupl-theme-active--secondary--700`, and
|
|
68
|
+
// - Tertiary badges will have their `--graupl-badge-border-color` property set to `--graupl-theme-active--tertiary--700`.
|
|
69
|
+
//
|
|
70
|
+
// You can use this to customize _all_ badges variants in the same way.
|
|
71
|
+
//
|
|
72
|
+
// For example, if you use the following map:
|
|
73
|
+
// ```scss
|
|
74
|
+
// $badge-theme-mappings: (
|
|
75
|
+
// border-color: 500,
|
|
76
|
+
// )
|
|
77
|
+
// ```
|
|
78
|
+
//
|
|
79
|
+
// All badge variants will use the following:
|
|
80
|
+
// - Primary badges will have their `--graupl-badge-border-color` property set to `--graupl-theme-active--primary--500`,
|
|
81
|
+
// - Secondary badges will have their `--graupl-badge-border-color` property set to `--graupl-theme-active--secondary--500`, and
|
|
82
|
+
// - Tertiary badges will have their `--graupl-badge-border-color` property set to `--graupl-theme-active--tertiary--500`.
|
|
83
|
+
//
|
|
84
|
+
// [1] `$badge-theme-mappings` gets parsed into a larger, more explicit map: `$badge-theme-map`.
|
|
85
|
+
//
|
|
86
|
+
// Using `$badge-theme-map`
|
|
87
|
+
//
|
|
88
|
+
// `$badge-theme-map` is a multi-level map of properties, colors, and shade values.
|
|
89
|
+
//
|
|
90
|
+
// e.g.
|
|
91
|
+
// ```scss
|
|
92
|
+
// $badge-theme-map: (
|
|
93
|
+
// primary: (
|
|
94
|
+
// border-color: (
|
|
95
|
+
// color: primary,
|
|
96
|
+
// shade: 700
|
|
97
|
+
// ),
|
|
98
|
+
// ),
|
|
99
|
+
// secondary: (
|
|
100
|
+
// border-color: (
|
|
101
|
+
// color: secondary,
|
|
102
|
+
// shade: 700
|
|
103
|
+
// ),
|
|
104
|
+
// ),
|
|
105
|
+
// tertiary: (
|
|
106
|
+
// border-color: (
|
|
107
|
+
// color: tertiary,
|
|
108
|
+
// shade: 700
|
|
109
|
+
// ),
|
|
110
|
+
// ),
|
|
111
|
+
// )
|
|
112
|
+
// ```
|
|
113
|
+
//
|
|
114
|
+
// This directly maps to all badge variants, telling them what shade to use for said property.
|
|
115
|
+
// The badge variants will use the following based on the example above:
|
|
116
|
+
// - Primary badges will have their `--graupl-badge-border-color` property set to `--graupl-theme-active--primary--700`,
|
|
117
|
+
// - Secondary badges will have their `--graupl-badge-border-color` property set to `--graupl-theme-active--secondary--700`, and
|
|
118
|
+
// - Tertiary badges will have their `--graupl-badge-border-color` property set to `--graupl-theme-active--tertiary--700`.
|
|
119
|
+
//
|
|
120
|
+
// You can use this to customize badge variants individually.
|
|
121
|
+
//
|
|
122
|
+
// For example, if you use the following map:
|
|
123
|
+
//
|
|
124
|
+
// ```scss
|
|
125
|
+
// $badge-theme-map: (
|
|
126
|
+
// primary: (
|
|
127
|
+
// border-color: (
|
|
128
|
+
// color: secondary,
|
|
129
|
+
// shade: 700
|
|
130
|
+
// ),
|
|
131
|
+
// ),
|
|
132
|
+
// secondary: (
|
|
133
|
+
// border-color: (
|
|
134
|
+
// color: secondary,
|
|
135
|
+
// shade: 700
|
|
136
|
+
// ),
|
|
137
|
+
// ),
|
|
138
|
+
// tertiary: (
|
|
139
|
+
// border-color: (
|
|
140
|
+
// color: secondary,
|
|
141
|
+
// shade: 700
|
|
142
|
+
// ),
|
|
143
|
+
// ),
|
|
144
|
+
// )
|
|
145
|
+
// ```
|
|
146
|
+
//
|
|
147
|
+
// The badge variants will use the following:
|
|
148
|
+
// - Primary badges will have their `--graupl-badge-border-color` property set to `--graupl-theme-active--secondary--700`,
|
|
149
|
+
// - Secondary badges will have their `--graupl-badge-border-color` property set to `--graupl-theme-active--secondary--700`, and
|
|
150
|
+
// - Tertiary badges will have their `--graupl-badge-border-color` property set to `--graupl-theme-active--secondary--700`.
|
|
151
|
+
//
|
|
152
|
+
// @example
|
|
153
|
+
// <badge class="badge primary">Primary Badge</badge>
|
|
154
|
+
//
|
|
155
|
+
// @example
|
|
156
|
+
// <a class="badge secondary" href="#">Secondary Badge</a>
|
|
157
|
+
//
|
|
158
|
+
// @example
|
|
159
|
+
// <a class="badge tertiary" href="#">Tertiary Badge</a>
|
|
160
|
+
|
|
161
|
+
@use "../../defaults" as root-defaults;
|
|
162
|
+
@use "../../functions/theme";
|
|
163
|
+
@use "../../mixins/layer" as *;
|
|
164
|
+
@use "defaults";
|
|
165
|
+
@use "sass:map";
|
|
166
|
+
@use "variables" as *;
|
|
167
|
+
|
|
168
|
+
@include layer(component) {
|
|
169
|
+
// .badge
|
|
170
|
+
#{defaults.$badge-selector-base}#{defaults.$badge-selector} {
|
|
171
|
+
display: flex;
|
|
172
|
+
align-items: center;
|
|
173
|
+
justify-content: center;
|
|
174
|
+
padding: $badge-padding;
|
|
175
|
+
border-width: $badge-border-width;
|
|
176
|
+
border-style: $badge-border-style;
|
|
177
|
+
border-radius: $badge-border-radius;
|
|
178
|
+
font-size: $badge-font-size;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
@include layer(theme) {
|
|
183
|
+
// .badge
|
|
184
|
+
#{defaults.$badge-selector-base}#{defaults.$badge-selector} {
|
|
185
|
+
border-color: $badge-border-color;
|
|
186
|
+
background: $badge-background;
|
|
187
|
+
color: $badge-color;
|
|
188
|
+
|
|
189
|
+
@each $color, $map in defaults.$badge-theme-map {
|
|
190
|
+
// e.g. &.primary, &.secondary, &.tertiary
|
|
191
|
+
&#{defaults.$badge-theme-selector-base}#{defaults.$badge-theme-selector-prefix}#{$color} {
|
|
192
|
+
@each $prop, $value in $map {
|
|
193
|
+
--#{root-defaults.$prefix}badge-#{$prop}: #{theme.get(
|
|
194
|
+
map.get($value, color),
|
|
195
|
+
map.get($value, shade)
|
|
196
|
+
)};
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// @graupl/core badge base variables.
|
|
2
|
+
//
|
|
3
|
+
// These values are to be used to directly style bases and provide a
|
|
4
|
+
// cleaner way to reference custom properties.
|
|
5
|
+
|
|
6
|
+
@use "defaults";
|
|
7
|
+
@use "../../variables" as root-variables;
|
|
8
|
+
@use "../../defaults" as root-defaults;
|
|
9
|
+
@use "../../theme/color/variables" as color;
|
|
10
|
+
@use "../../theme/typography/variables" as typography;
|
|
11
|
+
@use "../../functions/theme";
|
|
12
|
+
@use "sass:map";
|
|
13
|
+
|
|
14
|
+
// Typography.
|
|
15
|
+
$badge-font-size: var(
|
|
16
|
+
--#{root-defaults.$prefix}badge-font-size,
|
|
17
|
+
#{map.get(typography.$font-sizes, sm)}
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
// Colors.
|
|
21
|
+
$badge-background: var(
|
|
22
|
+
--#{root-defaults.$prefix}badge-background,
|
|
23
|
+
#{color.$background}
|
|
24
|
+
);
|
|
25
|
+
$badge-color: var(--#{root-defaults.$prefix}badge-color, #{color.$color});
|
|
26
|
+
$badge-border-color: var(
|
|
27
|
+
--#{root-defaults.$prefix}badge-border-color,
|
|
28
|
+
#{color.$border-color}
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
// Spacing.
|
|
32
|
+
$badge-padding-x: var(
|
|
33
|
+
--#{root-defaults.$prefix}badge-padding-x,
|
|
34
|
+
#{map.get(root-variables.$spacers, 5)}
|
|
35
|
+
);
|
|
36
|
+
$badge-padding-y: var(
|
|
37
|
+
--#{root-defaults.$prefix}badge-padding-y,
|
|
38
|
+
#{map.get(root-variables.$spacers, 3)}
|
|
39
|
+
);
|
|
40
|
+
$badge-padding: var(
|
|
41
|
+
--#{root-defaults.$prefix}badge-padding,
|
|
42
|
+
#{$badge-padding-y} #{$badge-padding-x}
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
// Border widths.
|
|
46
|
+
$badge-border-top-width: var(
|
|
47
|
+
--#{root-defaults.$prefix}badge-border-top-width,
|
|
48
|
+
#{root-variables.$border-top-width}
|
|
49
|
+
);
|
|
50
|
+
$badge-border-right-width: var(
|
|
51
|
+
--#{root-defaults.$prefix}badge-border-right-width,
|
|
52
|
+
#{root-variables.$border-right-width}
|
|
53
|
+
);
|
|
54
|
+
$badge-border-bottom-width: var(
|
|
55
|
+
--#{root-defaults.$prefix}badge-border-bottom-width,
|
|
56
|
+
#{root-variables.$border-bottom-width}
|
|
57
|
+
);
|
|
58
|
+
$badge-border-left-width: var(
|
|
59
|
+
--#{root-defaults.$prefix}badge-border-left-width,
|
|
60
|
+
#{root-variables.$border-left-width}
|
|
61
|
+
);
|
|
62
|
+
$badge-border-width: var(
|
|
63
|
+
--#{root-defaults.$prefix}badge-border-width,
|
|
64
|
+
#{$badge-border-top-width} #{$badge-border-right-width}
|
|
65
|
+
#{$badge-border-bottom-width} #{$badge-border-left-width}
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
// Border styles.
|
|
69
|
+
$badge-border-top-style: var(
|
|
70
|
+
--#{root-defaults.$prefix}badge-border-top-style,
|
|
71
|
+
#{root-variables.$border-top-style}
|
|
72
|
+
);
|
|
73
|
+
$badge-border-right-style: var(
|
|
74
|
+
--#{root-defaults.$prefix}badge-border-right-style,
|
|
75
|
+
#{root-variables.$border-right-style}
|
|
76
|
+
);
|
|
77
|
+
$badge-border-bottom-style: var(
|
|
78
|
+
--#{root-defaults.$prefix}badge-border-bottom-style,
|
|
79
|
+
#{root-variables.$border-bottom-style}
|
|
80
|
+
);
|
|
81
|
+
$badge-border-left-style: var(
|
|
82
|
+
--#{root-defaults.$prefix}badge-border-left-style,
|
|
83
|
+
#{root-variables.$border-left-style}
|
|
84
|
+
);
|
|
85
|
+
$badge-border-style: var(
|
|
86
|
+
--#{root-defaults.$prefix}badge-border-style,
|
|
87
|
+
#{$badge-border-top-style} #{$badge-border-right-style}
|
|
88
|
+
#{$badge-border-bottom-style} #{$badge-border-left-style}
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
// Border radii.
|
|
92
|
+
$badge-border-top-left-radius: var(
|
|
93
|
+
--#{root-defaults.$prefix}badge-border-top-left-radius,
|
|
94
|
+
#{root-variables.$border-top-left-radius}
|
|
95
|
+
);
|
|
96
|
+
$badge-border-top-right-radius: var(
|
|
97
|
+
--#{root-defaults.$prefix}badge-border-top-right-radius,
|
|
98
|
+
#{root-variables.$border-top-right-radius}
|
|
99
|
+
);
|
|
100
|
+
$badge-border-bottom-right-radius: var(
|
|
101
|
+
--#{root-defaults.$prefix}badge-border-bottom-right-radius,
|
|
102
|
+
#{root-variables.$border-bottom-right-radius}
|
|
103
|
+
);
|
|
104
|
+
$badge-border-bottom-left-radius: var(
|
|
105
|
+
--#{root-defaults.$prefix}badge-border-bottom-left-radius,
|
|
106
|
+
#{root-variables.$border-bottom-left-radius}
|
|
107
|
+
);
|
|
108
|
+
$badge-border-radius: var(
|
|
109
|
+
--#{root-defaults.$prefix}badge-border-radius,
|
|
110
|
+
#{$badge-border-top-left-radius} #{$badge-border-top-right-radius}
|
|
111
|
+
#{$badge-border-bottom-right-radius} #{$badge-border-bottom-left-radius}
|
|
112
|
+
);
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// @graupl/core disclosure component default values.
|
|
2
|
+
//
|
|
3
|
+
// Generally, these should not be used directly when styling components unless a static value is needed.
|
|
4
|
+
// They are mainly used to provide class selectors, fallbacks for custom properties, or loop values.
|
|
5
|
+
//
|
|
6
|
+
// They should not be used to define direct property values (i.e. font-size, color, etc.).
|
|
7
|
+
// Those should be defined as custom properties in the `_variables.scss` file.
|
|
8
|
+
|
|
9
|
+
@use "../../defaults" as root-defaults;
|
|
10
|
+
|
|
11
|
+
// Disclosure selectors.
|
|
12
|
+
$selector-base: root-defaults.$component-selector-base !default;
|
|
13
|
+
$modifier-selector-base: root-defaults.$modifier-selector-base !default;
|
|
14
|
+
$disclosure-selector-base: $selector-base !default;
|
|
15
|
+
$disclosure-selector: "disclosure" !default;
|
|
16
|
+
$disclosure-content-selector-base: $selector-base !default;
|
|
17
|
+
$disclosure-content-selector: "disclosure-content" !default;
|
|
18
|
+
$disclosure-toggle-selector-base: $modifier-selector-base !default;
|
|
19
|
+
$disclosure-toggle-selector: "disclosure-toggle" !default;
|
|
20
|
+
$disclosure-open-selector-base: $modifier-selector-base !default;
|
|
21
|
+
$disclosure-open-selector: "show" !default;
|
|
22
|
+
$disclosure-closed-selector-base: $modifier-selector-base !default;
|
|
23
|
+
$disclosure-closed-selector: "hide" !default;
|
|
24
|
+
$disclosure-transitioning-selector-base: $modifier-selector-base !default;
|
|
25
|
+
$disclosure-transitioning-selector: "transitioning" !default;
|
|
26
|
+
|
|
27
|
+
// Visibility properties.
|
|
28
|
+
$disclosure-show-display: flex !default;
|
|
29
|
+
$disclosure-hide-display: flex !default;
|
|
30
|
+
$disclosure-transitioning-display: $disclosure-show-display !default;
|
|
31
|
+
|
|
32
|
+
// Disclosure block-size properties.
|
|
33
|
+
$disclosure-show-block-size: 100% !default;
|
|
34
|
+
$disclosure-hide-block-size: 0 !default;
|
|
35
|
+
$disclosure-transitioning-block-size: $disclosure-hide-block-size !default;
|
|
36
|
+
|
|
37
|
+
// Opacity properties.
|
|
38
|
+
$disclosure-show-opacity: 1 !default;
|
|
39
|
+
$disclosure-hide-opacity: 0 !default;
|
|
40
|
+
$disclosure-transitioning-opacity: $disclosure-hide-opacity !default;
|
|
41
|
+
|
|
42
|
+
// Disclosure toggle properties.
|
|
43
|
+
$disclosure-toggle-content: "'↓'" !default;
|
|
44
|
+
$disclosure-toggle-transform: rotate(0deg) !default;
|
|
45
|
+
$disclosure-toggle-open-transform: rotate(-180deg) !default;
|