"use client"
import type { ReactNode } from "react"
import {
DOCS_BULLET_STYLE_PRESETS,
DOCS_ORDERED_STYLE_PRESETS,
type DocsBulletStyleId,
type DocsChecklistStyleId,
type DocsOrderedStyleId,
} from "@/lib/drive/docs-list-styles"
import { cn } from "@/lib/utils"
function PresetButton({
disabled,
active,
onClick,
children,
className,
label,
}: {
disabled?: boolean
active?: boolean
onClick?: () => void
children: ReactNode
className?: string
label: string
}) {
return (
)
}
export function DocsFormatColumnPresets({ disabled }: { disabled?: boolean }) {
return (
{[1, 2, 3].map((count) => (
1 ? "s" : ""}`}
className="flex h-14 items-stretch justify-center gap-0.5 p-1.5"
>
{Array.from({ length: count }, (_, index) => (
))}
))}
)
}
const NUMBERED_PRESET_LINES: Record = {
decimal: ["1.", " a.", " i."],
"decimal-paren": ["1)", " a)", " i)"],
outline: ["1.", " 1.1.", " 1.1.1."],
"upper-alpha": ["A.", " a.", " i.", "B."],
"upper-roman": ["I.", " A.", " 1.", "II."],
"zero-padded": ["01.", "02."],
}
export function DocsFormatNumberedPresets({
disabled,
activeStyleId,
onSelect,
}: {
disabled?: boolean
activeStyleId?: DocsOrderedStyleId | null | "mixed"
onSelect: (styleId: DocsOrderedStyleId) => void
}) {
return (
{DOCS_ORDERED_STYLE_PRESETS.map((preset) => (
onSelect(preset.id)}
className="min-h-[72px] font-mono"
>
{NUMBERED_PRESET_LINES[preset.id].map((line) => (
{line}
))}
))}
)
}
export function DocsFormatBulletPresets({
disabled,
activeStyleId,
onSelect,
}: {
disabled?: boolean
activeStyleId?: DocsBulletStyleId | null | "mixed"
onSelect: (styleId: DocsBulletStyleId) => void
}) {
const symbols: Record = {
disc: "•",
circle: "◦",
square: "▪",
arrow: "➤",
check: "✓",
dash: "–",
}
return (
{DOCS_BULLET_STYLE_PRESETS.map((preset) => (
onSelect(preset.id)}
className="min-h-[56px]"
>
{symbols[preset.id]} Élément
{symbols[preset.id]} Élément
))}
)
}
export function DocsFormatChecklistPresets({
disabled,
activeStyleId,
onSelect,
}: {
disabled?: boolean
activeStyleId?: DocsChecklistStyleId | null | "mixed"
onSelect: (styleId: DocsChecklistStyleId) => void
}) {
return (
onSelect("strikethrough")}
>
Tâche
✓
Terminé
onSelect("simple")}
>
Tâche
Tâche
)
}