diff --git a/addons/rose/.eslintrc.js b/addons/rose/.eslintrc.js
index 53cdaf91f..ecdee2162 100644
--- a/addons/rose/.eslintrc.js
+++ b/addons/rose/.eslintrc.js
@@ -32,6 +32,7 @@ module.exports = {
{
files: [
'.eslintrc.js',
+ '.stylelintrc.js',
'.prettierrc.js',
'.template-lintrc.js',
'ember-cli-build.js',
diff --git a/addons/rose/.sasslintrc b/addons/rose/.sasslintrc
deleted file mode 100644
index 84f041b0b..000000000
--- a/addons/rose/.sasslintrc
+++ /dev/null
@@ -1,7 +0,0 @@
-files:
- include: 'app/**/*.scss'
-rules:
- leading-zero: 0
- mixins-before-declarations: 0
- nesting-depth: 0
- placeholder-in-extend: 0
diff --git a/addons/rose/.stylelintrc.js b/addons/rose/.stylelintrc.js
new file mode 100644
index 000000000..5f7ef4db4
--- /dev/null
+++ b/addons/rose/.stylelintrc.js
@@ -0,0 +1,19 @@
+'use strict';
+
+module.exports = {
+ extends: ['stylelint-config-standard-scss', 'stylelint-config-prettier-scss'],
+ rules: {
+ // This could be fixed in the future if we don't want to use the legacy format
+ 'color-function-notation': 'legacy',
+
+ // We oftentimes want to have long form properties for readability
+ 'declaration-block-no-redundant-longhand-properties': null,
+
+ // This is just a personal preference unless the quotes are needed
+ // to escape special characters
+ 'function-url-quotes': null,
+
+ // This is often limited by the DOM and we want to order our declarations by our own standard
+ 'no-descending-specificity': null,
+ },
+};
diff --git a/addons/rose/app/styles/rose/_reset.scss b/addons/rose/app/styles/rose/_reset.scss
index 3fa9143f0..6a253454a 100644
--- a/addons/rose/app/styles/rose/_reset.scss
+++ b/addons/rose/app/styles/rose/_reset.scss
@@ -87,7 +87,6 @@ video {
margin: 0;
padding: 0;
border: 0;
- font-size: 100%;
font: inherit;
vertical-align: baseline;
}
@@ -123,16 +122,16 @@ q {
}
blockquote {
- &:before,
- &:after {
+ &::before,
+ &::after {
content: '';
content: none;
}
}
q {
- &:before,
- &:after {
+ &::before,
+ &::after {
content: '';
content: none;
}
diff --git a/addons/rose/app/styles/rose/_typography.scss b/addons/rose/app/styles/rose/_typography.scss
index 9839ab8b1..f60a710a7 100644
--- a/addons/rose/app/styles/rose/_typography.scss
+++ b/addons/rose/app/styles/rose/_typography.scss
@@ -8,6 +8,7 @@ html {
body {
font-family: typography.$family-primary;
+
// This is the only time we'll explicitly use pixels. All other sizes are
// expressed in rem units.
font-size: typography.$base-font-size * 1px;
@@ -30,6 +31,7 @@ code {
h1,
.h1 {
@include type-mixins.type(h1, bold);
+
margin-top: sizing.rems(m);
margin-bottom: sizing.rems(xs);
}
@@ -37,6 +39,7 @@ h1,
h2,
.h2 {
@include type-mixins.type(h2, bold);
+
margin-top: sizing.rems(m);
margin-bottom: sizing.rems(xs);
}
@@ -44,6 +47,7 @@ h2,
h3,
.h3 {
@include type-mixins.type(h3, bold);
+
margin-top: sizing.rems(m);
margin-bottom: sizing.rems(xs);
}
diff --git a/addons/rose/app/styles/rose/components/_badge.scss b/addons/rose/app/styles/rose/components/_badge.scss
index cb3e8b7a8..d1c66c9b8 100644
--- a/addons/rose/app/styles/rose/components/_badge.scss
+++ b/addons/rose/app/styles/rose/components/_badge.scss
@@ -3,6 +3,7 @@
.rose-badge {
@include type.type(s, semibold);
+
padding: sizing.rems(xxxs) sizing.rems(xxs);
border-radius: sizing.rems(xxxs);
border-width: sizing.rems(xxxxs);
diff --git a/addons/rose/app/styles/rose/components/_button.scss b/addons/rose/app/styles/rose/components/_button.scss
index a195dd275..635e7cb4f 100644
--- a/addons/rose/app/styles/rose/components/_button.scss
+++ b/addons/rose/app/styles/rose/components/_button.scss
@@ -123,6 +123,7 @@ $size-xxxxs: sizing.rems(xxxxs); // 1
.rose-button-inline-link-action {
@include typography.type(m, semibold);
+
color: var(--info);
border: 0;
background: none;
@@ -131,16 +132,17 @@ $size-xxxxs: sizing.rems(xxxxs); // 1
display: inline;
&:not(:disabled) {
+ &:disabled {
+ cursor: not-allowed;
+ opacity: var(--opacity-1);
+ }
+
&:hover {
text-decoration: underline;
}
+
&:active {
color: var(--info-starker-1);
}
}
-
- &:disabled {
- cursor: not-allowed;
- opacity: var(--opacity-1);
- }
}
diff --git a/addons/rose/app/styles/rose/components/_frame.scss b/addons/rose/app/styles/rose/components/_frame.scss
index e75d127cd..026fd1dc5 100644
--- a/addons/rose/app/styles/rose/components/_frame.scss
+++ b/addons/rose/app/styles/rose/components/_frame.scss
@@ -11,36 +11,36 @@ $xxxs: sizing.rems(xxxs); // 2
$xxxxs: sizing.rems(xxxxs); // 1
.rose-frame {
- --headerColor: var(--ui-gray-starker-3);
- --headerIconColor: var(--headerColor);
- --headerBackgroundColor: var(--ui-gray-subtler-5);
- --headerBorderColor: var(--ui-gray-subtler-3);
+ --header-color: var(--ui-gray-starker-3);
+ --header-icon-color: var(--header-color);
+ --header-background-color: var(--ui-gray-subtler-5);
+ --header-border-color: var(--ui-gray-subtler-3);
@include type.type(s);
+
border: $xxxxs solid var(--ui-gray-subtler-3);
border-radius: $xxxs;
- //margin: $m;
box-shadow: 0 $xxs $xxs rgba(var(--stark-components), var(--opacity-4));
background-color: var(--background-color);
.rose-frame-header {
padding: ($xs + $xxxs) $l;
min-height: $l;
- color: var(--headerColor);
- background-color: var(--headerBackgroundColor);
- border-bottom: $xxxxs solid var(--headerBorderColor);
+ color: var(--header-color);
+ background-color: var(--header-background-color);
+ border-bottom: $xxxxs solid var(--header-border-color);
border-top-left-radius: $xxxs;
border-top-right-radius: $xxxs;
}
.rose-frame-body {
- $bodyPadding: $l;
+ $body-padding: $l;
- padding: $bodyPadding;
+ padding: $body-padding;
> .rose-separator {
- margin-left: -$bodyPadding;
- margin-right: -$bodyPadding;
+ margin-left: -$body-padding;
+ margin-right: -$body-padding;
}
}
}
diff --git a/addons/rose/app/styles/rose/components/_message.scss b/addons/rose/app/styles/rose/components/_message.scss
index 858ea5c0b..b3b7f6da3 100644
--- a/addons/rose/app/styles/rose/components/_message.scss
+++ b/addons/rose/app/styles/rose/components/_message.scss
@@ -4,10 +4,11 @@
.rose-message {
--message-color: var(--ui-gray-starker-1);
+
display: flex;
flex-direction: column;
color: var(--message-color);
- width: sizing.rems(l) * 15; //16 rems/320 px
+ width: sizing.rems(l) * 15; // 16 rems/320 px
margin-bottom: sizing.rems(l);
@media (max-width: media.width(small)) {
@@ -17,6 +18,7 @@
// Icons always need tweaking
.rose-icon {
--size: #{sizing.rems(m)};
+
> svg {
vertical-align: text-bottom;
}
@@ -33,18 +35,21 @@
.rose-icon {
// targeting 40px
--size: #{sizing.rems(xl) + sizing.rems(xxs)};
+
grid-area: icon;
margin-right: sizing.rems(s);
}
.rose-message-title {
@include type.type(l, semibold);
+
grid-area: title;
margin: 0;
}
.rose-message-subtitle {
@include type.type(s, normal);
+
grid-area: subtitle;
margin: 0;
}
@@ -63,9 +68,9 @@
.rose-message-link {
@include type.type(s, semibold);
+
grid-area: left-link;
color: var(--action);
-
text-decoration: none;
& + .rose-message-link {
diff --git a/addons/rose/app/styles/rose/components/_notification.scss b/addons/rose/app/styles/rose/components/_notification.scss
index d48f8b96f..d0ceb027f 100644
--- a/addons/rose/app/styles/rose/components/_notification.scss
+++ b/addons/rose/app/styles/rose/components/_notification.scss
@@ -19,14 +19,17 @@
.rose-notification-icon {
position: relative;
top: $xxxxs;
+ color: var(--icon-color);
}
.rose-notification-header {
+ color: var(--header-color);
@include type.type(m, semibold);
}
.rose-notification-body {
@include type.type(s);
+
// hack alert, because the icons are still hard to work with
margin-left: sizing.rems(m) + $xxs;
overflow-wrap: break-word;
@@ -34,13 +37,12 @@
.rose-notification-dismiss {
position: absolute;
- color: currentColor;
+ color: currentcolor;
background-color: transparent;
border-radius: $xxxs;
border: 0;
padding: 0;
cursor: pointer;
-
top: sizing.rems(s);
right: sizing.rems(s);
@@ -75,14 +77,6 @@
border-color: var(--border-color);
background-color: var(--background-color);
- .rose-notification-icon {
- color: var(--icon-color);
- }
-
- .rose-notification-header {
- color: var(--header-color);
- }
-
&.is-error {
--icon-color: var(--failure);
--header-color: var(--failure);
diff --git a/addons/rose/app/styles/rose/components/card/_link.scss b/addons/rose/app/styles/rose/components/card/_link.scss
index c4530d3e8..1395d8178 100644
--- a/addons/rose/app/styles/rose/components/card/_link.scss
+++ b/addons/rose/app/styles/rose/components/card/_link.scss
@@ -8,7 +8,6 @@ $xxxs: sizing.rems(xxxs); // 2
.rose-card-link {
--background-color-light: transparent;
--background-color-dark: var(--ui-gray-subtler-6);
-
--background-color: var(--background-color-light);
.ember-application.rose-theme-light & {
@@ -24,6 +23,7 @@ $xxxs: sizing.rems(xxxs); // 2
}
@include type.type(s);
+
border: sizing.rems(xxxxs) solid var(--ui-gray-subtler-2);
border-radius: sizing.rems(xxxs);
color: var(--ui-gray);
@@ -39,19 +39,26 @@ $xxxs: sizing.rems(xxxs); // 2
margin: 0;
padding: 0;
height: 100%;
+
// TODO: Figure out better method of defining card dimensions
- min-height: sizing.rems(m) * 8; //6 rems
- width: sizing.rems(m) * 16; //12 rems
+ min-height: sizing.rems(m) * 8; // 6 rems
+ width: sizing.rems(m) * 16; // 12 rems
}
&:hover {
$s: sizing.rems(s); // 12
$xs: sizing.rems(xs); // 8
$xxs: sizing.rems(xxs); // 4
+
border-color: var(--ui-gray);
background-color: var(--ui-gray-subtler-5);
box-shadow: 0 $xs $s rgba(var(--stark-components), var(--opacity-3)),
0 $xxs $xxs rgba(var(--stark-components), var(--opacity-4));
+
+ .rose-card-link-description,
+ .rose-card-link-footer-id {
+ color: var(--stark);
+ }
}
&:active {
@@ -72,18 +79,17 @@ $xxxs: sizing.rems(xxxs); // 2
.rose-card-link-header {
padding-top: sizing.rems(m);
}
+
.rose-card-link-footer {
margin-top: sizing.rems(xs) + sizing.rems(xxs);
padding-top: sizing.rems(xs) * 2;
padding-bottom: sizing.rems(xs) * 2;
- }
-
- .rose-card-link-footer {
border-top: sizing.rems(xxxxs) solid var(--ui-gray-subtler-2);
}
.rose-card-link-title {
@include type.type(m, semibold);
+
display: flex;
color: var(--stark);
margin: 0;
@@ -119,6 +125,7 @@ $xxxs: sizing.rems(xxxs); // 2
.rose-card-link-footer-id {
@include type.type(xs);
+
color: var(--ui-gray);
margin: 0;
@@ -129,13 +136,6 @@ $xxxs: sizing.rems(xxxs); // 2
}
}
- &:hover {
- .rose-card-link-description,
- .rose-card-link-footer-id {
- color: var(--stark);
- }
- }
-
// .rose-card-link-description {
// margin: auto 0 0;
// color: var(--ui-gray);
diff --git a/addons/rose/app/styles/rose/components/code-editor/_index.scss b/addons/rose/app/styles/rose/components/code-editor/_index.scss
index 2c6fb86b9..c282e5bcd 100644
--- a/addons/rose/app/styles/rose/components/code-editor/_index.scss
+++ b/addons/rose/app/styles/rose/components/code-editor/_index.scss
@@ -1,3 +1,4 @@
+/* stylelint-disable selector-class-pattern */
@use '../../variables/sizing';
// Codemirror overrides
@@ -9,7 +10,7 @@
max-width: 100%;
display: flex;
flex: 1;
- font-family: ui-monospace, 'Menlo', monospace;
+ font-family: ui-monospace, Menlo, monospace;
}
.rose-autosize {
@@ -23,7 +24,7 @@
}
.CodeMirror-sizer {
- border-right-width: 0px !important;
+ border-right-width: 0 !important;
}
// Toolbar
diff --git a/addons/rose/app/styles/rose/components/dialog/_cover.scss b/addons/rose/app/styles/rose/components/dialog/_cover.scss
index c41fed32b..e1e052583 100644
--- a/addons/rose/app/styles/rose/components/dialog/_cover.scss
+++ b/addons/rose/app/styles/rose/components/dialog/_cover.scss
@@ -23,6 +23,7 @@
max-width: 650px;
}
}
+
// overlay
.rose-dialog-cover-modal-overlay {
content: ' ';
diff --git a/addons/rose/app/styles/rose/components/dialog/_dialog.scss b/addons/rose/app/styles/rose/components/dialog/_dialog.scss
index be87d0b07..bac49ec92 100644
--- a/addons/rose/app/styles/rose/components/dialog/_dialog.scss
+++ b/addons/rose/app/styles/rose/components/dialog/_dialog.scss
@@ -10,35 +10,35 @@ $xxxs: sizing.rems(xxxs); // 2
$xxxxs: sizing.rems(xxxxs); // 1
.rose-dialog {
- --headerColor: var(--ui-gray-starker-3);
- --headerIconColor: var(--headerColor);
- --headerBackgroundColor: var(--ui-gray-subtler-5);
- --headerBorderColor: var(--ui-gray-subtler-2);
+ --header-color: var(--ui-gray-starker-3);
+ --header-icon-color: var(--header-color);
+ --header-background-color: var(--ui-gray-subtler-5);
+ --header-border-color: var(--ui-gray-subtler-2);
border-radius: $xxxs;
background-color: var(--subtle);
box-shadow: 0 $xs $s rgba(var(--stark-components), var(--opacity-2)),
- 0 $xxs $xxs rgba(var(--stark-components), var(--opacity-3));
+ 0 $xxs $xxs rgba(var(--stark-components), var(--opacity-3));
&.rose-dialog-success {
- --headerColor: var(--success-starker-1);
- --headerIconColor: var(--success);
- --headerBackgroundColor: var(--success-subtler-2);
- --headerBorderColor: var(--success);
+ --header-color: var(--success-starker-1);
+ --header-icon-color: var(--success);
+ --header-background-color: var(--success-subtler-2);
+ --header-border-color: var(--success);
}
&.rose-dialog-warning {
- --headerColor: var(--warning-starker-1);
- --headerIconColor: var(--warning);
- --headerBackgroundColor: var(--warning-subtler-2);
- --headerBorderColor: var(--warning);
+ --header-color: var(--warning-starker-1);
+ --header-icon-color: var(--warning);
+ --header-background-color: var(--warning-subtler-2);
+ --header-border-color: var(--warning);
}
&.rose-dialog-error {
- --headerColor: var(--failure-starker-1);
- --headerIconColor: var(--failure);
- --headerBackgroundColor: var(--failure-subtler-2);
- --headerBorderColor: var(--failure);
+ --header-color: var(--failure-starker-1);
+ --header-icon-color: var(--failure);
+ --header-background-color: var(--failure-subtler-2);
+ --header-border-color: var(--failure);
}
.rose-dialog-header {
@@ -46,14 +46,14 @@ $xxxxs: sizing.rems(xxxxs); // 1
align-items: center;
padding: ($xs + $xxxs) $m;
min-height: sizing.rems(l);
- color: var(--headerColor);
- background-color: var(--headerBackgroundColor);
- border: $xxxxs solid var(--headerBorderColor);
+ color: var(--header-color);
+ background-color: var(--header-background-color);
+ border: $xxxxs solid var(--header-border-color);
border-top-left-radius: $xxxs;
border-top-right-radius: $xxxs;
.rose-icon {
- color: var(--headerIconColor);
+ color: var(--header-icon-color);
margin-right: $xxs + $xxxs;
svg {
@@ -65,10 +65,11 @@ $xxxxs: sizing.rems(xxxxs); // 1
.rose-dialog-heading {
@include type.type(m, semibold);
+
flex-grow: 1;
margin: 0;
padding: 0;
- color: currentColor;
+ color: currentcolor;
}
.rose-dialog-dismiss {
@@ -82,7 +83,7 @@ $xxxxs: sizing.rems(xxxxs); // 1
width: sizing.rems(l);
&:hover {
- border-color: currentColor;
+ border-color: currentcolor;
}
.rose-icon {
@@ -113,18 +114,13 @@ $xxxxs: sizing.rems(xxxxs); // 1
margin-bottom: 0;
}
}
-}
-.rose-dialog {
&.modal {
display: flex;
flex-direction: column;
-
position: fixed;
-
left: calc(50% - 300px);
top: 5%;
-
max-height: 85%;
max-width: 80vw;
width: 650px;
@@ -138,6 +134,7 @@ $xxxxs: sizing.rems(xxxxs); // 1
}
}
}
+
// overlay
.rose-dialog-modal-overlay {
content: ' ';
diff --git a/addons/rose/app/styles/rose/components/dropdown/_button.scss b/addons/rose/app/styles/rose/components/dropdown/_button.scss
index 0c561b22d..1492008a1 100644
--- a/addons/rose/app/styles/rose/components/dropdown/_button.scss
+++ b/addons/rose/app/styles/rose/components/dropdown/_button.scss
@@ -4,6 +4,7 @@
.rose-dropdown-button {
@include type.type(s);
+
display: block;
box-sizing: border-box;
width: 100%;
@@ -12,11 +13,14 @@
padding: 0 sizing.rems(s);
text-decoration: none;
text-align: left;
+
$line-height: math.div(36, 14);
+
line-height: $line-height;
--background-color: transparent;
--color: var(--stark);
+
color: var(--color);
background-color: var(--background-color);
diff --git a/addons/rose/app/styles/rose/components/dropdown/_dropdown.scss b/addons/rose/app/styles/rose/components/dropdown/_dropdown.scss
index 62a8f3d36..245a24374 100644
--- a/addons/rose/app/styles/rose/components/dropdown/_dropdown.scss
+++ b/addons/rose/app/styles/rose/components/dropdown/_dropdown.scss
@@ -4,13 +4,12 @@
$xs: sizing.rems(xs); // 8
$xxs: sizing.rems(xxs); // 4
$chevron: url("data:image/svg+xml;utf-8,");
-$chevronWhite: url("data:image/svg+xml;utf-8,");
-$chevronGrey: url("data:image/svg+xml;utf-8,");
+$chevron-white: url("data:image/svg+xml;utf-8,");
+$chevron-grey: url("data:image/svg+xml;utf-8,");
.rose-dropdown {
--background-image-light: #{$chevron};
- --background-image-dark: #{$chevronWhite};
-
+ --background-image-dark: #{$chevron-white};
--background-image: var(--background-image-light);
.ember-application.rose-theme-light & {
@@ -31,10 +30,13 @@ $chevronGrey: url("data:image/svg+xml;utf-8,");
}
@@ -128,7 +128,7 @@
color: var(--failure);
.rose-form-checkbox-field {
- &:not(:disabled):not(:focus) {
+ &:not(:disabled, :focus) {
~ .rose-form-checkbox-label {
&::before {
border-color: var(--failure);
diff --git a/addons/rose/app/styles/rose/components/form/_fieldset.scss b/addons/rose/app/styles/rose/components/form/_fieldset.scss
index 404737cf4..62cc3bc4b 100644
--- a/addons/rose/app/styles/rose/components/form/_fieldset.scss
+++ b/addons/rose/app/styles/rose/components/form/_fieldset.scss
@@ -15,6 +15,7 @@
.rose-form-fieldset-description {
margin: sizing.rems(xxs) 0;
@include type.type(xs);
+
color: var(--ui-gray);
}
}
diff --git a/addons/rose/app/styles/rose/components/form/_helper-text.scss b/addons/rose/app/styles/rose/components/form/_helper-text.scss
index cca0ccda0..4de7caee2 100644
--- a/addons/rose/app/styles/rose/components/form/_helper-text.scss
+++ b/addons/rose/app/styles/rose/components/form/_helper-text.scss
@@ -3,6 +3,7 @@
.rose-form-helper-text {
@include type.type(xs);
+
display: block;
color: var(--ui-gray);
margin-bottom: sizing.rems(xxs);
diff --git a/addons/rose/app/styles/rose/components/form/_input.scss b/addons/rose/app/styles/rose/components/form/_input.scss
index 889c933ef..a5c053253 100644
--- a/addons/rose/app/styles/rose/components/form/_input.scss
+++ b/addons/rose/app/styles/rose/components/form/_input.scss
@@ -7,11 +7,13 @@
.rose-input-wrapper {
position: relative;
+
.rose-icon {
position: absolute;
left: 10px;
top: 10px;
}
+
.rose-icon + .rose-form-input-field {
padding-left: 30px;
}
@@ -19,6 +21,7 @@
.rose-form-input-field {
@include type.type(m);
+
display: inline-block;
box-sizing: border-box;
width: 100%;
@@ -28,7 +31,7 @@
background-color: var(--subtle);
border: sizing.rems(xxxxs) solid var(--ui-gray-subtler-2);
border-radius: sizing.rems(xxxs);
- box-shadow: inset 0px 3px 1px rgba(var(--stark-components), var(--opacity-4));
+ box-shadow: inset 0 3px 1px rgba(var(--stark-components), var(--opacity-4));
&::placeholder {
color: var(--ui-gray-subtler-1);
@@ -36,10 +39,10 @@
&.error {
color: var(--failure);
- border-color: currentColor;
+ border-color: currentcolor;
}
- &:not(:disabled):not([readonly]) {
+ &:not(:disabled, [readonly]) {
&:hover {
border-color: var(--ui-gray);
}
diff --git a/addons/rose/app/styles/rose/components/form/_label.scss b/addons/rose/app/styles/rose/components/form/_label.scss
index d473e43cc..6109a26a3 100644
--- a/addons/rose/app/styles/rose/components/form/_label.scss
+++ b/addons/rose/app/styles/rose/components/form/_label.scss
@@ -3,6 +3,7 @@
.rose-form-label {
@include type.type(s, semibold);
+
display: block;
margin-bottom: sizing.rems(xxs);
diff --git a/addons/rose/app/styles/rose/components/form/_radio-card.scss b/addons/rose/app/styles/rose/components/form/_radio-card.scss
index 26a8bc77d..0c61fb51d 100644
--- a/addons/rose/app/styles/rose/components/form/_radio-card.scss
+++ b/addons/rose/app/styles/rose/components/form/_radio-card.scss
@@ -2,11 +2,11 @@
@use '../../utilities/type';
@use '../../variables/typography';
-$size-xxl: sizing.rems(xxl); //48
-$size-xl: sizing.rems(xl); //36
+$size-xxl: sizing.rems(xxl); // 48
+$size-xl: sizing.rems(xl); // 36
$size-l: sizing.rems(l); // 24
$size-m: sizing.rems(m); // 16
-$size-s: sizing.rems(s); //12
+$size-s: sizing.rems(s); // 12
$size-xs: sizing.rems(xs); // 8
$size-xxs: sizing.rems(xxs); // 4
$size-xxxs: sizing.rems(xxxs); // 2
@@ -32,9 +32,9 @@ $radio-svg: (
);
.rose-form-radio-card {
- $cardWideWidth: $size-m * 10;
- $cardTileWidth: $size-m * 7.25;
- $borderWidth: $size-xxxs * 2;
+ $card-wide-width: $size-m * 10;
+ $card-tile-width: $size-m * 7.25;
+ $border-width: $size-xxxs * 2;
&.wide {
width: ($size-m) * 20;
@@ -45,18 +45,22 @@ $radio-svg: (
.rose-icon {
--size: #{$size-xl};
+
padding: $size-xxxs;
}
+
.rose-form-radio-label {
display: flex;
flex-direction: column;
align-items: center;
height: $size-m * 9;
+
&::after {
- left: $cardTileWidth - $borderWidth;
+ left: $card-tile-width - $border-width;
}
}
}
+
position: relative;
display: inline-flex;
align-items: center;
@@ -73,8 +77,10 @@ $radio-svg: (
border-bottom-left-radius: $size-xxxs;
border-bottom-right-radius: $size-xxxs;
}
+
.rose-form-radio-label {
@include type.type(s, bold);
+
width: ($size-m) * 23;
height: 100%;
display: block;
@@ -86,15 +92,17 @@ $radio-svg: (
border-radius: $size-xxs;
padding: $size-s $size-m ($size-xl + $size-m);
box-sizing: border-box;
+
.rose-form-helper-text {
@include type.type(xs, normal);
+
padding-top: $size-xs;
}
&::after {
position: absolute;
bottom: $size-xxs + $size-xxxxs;
- right: $cardWideWidth - $borderWidth;
+ right: $card-wide-width - $border-width;
display: block;
width: $size-m;
height: $size-m;
@@ -105,6 +113,7 @@ $radio-svg: (
background-image: url($data-svg-prefix + map-get($radio-svg, 'default'));
}
}
+
.rose-form-radio-field {
position: absolute;
z-index: 1;
@@ -122,11 +131,13 @@ $radio-svg: (
}
}
}
+
&:hover {
~ .rose-form-radio-label {
border: $size-xxxxs solid var(--ui-gray);
}
}
+
&:checked {
~ .rose-form-radio-label {
&::after {
@@ -135,18 +146,22 @@ $radio-svg: (
'checked'
));
}
+
.radio-card-overlay {
background-color: var(--action-subtler-1h);
+
.ember-application.rose-theme-light & {
background-color: var(--action-subtler-1h);
}
@media (prefers-color-scheme: dark) {
background-color: var(--action-subtler-1);
}
+
.ember-application.rose-theme-dark & {
background-color: var(--action-subtler-1);
}
}
+
border: $size-xxxxs solid var(--info-subtler-1);
}
}
@@ -157,6 +172,7 @@ $radio-svg: (
border: $size-xxxxs solid var(--ui-border-subtler-1);
background-color: var(--ui-gray-subtler-6);
color: var(--ui-gray-starker-1);
+
&::after {
background-image: url($data-svg-prefix + map-get(
$radio-svg,
@@ -180,8 +196,28 @@ $radio-svg: (
&.error {
.rose-form-radio-field {
- &:not(:disabled):not(:focus) {
- &:not(:disabled):not(:focus) {
+ &:not(:disabled, :focus) {
+ ~ .rose-form-radio-label {
+ color: var(--ui-gray);
+ border: $size-xxxxs solid var(--failure);
+
+ .radio-card-overlay {
+ background-color: var(--failure-subtler-2);
+ }
+
+ .rose-form-helper-text.error {
+ color: var(--ui-gray);
+ }
+
+ &::after {
+ background-image: url($data-svg-prefix + map-get(
+ $radio-svg,
+ 'error'
+ ));
+ }
+ }
+
+ &:checked {
~ .rose-form-radio-label {
color: var(--ui-gray);
border: $size-xxxxs solid var(--failure);
@@ -189,32 +225,14 @@ $radio-svg: (
.radio-card-overlay {
background-color: var(--failure-subtler-2);
}
- .rose-form-helper-text.error {
- color: var(--ui-gray);
- }
+
&::after {
background-image: url($data-svg-prefix + map-get(
$radio-svg,
- 'error'
+ 'error-checked'
));
}
}
-
- &:checked {
- ~ .rose-form-radio-label {
- color: var(--ui-gray);
- border: $size-xxxxs solid var(--failure);
- .radio-card-overlay {
- background-color: var(--failure-subtler-2);
- }
- &::after {
- background-image: url($data-svg-prefix + map-get(
- $radio-svg,
- 'error-checked'
- ));
- }
- }
- }
}
}
}
diff --git a/addons/rose/app/styles/rose/components/form/_radio.scss b/addons/rose/app/styles/rose/components/form/_radio.scss
index 32be9a8c5..007510982 100644
--- a/addons/rose/app/styles/rose/components/form/_radio.scss
+++ b/addons/rose/app/styles/rose/components/form/_radio.scss
@@ -20,16 +20,18 @@ $radio-svg: (
'error-checked':
"",
);
-
$data-svg-prefix: 'data:image/svg+xml;utf-8,';
+
.rose-form-radio {
&.inline {
display: inline-block;
+
.rose-form-radio-label {
margin-right: sizing.rems(s);
}
}
@include type.type(m);
+
position: relative;
margin-bottom: sizing.rems(xs);
color: var(--ui-gray);
@@ -37,6 +39,7 @@ $data-svg-prefix: 'data:image/svg+xml;utf-8,';
.rose-form-radio-label {
display: flex;
align-items: center;
+
.rose-form-helper-text {
font-weight: normal;
margin-left: sizing.rems(xxs);
@@ -44,7 +47,8 @@ $data-svg-prefix: 'data:image/svg+xml;utf-8,';
}
@include type.type(s, semibold);
- color: currentColor;
+
+ color: currentcolor;
padding-left: sizing.rems(l);
padding-top: sizing.rems(xxxs);
@@ -149,7 +153,7 @@ $data-svg-prefix: 'data:image/svg+xml;utf-8,';
color: var(--failure);
.rose-form-radio-field {
- &:not(:disabled):not(:focus) {
+ &:not(:disabled, :focus) {
~ .rose-form-radio-label {
&::after {
background-image: url($data-svg-prefix + map-get(
diff --git a/addons/rose/app/styles/rose/components/form/_select.scss b/addons/rose/app/styles/rose/components/form/_select.scss
index 4e1902da0..c86845ab1 100644
--- a/addons/rose/app/styles/rose/components/form/_select.scss
+++ b/addons/rose/app/styles/rose/components/form/_select.scss
@@ -7,8 +7,7 @@
.rose-form-select-field {
@include type.type(m);
- -webkit-appearance: none;
- -moz-appearance: none;
+
appearance: none;
vertical-align: middle;
display: inline-block;
@@ -27,7 +26,13 @@
&.error {
color: var(--failure);
- border-color: currentColor;
+ border-color: currentcolor;
+ }
+
+ &:disabled {
+ cursor: not-allowed;
+ color: var(--ui-gray-subtler-1);
+ background-image: url('data:image/svg+xml;charset=utf8,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M12%205.83L15.17%209l1.41-1.41L12%203%207.41%207.59%208.83%209%2012%205.83zm0%2012.34L8.83%2015l-1.41%201.41L12%2021l4.59-4.59L15.17%2015%2012%2018.17z%22%20fill%3D%22%238E96A3%22%2F%3E%3C%2Fsvg%3E');
}
&:not(:disabled) {
@@ -43,10 +48,4 @@
box-shadow: none;
}
}
-
- &:disabled {
- cursor: not-allowed;
- color: var(--ui-gray-subtler-1);
- background-image: url('data:image/svg+xml;charset=utf8,%3Csvg%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M12%205.83L15.17%209l1.41-1.41L12%203%207.41%207.59%208.83%209%2012%205.83zm0%2012.34L8.83%2015l-1.41%201.41L12%2021l4.59-4.59L15.17%2015%2012%2018.17z%22%20fill%3D%22%238E96A3%22%2F%3E%3C%2Fsvg%3E');
- }
}
diff --git a/addons/rose/app/styles/rose/components/form/errors/_message.scss b/addons/rose/app/styles/rose/components/form/errors/_message.scss
index 09bf0b317..95f65f1d6 100644
--- a/addons/rose/app/styles/rose/components/form/errors/_message.scss
+++ b/addons/rose/app/styles/rose/components/form/errors/_message.scss
@@ -3,6 +3,7 @@
.rose-form-error-message {
@include type.type(xs);
+
color: var(--failure);
margin-bottom: sizing.rems(xs);
}
diff --git a/addons/rose/app/styles/rose/components/header/_brand.scss b/addons/rose/app/styles/rose/components/header/_brand.scss
index 48de3e6b7..985d656c4 100644
--- a/addons/rose/app/styles/rose/components/header/_brand.scss
+++ b/addons/rose/app/styles/rose/components/header/_brand.scss
@@ -11,13 +11,12 @@
margin: 10px;
svg {
- //$logoSize: sizing.rems(xl) * 3;
display: block;
- //width: $logoSize;
}
.rose-header-brand-text {
@include type.type(m, normal);
+
margin: 0;
margin-left: sizing.rems(s);
white-space: nowrap;
diff --git a/addons/rose/app/styles/rose/components/header/_dropdown.scss b/addons/rose/app/styles/rose/components/header/_dropdown.scss
index fb92cd6fa..8e60bb505 100644
--- a/addons/rose/app/styles/rose/components/header/_dropdown.scss
+++ b/addons/rose/app/styles/rose/components/header/_dropdown.scss
@@ -12,21 +12,18 @@ $chevron: "data:image/svg+xml;utf-8,