fix: SlashPreview i18n + Note type isPublic/publicSlug
- 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:
@@ -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>
|
||||
)}
|
||||
</>,
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user