diff --git a/addons/rose/addon/styles/rose/components/card/_link.scss b/addons/rose/addon/styles/rose/components/card/_link.scss
index a62df13f8..c31ccbdbd 100644
--- a/addons/rose/addon/styles/rose/components/card/_link.scss
+++ b/addons/rose/addon/styles/rose/components/card/_link.scss
@@ -1,6 +1,8 @@
@use '../../variables/sizing';
@use '../../utilities/type';
+$xxxs: sizing.rems(xxxs); // 2
+
.rose-card-link {
@include type.type(s);
border: sizing.rems(xxxxs) solid var(--ui-gray-subtler-2);
@@ -9,6 +11,8 @@
display: inline-flex;
flex-direction: column;
margin: 0 sizing.rems(m) sizing.rems(m) 0;
+ box-shadow: 0 $xxxs $xxxs rgba(var(--stark-components), var(--opacity-4)),
+ 0 $xxxs $xxxs rgba(var(--stark-components), var(--opacity-4));
a {
text-decoration: none;
diff --git a/addons/rose/addon/styles/rose/components/header/_index.scss b/addons/rose/addon/styles/rose/components/header/_index.scss
index 6ba8aba30..8885c0207 100644
--- a/addons/rose/addon/styles/rose/components/header/_index.scss
+++ b/addons/rose/addon/styles/rose/components/header/_index.scss
@@ -12,7 +12,12 @@
display: grid;
grid-template-areas: 'brand nav utilities';
grid-template-columns: 0.01fr auto 1fr;
- background: var(--black) linear-gradient(90deg, #191a1c 0%, #1b212d 100%);
+ background: var(--black);
+ box-shadow: inset 0 -#{sizing.rems(xxxxs)} 0 var(--ui-border-subtler-1);
+
+ @media (prefers-color-scheme: light) {
+ box-shadow: none;
+ }
}
@media (max-width: media.width(small)) {
diff --git a/addons/rose/addon/styles/rose/components/nav/_sidebar.scss b/addons/rose/addon/styles/rose/components/nav/_sidebar.scss
index 101f3753f..fcc29ca45 100644
--- a/addons/rose/addon/styles/rose/components/nav/_sidebar.scss
+++ b/addons/rose/addon/styles/rose/components/nav/_sidebar.scss
@@ -39,6 +39,7 @@
&.active {
color: var(--action);
border-color: currentColor;
+ background-color: var(--action-subtler-1h);
}
&:hover {
diff --git a/addons/rose/addon/styles/rose/variables/color/_css.scss b/addons/rose/addon/styles/rose/variables/color/_css.scss
index cb000c5df..5c910e93a 100644
--- a/addons/rose/addon/styles/rose/variables/color/_css.scss
+++ b/addons/rose/addon/styles/rose/variables/color/_css.scss
@@ -83,7 +83,7 @@
@media (prefers-color-scheme: dark) {
:root {
// poles
- --subtle: #{darken(color(ui-gray, 900), 3%)};
+ --subtle: var(--black);
--stark: #{color(ui-gray, 100)};
--stark-components: 255, 255, 255;
diff --git a/ui/core/app/routes/scopes/scope/authenticate.js b/ui/core/app/routes/scopes/scope/authenticate.js
index d011a6b45..883bbb704 100644
--- a/ui/core/app/routes/scopes/scope/authenticate.js
+++ b/ui/core/app/routes/scopes/scope/authenticate.js
@@ -9,6 +9,17 @@ export default class ScopesScopeAuthenticateRoute extends Route {
// =methods
+ beforeModel() {
+ if (this.session.isAuthenticated) {
+ const scope = this.modelFor('scopes.scope');
+ if (scope.isGlobal) {
+ this.transitionTo('scopes.scope.orgs');
+ } else {
+ this.transitionTo('scopes.scope.projects');
+ }
+ }
+ }
+
/**
* Returns all auth methods for the current scope, along with the current
* scope and all scopes (for org navigation).
@@ -28,15 +39,4 @@ export default class ScopesScopeAuthenticateRoute extends Route {
// }])
});
}
-
- redirect() {
- if (this.session.isAuthenticated) {
- const scope = this.modelFor('scopes.scope');
- if (scope.isGlobal) {
- this.transitionTo('scopes.scope.orgs');
- } else {
- this.transitionTo('scopes.scope.projects');
- }
- }
- }
}
diff --git a/ui/core/app/styles/app.scss b/ui/core/app/styles/app.scss
index fbdbea206..052ca77c0 100644
--- a/ui/core/app/styles/app.scss
+++ b/ui/core/app/styles/app.scss
@@ -76,7 +76,7 @@
&::after {
animation: gradient 1s linear infinite;
background: repeating-linear-gradient(to right, var(--subtle), var(--subtle), var(--info), var(--subtle), var(--subtle));
- background-position: 0 100%;
+ background-position: -100% 0;
background-size: 200% auto;
content: ' ';
height: 3px;
@@ -86,7 +86,7 @@
top: 100%;
@keyframes gradient {
- 0% { background-position: 0 0; }
+ 0% { background-position: -100% 0; }
100% { background-position: -200% 0; }
}
}
diff --git a/ui/core/app/templates/scopes/scope/orgs/index.hbs b/ui/core/app/templates/scopes/scope/orgs/index.hbs
index ed79b4e04..f073d3dcf 100644
--- a/ui/core/app/templates/scopes/scope/orgs/index.hbs
+++ b/ui/core/app/templates/scopes/scope/orgs/index.hbs
@@ -30,8 +30,8 @@
{{#each @model as |org|}}
diff --git a/ui/core/app/templates/scopes/scope/projects/index.hbs b/ui/core/app/templates/scopes/scope/projects/index.hbs
index 0d05ddf30..5995e29fe 100644
--- a/ui/core/app/templates/scopes/scope/projects/index.hbs
+++ b/ui/core/app/templates/scopes/scope/projects/index.hbs
@@ -30,8 +30,8 @@
{{#each @model as |project|}}
diff --git a/ui/core/mirage/factories/org.js b/ui/core/mirage/factories/org.js
deleted file mode 100644
index fe119cba6..000000000
--- a/ui/core/mirage/factories/org.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import factory from '../generated/factories/org';
-
-export default factory.extend();
diff --git a/ui/core/mirage/factories/project.js b/ui/core/mirage/factories/project.js
deleted file mode 100644
index 2a3aae2be..000000000
--- a/ui/core/mirage/factories/project.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import factory from '../generated/factories/project';
-
-export default factory.extend();
diff --git a/ui/core/mirage/factories/scope.js b/ui/core/mirage/factories/scope.js
index d60486d15..a14dbc719 100644
--- a/ui/core/mirage/factories/scope.js
+++ b/ui/core/mirage/factories/scope.js
@@ -5,6 +5,16 @@ export default factory.extend({
type: 'global',
+ /**
+ * Generates realistic-ish IDs while still being deterministic.
+ */
+ id(i) {
+ let id = 'tv6fv3yz8p';
+ if (i % 3) id = 'xk1i4dk50v';
+ if (i % 2) id = 's9n819zgko';
+ return `s_${id}${i}`;
+ },
+
withChildren: trait({
afterCreate(record, server) {
if (record.type === 'global') {