"use client"
import type { ReactNode } from "react"
import { Icon } from "@iconify/react"
import {
BarChart3,
Bookmark,
Calendar,
CircleDot,
FileText,
ImageIcon,
Link2,
MessageSquarePlus,
Minus,
PenLine,
Plus,
Shapes,
Smile,
Table2,
Upload,
} from "lucide-react"
import { DocsExclusiveMenuSub, DocsExclusiveMenuSubRoot } from "@/components/drive/richtext/docs-exclusive-menu-sub"
import { DocsInsertTablePicker } from "@/components/drive/richtext/docs-insert-table-picker"
import { DOCS_MENUBAR_CONTENT_PROPS } from "@/components/drive/richtext/docs-menubar-props"
import {
MenubarContent,
MenubarItem,
MenubarMenu,
MenubarSeparator,
MenubarShortcut,
MenubarSubContent,
MenubarSubTrigger,
MenubarTrigger,
} from "@/components/ui/menubar"
import { suitePublicAsset } from "@/lib/suite/suite-public-asset"
export type DocsInsertMenuActions = {
onInsertImageFromComputer: () => void
onInsertImageFromDrive: () => void
onInsertNewDraw: () => void
onInsertDrawFromDrive: () => void
onInsertLink: () => void
onInsertHorizontalRule: () => void
onInsertTable: (rows: number, cols: number) => void
onInsertHeader: () => void
onInsertFooter: () => void
onInsertWatermark: () => void
onInsertPageNumbersHeader: () => void
onInsertPageNumbersFooter: () => void
onOpenPageNumbersOptions: () => void
}
function MenuIcon({ children }: { children: ReactNode }) {
return {children}
}
function DocsMenuBadge({ children }: { children: ReactNode }) {
return (
{children}
)
}
function DisabledMenuItem({
icon,
children,
badge,
shortcut,
}: {
icon: ReactNode
children: ReactNode
badge?: ReactNode
shortcut?: string
}) {
return (
{icon}
{children}
{badge}
{shortcut ? {shortcut} : null}
)
}
function InsertBuildingBlockItems() {
return (
<>
}>Notes de réunion
}>
Brouillon d'email
}>
Journal simple des décisions
}>
Voir plus
>
)
}
function InsertPlaceholderChipItems() {
return (
<>
}>Date
}>
Personne
}>Fichier
}>
Événement d'agenda
}>
Lieu
>
)
}
export function DocsInsertMenu({
actions,
disabled,
pageElementsEnabled = true,
}: {
actions: DocsInsertMenuActions
disabled?: boolean
pageElementsEnabled?: boolean
}) {
const pageElementsDisabled = disabled || !pageElementsEnabled
return (
Insertion
Image
Importer depuis l'ordinateur
}>
Rechercher sur le Web
Drive
}>
Photos
}>
Appareil photo
}>
À partir d'une URL
Tableau
Composants de base
{
if (disabled) return
actions.onInsertTable(rows, cols)
}}
/>
Composants de base
Chips intelligents
}>Date
}>
Contact
}>Fichier
}>
Événement d'agenda
}>
Lieu
Chips d'espace réservé
}>
Menu déroulant
Signatures électroniques
Premium
}>
Insérer un champ de signature
}>
Demander une signature
Lien
⌘K
Dessin
Nouveau
À partir de Drive
Graphique
}>
Barres
}>
Colonnes
}>
Lignes
}>
Secteurs
}>
Depuis Sheets
Symboles
}>Emoji
Ω}>
Caractères spéciaux
π²}>
Équation
} shortcut="Maj+F11">
Onglet
Ligne horizontale
Saut
}
shortcut="⌘↵"
>
Saut de page
}>
Saut de colonne
}>
Saut de section (page suivante)
}>
Saut de section (continu)
}>Signet
Éléments de page
Mise à jour
Table des matières
}>
Table des matières avec liens
}>
Table des matières en texte brut
En-tête
Ctrl+⌘O Ctrl+⌘H
Pied de page
Ctrl+⌘O Ctrl+⌘F
Filigrane
#
Numéros de page
En haut de page
En bas de page
Options de numérotation…
}
shortcut="⌘⌥F"
>
Note de bas de page
} shortcut="⌘⌥M">
Commentaire
)
}