Skip to main content

slidewire-development

Guidance for generating, authoring, and refining beautiful SlideWire presentations in Laravel applications.

跳到安装

来源信息

仓库
WendellAdriel/slidewire
最近来源活动
2026年3月23日 19:49
检测到的 SKILL.md 语言
英语
星标
139
分支
6

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
slidewire-development
description
Guidance for generating, authoring, and refining beautiful SlideWire presentations in Laravel applications.
metadata
null
# SlideWire Development Use this skill when working with `wendelladriel/slidewire`: creating new presentations, improving existing decks, adding navigation-friendly structure, or styling slides with themes, text, images, markdown, code, diagrams, fragments, and the first-party presentation UI components. ## Start with the SlideWire workflow Default workflow for a new presentation: 1. Generate the scaffold with `make:slidewire`. 2. Author the deck in a single Blade presentation file. 3. Register the route with `Route::slidewire()`. 4. Refine the deck with themes, transitions, fragments, and supporting components. Use the package command instead of hand-writing the initial file when possible: ```bash php artisan make:slidewire demo/product-launch --title="Product Launch" ``` - Presentations are discovered from `config('slidewire.presentation_roots')`. - By default, files live under `resources/views/pages/slides`. - A presentation key like `demo/product-launch` maps to `resources/views/pages/slides/demo/product-launch.blade.php`. ## Preferred deck structure Each presentation should be a single Blade file with one `<x-slidewire::deck>` containing one or more `<x-slidewire::slide>` components. ```blade <x-slidewire::deck> <x-slidewire::slide class="bg-slate-900 text-white"> <h1 class="text-4xl font-semibold tracking-tight">Product Launch</h1> <p class="text-lg text-slate-300">Opening slide</p> </x-slidewire::slide> <x-slidewire::slide class="bg-white text-slate-900"> <x-slidewire::markdown> ## Metrics - Activation: 62% - Churn: 1.8% </x-slidewire::markdown> </x-slidewire::slide> </x-slidewire::deck> ``` Strong defaults: - Keep one presentation per file. - Use deck-level defaults for repeated settings. - Use slide-level overrides only when a slide should intentionally differ. - Use Tailwind classes for layout, spacing, colors, and typography. ## Tailwind setup SlideWire presentation styling assumes the host Laravel app is using Tailwind CSS. If a project uses the first-party SlideWire UI components like `panel`, `title-slide`, `two-column-slide`, `timeline-slide`, `steps-slide`, or `agenda-slide`, make sure the app's `resources/css/app.css` includes the package sources so Tailwind can generate the needed classes: ```css @import 'tailwindcss'; @source '../views'; @source '../../vendor/wendelladriel/slidewire/resources/views/**/*.blade.php'; @source '../../vendor/wendelladriel/slidewire/src/**/*.php'; @source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php'; ``` Without those `@source` entries, package components may render with missing styles even though the Blade markup is correct. ## Use the right SlideWire components ### Core components - `<x-slidewire::deck>`: presentation wrapper for deck-wide defaults. - `<x-slidewire::slide>`: a single slide, with support for metadata like `theme`, `transition`, `transition-speed`, `auto-slide`, `auto-animate`, and background attributes. - `<x-slidewire::vertical-slide>`: groups slides into a vertical stack inside one horizontal column. - `<x-slidewire::fragment>`: reveals content progressively. - `<x-slidewire::panel>`: reusable modern surface for grouped content, supporting variants like `default`, `elevated`, `outlined`, and `glass`. - `<x-slidewire::title-slide>`: opinionated opening slide for titles, subtitles, overlines, and presenter metadata. - `<x-slidewire::two-column-slide>`: responsive split layout for explanation-plus-supporting-content slides. - `<x-slidewire::media-split-slide>`: media-first split layout with left/right positioning, ratio controls, and optional framed or panel-style media treatment. - `<x-slidewire::timeline-slide>` and `<x-slidewire::timeline-item>`: structured milestone and roadmap layouts. - `<x-slidewire::steps-slide>` and `<x-slidewire::step-item>`: process and rollout layouts with optional auto-numbering. - `<x-slidewire::agenda-slide>` and `<x-slidewire::agenda-item>`: section overview and agenda layouts. - `<x-slidewire::text>`: semantic text wrapper with optional orientation, configured `font` overrides, and component-level animation hooks. - `<x-slidewire::image>`: native image wrapper with component-level animation hooks. - `<x-slidewire::markdown>`: renders markdown and highlighted code fences. - `<x-slidewire::code>`: renders highlighted code blocks directly. - `<x-slidewire::diagram>`: renders Mermaid diagrams. ### When to use each content component - Use `panel` when content needs a polished surface without rebuilding the same rounded, theme-aware wrapper. - Use `title-slide` for opening slides, chapter intros, and title cards. - Use `two-column-slide` for explanatory layouts that pair copy with supporting visuals or code. - Use `media-split-slide` when the visual side should lead the composition and you want built-in media framing controls. - Use `timeline-slide` and `agenda-slide` for milestones, sections, and chapter overviews that need more structure than bullets. - Use `steps-slide` for process, rollout, or tutorial content. - Use `text` for semantic headings, paragraphs, inline text, vertical labels, or reusable animation-ready copy blocks. - Use `image` for native `<img>` output with SlideWire animation metadata. - Use `markdown` for narrative slides, bullets, and mixed prose/code. - Use `code` for tightly controlled code examples or language-specific snippets. - Use `diagram` for flows, architecture, and process explanations. - Use `fragment` for sequential reveals instead of overcrowding one slide. ### Layout component guidance Use the first-party UI components when you want polished slide structure with theme-aware defaults and less repeated Tailwind markup. Recommendations: - Prefer `panel` as the base surface primitive for grouped text, code, media, or mixed content. - Prefer `title-slide` over ad hoc hero markup for opening slides or chapter separators. - Prefer `two-column-slide` for both general split layouts and media-plus-content layouts; frame the visual side with `panel` when needed. - Prefer `media-split-slide` when the deck benefits from a more opinionated media-led split with `plain`, `framed`, or `panel` media presentation. - Prefer `timeline-slide`, `steps-slide`, and `agenda-slide` over plain lists when the sequence or hierarchy matters to the talk. - Still allow local customization through slots and `class` passthrough when a deck needs light visual tailoring. Example: ```blade <x-slidewire::two-column-slide ratio="2:1" gap="xl" align="center"> <x-slot name="left"> <x-slidewire::panel overline="Why SlideWire" title="Presentation-ready layouts" footer="Theme-aware by default" variant="glass" > Build polished decks with reusable surfaces, structured agendas, agenda layouts, and split layouts. </x-slidewire::panel> </x-slot> <x-slot name="right"> <x-slidewire::steps-slide title="Workflow" columns="1" style="cards"> <x-slidewire::step-item title="Plan" description="Choose the right layout for the story." /> <x-slidewire::step-item title="Compose" description="Fill the slots with text, code, or media." /> <x-slidewire::step-item title="Present" description="Keep the deck cohesive across themes." /> </x-slidewire::steps-slide> </x-slot> </x-slidewire::two-column-slide> ``` ### Text component guidance Use `text` when you want semantic text output without hand-writing repeated animation and orientation attributes. Supported attributes: - `type`: `paragraph` (default), `inline`, `heading` - `font`: any configured family from `config('slidewire.fonts')` - `orientation`: `horizontal` (default), `vertical` - `animation` - `animation-speed` - `class` and any other valid HTML attributes for the rendered tag Examples: ```blade <x-slidewire::text type="heading" class="text-5xl font-semibold tracking-tight"> Product Launch </x-slidewire::text> ``` ```blade <x-slidewire::text type="heading" font="Inter" orientation="vertical" animation="slide-up" animation-speed="slow" class="text-4xl" > Launch Day </x-slidewire::text> ``` Recommendations: - Prefer `heading` for prominent slide titles when `h2` semantics make sense. - Prefer `inline` for short labels embedded in richer layouts. - Use `font` for one-off typography changes that should stay within configured presentation fonts. - Use `orientation="vertical"` for side labels or editorial layouts, not long paragraphs. - Fall back to raw HTML when you need fully custom markup. ### Image component guidance Use `image` when you want a normal `<img>` element with the same animation contract as other SlideWire content components. Supported attributes: - all standard image attributes like `src`, `alt`, `class`, `width`, `height`, `loading`, `decoding`, and `fetchpriority` - `animation` - `animation-speed` Example: ```blade <x-slidewire::image src="/images/product-shot.png" alt="Product shot" class="w-72 rounded-2xl shadow-2xl" loading="lazy" animation="pop" animation-speed="default" /> ``` Recommendations: - Always provide meaningful `alt` text unless the image is purely decorative. - Keep sizing intentional with Tailwind classes or width/height attributes. - Use native image attributes directly instead of expecting PHP-side prop mapping. ## Structure slides for presentation flow ### Horizontal and vertical navigation Use regular `<x-slidewire::slide>` elements for left/right progression. Use `<x-slidewire::vertical-slide>` when one topic needs a vertical drill-down: ```blade <x-slidewire::deck> <x-slidewire::slide> <h2>Overview</h2> </x-slidewire::slide> <x-slidewire::vertical-slide> <x-slidewire::slide> <h2>Detail: Top</h2> </x-slidewire::slide> <x-slidewire::slide> <h2>Detail: Bottom</h2> </x-slidewire::slide> </x-slidewire::vertical-slide> </x-slidewire::deck> ``` Behavior to preserve when editing decks: - Left/right moves between horizontal columns. - Up/down moves within a vertical stack. - Space advances linearly through the presentation. - Hash deep links use `#/slide/N` or `#/slide/H/V`. ## Prefer deck defaults, then override intentionally SlideWire resolves runtime settings in this order: ```text slide attribute -> deck attribute -> config('slidewire.slides') ``` Use deck-level attributes for shared presentation behavior: ```blade <x-slidewire::deck theme="black" transition="fade" auto-slide="3000"> <x-slidewire::slide> <h2>Inherits deck defaults</h2> </x-slidewire::slide> <x-slidewire::slide theme="white" transition="zoom"> <h2>Overrides intentionally</h2> </x-slidewire::slide> </x-slidewire::deck> ``` Common deck-level controls: - `theme` - `transition` - `transition-speed` - `transition-duration` - `auto-slide` - `auto-slide-pause-on-interaction` - `show-controls` - `show-progress` - `show-fullscreen-button` - `keyboard` - `touch` - `highlight-theme` ## Make decks visually strong SlideWire is designed to work well with Tailwind and theme presets. ### Theme guidance Built-in themes: - `default` - `black` - `white` - `aurora` - `sunset` - `neon` - `solarized` Use a theme when you want presentation-wide visual consistency. Define custom themes in `config/slidewire.php` with `ThemeConfig` and `ThemeFont` when the deck needs a distinct branded look. ### Background guidance - Use Tailwind classes for solid and gradient backgrounds. - Use slide metadata for image or video backgrounds. - Keep foreground text contrast high against the chosen background. Examples: ```blade <x-slidewire::slide class="bg-gradient-to-br from-blue-900 to-slate-950 text-slate-50"> <h2>Gradient slide</h2> </x-slidewire::slide> ``` ```blade <x-slidewire::slide background-image="https://example.com/bg.jpg" background-size="cover" background-position="center" background-opacity="0.35" > <h2>Image-backed slide</h2> </x-slidewire::slide> ``` ### Typography and font guidance - Theme typography comes from the active `ThemeConfig`. - `text` can override typography per instance with `font` when the family exists in `config('slidewire.fonts')`. - Code highlighting uses `slides.highlight.font` and `slides.highlight.font_size` by default. - Google Fonts configured in `config('slidewire.fonts')` are loaded automatically. - Override code sizing per component with Tailwind classes like `text-sm`, `text-base`, `text-lg`, or `text-xl`. ## Use motion deliberately Supported transition names: - `slide` - `fade` - `zoom` - `convex` - `concave` - `none` Supported transition speeds: - `fast` - `default` - `slow` Recommendations: - Default to one primary transition across the deck. - Use `fade` or `zoom` only when the content change benefits from it. - Use `auto-animate` for before/after or transformation sequences with matching element IDs. - Use `auto-slide` sparingly for timed demos or kiosk-style decks. ### Component-level animations `text` and `image` support element-level entry animations through `animation` and `animation-speed`. Supported names: - `fade`
在 GitHub 查看
这个 SKILL.md 很大,SkillsMP 这里只预览前一段内容。 在 GitHub 查看