UNPKG

livecodes

Version:

A Code Playground That Just Works!

301 lines (233 loc) 6.84 kB
--- name: livecodes/display-modes description: > Configure how the playground is displayed: full, focus, simple, lite, editor, codeblock, and result modes. Load this skill when choosing display mode for embeddings, configuring read-only views, or showing only result or editor. type: core library: livecodes library_version: 0.13.0 requires: - configuration sources: - live-codes/livecodes:docs/docs/features/display-modes.mdx - live-codes/livecodes:docs/docs/features/lite.mdx --- This skill builds on configuration. Read it first for foundational concepts. # LiveCodes — Display Modes Display modes control what UI elements are shown in the playground. Choose mode based on your embedding use case. ## Setup ```javascript import { createPlayground } from 'livecodes'; // Via config object createPlayground('#container', { config: { mode: 'simple' }, }); // Via query params createPlayground('#container', { params: { mode: 'result' }, }); // Via URL // https://livecodes.io/?mode=lite&template=react ``` ## Core Patterns ### Full mode (default) Complete playground with toolbars, all editors, result pane. ```javascript // Default mode - no need to specify createPlayground('#container', { template: 'react', }); // Mode is 'full' by default ``` ### Simple mode (embeds) One editor + result. Ideal for embedded playgrounds with limited space. ```javascript createPlayground('#container', { config: { mode: 'simple', layout: 'vertical', // 'vertical' or 'horizontal' activeEditor: 'script', editor: 'monaco', // 'monaco' or 'codemirror' (default) }, params: { js: 'console.log("Hello")', console: 'open', }, }); // With style editor createPlayground('#container', { config: { mode: 'simple', layout: 'vertical', activeEditor: 'script', editor: 'monaco', }, }); ``` ### Lite mode Lightweight editor for faster loading. Minimal features. ```javascript createPlayground('#container', { config: { mode: 'lite' }, template: 'react', }); // Via URL // https://livecodes.io/?mode=lite&template=react ``` Lite mode features: - Uses CodeJar editor (light-weight) - No minimap, no advanced autocomplete - Still supports all languages - Faster initial load ### Editor mode (code only) No result pane. Shows only the editors. ```javascript createPlayground('#container', { config: { mode: 'editor' }, template: 'react', }); ``` Use for: - Code review interfaces - Teaching code patterns - Read-only snippet viewers ### Codeblock mode (read-only) Static code display with copy button on hover. No editing. ```javascript createPlayground('#container', { config: { mode: 'codeblock', editor: 'monaco', // Optional: use Monaco instead of CodeJar }, params: { html: '<h1>Hello World</h1>' }, }); ``` Use for: - Blog posts with code snippets - Documentation - One-way code display ### Result mode (output only) Shows only the result page with a drawer to open in full playground. ```javascript createPlayground('#container', { params: { mode: 'result', template: 'react', }, }); // Show console in result mode createPlayground('#container', { params: { mode: 'result', tools: 'console|full', js: 'console.log("Hello World")', }, }); ``` Use for: - Demo showcase - Embedded output - Presentations ### Focus mode Minimal UI: editors, result, console only. No menus or secondary controls. ```javascript createPlayground('#container', { config: { mode: 'focus' }, }); ``` Toggle between focus and full in the app UI. Access via button in bottom-left corner. ## Display Mode vs Default View | Concept | What it controls | | ------- | ------------------------------ | | Mode | What UI elements are loaded | | View | Which pane is shown by default | ```javascript // Mode: 'editor' - Only editors exist, no result pane createPlayground('#container', { config: { mode: 'editor' }, }); // Mode: 'full', View: 'editor' - All UI, editors shown by default createPlayground('#container', { config: { mode: 'full', // Full UI view: 'editor', // Show editors first }, }); ``` ## Common Mistakes ### MEDIUM Confusing mode with view Wrong: ```javascript // Want to show result by default but use full UI createPlayground('#container', { config: { mode: 'result' }, // Result mode - no editors! }); ``` Correct: ```javascript // Use view for default visible pane createPlayground('#container', { config: { mode: 'full', // Full UI with all elements view: 'result', // Show result by default }, }); ``` `mode` determines what elements exist. `view` determines which element is visible first. Source: docs/docs/features/display-modes.mdx — Display Mode vs Default View section ### MEDIUM Tools not visible in result mode ```javascript // Console won't show in result mode by default createPlayground('#container', { params: { mode: 'result', js: 'console.log("Hello")', }, }); ``` Correct: ```javascript // Set tools to 'open' or 'full' in result mode createPlayground('#container', { params: { mode: 'result', tools: 'console|full', // Show console in full height js: 'console.log("Hello")', }, }); ``` In result mode, tools pane is hidden by default. Set `tools: 'console|open'` or `tools: 'console|full'` to show it. Source: docs/docs/features/display-modes.mdx — Result mode section ## Mode Reference | Mode | Shows | Use Case | | ----------- | -------------------------- | --------------------------- | | `full` | All UI (default) | Full playground experience | | `focus` | Editors + result + console | Minimal distractions | | `simple` | One editor + result | Compact embeds | | `lite` | Lightweight editor | Fast loading, basic editing | | `editor` | Only editors | Code review, teaching | | `codeblock` | Static code with copy | Read-only snippets | | `result` | Only result page | Demo showcase | ## View Reference | View | Description | | -------- | ----------------------------------------- | | `split` | Editors and result side by side (default) | | `editor` | Editors visible, result hidden | | `result` | Result visible, editors hidden | ## Tools Configuration ```javascript const config = { tools: { enabled: ['console', 'compiled'], // or 'all' active: 'console', // Which tool is open status: 'open', // 'open', 'full', 'closed', 'none' }, }; // Via params params: { tools: 'console|open', // Console open tools: 'compiled|full', // Compiled code, full height console: 'open', // Shorthand for console } ```