// Check/Confirm icon
export const IconCheck = `
`;
// Sparkle/Auto-detect icon — 4-pointed star (modern AI/auto symbol)
export const IconWand = `
`;
// Cross/Close icon
export const IconCross = `
`;
// Bold icon
export const IconBold = `
`;
// Italic icon
export const IconItalic = `
`;
// Link icon
export const IconLink = `
`;
// Marker/Color icon (letter A in rounded square)
export const IconMarker = `
`;
// Equation/inline math icon (radical/square-root glyph)
export const IconEquation = `
`;
// The sup/sub digits scale IconH2's digit by 0.8; keep the skeletons in sync.
export const IconSuperscript = `
`;
// The subscript digit is the superscript digit translated down 6 units.
export const IconSubscript = `
`;
// Clear format icon (T with strike-out x)
export const IconClearFormat = `
`;
// Underline icon
export const IconUnderline = `
`;
// Strikethrough icon
export const IconStrikethrough = `
`;
// Replace/Convert icon
export const IconReplace = `
`;
// Menu icon (6-dot grip)
export const IconMenu = `
`;
// Plus/Add icon
export const IconPlus = `
`;
// Minus/Remove icon
export const IconMinus = `
`;
// Chevron Down icon
export const IconChevronDown = `
`;
// Chevron Left icon
export const IconChevronLeft = `
`;
// Chevron Right icon
export const IconChevronRight = `
`;
// Search icon
export const IconSearch = `
`;
// Heading 1 icon
export const IconH1 = `
`;
// Heading 2 icon
export const IconH2 = `
`;
// Heading 3 icon
export const IconH3 = `
`;
// Heading 4 icon
export const IconH4 = `
`;
// Heading 5 icon
export const IconH5 = `
`;
// Heading 6 icon
export const IconH6 = `
`;
// Heading icon
export const IconHeading = `
`;
// Text/Paragraph icon — plain T at heading height (5-15)
export const IconText = `
`;
// Compact text size — small "A"
export const IconTextSizeSmall = `
`;
// Comfortable text size — large "A"
export const IconTextSizeLarge = `
`;
// Warning icon
export const IconWarning = `
`;
// Toggle List icon
export const IconToggleList = `
`;
// Bulleted List icon
export const IconListBulleted = `
`;
// Numbered List icon
export const IconListNumbered = `
`;
// Checklist icon
export const IconListChecklist = `
`;
// Table icon
export const IconTable = `
`;
// Table with highlighted top row (header row)
export const IconHeaderRow = `
`;
// Preview/Eye icon
export const IconPreview = `
`;
// Table with highlighted left column (header column)
export const IconHeaderColumn = `
`;
// Insert row above icon
export const IconInsertAbove = `
`;
// Insert row below icon
export const IconInsertBelow = `
`;
// Insert column left icon
export const IconInsertLeft = `
`;
// Insert column right icon
export const IconInsertRight = `
`;
// Up arrow — also the up member of the move set below, and the upload arrow in
// the shared media empty state.
export const IconArrowUp = `
`;
// Move down icon
export const IconMoveDown = `
`;
// Move left icon
export const IconMoveLeft = `
`;
// Move right icon
export const IconMoveRight = `
`;
// Copy icon
export const IconCopy = `
`;
// Pencil/Rename icon
export const IconPencil = `
`;
// Trash/Delete icon
export const IconTrash = `
`;
// Horizontal dots / more options icon — the house more-options glyph, used by
// menus and by the CSS-sized image and embed overlay bars alike.
export const IconDotsHorizontal = `
`;
// Toggle Heading 1 icon (H1 with toggle arrow)
export const IconToggleH1 = `
`;
// Toggle Heading 2 icon (H2 with toggle arrow)
export const IconToggleH2 = `
`;
// Toggle Heading 3 icon (H3 with toggle arrow)
export const IconToggleH3 = `
`;
// Toggle Heading 4 icon (H4 with toggle arrow)
export const IconToggleH4 = `
`;
// Toggle Heading 5 icon (H5 with toggle arrow)
export const IconToggleH5 = `
`;
// Toggle Heading 6 icon (H6 with toggle arrow)
export const IconToggleH6 = `
`;
// Globe icon (URL link type)
export const IconGlobe = `
`;
// Bookmark icon (ribbon — link bookmark card)
export const IconBookmark = `
`;
// Mail icon (email link type)
export const IconMail = `
`;
// Hash icon (anchor link type)
export const IconHash = `
`;
// Return/enter key icon (link suggestion confirm hint)
export const IconReturn = `
`;
// Quote icon
export const IconQuote = `
`;
// Callout icon — rounded panel with a leading emoji slot and two text lines
export const IconCallout = `
`;
export const IconPaintRoller = `
`;
// Spacer icon (two lines pushed apart by a vertical double-headed arrow)
export const IconSpacer = `
`;
// Code inline icon (angle brackets: >)
export const IconCode = `
`;
// Code block icon (brackets with slash)
export const IconCodeBlock = `
`;
// Emoji Picker Category Icons
export const IconEmojiSparkles = `
`;
export const IconEmojiWink = `
`;
export const IconEmojiBowl = `
`;
export const IconEmojiGamepad = `
`;
export const IconEmojiMap = `
`;
export const IconEmojiHearts = `
`;
// Star icon (Callout category)
export const IconEmojiStar = `
`;
// Smiley face icon (People category)
export const IconEmojiSmile = `
`;
// Sprout icon (Nature category)
export const IconEmojiSprout = `
`;
// Fork and spoon icon (Food category)
export const IconEmojiUtensils = `
`;
// Ball icon (Activity category)
export const IconEmojiBall = `
`;
// Lightbulb icon (Objects category)
export const IconEmojiLightbulb = `
`;
// Heart icon (Symbols category)
export const IconEmojiHeart = `
`;
// Flag icon (Flags category)
export const IconEmojiFlag = `
`;
export const IconEmojiGlobe = `
`;
export const IconEmojiDice = `
`;
export const IconEmojiTrash = `
`;
export const IconDatabase = `
`;
export const IconBoard = `
`;
export const IconGallery = `
`;
// Database list view — stacked row cards (matches the IconBoard/IconGallery
// view family; distinct from IconListBulleted, the list block tool)
export const IconList = `
`;
// Calendar icon (date property type)
export const IconCalendar = `
`;
// Merge cells icon (two cells merging into one)
export const IconMergeCells = `
`;
// Split cell icon (one cell splitting into two) — mirror of IconMergeCells
export const IconSplitCell = `
`;
// Split view icon (two panels side by side) — code editor/preview split;
// distinct from IconColumns (layout columns: one frame with a divider)
export const IconSplitView = `
`;
// Placement icon (3x3 alignment dot grid)
export const IconPlacement = `
`;
// Image / photo icon — framed landscape with filled sun
export const IconImage = `
`;
// ============================================================================
// 24×24 icons with no intrinsic width/height, for CSS-sized overlay chrome
// (image toolbar, lightbox, embed bar). Their 1.5-unit stroke matches the
// 20×20 menu icons at the same display size, so an icon here must NOT be a
// rescaled copy of a 20-unit one — use that export instead. Enforced by
// test/unit/architecture/icon-no-duplicate-drawings.test.ts.
// ============================================================================
const wrapImageSvg = (inner: string): string =>
``;
// Broken image alert — error state
export const IconImageBroken = '';
// Keep the failure mark clear of the cloud outline.
export const IconUploadFailed = '';
// External link — rounded square with arrow exiting top-right (open original)
export const IconLinkExternal = wrapImageSvg('');
export const IconArrowDownLine = wrapImageSvg('');
// ============================================================================
// Menu icons retain intrinsic 20×20 dimensions; overlay icons are CSS-sized.
// ============================================================================
// Align left — filled block with text lines beside it
export const IconAlignLeft = `
`;
// Align center — filled block centered between two rules
export const IconAlignCenter = `
`;
// Align right — mirror of IconAlignLeft
export const IconAlignRight = `
`;
// The shorter panel leaves room for one caption inside the 20-unit grid.
export const IconCaption = `
`;
// Crop rails leave a gap at each crossing.
export const IconCrop = `
`;
export const IconExpandFullscreen = `
`;
// Reverse the four IconExpandFullscreen corners.
export const IconCollapseFullscreen = `
`;
// Media play — filled triangle
export const IconPlayerPlay = `
`;
// Media pause — two filled bars
export const IconPlayerPause = `
`;
// Media rewind — two filled triangles pointing left
export const IconPlayerBackward = `
`;
// Media fast-forward — two filled triangles
export const IconPlayerForward = `
`;
// Volume on — speaker + sound waves
export const IconPlayerVolume = `
`;
// Volume muted — speaker + cross
export const IconPlayerVolumeMute = `
`;
// Player settings — sliders / tune (three adjustable tracks with knobs)
export const IconPlayerSettings = `
`;
// Player picture-in-picture — frame with an inset mini frame
export const IconPlayerPip = `
`;
// Player theater — wide cinema screen
export const IconPlayerTheater = `
`;
// Player speed — tachometer gauge (arc + needle + hub) for the playback-speed row
export const IconPlayerSpeed = `
`;
// Player loop — repeat glyph (two opposing arrowheads tracing a loop)
export const IconPlayerLoop = `
`;
// Upload — arrow out of tray; mirrors IconDownload's shaft and tray
export const IconUpload = `
`;
// Download — arrow into tray
export const IconDownload = `
`;
// Select (single-choice dropdown) — database "select" property type
export const IconSelect = `
`;
// Multi-select (tag pills) — database "multiSelect" property type
export const IconMultiSelect = `
`;
// ============================================================================
// Misc shared icons
// ============================================================================
// Columns layout tool — framed container split by a divider (layout columns;
// IconSplitView is the code editor/preview split, drawn as two separate panels)
export const IconColumns = `
`;
// Video / player icon — framed player with a play triangle (link-type: video)
export const IconVideo = `
`;
// Music / audio icon — beamed eighth notes (link-type: audio)
export const IconMusic = `
`;
// Map icon — trifold map with fold lines (link-type: map)
export const IconMap = `
`;
// Chart icon — baseline with three bars (link-type: chart / data-viz)
export const IconChart = `
`;
// Message / speech bubble icon — social post (link-type: social)
export const IconMessage = `
`;
// File / document icon — page with a folded corner and text lines (link-type: document)
export const IconFile = `
`;
// ============================================================================
// File-type icons (20×20 / 1.25 house spec) — chosen by File block per
// extension/MIME category. Monochrome currentColor; the File block tints them
// per category via the .blok-file-icon[data-file-category] CSS rules.
// ============================================================================
// PDF has no glyph of its own: it reuses IconFile and is told apart by the red
// tint from .blok-file-icon[data-file-category="pdf"].
// Word-processing document — page with folded corner and three text lines
export const IconFileDoc = `
`;
// Spreadsheet — framed sheet with a 2×2 cell grid
export const IconFileSheet = `
`;
// Presentation — framed slide on a stand
export const IconFileSlides = `
`;
// Archive — box with a centered zipper and pull tab
export const IconFileArchive = `
`;
/**
* Builds a columns-preset icon: one rounded frame split by `count - 1` evenly
* spaced dividers, so it reads as a container holding exactly `count` columns
* and keeps a constant stroke weight at any count (avoids the cramped barcode
* look of N separate bars). Used by the ColumnList toolbox presets (2–5).
*/
export const buildIconColumnsCount = (count: number): string => {
const x = 3;
const y = 4;
const w = 14;
const h = 12;
const step = w / count;
const dividers = Array.from({ length: count - 1 }, (_, i) => {
const dx = +(x + step * (i + 1)).toFixed(2);
return ``;
}).join('');
return ``;
};