fix: SlashPreview i18n + Note type isPublic/publicSlug
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m15s
CI / Deploy production (on server) (push) Successful in 22s

- SlashPreview: 30+ chaînes FR → t() avec fallback
- SlashPreview accepte t en prop
- Note type: ajout isPublic/publicSlug/publishedAt (élimine les erreurs TS)
- NoteType: richtext déjà présent (confirmé)
This commit is contained in:
Antigravity
2026-06-20 16:41:53 +00:00
parent 35c79ffd1c
commit 128aa842f1
2 changed files with 26 additions and 22 deletions

View File

@@ -1587,13 +1587,13 @@ function BubbleToolbar({ editor, onSuggestCharts }: { editor: Editor | null; onS
) )
} }
function SlashPreview({ itemTitle }: { itemTitle: string }) { function SlashPreview({ itemTitle, t }: { itemTitle: string; t: (k: string) => string }) {
switch (itemTitle) { switch (itemTitle) {
case 'Table': case 'Table':
case 'Tableau': case 'Tableau':
return ( return (
<div className="slash-preview-box"> <div className="slash-preview-box">
<div className="slash-preview-title">Tableau</div> <div className="slash-preview-title">{t('richTextEditor.slashTable') || 'Tableau'}</div>
<div className="slash-preview-grid"> <div className="slash-preview-grid">
<div className="slash-preview-grid-header"></div> <div className="slash-preview-grid-header"></div>
<div className="slash-preview-grid-header"></div> <div className="slash-preview-grid-header"></div>
@@ -1605,82 +1605,83 @@ function SlashPreview({ itemTitle }: { itemTitle: string }) {
<div className="slash-preview-grid-cell"></div> <div className="slash-preview-grid-cell"></div>
<div className="slash-preview-grid-cell"></div> <div className="slash-preview-grid-cell"></div>
</div> </div>
<p className="slash-preview-tip">Organisez vos données en lignes et colonnes.</p> <p className="slash-preview-tip">{t('richTextEditor.previewTableTip') || 'Organisez vos données en lignes et colonnes.'}</p>
</div> </div>
) )
case 'Database': case 'Database':
case 'Base de données': case 'Base de données':
return ( return (
<div className="slash-preview-box"> <div className="slash-preview-box">
<div className="slash-preview-title">Base de Données</div> <div className="slash-preview-title">{t('richTextEditor.slashDatabase') || 'Base de Données'}</div>
<div className="slash-preview-db"> <div className="slash-preview-db">
<div className="slash-preview-db-row header"> <div className="slash-preview-db-row header">
<span>Nom</span> <span>{t('structuredViews.propertyName') || 'Nom'}</span>
<span>Statut</span> <span>{t('structuredViews.propertyStatus') || 'Statut'}</span>
</div> </div>
<div className="slash-preview-db-row"> <div className="slash-preview-db-row">
<span>Tâche A</span> <span>{t('wizard.taskA') || 'Tâche A'}</span>
<span className="badge badge-todo">À faire</span> <span className="badge badge-todo">{t('structuredViews.filterTodo') || faire'}</span>
</div> </div>
<div className="slash-preview-db-row"> <div className="slash-preview-db-row">
<span>Tâche B</span> <span>{t('wizard.taskB') || 'Tâche B'}</span>
<span className="badge badge-done">Fait</span> <span className="badge badge-done">{t('structuredViews.filterDone') || 'Fait'}</span>
</div> </div>
</div> </div>
<p className="slash-preview-tip">Ajoutez des colonnes et des vues Kanban structurées.</p> <p className="slash-preview-tip">{t('richTextEditor.previewDatabaseTip') || 'Ajoutez des colonnes et des vues Kanban structurées.'}</p>
</div> </div>
) )
case 'Suggest Charts': case 'Suggest Charts':
case 'Suggest Chart': case 'Suggest Chart':
case 'Graphiques IA':
return ( return (
<div className="slash-preview-box"> <div className="slash-preview-box">
<div className="slash-preview-title">Graphique IA</div> <div className="slash-preview-title">{t('richTextEditor.slashCharts') || 'Graphique IA'}</div>
<div className="slash-preview-chart"> <div className="slash-preview-chart">
<div className="chart-bar" style={{ height: '40%' }}></div> <div className="chart-bar" style={{ height: '40%' }}></div>
<div className="chart-bar" style={{ height: '75%' }}></div> <div className="chart-bar" style={{ height: '75%' }}></div>
<div className="chart-bar" style={{ height: '50%' }}></div> <div className="chart-bar" style={{ height: '50%' }}></div>
<div className="chart-bar" style={{ height: '90%' }}></div> <div className="chart-bar" style={{ height: '90%' }}></div>
</div> </div>
<p className="slash-preview-tip">Générez un graphique interactif à partir de votre texte.</p> <p className="slash-preview-tip">{t('richTextEditor.previewChartsTip') || 'Générez un graphique interactif à partir de votre texte.'}</p>
</div> </div>
) )
case 'Living Block': case 'Living Block':
case 'Bloc vivant': case 'Bloc vivant':
return ( return (
<div className="slash-preview-box"> <div className="slash-preview-box">
<div className="slash-preview-title">Bloc Vivant (Transclusion)</div> <div className="slash-preview-title">{t('richTextEditor.slashLivingBlock') || 'Bloc Vivant'}</div>
<div className="slash-preview-live"> <div className="slash-preview-live">
<div className="live-note">Note A</div> <div className="live-note">Note A</div>
<div className="live-sync-line"></div> <div className="live-sync-line"></div>
<div className="live-note">Note B</div> <div className="live-note">Note B</div>
</div> </div>
<p className="slash-preview-tip">Synchronisez du contenu en temps réel entre plusieurs notes.</p> <p className="slash-preview-tip">{t('richTextEditor.previewLivingBlockTip') || 'Synchronisez du contenu entre plusieurs notes.'}</p>
</div> </div>
) )
case 'Diagramme': case 'Diagramme':
case 'Diagram': case 'Diagram':
return ( return (
<div className="slash-preview-box"> <div className="slash-preview-box">
<div className="slash-preview-title">Diagramme Excalidraw</div> <div className="slash-preview-title">{t('richTextEditor.slashDiagram') || 'Diagramme'}</div>
<div className="slash-preview-excalidraw"> <div className="slash-preview-excalidraw">
<div className="excalidraw-circle"></div> <div className="excalidraw-circle"></div>
<div className="excalidraw-arrow"></div> <div className="excalidraw-arrow"></div>
<div className="excalidraw-rect"></div> <div className="excalidraw-rect"></div>
</div> </div>
<p className="slash-preview-tip">Esquissez des concepts ou générez des diagrammes via IA.</p> <p className="slash-preview-tip">{t('richTextEditor.previewDiagramTip') || 'Esquissez des concepts ou générez des diagrammes via IA.'}</p>
</div> </div>
) )
case 'Présentation': case 'Présentation':
case 'Presentation': case 'Presentation':
return ( return (
<div className="slash-preview-box"> <div className="slash-preview-box">
<div className="slash-preview-title">Présentation Slides</div> <div className="slash-preview-title">{t('richTextEditor.slashSlides') || 'Présentation'}</div>
<div className="slash-preview-slides"> <div className="slash-preview-slides">
<div className="slide-item"></div> <div className="slide-item"></div>
<div className="slide-item active"></div> <div className="slide-item active"></div>
<div className="slide-item"></div> <div className="slide-item"></div>
</div> </div>
<p className="slash-preview-tip">Créez des présentations interactives exportables.</p> <p className="slash-preview-tip">{t('richTextEditor.previewSlidesTip') || 'Créez des présentations interactives exportables.'}</p>
</div> </div>
) )
case 'Code Block': case 'Code Block':
@@ -1688,7 +1689,7 @@ function SlashPreview({ itemTitle }: { itemTitle: string }) {
case 'Bloc de code': case 'Bloc de code':
return ( return (
<div className="slash-preview-box"> <div className="slash-preview-box">
<div className="slash-preview-title">Bloc de Code</div> <div className="slash-preview-title">{t('richTextEditor.slashCode') || 'Bloc de Code'}</div>
<div className="slash-preview-code"> <div className="slash-preview-code">
<div className="flex gap-1 mb-1"> <div className="flex gap-1 mb-1">
<span className="code-dot red"></span> <span className="code-dot red"></span>
@@ -1698,7 +1699,7 @@ function SlashPreview({ itemTitle }: { itemTitle: string }) {
<div className="code-line green"></div> <div className="code-line green"></div>
<div className="code-line blue"></div> <div className="code-line blue"></div>
</div> </div>
<p className="slash-preview-tip">Ajoutez du code avec coloration syntaxique automatique.</p> <p className="slash-preview-tip">{t('richTextEditor.previewCodeTip') || 'Ajoutez du code avec coloration syntaxique.'}</p>
</div> </div>
) )
default: default:
@@ -2203,7 +2204,7 @@ function SlashCommandMenu({ editor, onInsertImage, onSuggestCharts }: { editor:
className="notion-slash-preview" className="notion-slash-preview"
style={{ top: previewCoords.top, left: previewCoords.left }} style={{ top: previewCoords.top, left: previewCoords.left }}
> >
<SlashPreview itemTitle={selectedItem.title} /> <SlashPreview itemTitle={selectedItem.title} t={t} />
</div> </div>
)} )}
</>, </>,

View File

@@ -86,6 +86,9 @@ export interface Note {
sourceUrl?: string | null; sourceUrl?: string | null;
matchType?: 'exact' | 'related' | null; matchType?: 'exact' | 'related' | null;
searchScore?: number | null; searchScore?: number | null;
isPublic?: boolean;
publicSlug?: string | null;
publishedAt?: Date | null;
} }
export interface NoteHistoryEntry { export interface NoteHistoryEntry {