Luthor Source File Reference (`packages/luthor/src`)
Luthor Source File Reference (packages/luthor/src)
Section titled “Luthor Source File Reference (packages/luthor/src)”This file documents every code file in packages/luthor/src.
Inventory
Section titled “Inventory”- Total files: 21
- Scope: all
.tsand.tsxfiles underpackages/luthor/src
Root entrypoints
Section titled “Root entrypoints”packages/luthor/src/index.ts
Section titled “packages/luthor/src/index.ts”- Purpose: package root entrypoint.
- Exports:
- all exports from
./presets - all exports from
./core - namespace export
headlessfrom@lyfie/luthor-headless
- all exports from
- Notes:
- Enables one-package import ergonomics.
Core layer (packages/luthor/src/core)
Section titled “Core layer (packages/luthor/src/core)”core/index.ts
Section titled “core/index.ts”- Purpose: barrel for all core modules.
- Exports:
- commands, extension adapters, UI components, types, formatting helpers.
core/types.ts
Section titled “core/types.ts”- Purpose: typed contract layer between UI and editor capabilities.
- Exports:
- mode/format unions, insert configs, command/state interfaces, class-name maps.
- Notes:
- Most command methods are optional to support extension-gated capabilities.
core/preset-config.ts
Section titled “core/preset-config.ts”- Purpose: helper to create consistent preset config values.
- Exports:
createPresetEditorConfig.
- Key behavior:
- Builds class names and placeholder defaults by preset id.
core/extensions.tsx
Section titled “core/extensions.tsx”- Purpose: floating-toolbar extension bridge.
- Exports:
setFloatingToolbarContextcreateFloatingToolbarExtension
- Key behavior:
- Maintains mutable context used by headless floating-toolbar extension render lifecycle.
core/commands.ts
Section titled “core/commands.ts”- Purpose: canonical command catalog and keyboard registration.
- Exports:
generateCommandscommandsToCommandPaletteItemscommandsToSlashCommandItemsregisterKeyboardShortcuts- types
KeyboardShortcut,CommandConfig
- Key behavior:
- Creates command metadata with extension-aware availability checks.
- Converts command definitions into palette/slash UI item shapes.
- Registers global keyboard shortcuts with conflict handling.
core/command-palette.tsx
Section titled “core/command-palette.tsx”- Purpose: command palette modal UI.
- Exports:
CommandPalettecomponent.
- Key behavior:
- Query filtering, category grouping, keyboard navigation/selection, escape close.
core/slash-command-menu.tsx
Section titled “core/slash-command-menu.tsx”- Purpose: slash-command popup UI.
- Exports:
SlashCommandMenucomponent.
- Key behavior:
- Anchored popup, query filtering, grouped command list, keyboard navigation.
core/emoji-suggestion-menu.tsx
Section titled “core/emoji-suggestion-menu.tsx”- Purpose: emoji suggestion popup UI.
- Exports:
EmojiSuggestionMenucomponent.
- Key behavior:
- Search by label/shortcode/keywords, anchored rendering, keyboard navigation.
core/source-format.ts
Section titled “core/source-format.ts”- Purpose: source text formatting utilities.
- Exports:
formatJSONBSource
- Key behavior:
- JSON parse/stringify fallback formatting.
core/layout.tsx
Section titled “core/layout.tsx”- Purpose: source/visual mode layout primitives.
- Exports:
ModeTabsSourceView
- Key behavior:
- Optional mode labels and mode filtering.
- Source textarea autosizing.
core/ui.tsx
Section titled “core/ui.tsx”- Purpose: low-level shared UI primitives for core controls.
- Exports:
IconButton,Button,Select,Dropdown,Dialog
- Key behavior:
- Dropdown positioning, outside click handling, dialog escape handling and scroll lock.
core/icons.tsx
Section titled “core/icons.tsx”- Purpose: icon mapping layer.
- Exports:
- editor-oriented icon aliases backed by
lucide-react.
- editor-oriented icon aliases backed by
core/floating-toolbar.tsx
Section titled “core/floating-toolbar.tsx”- Purpose: contextual floating toolbar.
- Exports:
FloatingToolbarFloatingToolbarProps
- Key behavior:
- Renders text/media actions depending on current selection context.
core/toolbar.tsx
Section titled “core/toolbar.tsx”- Purpose: main top toolbar UI for preset editor.
- Exports:
ToolbarToolbarProps
- Key behavior:
- Extension-aware control rendering.
- typography/color/image/embed/table controls.
- command palette trigger and theme controls.
core/code-intelligence-extension.ts
Section titled “core/code-intelligence-extension.ts”- Purpose: re-export shim for code intelligence extension.
- Exports:
CodeIntelligenceExtensioncodeIntelligenceExtensionCodeIntelligenceCommands
- Source:
- forwarded from
@lyfie/luthor-headless.
- forwarded from
Preset layer (packages/luthor/src/presets)
Section titled “Preset layer (packages/luthor/src/presets)”presets/index.ts
Section titled “presets/index.ts”- Purpose: preset API and registry.
- Exports:
EditorPresetinterfacecreatePresetEditorConfig- extensive preset exports
presetRegistry
- Key behavior:
- Registers
extensiveas the built-in preset key.
- Registers
presets/extensive/index.ts
Section titled “presets/extensive/index.ts”- Purpose: barrel for extensive preset modules.
- Exports:
extensivePreset,extensiveToolbar,extensiveExtensions,ExtensiveEditor, extensive editor types.
presets/extensive/preset.ts
Section titled “presets/extensive/preset.ts”- Purpose: static extensive preset metadata.
- Exports:
extensiveToolbarextensivePreset
- Key behavior:
- Defines toolbar defaults, base config, css path, editor component reference.
presets/extensive/extensions.tsx
Section titled “presets/extensive/extensions.tsx”- Purpose: extension composition for extensive preset.
- Exports:
setFloatingToolbarContext(re-export)extensiveImageExtensionextensiveExtensionsExtensiveExtensionstype
- Key behavior:
- Composes most built-in headless extensions.
- Applies configuration for embeds, image handling, typography/color options, and custom node behavior.
presets/extensive/ExtensiveEditor.tsx
Section titled “presets/extensive/ExtensiveEditor.tsx”- Purpose: fully assembled preset editor component.
- Exports:
ExtensiveEditorExtensiveEditorMode,ExtensiveEditorRef,ExtensiveEditorProps
- Key behavior:
- Creates editor system provider and command wiring.
- Integrates toolbar, floating toolbar, slash menu, emoji menu, and command palette.
- Supports visual/JSONB mode switching with conversion and validation.
- Exposes imperative ref methods.
Cross-file relationships
Section titled “Cross-file relationships”- Command model source of truth:
core/commands.ts - UI contracts:
core/types.ts - Floating toolbar extension bridge:
core/extensions.tsx - Preset assembly:
- extension stack:
presets/extensive/extensions.tsx - metadata:
presets/extensive/preset.ts - runtime shell:
presets/extensive/ExtensiveEditor.tsx
- extension stack:
Contributor checklist for source changes
Section titled “Contributor checklist for source changes”When modifying any file in packages/luthor/src:
- Update this file’s section if exports/responsibilities change.
- Update user docs if public behavior changed.
- Update
packages/luthor/README.mdfor API surface changes. - Run package lint/build checks.