@graupl/graupl 1.0.0-beta.1 → 1.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/dist/css/base/button.css +1 -1
- package/dist/css/base/button.css.map +1 -1
- package/dist/css/base/form.css +1 -1
- package/dist/css/base/form.css.map +1 -1
- package/dist/css/base/link.css +1 -1
- package/dist/css/base/link.css.map +1 -1
- package/dist/css/base/table.css +1 -1
- package/dist/css/base/table.css.map +1 -1
- package/dist/css/base.css +1 -1
- package/dist/css/base.css.map +1 -1
- package/dist/css/component/accordion.css +1 -1
- package/dist/css/component/accordion.css.map +1 -1
- package/dist/css/component/alert.css +1 -1
- package/dist/css/component/alert.css.map +1 -1
- package/dist/css/component/card.css +1 -1
- package/dist/css/component/card.css.map +1 -1
- package/dist/css/component/carousel.css +1 -1
- package/dist/css/component/carousel.css.map +1 -1
- package/dist/css/component/input-group.css +1 -1
- package/dist/css/component/input-group.css.map +1 -1
- package/dist/css/component/list.css +2 -0
- package/dist/css/component/list.css.map +1 -0
- package/dist/css/component/menu.css +1 -1
- package/dist/css/component/menu.css.map +1 -1
- package/dist/css/component/navigation.css +1 -1
- package/dist/css/component/navigation.css.map +1 -1
- 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/columns.css +1 -1
- package/dist/css/layout/columns.css.map +1 -1
- package/dist/css/layout/container.css +1 -1
- package/dist/css/layout/container.css.map +1 -1
- package/dist/css/layout/flex-columns.css +1 -1
- package/dist/css/layout/flex-columns.css.map +1 -1
- package/dist/css/layout.css +1 -1
- package/dist/css/layout.css.map +1 -1
- package/dist/css/normalize.css +1 -1
- package/dist/css/normalize.css.map +1 -1
- package/dist/css/state/focus.css +1 -1
- package/dist/css/state/focus.css.map +1 -1
- package/dist/css/state.css +1 -1
- package/dist/css/state.css.map +1 -1
- package/dist/css/theme/color.css +1 -1
- package/dist/css/theme/color.css.map +1 -1
- package/dist/css/theme/typography.css +1 -1
- package/dist/css/theme/typography.css.map +1 -1
- package/dist/css/theme.css +1 -1
- 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/border.css +2 -0
- package/dist/css/utilities/border.css.map +1 -0
- package/dist/css/utilities/color.css +1 -1
- package/dist/css/utilities/color.css.map +1 -1
- package/dist/css/utilities/display.css +1 -1
- package/dist/css/utilities/display.css.map +1 -1
- package/dist/css/utilities/flex.css +1 -1
- package/dist/css/utilities/flex.css.map +1 -1
- package/dist/css/utilities/height.css +1 -1
- package/dist/css/utilities/height.css.map +1 -1
- package/dist/css/utilities/inset.css +1 -1
- 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 +1 -1
- package/dist/css/utilities/order.css.map +1 -1
- package/dist/css/utilities/postion.css +1 -1
- package/dist/css/utilities/postion.css.map +1 -1
- package/dist/css/utilities/ratio.css +1 -1
- package/dist/css/utilities/ratio.css.map +1 -1
- package/dist/css/utilities/spacing.css +1 -1
- package/dist/css/utilities/spacing.css.map +1 -1
- package/dist/css/utilities/typography.css +1 -1
- package/dist/css/utilities/typography.css.map +1 -1
- package/dist/css/utilities/visibility.css +1 -1
- package/dist/css/utilities/visibility.css.map +1 -1
- package/dist/css/utilities/width.css +1 -1
- package/dist/css/utilities/width.css.map +1 -1
- package/dist/css/utilities.css +1 -1
- package/dist/css/utilities.css.map +1 -1
- package/index.html +84 -12
- package/package.json +1 -1
- package/scss/component/list.scss +3 -0
- package/scss/utilities/border.scss +3 -0
- package/src/scss/_defaults.scss +14 -5
- package/src/scss/component/_index.scss +1 -0
- package/src/scss/component/input-group/_index.scss +1 -1
- package/src/scss/component/list/_defaults.scss +15 -0
- package/src/scss/component/list/_index.scss +50 -0
- package/src/scss/component/list/_variables.scss +176 -0
- package/src/scss/functions/_screen.scss +8 -0
- package/src/scss/functions/_utility.scss +28 -0
- package/src/scss/mixins/_layer.scss +5 -1
- package/src/scss/mixins/_screen.scss +24 -3
- package/src/scss/mixins/_state.scss +18 -0
- package/src/scss/mixins/_theme.scss +15 -0
- package/src/scss/mixins/_utility.scss +119 -17
- package/src/scss/theme/color/_index.scss +4 -4
- package/src/scss/utilities/_index.scss +1 -0
- package/src/scss/utilities/alignment/_defaults.scss +7 -5
- package/src/scss/utilities/alignment/_index.scss +117 -24
- package/src/scss/utilities/border/_defaults.scss +61 -0
- package/src/scss/utilities/border/_index.scss +269 -0
- package/src/scss/utilities/border/_variables.scss +6 -0
- package/src/scss/utilities/color/_defaults.scss +6 -4
- package/src/scss/utilities/color/_index.scss +137 -26
- package/src/scss/utilities/display/_defaults.scss +8 -4
- package/src/scss/utilities/display/_index.scss +88 -15
- package/src/scss/utilities/flex/_defaults.scss +30 -6
- package/src/scss/utilities/flex/_index.scss +215 -31
- package/src/scss/utilities/height/_defaults.scss +7 -5
- package/src/scss/utilities/height/_index.scss +183 -45
- package/src/scss/utilities/inset/_defaults.scss +4 -2
- package/src/scss/utilities/inset/_index.scss +58 -5
- package/src/scss/utilities/justification/_defaults.scss +7 -5
- package/src/scss/utilities/justification/_index.scss +117 -24
- package/src/scss/utilities/list/_defaults.scss +6 -4
- package/src/scss/utilities/list/_index.scss +86 -17
- package/src/scss/utilities/order/_defaults.scss +5 -3
- package/src/scss/utilities/order/_index.scss +68 -20
- package/src/scss/utilities/position/_defaults.scss +5 -3
- package/src/scss/utilities/position/_index.scss +55 -10
- package/src/scss/utilities/ratio/_defaults.scss +7 -5
- package/src/scss/utilities/ratio/_index.scss +49 -10
- package/src/scss/utilities/spacing/_defaults.scss +4 -2
- package/src/scss/utilities/spacing/_index.scss +225 -12
- package/src/scss/utilities/typography/_defaults.scss +21 -5
- package/src/scss/utilities/typography/_index.scss +577 -143
- package/src/scss/utilities/visibility/_defaults.scss +5 -3
- package/src/scss/utilities/visibility/_index.scss +56 -10
- package/src/scss/utilities/width/_defaults.scss +7 -5
- package/src/scss/utilities/width/_index.scss +183 -45
- package/stylelint.config.js +1 -0
package/index.html
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<p>This source code can be found in <a href="https://github.com/Graupl/graupl">GitHub</a>.</p>
|
|
16
16
|
<p>Graupl supports light and dark modes out-of-the-box.</p>
|
|
17
17
|
<button id="dark-mode-toggle" class="button mt-5 w-half">Toggle dark mode</button>
|
|
18
|
-
<div class="full-width container
|
|
18
|
+
<div class="full-width container py-10 my-10 align-content-center">
|
|
19
19
|
<h2>Buttons</h2>
|
|
20
20
|
<p>There are 4 colours of buttons supported by default, with plans to have a "graupl-theme" plugin that adds more.
|
|
21
21
|
</p>
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
<a class="button" href="#" disabled>Anchor Button</a>
|
|
35
35
|
</div>
|
|
36
36
|
</div>
|
|
37
|
-
<div class="full-width container
|
|
37
|
+
<div class="full-width container py-10 my-10 align-content-center">
|
|
38
38
|
<h2>Form elements</h2>
|
|
39
39
|
<p>Graupl provides default styling for all form elements.</p>
|
|
40
40
|
<form class="full-width rg-4">
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
</optgroup>
|
|
84
84
|
</select>
|
|
85
85
|
</div>
|
|
86
|
-
<div class="input-group"><label for"multi-select">Multi-select</label>
|
|
86
|
+
<div class="input-group"><label for="multi-select">Multi-select</label>
|
|
87
87
|
<select id="multi-select" multiple>
|
|
88
88
|
<option value="1">Option 1</option>
|
|
89
89
|
<option value="2">Option 2</option>
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
</div>
|
|
132
132
|
</form>
|
|
133
133
|
</div>
|
|
134
|
-
<div class="full-width container
|
|
134
|
+
<div class="full-width container py-10 my-10 align-content-center">
|
|
135
135
|
<h2>Navigation</h2>
|
|
136
136
|
<div class="py-7">
|
|
137
137
|
<nav class="navigation" data-graupl-menu-type="DisclosureMenu"
|
|
@@ -155,7 +155,7 @@
|
|
|
155
155
|
</nav>
|
|
156
156
|
</div>
|
|
157
157
|
</div>
|
|
158
|
-
<div class="full-width container
|
|
158
|
+
<div class="full-width container py-10 my-10 align-content-center">
|
|
159
159
|
<h2>Tables</h2>
|
|
160
160
|
<p>Graupl provides some default styling for tables as well as some other useful features to customize them.</p>
|
|
161
161
|
<table class="bordered striped-rows hoverable">
|
|
@@ -386,7 +386,7 @@
|
|
|
386
386
|
</table>
|
|
387
387
|
</div>
|
|
388
388
|
</div>
|
|
389
|
-
<div class="full-width container
|
|
389
|
+
<div class="full-width container py-10 my-10 align-content-center">
|
|
390
390
|
<h2>Columns</h2>
|
|
391
391
|
<div class="columns count-6 py-5">
|
|
392
392
|
<div class="bg-primary-700 text-primary-100 py-7 px-5"></div>
|
|
@@ -403,7 +403,7 @@
|
|
|
403
403
|
<div class="bg-primary-700 text-primary-100 py-7 px-5"></div>
|
|
404
404
|
</div>
|
|
405
405
|
</div>
|
|
406
|
-
<div class="full-width container
|
|
406
|
+
<div class="full-width container py-10 my-10 align-content-center">
|
|
407
407
|
<h2>Flex columns</h2>
|
|
408
408
|
<div class="flex-columns py-5">
|
|
409
409
|
<div class="col-6 col-md-8 col-xl-9 py-7 bg-primary-700 text-primary-100 px-5">
|
|
@@ -428,7 +428,7 @@
|
|
|
428
428
|
<div class="col-4 py-7 bg-primary-700 text-primary-100 px-5"></div>
|
|
429
429
|
</div>
|
|
430
430
|
</div>
|
|
431
|
-
<div class="full-width container
|
|
431
|
+
<div class="full-width container py-10 my-10 align-content-center">
|
|
432
432
|
<h2>Cards</h2>
|
|
433
433
|
<p>Cards using the <span class="display-inline-block text-tertiary-800 bg-secondary-100 px-1">.top</span> class
|
|
434
434
|
will have the image placed on the top while cards using the <span
|
|
@@ -533,7 +533,7 @@
|
|
|
533
533
|
</div>
|
|
534
534
|
</div>
|
|
535
535
|
</div>
|
|
536
|
-
<div class="full-width container
|
|
536
|
+
<div class="full-width container py-10 my-10 align-content-center">
|
|
537
537
|
<h2>Horizontal Cards</h2>
|
|
538
538
|
<p>Cards using the <span class="display-inline-block text-tertiary-800 bg-secondary-100 px-1">.right</span> class
|
|
539
539
|
will have the image placed on the right while cards using the <span
|
|
@@ -638,7 +638,7 @@
|
|
|
638
638
|
</div>
|
|
639
639
|
</div>
|
|
640
640
|
</div>
|
|
641
|
-
<div class="full-width container
|
|
641
|
+
<div class="full-width container py-10 my-10 align-content-center">
|
|
642
642
|
<h2>Inverse Cards</h2>
|
|
643
643
|
<p>Cards using the <span class="display-inline-block text-tertiary-800 bg-secondary-100 px-1">.inverse</span>
|
|
644
644
|
class will have the image placed on the right if it is a horizontal card and on the bottom if it is a vertical
|
|
@@ -681,7 +681,7 @@
|
|
|
681
681
|
</div>
|
|
682
682
|
</div>
|
|
683
683
|
</div>
|
|
684
|
-
<div class="full-width container
|
|
684
|
+
<div class="full-width container py-10 my-10 align-content-center">
|
|
685
685
|
<h2>Alerts</h2>
|
|
686
686
|
<div class="display-grid g-5">
|
|
687
687
|
<div class="alert">
|
|
@@ -788,7 +788,7 @@
|
|
|
788
788
|
</div>
|
|
789
789
|
</div>
|
|
790
790
|
</div>
|
|
791
|
-
<div class="full-width container
|
|
791
|
+
<div class="full-width container py-10 my-10 align-content-center">
|
|
792
792
|
<h2>Carousels</h2>
|
|
793
793
|
<section class="carousel">
|
|
794
794
|
<div class="carousel-control-container">
|
|
@@ -822,6 +822,78 @@
|
|
|
822
822
|
</div>
|
|
823
823
|
</section>
|
|
824
824
|
</div>
|
|
825
|
+
<div class="full-width container py-10 my-10 align-content-center">
|
|
826
|
+
<h2>Lists</h2>
|
|
827
|
+
<p>Lists are inspired by Bootstrap's list groups.</p>
|
|
828
|
+
<h3>Unordered list</h3>
|
|
829
|
+
<ul class="list">
|
|
830
|
+
<li class="list-item">
|
|
831
|
+
<a href="#">List item 1</a>
|
|
832
|
+
</li>
|
|
833
|
+
<li class="list-item">
|
|
834
|
+
List item 2
|
|
835
|
+
</li>
|
|
836
|
+
<li class="list-item">
|
|
837
|
+
<a href="#" class="stretched">List item 3</a>
|
|
838
|
+
</li>
|
|
839
|
+
</ul>
|
|
840
|
+
<h3>Ordered list</h3>
|
|
841
|
+
<p>You can add the list markers back in using utility classes (in this case <span class="display-inline-block text-tertiary-800 bg-secondary-100 px-1">.list-style-decimal</span> and <span class="display-inline-block text-tertiary-800 bg-secondary-100 px-1">.list-style-inside</span>).</p>
|
|
842
|
+
<ol class="list list-style-decimal list-style-inside">
|
|
843
|
+
<li class="list-item">
|
|
844
|
+
<a href="#">List item 1</a>
|
|
845
|
+
</li>
|
|
846
|
+
<li class="list-item">
|
|
847
|
+
List item 2
|
|
848
|
+
</li>
|
|
849
|
+
<li class="list-item">
|
|
850
|
+
<a href="#" class="stretched">List item 3</a>
|
|
851
|
+
</li>
|
|
852
|
+
</ol>
|
|
853
|
+
<h3>Inline lists</h3>
|
|
854
|
+
<p>We can achieve an inline list by utilizing the <span class="display-inline-block text-tertiary-800 bg-secondary-100 px-1">.columns</span> class.</p>
|
|
855
|
+
<ul class="list columns">
|
|
856
|
+
<li class="list-item">
|
|
857
|
+
<a href="#">List item 1</a>
|
|
858
|
+
</li>
|
|
859
|
+
<li class="list-item">
|
|
860
|
+
List item 2
|
|
861
|
+
</li>
|
|
862
|
+
<li class="list-item">
|
|
863
|
+
<a href="#" class="stretched">List item 3</a>
|
|
864
|
+
</li>
|
|
865
|
+
<li class="list-item">
|
|
866
|
+
<a href="#">List item 4</a>
|
|
867
|
+
</li>
|
|
868
|
+
<li class="list-item">
|
|
869
|
+
List item 5
|
|
870
|
+
</li>
|
|
871
|
+
<li class="list-item">
|
|
872
|
+
<a href="#" class="stretched">List item 6</a>
|
|
873
|
+
</li>
|
|
874
|
+
</ul>
|
|
875
|
+
<p class="pt-5">We can also use the <span class="display-inline-block text-tertiary-800 bg-secondary-100 px-1">.display-flex</span> utility class.</p>
|
|
876
|
+
<ul class="list display-flex">
|
|
877
|
+
<li class="list-item">
|
|
878
|
+
<a href="#">List item 1</a>
|
|
879
|
+
</li>
|
|
880
|
+
<li class="list-item">
|
|
881
|
+
List item 2
|
|
882
|
+
</li>
|
|
883
|
+
<li class="list-item">
|
|
884
|
+
<a href="#" class="stretched">List item 3</a>
|
|
885
|
+
</li>
|
|
886
|
+
<li class="list-item">
|
|
887
|
+
<a href="#">List item 4</a>
|
|
888
|
+
</li>
|
|
889
|
+
<li class="list-item">
|
|
890
|
+
List item 5
|
|
891
|
+
</li>
|
|
892
|
+
<li class="list-item">
|
|
893
|
+
<a href="#" class="stretched">List item 6</a>
|
|
894
|
+
</li>
|
|
895
|
+
</ul>
|
|
896
|
+
</div>
|
|
825
897
|
</main>
|
|
826
898
|
<script src="https://cdn.jsdelivr.net/npm/accessible-menu/dist/disclosure-menu.iife.js"></script>
|
|
827
899
|
<script type="module" src="src/js/alert/index.js"></script>
|
package/package.json
CHANGED
package/src/scss/_defaults.scss
CHANGED
|
@@ -9,11 +9,15 @@
|
|
|
9
9
|
@use "sass:map";
|
|
10
10
|
|
|
11
11
|
// Prefix for custom properties and other naming conventions.
|
|
12
|
-
$
|
|
12
|
+
$id: "graupl" !default;
|
|
13
|
+
$prefix: "#{$id}-" !default;
|
|
13
14
|
|
|
14
15
|
// Settings.
|
|
15
16
|
$use-important: true !default;
|
|
16
|
-
$
|
|
17
|
+
$screen-aware-utilities: true !default;
|
|
18
|
+
$theme-aware-utilities: true !default;
|
|
19
|
+
$state-aware-utilities: true !default;
|
|
20
|
+
$use-layers: true !default;
|
|
17
21
|
|
|
18
22
|
// Layout properties.
|
|
19
23
|
$content-max-width: 96ch !default;
|
|
@@ -87,7 +91,7 @@ $interactive-min-height: 44px !default;
|
|
|
87
91
|
|
|
88
92
|
// Border properties.
|
|
89
93
|
$border-radius: 0.125rem !default;
|
|
90
|
-
$border-width:
|
|
94
|
+
$border-width: 0.125rem !default;
|
|
91
95
|
$border-style: solid !default;
|
|
92
96
|
|
|
93
97
|
// Transition properties.
|
|
@@ -132,5 +136,10 @@ $base-state-selectors: (
|
|
|
132
136
|
$custom-state-selectors: () !default;
|
|
133
137
|
$state-selectors: map.merge($base-state-selectors, $custom-state-selectors);
|
|
134
138
|
|
|
135
|
-
//
|
|
136
|
-
$
|
|
139
|
+
// Utility properties.
|
|
140
|
+
$utility-selector-prefix: "." !default;
|
|
141
|
+
|
|
142
|
+
// Utility modifier separators.
|
|
143
|
+
$utility-screen-aware-separator: "\\:" !default;
|
|
144
|
+
$utility-theme-aware-separator: "\\:" !default;
|
|
145
|
+
$utility-state-aware-separator: "\\:" !default;
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
@include screen.
|
|
40
|
+
@include screen.down(xs) {
|
|
41
41
|
#{defaults.$input-group-selector}#{defaults.$input-group-inline-selector} {
|
|
42
42
|
grid-template-areas: $input-group-grid-template-areas;
|
|
43
43
|
grid-template-columns: $input-group-grid-template-columns;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// @graupl/graupl list 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
|
+
// Card selectors.
|
|
10
|
+
$list-selector: ".list" !default;
|
|
11
|
+
$list-item-selector: ".list-item" !default;
|
|
12
|
+
|
|
13
|
+
// List item properties.
|
|
14
|
+
$list-item-transform: none !default;
|
|
15
|
+
$list-item-hover-transform: $list-item-transform !default;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// @graupl/graupl card component styles.
|
|
2
|
+
|
|
3
|
+
@use "../../defaults" as root-defaults;
|
|
4
|
+
@use "../../mixins/animation";
|
|
5
|
+
@use "../../mixins/layer" as *;
|
|
6
|
+
@use "defaults";
|
|
7
|
+
@use "sass:map";
|
|
8
|
+
@use "variables" as *;
|
|
9
|
+
|
|
10
|
+
@include layer(component) {
|
|
11
|
+
#{defaults.$list-selector} {
|
|
12
|
+
display: grid;
|
|
13
|
+
position: relative;
|
|
14
|
+
margin: $list-margin;
|
|
15
|
+
padding: $list-padding;
|
|
16
|
+
border: $list-border;
|
|
17
|
+
border-radius: $list-border-radius;
|
|
18
|
+
list-style: none;
|
|
19
|
+
gap: $list-gap;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
#{defaults.$list-item-selector} {
|
|
23
|
+
position: relative;
|
|
24
|
+
padding: $list-item-padding;
|
|
25
|
+
transform: $list-item-transform;
|
|
26
|
+
transition: $list-item-transition;
|
|
27
|
+
border: $list-item-border;
|
|
28
|
+
border-radius: $list-item-border-radius;
|
|
29
|
+
|
|
30
|
+
@each $selector in map.get(root-defaults.$state-selectors, hover) {
|
|
31
|
+
&#{$selector} {
|
|
32
|
+
--#{root-defaults.$prefix}list-item-transform: $list-item-hover-transform;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@include layer(theme) {
|
|
39
|
+
#{defaults.$list-selector} {
|
|
40
|
+
border-color: $list-border-color;
|
|
41
|
+
background: $list-background;
|
|
42
|
+
color: $list-color;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
#{defaults.$list-item-selector} {
|
|
46
|
+
border-color: $list-item-border-color;
|
|
47
|
+
background: $list-item-background;
|
|
48
|
+
color: $list-item-color;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
// @graupl/graupl list component variables.
|
|
2
|
+
//
|
|
3
|
+
// These values are to be used to directly style components and provide a
|
|
4
|
+
// cleaner way to reference custom properties.
|
|
5
|
+
|
|
6
|
+
@use "../../defaults" as root-defaults;
|
|
7
|
+
@use "../../theme/color/variables" as color;
|
|
8
|
+
@use "../../variables" as root-variables;
|
|
9
|
+
@use "defaults";
|
|
10
|
+
@use "sass:map";
|
|
11
|
+
|
|
12
|
+
// List properties.
|
|
13
|
+
$list-padding-x: var(
|
|
14
|
+
--#{root-defaults.$prefix}list-padding-x,
|
|
15
|
+
#{map.get(root-variables.$spacers, 0)}
|
|
16
|
+
);
|
|
17
|
+
$list-padding-y: var(
|
|
18
|
+
--#{root-defaults.$prefix}list-padding-y,
|
|
19
|
+
#{map.get(root-variables.$spacers, 0)}
|
|
20
|
+
);
|
|
21
|
+
$list-padding: var(
|
|
22
|
+
--#{root-defaults.$prefix}list-padding,
|
|
23
|
+
#{$list-padding-y} #{$list-padding-x}
|
|
24
|
+
);
|
|
25
|
+
$list-margin-x: var(
|
|
26
|
+
--#{root-defaults.$prefix}list-margin-x,
|
|
27
|
+
#{map.get(root-variables.$spacers, 0)}
|
|
28
|
+
);
|
|
29
|
+
$list-margin-y: var(
|
|
30
|
+
--#{root-defaults.$prefix}list-margin-y,
|
|
31
|
+
#{map.get(root-variables.$spacers, 0)}
|
|
32
|
+
);
|
|
33
|
+
$list-margin: var(
|
|
34
|
+
--#{root-defaults.$prefix}list-margin,
|
|
35
|
+
#{$list-margin-y} #{$list-margin-x}
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
// List gap properties.
|
|
39
|
+
$list-column-gap: var(
|
|
40
|
+
--#{root-defaults.$prefix}list-column-gap,
|
|
41
|
+
#{map.get(root-variables.$spacers, 2)}
|
|
42
|
+
);
|
|
43
|
+
$list-row-gap: var(
|
|
44
|
+
--#{root-defaults.$prefix}list-row-gap,
|
|
45
|
+
#{map.get(root-variables.$spacers, 2)}
|
|
46
|
+
);
|
|
47
|
+
$list-gap: var(
|
|
48
|
+
--#{root-defaults.$prefix}list-gap,
|
|
49
|
+
#{$list-column-gap} #{$list-row-gap}
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
// List color properties.
|
|
53
|
+
$list-background: var(
|
|
54
|
+
--#{root-defaults.$prefix}list-background,
|
|
55
|
+
#{color.$root-background}
|
|
56
|
+
);
|
|
57
|
+
$list-color: var(--#{root-defaults.$prefix}list-color, #{color.$root-color});
|
|
58
|
+
|
|
59
|
+
// List border-properties.
|
|
60
|
+
$list-border-color: var(
|
|
61
|
+
--#{root-defaults.$prefix}list-border-color,
|
|
62
|
+
#{$list-color}
|
|
63
|
+
);
|
|
64
|
+
$list-top-left-border-radius: var(
|
|
65
|
+
--#{root-defaults.$prefix}list-top-left-border-radius,
|
|
66
|
+
#{root-variables.$border-radius}
|
|
67
|
+
);
|
|
68
|
+
$list-top-right-border-radius: var(
|
|
69
|
+
--#{root-defaults.$prefix}list-top-right-border-radius,
|
|
70
|
+
#{root-variables.$border-radius}
|
|
71
|
+
);
|
|
72
|
+
$list-bottom-left-border-radius: var(
|
|
73
|
+
--#{root-defaults.$prefix}list-bottom-left-border-radius,
|
|
74
|
+
#{root-variables.$border-radius}
|
|
75
|
+
);
|
|
76
|
+
$list-bottom-right-border-radius: var(
|
|
77
|
+
--#{root-defaults.$prefix}list-bottom-right-border-radius,
|
|
78
|
+
#{root-variables.$border-radius}
|
|
79
|
+
);
|
|
80
|
+
$list-border-radius: var(
|
|
81
|
+
--#{root-defaults.$prefix}list-border-radius,
|
|
82
|
+
#{$list-top-left-border-radius} #{$list-top-right-border-radius}
|
|
83
|
+
#{$list-bottom-right-border-radius} #{$list-bottom-left-border-radius}
|
|
84
|
+
);
|
|
85
|
+
$list-border-style: var(
|
|
86
|
+
--#{root-defaults.$prefix}list-border-style,
|
|
87
|
+
#{root-variables.$border-style}
|
|
88
|
+
);
|
|
89
|
+
$list-border-width: var(--#{root-defaults.$prefix}list-border-width, 0);
|
|
90
|
+
$list-border: var(
|
|
91
|
+
--#{root-defaults.$prefix}list-border,
|
|
92
|
+
#{$list-border-width} #{$list-border-style}
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
// List item properties.
|
|
96
|
+
$list-item-padding-x: var(
|
|
97
|
+
--#{root-defaults.$prefix}list-item-padding-x,
|
|
98
|
+
#{map.get(root-variables.$spacers, 5)}
|
|
99
|
+
);
|
|
100
|
+
$list-item-padding-y: var(
|
|
101
|
+
--#{root-defaults.$prefix}list-item-padding-y,
|
|
102
|
+
#{map.get(root-variables.$spacers, 3)}
|
|
103
|
+
);
|
|
104
|
+
$list-item-padding: var(
|
|
105
|
+
--#{root-defaults.$prefix}list-item-padding,
|
|
106
|
+
#{$list-item-padding-y} #{$list-item-padding-x}
|
|
107
|
+
);
|
|
108
|
+
$list-item-transition: var(
|
|
109
|
+
--#{root-defaults.$prefix}list-item-transition,
|
|
110
|
+
transform #{map.get(root-variables.$transition-durations, fast)}
|
|
111
|
+
#{root-variables.$transition-timing-function}
|
|
112
|
+
);
|
|
113
|
+
$list-item-transition-reduced-motion: var(
|
|
114
|
+
--#{root-defaults.$prefix}list-item-transition-reduced-motion,
|
|
115
|
+
none
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
// List item transform properties.
|
|
119
|
+
$list-item-transform: var(
|
|
120
|
+
--#{root-defaults.$prefix}list-item-transform,
|
|
121
|
+
#{defaults.$list-item-transform}
|
|
122
|
+
);
|
|
123
|
+
$list-item-hover-transform: var(
|
|
124
|
+
--#{root-defaults.$prefix}list-item-hover-transform,
|
|
125
|
+
#{defaults.$list-item-hover-transform}
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
// List item color properties.
|
|
129
|
+
$list-item-background: var(
|
|
130
|
+
--#{root-defaults.$prefix}list-item-background,
|
|
131
|
+
#{color.$root-background}
|
|
132
|
+
);
|
|
133
|
+
$list-item-color: var(
|
|
134
|
+
--#{root-defaults.$prefix}list-item-color,
|
|
135
|
+
#{color.$root-color}
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
// List item border-properties.
|
|
139
|
+
$list-item-border-color: var(
|
|
140
|
+
--#{root-defaults.$prefix}list-item-border-color,
|
|
141
|
+
#{$list-item-color}
|
|
142
|
+
);
|
|
143
|
+
$list-item-top-left-border-radius: var(
|
|
144
|
+
--#{root-defaults.$prefix}list-item-top-left-border-radius,
|
|
145
|
+
#{root-variables.$border-radius}
|
|
146
|
+
);
|
|
147
|
+
$list-item-top-right-border-radius: var(
|
|
148
|
+
--#{root-defaults.$prefix}list-item-top-right-border-radius,
|
|
149
|
+
#{root-variables.$border-radius}
|
|
150
|
+
);
|
|
151
|
+
$list-item-bottom-left-border-radius: var(
|
|
152
|
+
--#{root-defaults.$prefix}list-item-bottom-left-border-radius,
|
|
153
|
+
#{root-variables.$border-radius}
|
|
154
|
+
);
|
|
155
|
+
$list-item-bottom-right-border-radius: var(
|
|
156
|
+
--#{root-defaults.$prefix}list-item-bottom-right-border-radius,
|
|
157
|
+
#{root-variables.$border-radius}
|
|
158
|
+
);
|
|
159
|
+
$list-item-border-radius: var(
|
|
160
|
+
--#{root-defaults.$prefix}list-item-border-radius,
|
|
161
|
+
#{$list-item-top-left-border-radius} #{$list-item-top-right-border-radius}
|
|
162
|
+
#{$list-item-bottom-right-border-radius}
|
|
163
|
+
#{$list-item-bottom-left-border-radius}
|
|
164
|
+
);
|
|
165
|
+
$list-item-border-style: var(
|
|
166
|
+
--#{root-defaults.$prefix}list-item-border-style,
|
|
167
|
+
#{root-variables.$border-style}
|
|
168
|
+
);
|
|
169
|
+
$list-item-border-width: var(
|
|
170
|
+
--#{root-defaults.$prefix}list-item-border-width,
|
|
171
|
+
#{root-variables.$border-width}
|
|
172
|
+
);
|
|
173
|
+
$list-item-border: var(
|
|
174
|
+
--#{root-defaults.$prefix}list-item-border,
|
|
175
|
+
#{$list-item-border-width} #{$list-item-border-style}
|
|
176
|
+
);
|
|
@@ -7,12 +7,20 @@
|
|
|
7
7
|
@use "sass:list";
|
|
8
8
|
|
|
9
9
|
@function min($size) {
|
|
10
|
+
@if not map.has-key(root-defaults.$screen-sizes, $size) {
|
|
11
|
+
@error "The screen size \"#{$size}\" does not exist.";
|
|
12
|
+
}
|
|
13
|
+
|
|
10
14
|
$screen-size: map.get(root-defaults.$screen-sizes, $size);
|
|
11
15
|
|
|
12
16
|
@return $screen-size;
|
|
13
17
|
}
|
|
14
18
|
|
|
15
19
|
@function max($size) {
|
|
20
|
+
@if not map.has-key(root-defaults.$screen-sizes, $size) {
|
|
21
|
+
@error "The screen size \"#{$size}\" does not exist.";
|
|
22
|
+
}
|
|
23
|
+
|
|
16
24
|
$keys: map.keys(root-defaults.$screen-sizes);
|
|
17
25
|
$index: list.index($keys, "#{$size}");
|
|
18
26
|
$key: list.nth($keys, $index + 1);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// @graupl/graupl utility functions.
|
|
2
|
+
//
|
|
3
|
+
// Functions to help generate utility classes.
|
|
4
|
+
|
|
5
|
+
@use "sass:map";
|
|
6
|
+
|
|
7
|
+
/// Convert a property and value to a map.
|
|
8
|
+
///
|
|
9
|
+
/// This mixin is used internally.
|
|
10
|
+
///
|
|
11
|
+
/// @param {string|List} $property
|
|
12
|
+
/// The property/properties to convert to keys.
|
|
13
|
+
/// @param {string} $value
|
|
14
|
+
/// The value to use for keys.
|
|
15
|
+
@function convert-property-values-to-map($property, $value) {
|
|
16
|
+
$map: ();
|
|
17
|
+
|
|
18
|
+
@each $prop in $property {
|
|
19
|
+
$map: map.merge(
|
|
20
|
+
$map,
|
|
21
|
+
(
|
|
22
|
+
$prop: $value,
|
|
23
|
+
)
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@return $map;
|
|
28
|
+
}
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
@use "../functions/screen";
|
|
7
7
|
@use "../defaults" as root-defaults;
|
|
8
8
|
@use "sass:map";
|
|
9
|
-
@use "sass:list";
|
|
10
9
|
@use "sass:meta";
|
|
11
10
|
|
|
12
11
|
// A mixin to generate a minimum screen width media query.
|
|
@@ -45,12 +44,34 @@
|
|
|
45
44
|
}
|
|
46
45
|
|
|
47
46
|
@mixin trigger($trigger) {
|
|
47
|
+
@if not map.has-key(root-defaults.$screen-size-triggers, $trigger) {
|
|
48
|
+
@error "The screen size trigger \"#{$trigger}\" does not exist.";
|
|
49
|
+
}
|
|
50
|
+
|
|
48
51
|
$screen-size-trigger: map.get(root-defaults.$screen-size-triggers, $trigger);
|
|
52
|
+
|
|
53
|
+
@if not map.has-key($screen-size-trigger, "mixin") {
|
|
54
|
+
@error "The screen size trigger \"#{$trigger}\" does not have a mixin key.";
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@if not map.has-key($screen-size-trigger, "args") {
|
|
58
|
+
@error "The screen size trigger \"#{$trigger}\" does not have an args key.";
|
|
59
|
+
}
|
|
60
|
+
|
|
49
61
|
$mixin-name: map.get($screen-size-trigger, "mixin");
|
|
50
62
|
$mixin-args: map.get($screen-size-trigger, "args");
|
|
63
|
+
|
|
64
|
+
@if not meta.mixin-exists($mixin-name) {
|
|
65
|
+
@error "The mixin \"#{$mixin-name}\" does not exist.";
|
|
66
|
+
}
|
|
67
|
+
|
|
51
68
|
$mixin: meta.get-mixin($mixin-name);
|
|
52
69
|
|
|
53
|
-
@
|
|
54
|
-
@
|
|
70
|
+
@if meta.accepts-content($mixin) {
|
|
71
|
+
@include meta.apply($mixin, $mixin-args...) {
|
|
72
|
+
@content;
|
|
73
|
+
}
|
|
74
|
+
} @else {
|
|
75
|
+
@warn "The mixin \"#{$mixin-name}\" does not accept content.";
|
|
55
76
|
}
|
|
56
77
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// @graupl/graupl state mixins.
|
|
2
|
+
//
|
|
3
|
+
// A series of mixins to tie styles to a state.
|
|
4
|
+
|
|
5
|
+
@use "../defaults" as root-defaults;
|
|
6
|
+
@use "sass:map";
|
|
7
|
+
|
|
8
|
+
/// Applies styles to a specific state.
|
|
9
|
+
///
|
|
10
|
+
/// @param {string} $state
|
|
11
|
+
/// The name of the state to apply the styles to.
|
|
12
|
+
@mixin state($state) {
|
|
13
|
+
@each $selector in map.get(root-defaults.$state-selectors, $state) {
|
|
14
|
+
&#{$selector} {
|
|
15
|
+
@content;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// @graupl/graupl theme mixins.
|
|
2
|
+
//
|
|
3
|
+
// A series of mixins to tie styles to a theme-mode.
|
|
4
|
+
|
|
5
|
+
@use "../theme/color/defaults" as color-defaults;
|
|
6
|
+
|
|
7
|
+
/// Applies styles to a specific theme mode.
|
|
8
|
+
///
|
|
9
|
+
/// @param {string} $theme-name
|
|
10
|
+
/// The name of the theme mode to apply the styles to.
|
|
11
|
+
@mixin theme($theme-name) {
|
|
12
|
+
#{color-defaults.$theme-selector-prefix}#{$theme-name}#{color-defaults.$theme-selector-suffix} {
|
|
13
|
+
@content;
|
|
14
|
+
}
|
|
15
|
+
}
|