// 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 ``; };