diff --git a/addons/rose/addon/components/rose/nav/sidebar.stories.mdx b/addons/rose/addon/components/rose/nav/sidebar.stories.mdx
index 353cf0e86..6fb344b7f 100644
--- a/addons/rose/addon/components/rose/nav/sidebar.stories.mdx
+++ b/addons/rose/addon/components/rose/nav/sidebar.stories.mdx
@@ -3,7 +3,7 @@ import { hbs } from 'ember-cli-htmlbars';
import { action } from '@storybook/addon-actions';
import { text, boolean, select } from '@storybook/addon-knobs';
-
+
# Sidebar Navigation
diff --git a/addons/rose/addon/components/rose/nav/tab.stories.mdx b/addons/rose/addon/components/rose/nav/tab.stories.mdx
deleted file mode 100644
index 6a9b6889e..000000000
--- a/addons/rose/addon/components/rose/nav/tab.stories.mdx
+++ /dev/null
@@ -1,43 +0,0 @@
-import { Meta, Story, Preview } from '@storybook/addon-docs/blocks';
-import { hbs } from 'ember-cli-htmlbars';
-import { action } from '@storybook/addon-actions';
-import { text, boolean, select } from '@storybook/addon-knobs';
-
-
-
-# Tab
-
-A tab item component with ability to configure icon, title, and badge sections.
-
-```html
-
-```
-
-
- {{
- template: hbs`
- `,
- context: {
- title: text('title', 'Tab item'),
- badge: text('badge', '3'),
- icon: select(
- 'icon',
- {
- 'info-circle-outline': 'info-circle-outline',
- 'user-square-fill': 'user-square-fill',
- 'check-circle-outline': 'check-circle-outline',
- 'copy-action': 'copy-action',
- 'unfold-more': 'unfold-more',
- 'unfold-less': 'unfold-less',
- },
- 'info-circle-outline'
- ),
- disabled: boolean('disabled', false)
- },
- }}
-
diff --git a/addons/rose/addon/components/rose/nav/tab.js b/addons/rose/addon/components/rose/nav/tabs.js
similarity index 53%
rename from addons/rose/addon/components/rose/nav/tab.js
rename to addons/rose/addon/components/rose/nav/tabs.js
index c4c84358c..5ee542903 100644
--- a/addons/rose/addon/components/rose/nav/tab.js
+++ b/addons/rose/addon/components/rose/nav/tabs.js
@@ -1,7 +1,6 @@
import Component from '@ember/component';
-import layout from '../../../templates/components/rose/nav/tab';
+import layout from '../../../templates/components/rose/nav/tabs';
export default Component.extend({
layout,
- tagName: '',
});
diff --git a/addons/rose/addon/components/rose/nav/tabs.stories.mdx b/addons/rose/addon/components/rose/nav/tabs.stories.mdx
new file mode 100644
index 000000000..fd429ce62
--- /dev/null
+++ b/addons/rose/addon/components/rose/nav/tabs.stories.mdx
@@ -0,0 +1,31 @@
+import { Meta, Story, Preview } from '@storybook/addon-docs/blocks';
+import { hbs } from 'ember-cli-htmlbars';
+import { action } from '@storybook/addon-actions';
+import { text, boolean, select } from '@storybook/addon-knobs';
+
+
+
+# Tabs Navigation
+
+A simple tabbed navigation component.
+
+```html
+
+ Text
+ Text
+ Text
+
+```
+
+
+ {{
+ template: hbs`
+
+ Text
+ Text
+ Text
+
+ `,
+ context: {},
+ }}
+
diff --git a/addons/rose/addon/components/rose/notification.js b/addons/rose/addon/components/rose/notification.js
index f1df73616..1b1677a67 100644
--- a/addons/rose/addon/components/rose/notification.js
+++ b/addons/rose/addon/components/rose/notification.js
@@ -20,8 +20,7 @@ export default Component.extend({
get icon() {
let icon = 'info-circle-fill';
-
- switch(this.style) {
+ switch (this.style) {
case 'error':
icon = 'cancel-square-fill';
break;
diff --git a/addons/rose/addon/styles/rose/components/nav/_index.scss b/addons/rose/addon/styles/rose/components/nav/_index.scss
index b56832ff9..4a208cbee 100644
--- a/addons/rose/addon/styles/rose/components/nav/_index.scss
+++ b/addons/rose/addon/styles/rose/components/nav/_index.scss
@@ -1,2 +1,2 @@
-@import "sidebar";
-@import 'tab';
+@import 'sidebar';
+@import 'tabs';
diff --git a/addons/rose/addon/styles/rose/components/nav/_tab.scss b/addons/rose/addon/styles/rose/components/nav/_tab.scss
deleted file mode 100644
index 8bbad4116..000000000
--- a/addons/rose/addon/styles/rose/components/nav/_tab.scss
+++ /dev/null
@@ -1,53 +0,0 @@
-@use '../../variables/sizing';
-@use '../../utilities/type';
-
-.rose-nav-tab {
- @include type.type(s);
- display: inline-block;
- background-color: var(--subtle);
-
- .rose-nav-tab-link {
- text-decoration: none;
- color: var(--ui-gray);
- display: inline-block;
- padding: sizing.rems(s) sizing.rems(m);
- border-bottom: sizing.rems(xxxs) solid var(--subtle);
-
- &.rose-nav-tab-link-disabled {
- cursor: not-allowed;
- pointer-events: none;
- color: var(--ui-gray-subtler-2);
- }
-
- &:active, &.active {
- color: var(--action);
- border-color: var(--action);
- background-color: var(--subtle);
- }
-
- &:hover {
- color: var(--ui-gray);
- border-color: var(--ui-gray-subtler-2);
- background-color: var(--ui-gray-subtler-4);
- }
-
- &:hover:active {
- color: var(--action);
- border-color: var(--action);
- background-color: var(--ui-gray-subtler-4);
- }
- }
-
- .rose-nav-tab-icon {
- svg {
- width: sizing.rems(m);
- height: sizing.rems(m);
- vertical-align: sub;
- }
- }
-
- .rose-nav-tab-badge {
- @include type.type(xs);
- margin-left: sizing.rems(xxs);
- }
-}
diff --git a/addons/rose/addon/styles/rose/components/nav/_tabs.scss b/addons/rose/addon/styles/rose/components/nav/_tabs.scss
new file mode 100644
index 000000000..73c2f78b2
--- /dev/null
+++ b/addons/rose/addon/styles/rose/components/nav/_tabs.scss
@@ -0,0 +1,33 @@
+@use '../../variables/sizing';
+@use '../../utilities/type';
+
+.rose-nav-tabs {
+ display: flex;
+ margin-bottom: sizing.rems(m);
+ box-shadow: inset 0 -#{sizing.rems(xxxxs)} 0 var(--ui-gray-subtler-2);
+
+ .rose-nav-link {
+ --color: var(--ui-gray);
+ --background: transparent;
+ --box-shadow-color: transparent;
+
+ @include type.type(s, semibold);
+ display: inline-block;
+ color: var(--color);
+ background-color: var(--background);
+ box-shadow: inset 0 -#{sizing.rems(xxxxs) * 3} 0 var(--box-shadow-color);
+ text-decoration: none;
+ padding: sizing.rems(m);
+
+ &:hover {
+ --box-shadow-color: var(--ui-gray-subtler-2);
+ --background: var(--ui-gray-subtler-4);
+ }
+
+ &:active,
+ &.active {
+ --color: var(--action);
+ --box-shadow-color: currentColor;
+ }
+ }
+}
diff --git a/addons/rose/addon/templates/components/rose/nav/tab.hbs b/addons/rose/addon/templates/components/rose/nav/tab.hbs
deleted file mode 100644
index 3d1c5e4cd..000000000
--- a/addons/rose/addon/templates/components/rose/nav/tab.hbs
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
- {{#if @icon}}
- {{inline-svg @icon}}
- {{/if}}
-
- {{#if @title}}
- {{@title}}
- {{/if}}
-
- {{#if @badge}}
- {{@badge}}
- {{/if}}
-
-
- {{yield}}
-
diff --git a/addons/rose/addon/templates/components/rose/nav/tabs.hbs b/addons/rose/addon/templates/components/rose/nav/tabs.hbs
new file mode 100644
index 000000000..18470f7d5
--- /dev/null
+++ b/addons/rose/addon/templates/components/rose/nav/tabs.hbs
@@ -0,0 +1,9 @@
+
diff --git a/addons/rose/app/components/rose/nav/tab.js b/addons/rose/app/components/rose/nav/tab.js
deleted file mode 100644
index 92c7185e3..000000000
--- a/addons/rose/app/components/rose/nav/tab.js
+++ /dev/null
@@ -1 +0,0 @@
-export { default } from 'rose/components/rose/nav/tab';
diff --git a/addons/rose/app/components/rose/nav/tabs.js b/addons/rose/app/components/rose/nav/tabs.js
new file mode 100644
index 000000000..91a0d8fe8
--- /dev/null
+++ b/addons/rose/app/components/rose/nav/tabs.js
@@ -0,0 +1 @@
+export { default } from 'rose/components/rose/nav/tabs';
diff --git a/addons/rose/tests/dummy/app/templates/index.hbs b/addons/rose/tests/dummy/app/templates/index.hbs
index 08352c8df..ec3965039 100644
--- a/addons/rose/tests/dummy/app/templates/index.hbs
+++ b/addons/rose/tests/dummy/app/templates/index.hbs
@@ -198,7 +198,5 @@
-
-
diff --git a/addons/rose/tests/integration/components/rose/nav/sidebar-test.js b/addons/rose/tests/integration/components/rose/nav/sidebar-test.js
index dfda90191..293079caa 100644
--- a/addons/rose/tests/integration/components/rose/nav/sidebar-test.js
+++ b/addons/rose/tests/integration/components/rose/nav/sidebar-test.js
@@ -3,11 +3,11 @@ import { setupRenderingTest } from 'ember-qunit';
import { render, find } from '@ember/test-helpers';
import hbs from 'htmlbars-inline-precompile';
-module('Integration | Component | rose/nav/sidebar', function(hooks) {
+module('Integration | Component | rose/nav/sidebar', function (hooks) {
setupRenderingTest(hooks);
- test('it renders', async function(assert) {
- assert.expect(2)
+ test('it renders', async function (assert) {
+ assert.expect(2);
await render(hbs`
Item Name
@@ -18,7 +18,7 @@ module('Integration | Component | rose/nav/sidebar', function(hooks) {
});
test('it associates title with nav via aria-labelledby', async function (assert) {
- assert.expect(2)
+ assert.expect(2);
await render(hbs`
Item Name
diff --git a/addons/rose/tests/integration/components/rose/nav/tab-test.js b/addons/rose/tests/integration/components/rose/nav/tab-test.js
deleted file mode 100644
index 963b31b17..000000000
--- a/addons/rose/tests/integration/components/rose/nav/tab-test.js
+++ /dev/null
@@ -1,50 +0,0 @@
-import { module, test } from 'qunit';
-import { setupRenderingTest } from 'ember-qunit';
-import { render, find } from '@ember/test-helpers';
-import hbs from 'htmlbars-inline-precompile';
-
-module('Integration | Component | rose/nav/tab', function (hooks) {
- setupRenderingTest(hooks);
-
- test('it renders', async function (assert) {
- await render(hbs``);
- assert.ok(find('a'));
- assert.ok(find('.rose-nav-tab'));
- assert.ok(find('.rose-nav-tab-link'));
- assert.notOk(find('.rose-nav-tab-icon'));
- assert.notOk(find('.rose-nav-tab-badge'));
- assert.notOk(find('.rose-nav-tab-link-disabled'));
- });
-
- test('it renders with title', async function (assert) {
- await render(hbs``);
- assert.equal(find('a').title, 'Tab title');
- assert.equal(find('.rose-nav-tab-link').textContent.trim(), 'Tab title');
- });
-
- test('it renders with icon', async function (assert) {
- await render(hbs``);
- assert.ok(find('svg'));
- assert.ok(find('.rose-nav-tab-icon'));
- });
-
- test('it renders with badge', async function (assert) {
- await render(hbs``);
- assert.ok(find('.rose-nav-tab-badge'));
- assert.equal(find('.rose-nav-tab-badge').textContent.trim(), '3');
- });
-
- test('it render with attributes', async function (assert) {
- await render(hbs``);
- assert.ok(find('#tab'));
- });
-
- test('it renders disabled', async function (assert) {
- this.set('disabled', true);
- await render(hbs``);
- assert.ok(find('.rose-nav-tab-link-disabled'));
-
- this.set('disabled', false);
- assert.notOk(find('.rose-nav-tab-link-disabled'));
- });
-});
diff --git a/addons/rose/tests/integration/components/rose/nav/tabs-test.js b/addons/rose/tests/integration/components/rose/nav/tabs-test.js
new file mode 100644
index 000000000..733f9e997
--- /dev/null
+++ b/addons/rose/tests/integration/components/rose/nav/tabs-test.js
@@ -0,0 +1,19 @@
+import { module, test } from 'qunit';
+import { setupRenderingTest } from 'ember-qunit';
+import { render, find } from '@ember/test-helpers';
+import hbs from 'htmlbars-inline-precompile';
+
+module('Integration | Component | rose/nav/tabs', function (hooks) {
+ setupRenderingTest(hooks);
+
+ test('it renders', async function (assert) {
+ assert.expect(2);
+ await render(hbs`
+
+ Item Name
+
+ `);
+ assert.ok(find('.rose-nav-tabs'));
+ assert.equal(find('.rose-nav-link').textContent.trim(), 'Item Name');
+ });
+});
diff --git a/ui/core/app/styles/app.scss b/ui/core/app/styles/app.scss
index 56c8e3df1..7cf4f25cd 100644
--- a/ui/core/app/styles/app.scss
+++ b/ui/core/app/styles/app.scss
@@ -9,7 +9,7 @@
.rose-form {
width: 66%;
-
+
.rose-form-input {
width: 100%;
@@ -64,12 +64,4 @@
width: 100%;
}
}
-
- .tabs {
- border-bottom: 2px solid #bac1cc;
- display: flex;
- flex-wrap: wrap;
- flex-direction: row;
- margin-bottom: 10px;
- }
}
diff --git a/ui/core/app/templates/orgs/org/projects/project.hbs b/ui/core/app/templates/orgs/org/projects/project.hbs
index 3b20217e0..26770d11b 100644
--- a/ui/core/app/templates/orgs/org/projects/project.hbs
+++ b/ui/core/app/templates/orgs/org/projects/project.hbs
@@ -9,9 +9,14 @@
{{t "resources.project.settings"}}
-
-
-
+
+
+ {{t 'dev.item-name'}}
+
+
+ {{t 'dev.item-name'}}
+
+