@@ -670,18 +738,26 @@ onUnmounted(() => {
.brand-cluster :deep(.brand-logo.full) {
gap: 0.35rem;
- min-width: 0;
+ flex-shrink: 0;
+ min-width: max-content;
+}
+
+.sidebar-logo {
+ flex-shrink: 0;
+}
+
+.brand-cluster :deep(.text) {
+ flex-shrink: 0;
}
.brand-cluster :deep(.text strong) {
font-size: 0.92rem;
- overflow: hidden;
- text-overflow: ellipsis;
white-space: nowrap;
}
.brand-cluster :deep(.text small) {
font-size: 0.62rem;
+ white-space: nowrap;
}
.side-nav {
@@ -750,27 +826,35 @@ onUnmounted(() => {
color: #fff;
}
-.nav-group {
- margin-top: 0.55rem;
+.nav-fold {
+ display: grid;
+ gap: 0.15rem;
}
-.nav-group-btn {
+.nav-fold-btn {
width: 100%;
- display: flex;
- align-items: center;
- justify-content: space-between;
border: 0;
background: transparent;
- color: #94a3b8;
- font: inherit;
- font-size: 0.78rem;
- font-weight: 700;
- padding: 0.55rem 1rem;
- border-radius: 14px;
cursor: pointer;
+ font: inherit;
text-align: right;
}
+.nav-fold-btn .chev {
+ margin-inline-start: auto;
+}
+
+.nav-sep {
+ height: 1px;
+ margin: 0.55rem 0.85rem;
+ background: #e8eef4;
+}
+
+.nav-utility {
+ display: grid;
+ gap: 0.35rem;
+}
+
.chev {
width: 0.42rem;
height: 0.42rem;
@@ -778,9 +862,10 @@ onUnmounted(() => {
border-bottom: 1.6px solid currentColor;
transform: rotate(45deg);
transition: transform 0.15s ease;
+ flex-shrink: 0;
}
-.nav-group.open .chev {
+.nav-fold.open > .nav-fold-btn .chev {
transform: rotate(-135deg);
}
@@ -832,7 +917,7 @@ onUnmounted(() => {
background: transparent;
color: inherit;
text-decoration: none;
- flex-shrink: 0;
+ flex: 1 1 0;
min-width: 0;
max-width: 4.8rem;
}
@@ -1146,19 +1231,23 @@ onUnmounted(() => {
}
.sidebar.collapsed .nav-primary,
- .sidebar.collapsed .nav-more {
+ .sidebar.collapsed .nav-utility {
display: grid;
width: 100%;
gap: 0.08rem;
}
- .sidebar.collapsed .more-btn {
- width: 100%;
- border: 0;
- background: transparent;
- cursor: pointer;
- font: inherit;
- color: inherit;
+ .sidebar.collapsed .nav-sep {
+ margin: 0.25rem 0.55rem;
+ }
+
+ .sidebar.collapsed .nav-fold {
+ gap: 0;
+ }
+
+ .sidebar.collapsed .nav-sub,
+ .sidebar.collapsed .nav-fold-btn .chev {
+ display: none;
}
.sidebar.collapsed .nav-item {
@@ -1197,7 +1286,6 @@ onUnmounted(() => {
font-size: 0.58rem;
}
- .sidebar.collapsed .nav-group,
.sidebar.collapsed .promo-card,
.sidebar.collapsed .scope-banner {
display: none;
diff --git a/apps/web/src/router/index.ts b/apps/web/src/router/index.ts
index 989f3a4..488ca61 100644
--- a/apps/web/src/router/index.ts
+++ b/apps/web/src/router/index.ts
@@ -183,6 +183,11 @@ export const router = createRouter({
name: 'notes',
component: () => import('@/views/NotesView.vue'),
},
+ {
+ path: 'attachments',
+ name: 'attachments',
+ component: () => import('@/views/AttachmentsView.vue'),
+ },
{
path: 'settings/automations',
name: 'automations',
diff --git a/apps/web/src/views/AttachmentsView.vue b/apps/web/src/views/AttachmentsView.vue
new file mode 100644
index 0000000..200bcce
--- /dev/null
+++ b/apps/web/src/views/AttachmentsView.vue
@@ -0,0 +1,119 @@
+
+
+
+
+
+ {{ error }}
+ در حال بارگذاری…
+ پیوستی ثبت نشده.
+
+
+
+
+ | نام فایل |
+ یادداشت |
+ حجم |
+ تاریخ |
+ |
+
+
+
+
+ | {{ row.fileName }} |
+
+
+ {{ row.noteTitle }}
+
+ |
+ {{ sizeLabel(row.sizeBytes) }} |
+ {{ formatJalaliNumeric(new Date(row.createdAt)) }} |
+
+
+ |
+
+
+
+
+
+
+
+
diff --git a/apps/web/src/views/TeamSettingsView.vue b/apps/web/src/views/TeamSettingsView.vue
index b11bf3b..1fd09c8 100644
--- a/apps/web/src/views/TeamSettingsView.vue
+++ b/apps/web/src/views/TeamSettingsView.vue
@@ -180,7 +180,7 @@ onMounted(load);
-