From 20e79f43617c806381fb1051025e71897536894e Mon Sep 17 00:00:00 2001 From: pjmalandrino Date: Fri, 20 Mar 2026 13:57:05 +0100 Subject: [PATCH] Change document tab place and add landing page --- document-parser/data/docling_studio.db | Bin 622592 -> 622592 bytes frontend/src/app/App.vue | 145 ++++++++++++- frontend/src/app/router/index.js | 10 + frontend/src/pages/DocumentsPage.vue | 158 +++++++++++++++ frontend/src/pages/HistoryPage.vue | 165 +-------------- frontend/src/pages/HomePage.vue | 270 +++++++++++++++++++++++++ frontend/src/shared/i18n.js | 26 +++ frontend/src/shared/ui/AppSidebar.vue | 73 +++---- 8 files changed, 636 insertions(+), 211 deletions(-) create mode 100644 frontend/src/pages/DocumentsPage.vue create mode 100644 frontend/src/pages/HomePage.vue diff --git a/document-parser/data/docling_studio.db b/document-parser/data/docling_studio.db index e08b47d81dc0a96191d1cb6d4dbce50452412a65..205f2f6fc35bb4ae5ed681408a9dc8d0f5509d70 100644 GIT binary patch delta 1965 zcma*odu$xV836EnyED-EadU1+OY^WVv6DDC@7=y`?-9p7m&D|qOWib0F<{@>m-oda z0g{lw1*()FRE}QF2UJQfLWLwUmC0egmWb4%K@h1BN3@}|LNzoXr4q@tx9t zD|w~gXm{q@*>84ccJuj#`TWAdY-oIX&K=PBO3%ynjkalJ`!Z3(i>0H68|jZ5v9!m9 z<)!;Gu484rY|(6ZsLAb1yD>A@X~_=}p#Q_h(Se0Rp}Y}zq1hS{Hq8*bc68?k7Nv#}l9^kP<|zb|S| zA>;C{wj#ho=aL_(#wm1JhLmoW{i!d*Q!Sn@>@JJ^Uf-twjW!aBxSnaof~J`;IYZks zOvkXzz|D3y9&#Mli`)OF-KpGfMlJ7V`zuFd08Pa!k2aTE3Lhv~FnCJ;NBOJLtqK+v z-+0d|M~2^1u&7u!6e`=JSJW-d`?l}Nb)$7wM9ays-zZp&fs1uZ1}@E-*R9{xxy!^UoH35MHYI_(d@ zQwl=3wp-spITHpIgh?bhw#u|4l?gIE8wZe|TAzcNv?c|=RA7#hYUJOIB_ z;9z*W{v;Lhuus*v3EMH9kQK4a2%f6e96WhOyMnRVAJ(6n5Fc1O8`GE>5Ir1hpP$_ zc*2vbY5fF@C|EioG)}G+huh?B*mFj&!`G8CMF;)b6AG4*2vnNeuyvcfNbi{1QU&ce zcu0=ZwWQXdAc>cLEECk0(%w?gfs-+f$JnFs7{5)+it>G+5AM@id~gS;7v=LnCyr|U zK3GnoQ0aFCo+@c!a!T5mf=&{{mC8G*;~kk5wBw@oTs5r3lRL!#o zt@v2G;Dgo0$>(mTITPBuzAD#=MqSr(O^?h#E zTc6dN=va?_M8S9PAny!5T*Rx&2^&A^F?$v{o$m_hEzKj3*5U$c63;JRO zn@E%@9exj6Usr){^9n}6xUySK96>P!YoIFRbjqB?a{D4Xi%O1c; zr?#9sN>1Zr zDSkO2_uzvQGLM-_dEk)_u1vCa*2b2xR<@KSSe(UJlzA+|T;?#FSuqM{X=1-fJo;Ht90<3}6v$<>zo6TmiZ?W6iH`zDXOm-Wa!M@Jwn4c-; zW3{Y?RkJEKyvPJ8O`r^PuiQX)U4h35==jola zdRY8Q!8Uxj2@3T4PJM<(FTE+cYhgQyu}U60@Uxyu+;}B!C$?UI7wPPT*rH$;uD=Ac zM;hcc1-r5SeK0jN8T0=MN9Ix3LfNbTd6#NkEg^aT^yC|3J&7dPqa<6WlWw`a0q*!5*w&%T)wKx QUrT*8<-ZI6h3*dg7dBHz)c^nh delta 1921 zcma)+du$X{6vlgI?#zUCyLW5B2hetT2!%4+*_qwh2L)PMpn$+CB33GFx7${+E>)_6 z@>s>xM@Xn*JwBptV-zJ|%A*{y(Nx7KiH{QB8bggr#6(>}f{*yRSNzw6&HgsobI(2J z`|i0j+3d7zc3STQD0^sPJ(L|t?k}HWS+Ul1+BWU5_z7995i{CmJ7y^4w1%RN)0T4F z-B!h2Q=O2TYIj00Gwr6LX2@-inW;9X-E2uk-Ix__aieZ(_XiadxfP9v#WxnPqgKpv z5B*;84Zn~s2d&G!i_&dY%5r07tDAO(no!zov7NM;il$U)`nzDV$W^=itGTW+gy& zmvVyZ#T#$jkZH!?dObq5S>;U*Ui7ciM=|?{>Y;qEQp$l--^a`Yo3p zFqT+e&OVa4|8TDym(AC66doRP9$k;&3TeU#9J( zUQ6A`J(tC8$8rL}aL@{4|B&k7GfhmV##(iV!+2cn*KBeV>U$g};K(t3DXmDVhdE5d z?;5m8_~MXi)9NmDA6LpUcrvQpi$&LJ0sN^$#7}3{@mwvR<;SlR+H^8|)lWE7;M3>y zCA2)J4s!4l8<6rQ;lN+|SWGr)C4H|L3EDiYKFDD*u@SjC1#2peWAx6bI-A2(?28+t z^le_P;BYw}Uv9()=d!mrOv5wZtHPp>35(Nd&PwA$pid{USzf3l-flbr^mLH5d0_^z zS|-ZQ#Qp@UCMUs0I8+f!%HS-jyWePMw7#1?UIZpSQ>8DU#aZ?WhXC!Iqt^i~c!<5` zg=##rShbH0 z83!9Hk1F5M=@B-bgM)NZnNJHx*{d8vcqY$8T3)7w2bm^BxmeSzCGgaI)r&@>HkEpO z+Exw`+`mCxNn%9%xF@>NA9C%Gc;Foyubixj`($b2KE?3Q2h>mKi&||4hd8l>EI1o$ ze$!u|eMxOKhZ!|#rfFhXsWFKved0e{bN*Nx{l*Y4T7 diff --git a/frontend/src/app/App.vue b/frontend/src/app/App.vue index 28afa5a..a74103d 100644 --- a/frontend/src/app/App.vue +++ b/frontend/src/app/App.vue @@ -1,18 +1,50 @@ diff --git a/frontend/src/pages/HistoryPage.vue b/frontend/src/pages/HistoryPage.vue index d1b6e8b..eceb7ed 100644 --- a/frontend/src/pages/HistoryPage.vue +++ b/frontend/src/pages/HistoryPage.vue @@ -2,74 +2,23 @@
- -
-
- {{ t('history.emptyDocs') }} -
-
-
-
- - - -
- {{ doc.filename }} - - {{ formatSize(doc.fileSize) }} - - - -
-
- -
-
-
+
@@ -85,9 +34,6 @@ onMounted(() => { padding: 16px 24px; border-bottom: 1px solid var(--border); flex-shrink: 0; - display: flex; - align-items: center; - justify-content: space-between; } .page-title { @@ -96,115 +42,8 @@ onMounted(() => { color: var(--text); } -.tab-bar { - display: flex; - gap: 4px; - background: var(--bg-secondary); - border-radius: 8px; - padding: 3px; -} - -.tab-btn { - background: none; - border: none; - padding: 6px 16px; - font-size: 13px; - font-weight: 500; - color: var(--text-muted); - border-radius: 6px; - cursor: pointer; - transition: all var(--transition); -} - -.tab-btn:hover { - color: var(--text); -} - -.tab-btn.active { - background: var(--bg-primary); - color: var(--text); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); -} - .page-content { flex: 1; overflow-y: auto; } - -.tab-empty { - text-align: center; - color: var(--text-muted); - padding: 60px 20px; - font-size: 14px; -} - -.doc-items { - display: flex; - flex-direction: column; - gap: 2px; -} - -.doc-row { - display: flex; - align-items: center; - justify-content: space-between; - padding: 14px 20px; - border-bottom: 1px solid var(--border); - transition: background var(--transition); -} - -.doc-row:hover { background: var(--bg-hover); } - -.doc-row-info { - display: flex; - align-items: center; - gap: 12px; - min-width: 0; - flex: 1; -} - -.doc-row-icon { - width: 18px; - height: 18px; - color: var(--accent); - flex-shrink: 0; -} - -.doc-row-meta { - display: flex; - flex-direction: column; - min-width: 0; -} - -.doc-row-name { - font-size: 14px; - font-weight: 500; - color: var(--text); - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.doc-row-detail { - font-size: 12px; - color: var(--text-muted); - margin-top: 2px; - font-family: 'IBM Plex Mono', monospace; -} - -.doc-row-delete { - background: none; - border: none; - padding: 6px; - cursor: pointer; - color: var(--text-muted); - border-radius: 4px; - display: flex; - opacity: 0; - transition: all var(--transition); -} - -.doc-row:hover .doc-row-delete { opacity: 1; } -.doc-row-delete:hover { color: var(--error); background: rgba(239, 68, 68, 0.1); } -.doc-row-delete svg { width: 16px; height: 16px; } diff --git a/frontend/src/pages/HomePage.vue b/frontend/src/pages/HomePage.vue new file mode 100644 index 0000000..a175185 --- /dev/null +++ b/frontend/src/pages/HomePage.vue @@ -0,0 +1,270 @@ + + + + + diff --git a/frontend/src/shared/i18n.js b/frontend/src/shared/i18n.js index 4f6350b..bb7446a 100644 --- a/frontend/src/shared/i18n.js +++ b/frontend/src/shared/i18n.js @@ -3,9 +3,23 @@ import { useSettingsStore } from '../features/settings/store.js' const messages = { fr: { // Sidebar + 'nav.home': 'Accueil', 'nav.studio': 'Studio', + 'nav.documents': 'Documents', 'nav.history': 'Historique', 'nav.settings': 'Paramètres', + 'nav.collapse': 'Réduire la barre latérale', + 'nav.expand': 'Développer la barre latérale', + + // Top bar + 'topbar.newAnalysis': 'Nouvelle analyse', + + // Home + 'home.title': 'Docling Studio', + 'home.subtitle': 'Analysez, explorez et validez la structure de vos documents PDF grâce à Docling.', + 'home.documents': 'Documents', + 'home.analyses': 'Analyses', + 'home.recentDocs': 'Documents récents', // Studio — import 'studio.title': 'Intelligence des documents', @@ -84,9 +98,21 @@ const messages = { 'settings.language': 'Langue', }, en: { + 'nav.home': 'Home', 'nav.studio': 'Studio', + 'nav.documents': 'Documents', 'nav.history': 'History', 'nav.settings': 'Settings', + 'nav.collapse': 'Collapse sidebar', + 'nav.expand': 'Expand sidebar', + + 'topbar.newAnalysis': 'New analysis', + + 'home.title': 'Docling Studio', + 'home.subtitle': 'Analyze, explore and validate the structure of your PDF documents with Docling.', + 'home.documents': 'Documents', + 'home.analyses': 'Analyses', + 'home.recentDocs': 'Recent documents', 'studio.title': 'Document Intelligence', 'studio.subtitle': 'Upload a PDF document to start analyzing with Docling', diff --git a/frontend/src/shared/ui/AppSidebar.vue b/frontend/src/shared/ui/AppSidebar.vue index d51bef3..39ed932 100644 --- a/frontend/src/shared/ui/AppSidebar.vue +++ b/frontend/src/shared/ui/AppSidebar.vue @@ -1,26 +1,29 @@