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) {
case 'Table':
case 'Tableau':
return (
<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-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>
<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>
)
case 'Database':
case 'Base de données':
return (
<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-row header">
<span>Nom</span>
<span>Statut</span>
<span>{t('structuredViews.propertyName') || 'Nom'}</span>
<span>{t('structuredViews.propertyStatus') || 'Statut'}</span>
</div>
<div className="slash-preview-db-row">
<span>Tâche A</span>
<span className="badge badge-todo">À faire</span>
<span>{t('wizard.taskA') || 'Tâche A'}</span>
<span className="badge badge-todo">{t('structuredViews.filterTodo') || faire'}</span>
</div>
<div className="slash-preview-db-row">
<span>Tâche B</span>
<span className="badge badge-done">Fait</span>
<span>{t('wizard.taskB') || 'Tâche B'}</span>
<span className="badge badge-done">{t('structuredViews.filterDone') || 'Fait'}</span>
</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>
)
case 'Suggest Charts':
case 'Suggest Chart':
case 'Graphiques IA':
return (
<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="chart-bar" style={{ height: '40%' }}></div>
<div className="chart-bar" style={{ height: '75%' }}></div>
<div className="chart-bar" style={{ height: '50%' }}></div>
<div className="chart-bar" style={{ height: '90%' }}></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>
)
case 'Living Block':
case 'Bloc vivant':
return (
<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="live-note">Note A</div>
<div className="live-sync-line"></div>
<div className="live-note">Note B</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>
)
case 'Diagramme':
case 'Diagram':
return (
<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="excalidraw-circle"></div>
<div className="excalidraw-arrow"></div>
<div className="excalidraw-rect"></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>
)
case 'Présentation':
case 'Presentation':
return (
<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="slide-item"></div>
<div className="slide-item active"></div>
<div className="slide-item"></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>
)
case 'Code Block':
@@ -1688,7 +1689,7 @@ function SlashPreview({ itemTitle }: { itemTitle: string }) {
case 'Bloc de code':
return (
<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="flex gap-1 mb-1">
<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 blue"></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>
)
default:
@@ -2203,7 +2204,7 @@ function SlashCommandMenu({ editor, onInsertImage, onSuggestCharts }: { editor:
className="notion-slash-preview"
style={{ top: previewCoords.top, left: previewCoords.left }}
>
<SlashPreview itemTitle={selectedItem.title} />
<SlashPreview itemTitle={selectedItem.title} t={t} />
</div>
)}
</>,

View File

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