@rolemodel/optics 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +14 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +40 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +19 -0
- package/.github/pull_request_template.md +30 -0
- package/.github/workflows/linting.yml +38 -0
- package/.github/workflows/publish-storybook.yml +26 -0
- package/.github/workflows/release-package.yml +33 -0
- package/.prettierignore +0 -0
- package/.prettierrc.json +8 -0
- package/.storybook/ModeSwitcher.jsx +98 -0
- package/.storybook/documentation.scss +65 -0
- package/.storybook/main.js +10 -0
- package/.storybook/manager.js +22 -0
- package/.storybook/preview.js +12 -0
- package/.storybook/rolemodelTheme.js +10 -0
- package/.stylelintrc.json +15 -0
- package/LICENSE +21 -0
- package/README.md +57 -0
- package/build_token_json.js +149 -0
- package/dist/css/optics.css +2586 -0
- package/dist/css/optics.css.map +1 -0
- package/dist/scss/addons/rails-modal-and-panel/index.scss +2 -0
- package/dist/scss/addons/rails-modal-and-panel/modal.scss +86 -0
- package/dist/scss/addons/rails-modal-and-panel/panel.scss +36 -0
- package/dist/scss/addons/tom-select.scss +77 -0
- package/dist/scss/components/alert.scss +158 -0
- package/dist/scss/components/badge.scss +80 -0
- package/dist/scss/components/button.scss +235 -0
- package/dist/scss/components/button_group.scss +35 -0
- package/dist/scss/components/card.scss +65 -0
- package/dist/scss/components/flash.scss +58 -0
- package/dist/scss/components/form.scss +178 -0
- package/dist/scss/components/icon.scss +109 -0
- package/dist/scss/components/index.scss +10 -0
- package/dist/scss/components/sidebar.scss +255 -0
- package/dist/scss/components/table.scss +132 -0
- package/dist/scss/core/base.scss +95 -0
- package/dist/scss/core/layout.scss +36 -0
- package/dist/scss/core/tokens/base_tokens.scss +251 -0
- package/dist/scss/core/tokens/dark_mode_tokens.scss +324 -0
- package/dist/scss/core/tokens/index.scss +3 -0
- package/dist/scss/core/tokens/scale_color_tokens.scss +303 -0
- package/dist/scss/core/utilities.scss +548 -0
- package/dist/scss/optics.scss +13 -0
- package/dist/scss/recipes/16six-sidebar.scss +97 -0
- package/dist/scss/recipes/domains-sidebar.scss +60 -0
- package/dist/tokens/tokens.json +391 -0
- package/package.json +80 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
// TODO: When we get a pagination component, add it to the table styles and docs for within a table footer
|
|
2
|
+
|
|
3
|
+
%table-global {
|
|
4
|
+
// Public API
|
|
5
|
+
// Cells (for padding, the appropriate variable is used when using the density modifiers)
|
|
6
|
+
--_rm-table-cell-padding-default: var(--rm-space-small) var(--rm-space-x-small);
|
|
7
|
+
--_rm-table-cell-padding-comfortable: var(--rm-space-medium) var(--rm-space-small);
|
|
8
|
+
--_rm-table-cell-padding-compact: var(--rm-space-x-small) var(--rm-space-2x-small);
|
|
9
|
+
|
|
10
|
+
// Private API
|
|
11
|
+
// These allow for overriding specific padding versions easier.
|
|
12
|
+
--__rm-table-cell-padding: var(--_rm-table-cell-padding-default);
|
|
13
|
+
|
|
14
|
+
width: 100%;
|
|
15
|
+
border-radius: var(--rm-radius-medium);
|
|
16
|
+
border-collapse: collapse;
|
|
17
|
+
box-shadow: var(--rm-border-all) var(--rm-border-color);
|
|
18
|
+
contain: paint;
|
|
19
|
+
table-layout: auto;
|
|
20
|
+
|
|
21
|
+
thead {
|
|
22
|
+
background-color: var(--rm-color-neutral-plus-four);
|
|
23
|
+
color: var(--rm-color-neutral-on-plus-four);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
th {
|
|
27
|
+
font-weight: var(--rm-font-weight-normal);
|
|
28
|
+
text-align: left;
|
|
29
|
+
text-transform: uppercase;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
tbody,
|
|
33
|
+
tfoot {
|
|
34
|
+
background-color: var(--rm-color-background);
|
|
35
|
+
color: var(--rm-color-on-background);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
th,
|
|
39
|
+
td {
|
|
40
|
+
padding: var(--__rm-table-cell-padding);
|
|
41
|
+
font-size: var(--rm-font-small);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
tr:not(:last-child) {
|
|
45
|
+
box-shadow: inset var(--rm-border-top) var(--rm-border-color);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
tfoot tr {
|
|
49
|
+
box-shadow: var(--rm-border-top) var(--rm-border-color);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Layout Modifiers
|
|
53
|
+
&.table--auto-layout {
|
|
54
|
+
table-layout: auto;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
&.table--fixed-layout {
|
|
58
|
+
table-layout: fixed;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Table Density Modifiers
|
|
62
|
+
&.table--default-density {
|
|
63
|
+
--__rm-table-cell-padding: var(--_rm-table-cell-padding-default);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
&.table--comfortable-density {
|
|
67
|
+
--__rm-table-cell-padding: var(--_rm-table-cell-padding-comfortable);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
&.table--compact-density {
|
|
71
|
+
--__rm-table-cell-padding: var(--_rm-table-cell-padding-compact);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Striped Modifiers
|
|
75
|
+
&.table--even-striped {
|
|
76
|
+
tbody tr:nth-child(even) {
|
|
77
|
+
background-color: var(--rm-color-neutral-plus-seven);
|
|
78
|
+
color: var(--rm-color-neutral-on-plus-seven);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
&.table--odd-striped {
|
|
83
|
+
tbody tr:nth-child(odd) {
|
|
84
|
+
background-color: var(--rm-color-neutral-plus-seven);
|
|
85
|
+
color: var(--rm-color-neutral-on-plus-seven);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Sticky Header Row Modifier
|
|
90
|
+
&.table--sticky-header thead {
|
|
91
|
+
position: sticky;
|
|
92
|
+
top: 0;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Sticky Footer Row Modifier
|
|
96
|
+
&.table--sticky-footer tfoot {
|
|
97
|
+
position: sticky;
|
|
98
|
+
bottom: 0;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Default Table
|
|
103
|
+
.table {
|
|
104
|
+
@extend %table-global;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Primary Table
|
|
108
|
+
.table-primary {
|
|
109
|
+
@extend %table-global;
|
|
110
|
+
|
|
111
|
+
thead {
|
|
112
|
+
background-color: var(--rm-color-primary-plus-seven);
|
|
113
|
+
color: var(--rm-color-primary-on-plus-seven);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Danger Table
|
|
118
|
+
.table-danger {
|
|
119
|
+
@extend %table-global;
|
|
120
|
+
|
|
121
|
+
thead {
|
|
122
|
+
background-color: var(--rm-color-alerts-danger-plus-seven);
|
|
123
|
+
color: var(--rm-color-alerts-danger-on-plus-seven);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Sticky Header / Footer Table Container
|
|
128
|
+
.table-container {
|
|
129
|
+
@extend %table-global;
|
|
130
|
+
|
|
131
|
+
overflow-y: auto;
|
|
132
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// After a reset, introduce base element styles specific to this system
|
|
2
|
+
|
|
3
|
+
html {
|
|
4
|
+
overflow: hidden; // Needed to prevent flash messages and panels from causing overflow
|
|
5
|
+
font-family: var(--rm-font-family);
|
|
6
|
+
font-size: 62.5%; // 1rem = 10px
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
body {
|
|
10
|
+
overflow: auto;
|
|
11
|
+
height: 100vh;
|
|
12
|
+
background: var(--rm-color-background);
|
|
13
|
+
color: var(--rm-color-on-background);
|
|
14
|
+
font-size: var(--rm-font-medium);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
button {
|
|
18
|
+
background: none;
|
|
19
|
+
cursor: pointer;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
button,
|
|
23
|
+
input[type='submit'] {
|
|
24
|
+
border: 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
label {
|
|
28
|
+
display: inline-block;
|
|
29
|
+
|
|
30
|
+
&:hover {
|
|
31
|
+
cursor: pointer;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
a {
|
|
36
|
+
color: var(--rm-color-primary-original);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
blockquote,
|
|
40
|
+
dl,
|
|
41
|
+
dd,
|
|
42
|
+
h1,
|
|
43
|
+
h2,
|
|
44
|
+
h3,
|
|
45
|
+
h4,
|
|
46
|
+
h5,
|
|
47
|
+
h6,
|
|
48
|
+
figure,
|
|
49
|
+
pre {
|
|
50
|
+
margin: 0;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
h1,
|
|
54
|
+
h2,
|
|
55
|
+
h3,
|
|
56
|
+
h4,
|
|
57
|
+
h5,
|
|
58
|
+
h6 {
|
|
59
|
+
margin-top: 0;
|
|
60
|
+
margin-bottom: var(--rm-space-small);
|
|
61
|
+
font-weight: var(--rm-font-weight-normal);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
h1 {
|
|
65
|
+
font-size: var(--rm-font-2x-large);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
h2 {
|
|
69
|
+
font-size: var(--rm-font-x-large);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
h3 {
|
|
73
|
+
font-size: var(--rm-font-large);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
h4 {
|
|
77
|
+
font-size: var(--rm-font-medium);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
h5 {
|
|
81
|
+
font-size: var(--rm-font-small);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
h6 {
|
|
85
|
+
font-size: var(--rm-font-x-small);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
p {
|
|
89
|
+
margin-bottom: var(--rm-space-small);
|
|
90
|
+
font-size: var(--rm-font-medium);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
small {
|
|
94
|
+
font-size: var(--rm-font-small);
|
|
95
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
.app-wrapper {
|
|
2
|
+
display: grid;
|
|
3
|
+
width: 100%;
|
|
4
|
+
height: 100vh;
|
|
5
|
+
grid-template-columns: auto 1fr auto;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.app__main {
|
|
9
|
+
display: flex;
|
|
10
|
+
overflow: auto;
|
|
11
|
+
flex-direction: column;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.page__header {
|
|
15
|
+
position: sticky;
|
|
16
|
+
z-index: var(--rm-z-index-header);
|
|
17
|
+
top: 0;
|
|
18
|
+
flex-grow: 0;
|
|
19
|
+
flex-shrink: 0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.page__content {
|
|
23
|
+
width: 100%;
|
|
24
|
+
max-width: $breakpoint-medium;
|
|
25
|
+
flex-grow: 1;
|
|
26
|
+
padding: 0 var(--rm-space-large);
|
|
27
|
+
margin: 0 auto;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.page__footer {
|
|
31
|
+
position: sticky;
|
|
32
|
+
z-index: var(--rm-z-index-footer);
|
|
33
|
+
bottom: 0;
|
|
34
|
+
flex-grow: 0;
|
|
35
|
+
flex-shrink: 0;
|
|
36
|
+
}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
@import 'https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap';
|
|
2
|
+
@import 'https://fonts.googleapis.com/css2?family=Noto+Serif:ital,wght@0,400;0,700;1,400;1,700&display=swap';
|
|
3
|
+
|
|
4
|
+
// Using Mixins allows us to include them at a component level
|
|
5
|
+
// as needed and override them.
|
|
6
|
+
|
|
7
|
+
// A theme comprised of a primary, neutral, warning, danger, info, and notice colors.
|
|
8
|
+
@mixin color-varieties {
|
|
9
|
+
// Basic Colors
|
|
10
|
+
--rm-color-white: hsl(0deg 100% 100%);
|
|
11
|
+
--rm-color-black: hsl(0deg 0% 0%);
|
|
12
|
+
|
|
13
|
+
// Primary HSL
|
|
14
|
+
--rm-color-primary-h: 216;
|
|
15
|
+
--rm-color-primary-s: 58%;
|
|
16
|
+
--rm-color-primary-l: 48%;
|
|
17
|
+
|
|
18
|
+
// Neutral HSL
|
|
19
|
+
--rm-color-neutral-h: var(--rm-color-primary-h);
|
|
20
|
+
--rm-color-neutral-s: 4%;
|
|
21
|
+
--rm-color-neutral-l: var(--rm-color-primary-l);
|
|
22
|
+
|
|
23
|
+
// Alerts Warning HSL
|
|
24
|
+
--rm-color-alerts-warning-h: 47;
|
|
25
|
+
--rm-color-alerts-warning-s: 100%;
|
|
26
|
+
--rm-color-alerts-warning-l: 61%;
|
|
27
|
+
|
|
28
|
+
// Alerts Danger HSL
|
|
29
|
+
--rm-color-alerts-danger-h: 0;
|
|
30
|
+
--rm-color-alerts-danger-s: 99%;
|
|
31
|
+
--rm-color-alerts-danger-l: 76%;
|
|
32
|
+
|
|
33
|
+
// Alerts Info HSL
|
|
34
|
+
--rm-color-alerts-info-h: 216;
|
|
35
|
+
--rm-color-alerts-info-s: 58%;
|
|
36
|
+
--rm-color-alerts-info-l: 48%;
|
|
37
|
+
|
|
38
|
+
// Alerts Notice HSL
|
|
39
|
+
--rm-color-alerts-notice-h: 130;
|
|
40
|
+
--rm-color-alerts-notice-s: 61%;
|
|
41
|
+
--rm-color-alerts-notice-l: 64%;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@mixin border-radius {
|
|
45
|
+
--rm-radius-small: 2px;
|
|
46
|
+
--rm-radius-medium: 4px;
|
|
47
|
+
--rm-radius-large: 8px;
|
|
48
|
+
--rm-radius-x-large: 16px;
|
|
49
|
+
--rm-radius-circle: 50%;
|
|
50
|
+
--rm-radius-pill: 9999px;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@mixin border-widths {
|
|
54
|
+
--rm-border-width: 1px;
|
|
55
|
+
--rm-border-width-large: 2px;
|
|
56
|
+
--rm-border-width-x-large: 4px;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@mixin border-colors {
|
|
60
|
+
--rm-border-color: var(--rm-color-neutral-plus-three);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
@mixin box-shadows {
|
|
64
|
+
// E.G. box-shadow: var(--rm-border-top) var(--rm-border-color);
|
|
65
|
+
--rm-border-none: 0 0 0 0;
|
|
66
|
+
--rm-border-all: 0 0 0 var(--rm-border-width);
|
|
67
|
+
--rm-border-top: 0 calc(-1 * var(--rm-border-width)) 0 0;
|
|
68
|
+
--rm-border-right: var(--rm-border-width) 0 0 0;
|
|
69
|
+
--rm-border-bottom: 0 var(--rm-border-width) 0 0;
|
|
70
|
+
--rm-border-left: calc(-1 * var(--rm-border-width)) 0 0 0;
|
|
71
|
+
--rm-border-y: var(--rm-border-top) var(--rm-border-color), var(--rm-border-bottom) var(--rm-border-color);
|
|
72
|
+
--rm-border-x: var(--rm-border-left) var(--rm-border-color), var(--rm-border-right) var(--rm-border-color);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@mixin font-scales {
|
|
76
|
+
--rm-font-scale-unit: 1rem; // 10px;
|
|
77
|
+
--rm-font-x-small: calc(var(--rm-font-scale-unit) * 1.2); // 12px
|
|
78
|
+
--rm-font-small: calc(var(--rm-font-scale-unit) * 1.4); // 14px
|
|
79
|
+
--rm-font-medium: calc(var(--rm-font-scale-unit) * 1.6); // 16px
|
|
80
|
+
--rm-font-large: calc(var(--rm-font-scale-unit) * 1.8); // 18px
|
|
81
|
+
--rm-font-x-large: calc(var(--rm-font-scale-unit) * 2.4); // 24px
|
|
82
|
+
--rm-font-2x-large: calc(var(--rm-font-scale-unit) * 2.8); // 28px
|
|
83
|
+
--rm-font-3x-large: calc(var(--rm-font-scale-unit) * 3.2); // 32px
|
|
84
|
+
--rm-font-4x-large: calc(var(--rm-font-scale-unit) * 3.6); // 36px
|
|
85
|
+
--rm-font-5x-large: calc(var(--rm-font-scale-unit) * 4.8); // 48px
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
@mixin font-weights {
|
|
89
|
+
--rm-font-weight-thin: 100;
|
|
90
|
+
--rm-font-weight-extra-light: 200;
|
|
91
|
+
--rm-font-weight-light: 300;
|
|
92
|
+
--rm-font-weight-normal: 400;
|
|
93
|
+
--rm-font-weight-medium: 500;
|
|
94
|
+
--rm-font-weight-semi-bold: 600;
|
|
95
|
+
--rm-font-weight-bold: 700;
|
|
96
|
+
--rm-font-weight-extra-bold: 800;
|
|
97
|
+
--rm-font-weight-black: 900;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
@mixin line-heights {
|
|
101
|
+
--rm-line-height-none: 0;
|
|
102
|
+
--rm-line-height-densest: 1;
|
|
103
|
+
--rm-line-height-denser: 1.15;
|
|
104
|
+
--rm-line-height-dense: 1.3;
|
|
105
|
+
--rm-line-height-base: 1.5;
|
|
106
|
+
--rm-line-height-loose: 1.6;
|
|
107
|
+
--rm-line-height-looser: 1.7;
|
|
108
|
+
--rm-line-height-loosest: 1.8;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
@mixin letter-spacing {
|
|
112
|
+
--rm-letter-spacing-navigation: 0.01rem;
|
|
113
|
+
--rm-letter-spacing-label: 0.04rem;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
@mixin transitions {
|
|
117
|
+
--rm-transition-input: 120ms;
|
|
118
|
+
--rm-transition-navigation: 200ms;
|
|
119
|
+
--rm-transition-sidebar: 300ms;
|
|
120
|
+
--rm-transition-modal: 300ms;
|
|
121
|
+
--rm-transition-panel: 400ms;
|
|
122
|
+
--rm-transition-flash: 5s;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
@mixin encoded-images {
|
|
126
|
+
--rm-form-dropdown-arrow-width: 1rem; // No way to string interpolate
|
|
127
|
+
--rm-form-dropdown-arrow: url("data:image/svg+xml,%3Csvg viewBox='0 0 10 7' version='1.1' xmlns='http://www.w3.org/2000/svg' width='10' height='7'%3E%3Cg transform='matrix(0.983953,0,0,1.00934,-9.22679,-3.65885)'%3E%3Cpath fill='%23d1d1d1' d='M9.37727 3.625l5.08154 6.93523L19.54036 3.625'/%3E%3C/g%3E%3C/svg%3E%0A");
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
@mixin fonts {
|
|
131
|
+
--rm-font-family: 'Noto Sans', 'Noto Serif', sans-serif;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
@mixin spacing-scales {
|
|
135
|
+
--rm-space-scale-unit: 1rem; // 10px;
|
|
136
|
+
--rm-space-3x-small: calc(var(--rm-space-scale-unit) * 0.2); // 2px
|
|
137
|
+
--rm-space-2x-small: calc(var(--rm-space-scale-unit) * 0.4); // 4px
|
|
138
|
+
--rm-space-x-small: calc(var(--rm-space-scale-unit) * 0.8); // 8px
|
|
139
|
+
--rm-space-small: calc(var(--rm-space-scale-unit) * 1.2); // 12px
|
|
140
|
+
--rm-space-medium: calc(var(--rm-space-scale-unit) * 1.6); // 16px
|
|
141
|
+
--rm-space-large: calc(var(--rm-space-scale-unit) * 2); // 20px
|
|
142
|
+
--rm-space-x-large: calc(var(--rm-space-scale-unit) * 2.4); // 24px
|
|
143
|
+
--rm-space-2x-large: calc(var(--rm-space-scale-unit) * 2.8); // 28px
|
|
144
|
+
--rm-space-3x-large: calc(var(--rm-space-scale-unit) * 4); // 40px
|
|
145
|
+
--rm-space-4x-large: calc(var(--rm-space-scale-unit) * 8); // 80px
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
@mixin shadows {
|
|
149
|
+
--rm-shadow-x-small: 0 1px 2px hsl(0deg 0% 0% / 3%), 0 1px 3px hsl(0deg 0% 0% / 15%);
|
|
150
|
+
--rm-shadow-small: 0 1px 2px hsl(0deg 0% 0% / 3%), 0 2px 6px hsl(0deg 0% 0% / 15%);
|
|
151
|
+
--rm-shadow-medium: 0 4px 8px hsl(0deg 0% 0% / 15%), 0 1px 3px hsl(0deg 0% 0% / 3%);
|
|
152
|
+
--rm-shadow-large: 0 6px 10px hsl(0deg 0% 0% / 15%), 0 2px 3px hsl(0deg 0% 0% / 3%);
|
|
153
|
+
--rm-shadow-x-large: 0 8px 12px hsl(0deg 0% 0% / 15%), 0 4px 4px hsl(0deg 0% 0% / 3%);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
@mixin z-indexes {
|
|
157
|
+
--rm-z-index-header: 500;
|
|
158
|
+
--rm-z-index-footer: 500;
|
|
159
|
+
--rm-z-index-drawer: 700;
|
|
160
|
+
--rm-z-index-dialog: 800;
|
|
161
|
+
--rm-z-index-dialog-backdrop: 801;
|
|
162
|
+
--rm-z-index-dialog-content: 802;
|
|
163
|
+
--rm-z-index-dropdown: 900;
|
|
164
|
+
--rm-z-index-alert-group: 950;
|
|
165
|
+
--rm-z-index-tooltip: 1000;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
@mixin inputs {
|
|
169
|
+
// This should follow multiples of 4
|
|
170
|
+
// https: //uxdesign.cc/baseline-grids-design-systems-ae23b5af8cec See example 8
|
|
171
|
+
--rm-input-height-small: 2.4rem; // 24px
|
|
172
|
+
--rm-input-height-medium: 3.2rem; // 32px
|
|
173
|
+
--rm-input-height-large: 4.4rem; // 44px
|
|
174
|
+
--rm-input-height-x-large: 5.6rem; // 56px
|
|
175
|
+
--rm-input-outer-focus: 0 0 0 var(--rm-border-width-large) var(--rm-color-primary-plus-four);
|
|
176
|
+
--rm-input-inner-focus: inset var(--rm-border-all) var(--rm-color-primary-minus-three);
|
|
177
|
+
--rm-input-focus: var(--rm-input-inner-focus), var(--rm-input-outer-focus);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// We use SCSS variables outside the root since support for custom properties / css variables
|
|
181
|
+
// is not yet available
|
|
182
|
+
// https://drafts.csswg.org/css-env-1/
|
|
183
|
+
// https://bholmes.dev/blog/alternative-to-css-variable-media-queries/
|
|
184
|
+
|
|
185
|
+
$breakpoint-x-small: 512px; // vertical phone
|
|
186
|
+
$breakpoint-small: 768px; // vertical ipad
|
|
187
|
+
$breakpoint-medium: 1024px; // landscape ipad
|
|
188
|
+
$breakpoint-large: 1280px; // small laptop
|
|
189
|
+
$breakpoint-x-large: 1440px; // medium laptop
|
|
190
|
+
|
|
191
|
+
:root {
|
|
192
|
+
// Color HSLs
|
|
193
|
+
@include color-varieties;
|
|
194
|
+
|
|
195
|
+
// Border
|
|
196
|
+
@include border-radius;
|
|
197
|
+
@include border-widths;
|
|
198
|
+
@include border-colors;
|
|
199
|
+
@include box-shadows;
|
|
200
|
+
|
|
201
|
+
// Font
|
|
202
|
+
@include font-scales;
|
|
203
|
+
@include font-weights;
|
|
204
|
+
@include fonts;
|
|
205
|
+
|
|
206
|
+
// Text
|
|
207
|
+
@include line-heights;
|
|
208
|
+
@include letter-spacing;
|
|
209
|
+
|
|
210
|
+
// Transitions
|
|
211
|
+
@include transitions;
|
|
212
|
+
|
|
213
|
+
// Encoded Images
|
|
214
|
+
@include encoded-images;
|
|
215
|
+
|
|
216
|
+
// Spacing
|
|
217
|
+
@include spacing-scales;
|
|
218
|
+
|
|
219
|
+
// Shadows
|
|
220
|
+
@include shadows;
|
|
221
|
+
|
|
222
|
+
// Z Index
|
|
223
|
+
@include z-indexes;
|
|
224
|
+
|
|
225
|
+
// Inputs
|
|
226
|
+
@include inputs;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// Animations
|
|
230
|
+
@keyframes rm-slide-in-out-flash {
|
|
231
|
+
// If an duration of 5s is set:
|
|
232
|
+
// Start off the Screen
|
|
233
|
+
0% {
|
|
234
|
+
right: -100%;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// Animate onto the screen for 0.5s
|
|
238
|
+
10% {
|
|
239
|
+
right: var(--rm-space-large);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// Stay on the screen for 3s
|
|
243
|
+
70% {
|
|
244
|
+
right: var(--rm-space-large);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// Animate off the screen for 1.5s
|
|
248
|
+
100% {
|
|
249
|
+
right: -100%;
|
|
250
|
+
}
|
|
251
|
+
}
|