mirror of
https://github.com/nexu-io/open-design.git
synced 2026-10-27 09:51:12 +01:00
* fix(plugins): surface slides decks on Home instead of marketplace sources The 23 community slides/deck plugins from #4127 were registered as a restricted community marketplace source, so they showed up as installable "available sources" cards (受限 + Install) instead of on Home. Relocate them to plugins/_official/examples so they ship bundled — appearing in the Home Community gallery and the deck example-prompt rail, exactly like the existing zhangzara / swiss / guizang decks — and drop their community-registry entries. - Move 23 plugins/community/<slug> → plugins/_official/examples/<slug> (upstream LICENSE / author / homepage / "Based on" attribution preserved) - Rename manifest name community-<slug> → example-<slug> (bundled convention) - Remove the 23 entries from plugins/registry/community/open-design-marketplace.json (the 3 pre-existing community entries stay) - HomeHero: uncap the deck example-prompt rail (other chips keep the curated 18) so every bundled slide template is reachable straight from "All" - curatedPriority: pin the 23 slides to the front of both the deck example rail and the Community Slides shelf Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(home): drop provenance tail from deck seeds & fix deck preview letterbox Two polish fixes for the slide/deck plugins now surfaced on Home: 1. Example-prompt seed: strip a trailing source-attribution sentence ("…。移植自 foo/bar 的 baz 模板。" / "Based on …") from the composer seed so the prompt doesn't end on provenance boilerplate. Conservative — only fires when the final sentence opens with an attribution marker and real text precedes it; attribution woven mid-description (followed by a use-case sentence) and the gallery/detail descriptions are left intact. Latin '.' only ends a sentence at whitespace/EOL so "STYLE_PRESETS.md" / "github.com/…" don't mis-split. 2. Deck gallery preview: decks ship a fixed 16:9 stage that scales to its viewport, so the tall scroll-preview frame letterboxed it and showed a dark --stage-bg band above/below the slide. Tag deck cards with data-od-mode and give them a 16:9 frame the iframe fills natively (no transform, no pan), so the stage sits edge-to-edge with no band. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(home): deck preview frame to 16:9 so no white strip below the slide The deck preview override targeted the inner html-frame while the gallery frame kept its fixed 300px height, leaving a white strip under the 16:9 slide. Make the gallery frame itself 16:9 for deck cards so the stage fills it exactly — title bar + slide, nothing left over. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(decks): hide the page-counter chrome on all 23 community slide decks The five upstream deck families each render a different page-counter ("1 / 10") — a center pill (.deck-controls), an id="counter" badge, a fixed .deck-counter, or a .count span inside a Shadow-DOM rail — so the home gallery thumbnails showed it inconsistently. Per maintainer request, drop it everywhere rather than unify: inject a display:none rule for the light-DOM counters and inline- hide the Shadow-DOM .count span. Keyboard/touch navigation is untouched; only the visual counter is removed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(home): fix deck letterbox band in the example-prompt rail tiles too The earlier 16:9 deck-preview fix only covered the Community gallery cards; the hero example-prompt rail tiles render the deck in a 4:3 (1440×1080) preview and still showed a dark --stage-bg band on top. Tag deck preset tiles with data-od-mode and give them a 16:9 preview the iframe fills natively, matching the gallery treatment. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(home): remove the ↗ open-external button from community gallery cards The ↗ only rendered when a tile's preview was an HTML source, so it appeared on some cards (most decks, a few prototypes) and not others (images, srcless tiles) — inconsistent chrome across the shelf. Drop it and the whole onOpenExternal pass-through (PluginCard → PluginsHomeSection → HomeView) plus the now-dead .plugins-home__gallery-open styles. * fix(home): make the community search clear (×) button visible The clear button uses the shared <Button> component, whose CSS-module class set padding 6/12 and crushed the 12px × glyph to zero width inside the 26px button (a blank grey square). The .plugins-home__search-clear reset only out-specified the global `button {}` element rule, not the component class — scope it under .plugins-home__search so the padding:0 / 20x20 sizing actually wins. * fix(home): align deck example-prompt tile title row with other tiles Deck preset tiles used a 16:9 `auto` preview row, so their card was shorter than the fixed-150px sibling tiles; the flex rail stretched them back up and the slack leaked into the title row, making deck titles ~6px taller. Keep deck tiles on the standard 150px preview cell and center the native 16:9 stage inside it (neutral margin, no dark band), so card and title-row heights match prototype/HyperFrames/image tiles. * fix(deck-bridge): mirror the visible class so reveal animations fire on navigation Reveal-animation decks (the frontend-slides family) gate staggered entrances on a separate `.slide.visible` class that the deck's own show() adds alongside `.active`. The host bridge's setActive() flipped only the active class, so bridge-driven page turns showed slide chrome but left every .reveal child at opacity:0 — the body rendered blank. Mirror `.visible` in lock-step with the active slide (only for decks that use it, a no-op elsewhere). Adds a red→green regression test. * fix(home): unpin the bare Frontend Slides template from the slides shelf example-frontend-slides is the family-root template with a generic cover; pinned first it read as filler leading the Slides shelf and deck chip. Drop it from PINNED_SLIDE_PLUGIN_IDS so it falls to the uncurated tail while the styled variants (Creative Voltage, Electric Studio, …) keep the lead. --------- Co-authored-by: free666799 <293857035+free666799@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
159 lines
8.9 KiB
JSON
159 lines
8.9 KiB
JSON
{
|
||
"$schema": "https://open-design.ai/schemas/plugin.v1.json",
|
||
"specVersion": "1.0.0",
|
||
"name": "example-fs-electric-studio",
|
||
"title": "Electric Studio",
|
||
"title_i18n": {
|
||
"en": "Electric Studio",
|
||
"zh-CN": "钴蓝工作室"
|
||
},
|
||
"version": "1.0.0",
|
||
"description": "Bold, clean split-panel HTML decks: white panel over cobalt #4361ee, brand marks in the corners, a dark accent bar on the panel edge, quote typography as the hero element, all-Manrope (800/400), confident restrained spacing. Fixed 1920x1080 stage scaled uniformly to any viewport, zero dependencies. Based on zarazhangrui/frontend-slides electric-studio (STYLE_PRESETS section 2).",
|
||
"description_i18n": {
|
||
"en": "Bold, clean split-panel HTML decks: white panel over cobalt #4361ee, brand marks in the corners, a dark accent bar on the panel edge, quote typography as the hero element, all-Manrope (800/400), confident restrained spacing. Fixed 1920x1080 stage scaled uniformly to any viewport, zero dependencies. Based on zarazhangrui/frontend-slides electric-studio (STYLE_PRESETS section 2).",
|
||
"zh-CN": "大胆干净的上下分割面板 HTML 幻灯片:白色面板 × 钴蓝 #4361ee 面板,四角 brand marks,面板接缝处深色 accent bar,引文排印作为主视觉,全 Manrope(800/400),克制自信的留白。固定 1920x1080 舞台等比缩放适配任意视口,零依赖单文件。Based on zarazhangrui/frontend-slides electric-studio (STYLE_PRESETS section 2)。"
|
||
},
|
||
"license": "MIT",
|
||
"author": {
|
||
"name": "zarazhangrui",
|
||
"url": "https://github.com/zarazhangrui"
|
||
},
|
||
"homepage": "https://github.com/zarazhangrui/frontend-slides",
|
||
"plugin": {
|
||
"repo": "https://github.com/zarazhangrui/frontend-slides"
|
||
},
|
||
"tags": [
|
||
"community",
|
||
"deck",
|
||
"slides",
|
||
"presentation",
|
||
"split-panel",
|
||
"cobalt",
|
||
"bold",
|
||
"manrope",
|
||
"web",
|
||
"ppt"
|
||
],
|
||
"compat": {
|
||
"agentSkills": [
|
||
{
|
||
"path": "./SKILL.md"
|
||
}
|
||
]
|
||
},
|
||
"od": {
|
||
"kind": "scenario",
|
||
"taskKind": "new-generation",
|
||
"mode": "deck",
|
||
"scenario": "product",
|
||
"surface": "web",
|
||
"preview": {
|
||
"type": "html",
|
||
"entry": "./example.html",
|
||
"motion": "deck"
|
||
},
|
||
"useCase": {
|
||
"query": {
|
||
"en": "Create an Electric Studio {{deckType}} for {{audience}} about {{topic}} with {{slideCount}}, as a {{density}} deck. Output one self-contained single-file HTML deck with zero dependencies (all CSS/JS inline, no build step, no external JS libraries, icons as inline SVG, charts as pure CSS). The Electric Studio theme is LOCKED - start from this plugin's example.html seed and replace content only; never redesign. Hard rules: (1) Fixed 16:9 stage - author every slide on a 1920x1080 canvas inside .deck-viewport > .deck-stage and scale the whole stage uniformly with one transform (factor = min(innerWidth/1920, innerHeight/1080), centered with letterbox); never reflow content per device, no responsive breakpoints inside slides; keep the seed's full viewport-base.css block and the entire SlidePresentation controller script verbatim (keyboard arrows/Space/PageUp/PageDown/Home/End, debounced wheel, touch swipe, #/<index> hash routing, page counter chrome fixed outside the scaled stage). (2) Each page is one <section class=\"slide\"> switched via .active/.visible classes toggling visibility/opacity/pointer-events - never display:none. (3) Locked design tokens, all in :root and nowhere else: --bg-dark:#0a0a0a; --bg-white:#ffffff; --accent-blue:#4361ee; --text-dark:#0a0a0a; --text-light:#ffffff; soft variants --text-dark-soft:rgba(10,10,10,.58), --text-light-soft:rgba(255,255,255,.72); hairlines --line-dark:rgba(10,10,10,.14), --line-light:rgba(255,255,255,.28); --blue-soft:rgba(67,97,238,.10). No other hues - no gradients, no purple, no warm accents. (4) Locked typography: Manrope only (Google Fonts, weights 400/500/800); display type is Manrope 800 with tight negative letter-spacing (-0.025em to -0.035em); body is 400/500; kickers and marks are 800 uppercase with wide tracking. Never substitute another typeface. (5) Locked layout system - every slide is a vertical two-panel split (.split > .panel-white + .edge-bar + .panel-blue): white panel above, cobalt #4361ee panel below, with a 14px dark #0a0a0a accent bar (.edge-bar) on the panel seam; vary only the split ratio per master (50/50 title, shallow-top dividers/closings with the blue panel dominant, deep-top content slides with a blue takeaway strip). Brand marks sit in the four corners of every slide (.mark-tl/.mark-tr/.mark-bl/.mark-br): cobalt chip + wordmark top-left, section label top-right, deck label bottom-left, NN / NN page mark bottom-right; marks over white are dark, marks over blue are light. (6) Quote typography is the hero visual language: at least one quote-hero slide with an oversized cobalt ldquo mark and Manrope 800 statement type around 92px; no photography, no illustrations - type, flat panels, and the cobalt chip are the only decoration; keep spacing confident and restrained. (7) Compose slides from the seed's masters: title (50/50 statement), agenda (numbered rows on blue), section divider (outlined giant number on cobalt), bullets (ticks on white + takeaway strip on blue), big stat (oversized cobalt number), quote hero, comparison (white panel = their way vs blue panel = our way), 2x2 principle grid on cobalt, pure-CSS bar chart (cobalt bars, scaleY entrance), closing (blue dominant statement). (8) Motion: entrances only via .reveal elements staggered with transition-delay (~0.1s steps) when the slide gains .visible; single easing cubic-bezier(0.16,1,0.3,1); animate only transform and opacity; prefers-reduced-motion support stays. (9) No scrolling, no overflow; split content into more slides instead of shrinking type; low-density speaker-led decks get one idea per slide with 1-3 bullets, high-density reading-first decks get structured grids with max 4-6 cards.",
|
||
"zh-CN": "用 Electric Studio(钴蓝工作室)锁定主题为 {{audience}} 创作一套关于 {{topic}} 的 {{deckType}}({{slideCount}},{{density}}):零依赖单文件 HTML,固定 1920x1080 舞台等比缩放;每页都是「白上 × 钴蓝 #4361ee 下」的上下分割面板,面板接缝 14px 深色 accent bar,四角 brand marks(钴蓝色块 + 字标 / 章节 / 页码),全 Manrope(display 800 紧排印、正文 400/500),引文排印为主视觉,无照片无插画、仅平面色块与排印装饰。从插件内 example.html 种子出发,保留舞台缩放系统、SlidePresentation 导航脚本与 :root token 原样,只替换内容;禁止引入规格外的颜色和字体。完整硬性规格以英文 prompt 为准。"
|
||
},
|
||
"exampleOutputs": [
|
||
{
|
||
"path": "./example.html",
|
||
"title": "Voltaic Studio - Electric Studio capabilities deck",
|
||
"title_i18n": {
|
||
"en": "Voltaic Studio - Electric Studio capabilities deck",
|
||
"zh-CN": "Voltaic Studio · 钴蓝工作室能力介绍演示"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
"inputs": [
|
||
{
|
||
"name": "deckType",
|
||
"label": "Deck type",
|
||
"type": "select",
|
||
"required": true,
|
||
"options": [
|
||
"studio / agency capabilities deck",
|
||
"pitch deck",
|
||
"product overview",
|
||
"conference talk",
|
||
"internal presentation"
|
||
],
|
||
"default": "studio / agency capabilities deck"
|
||
},
|
||
{
|
||
"name": "topic",
|
||
"label": "Topic",
|
||
"type": "string",
|
||
"required": true,
|
||
"placeholder": "Voltaic Studio capabilities 2026",
|
||
"default": "the user's brief"
|
||
},
|
||
{
|
||
"name": "audience",
|
||
"label": "Audience",
|
||
"type": "string",
|
||
"required": true,
|
||
"placeholder": "Prospective clients evaluating design partners",
|
||
"default": "a general professional audience"
|
||
},
|
||
{
|
||
"name": "slideCount",
|
||
"label": "Length",
|
||
"type": "select",
|
||
"required": true,
|
||
"options": [
|
||
"short 5-10 slides",
|
||
"medium 10-20 slides",
|
||
"long 20+ slides"
|
||
],
|
||
"default": "short 5-10 slides"
|
||
},
|
||
{
|
||
"name": "density",
|
||
"label": "Density",
|
||
"type": "select",
|
||
"required": true,
|
||
"options": [
|
||
"low density / speaker-led",
|
||
"high density / reading-first"
|
||
],
|
||
"default": "low density / speaker-led"
|
||
}
|
||
],
|
||
"context": {
|
||
"skills": [
|
||
{
|
||
"path": "./SKILL.md"
|
||
}
|
||
],
|
||
"assets": [
|
||
"./example.html"
|
||
]
|
||
},
|
||
"pipeline": {
|
||
"stages": [
|
||
{
|
||
"id": "discovery",
|
||
"atoms": [
|
||
"discovery-question-form"
|
||
]
|
||
},
|
||
{
|
||
"id": "generate",
|
||
"atoms": [
|
||
"file-write",
|
||
"live-artifact"
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"capabilities": [
|
||
"prompt:inject",
|
||
"fs:write"
|
||
]
|
||
}
|
||
}
|