Components reference
- Deck
- Slide
- Vertical slide
- Fragment
- Panel
- Title slide
- Two column slide
- Media split slide
- Timeline slide
- Steps slide
- Agenda slide
- Text
- Image
- Markdown
- Code
- Diagram
SlideWire ships with a focused set of Blade components for building presentations. You may compose decks from low-level primitives like slide, fragment, markdown, and code, or reach for first-party layout components when you want modern, theme-aware structure with less repeated markup.
Deck
<x-slidewire::deck> is the presentation wrapper. It defines deck-level defaults and establishes theme and highlight context for nested content.
Common attributes include:
themetransitiontransition-speedtransition-durationauto-slideauto-slide-pause-on-interactionshow-controlsshow-progressshow-fullscreen-buttonhighlight-theme
<x-slidewire::deck theme="aurora" transition="fade" highlight-theme="solarized-light">
...
</x-slidewire::deck>
Use deck attributes for presentation-wide defaults, then override them only where a specific slide needs different behavior.
Slide
<x-slidewire::slide> defines a single slide frame.
Common slide attributes include:
themetransitiontransition-speedtransition-durationauto-slideauto-animateauto-animate-durationauto-animate-easingbackground-imagebackground-videobackground-video-loopbackground-video-mutedbackground-sizebackground-positionbackground-repeatbackground-opacitybackground-transition
<x-slidewire::slide
theme="white"
transition="zoom"
auto-slide="2500"
background-image="https://example.com/bg.jpg"
background-size="cover"
background-position="center"
>
<h2>Feature overview</h2>
</x-slidewire::slide>
Slide attributes become metadata that SlideWire uses at render time for transitions, timing, theme resolution, and background media.
Vertical slide
<x-slidewire::vertical-slide> groups multiple slides into a vertical stack.
<x-slidewire::vertical-slide>
<x-slidewire::slide><h2>Top</h2></x-slidewire::slide>
<x-slidewire::slide><h2>Bottom</h2></x-slidewire::slide>
</x-slidewire::vertical-slide>
Fragment
<x-slidewire::fragment> reveals content progressively before SlideWire advances to the next slide.
<x-slidewire::slide>
<h2>Roadmap</h2>
<x-slidewire::fragment :index="0">
<p>Design system refresh</p>
</x-slidewire::fragment>
<x-slidewire::fragment :index="1">
<p>Public beta</p>
</x-slidewire::fragment>
</x-slidewire::slide>
If explicit indexes are omitted, fragments are still counted and revealed in order.
Panel
<x-slidewire::panel> renders a reusable surface for grouped content such as feature callouts, supporting copy, code snippets, or media.
Supported attributes include:
variant(default,elevated,outlined,glass)titleoverlinefooterpadding(md,lg)tone(default,primary,success,warning,danger)themeclass
<x-slidewire::panel
title="Launch metrics"
overline="Quarterly update"
footer="Next review on Friday"
variant="glass"
tone="primary"
>
<p>Activation is climbing across every launch channel.</p>
</x-slidewire::panel>
Use panels when content should feel intentionally framed, but you still want full control over the slot markup.
Title slide
<x-slidewire::title-slide> provides an opinionated opening layout for deck titles, subtitles, and presenter metadata.
Supported attributes include:
titlesubtitleoverlinespeakereventdatealign(left,center)variant(default,hero,minimal)theme
<x-slidewire::title-slide
title="SlideWire Launch Kit"
subtitle="A first-party UI system for presentation-ready decks"
overline="Product keynote"
speaker="Wendell Adriel"
event="SlideWire Summit"
date="March 2026"
variant="hero"
align="center"
/>
Use the title slide for opening moments, chapter separators, and simple title cards that should stay consistent across themes.
Two column slide
<x-slidewire::two-column-slide> creates a responsive split layout with named left and right slots.
Supported attributes include:
ratio(1:1,2:1,1:2)gap(md,lg,xl)align(start,center,stretch)reverseclass
<x-slidewire::two-column-slide ratio="2:1" gap="xl" align="center">
<x-slot name="left">
<x-slidewire::panel title="Why teams switch" variant="glass">
Blade-first composition with less repeated Tailwind scaffolding.
</x-slidewire::panel>
</x-slot>
<x-slot name="right">
<x-slidewire::code language="php" size="text-sm">
Route::slidewire('/slides/demo', 'demo/showcase');
</x-slidewire::code>
</x-slot>
</x-slidewire::two-column-slide>
Use this component when both sides should stay flexible and composable. It also replaces the older media split pattern: if one side should feel more visual, place the image, diagram, or code inside a panel or framed wrapper within the relevant slot.
Media split slide
<x-slidewire::media-split-slide> provides a more opinionated split layout when one side should lead with media and the other should support it with copy, code, or structured content.
Supported attributes include:
media-position(left,right)ratio(1:1,3:2,2:3)media-style(plain,framed,panel)gap(lg,xl)themeclass
<x-slidewire::media-split-slide media-position="right" ratio="3:2" media-style="panel">
<x-slot name="media">
<x-slidewire::image
src="/images/product-shot.png"
alt="Product dashboard"
class="w-full rounded-2xl"
/>
</x-slot>
<x-slot name="content">
<x-slidewire::panel title="Launch dashboard" overline="Media-led layout" variant="glass">
Lead with the visual, then use the content slot for the explanation, callouts, or supporting actions.
</x-slidewire::panel>
</x-slot>
</x-slidewire::media-split-slide>
Use plain when the media should render without extra framing, framed when it needs a clearer border, and panel when the media side should feel more atmospheric or elevated.
This component works well for screenshots, product reveals, before-and-after comparisons, or any slide where the visual should set the rhythm of the layout.
Timeline slide
<x-slidewire::timeline-slide> and <x-slidewire::timeline-item> help you present milestones, roadmap stages, and chronological stories.
Timeline slide attributes include:
titleorientation(vertical,horizontal)theme
Timeline item attributes include:
titlelabeldescriptionstatus(default,complete,current,upcoming)item-keytheme
<x-slidewire::timeline-slide title="Delivery plan">
<x-slidewire::timeline-item title="Foundation" label="Phase 1" description="Ship shared UI tokens." status="complete" />
<x-slidewire::timeline-item title="Layouts" label="Phase 2" description="Add split, agenda, and narrative slide patterns." status="current" item-key="shipping" />
<x-slidewire::timeline-item title="Polish" label="Phase 3" description="Validate with fixtures and browser smoke tests." status="upcoming" />
</x-slidewire::timeline-slide>
Use the vertical layout by default, then switch to horizontal when you have only a few high-level milestones.
Steps slide
<x-slidewire::steps-slide> and <x-slidewire::step-item> are useful for rollout phases, tutorials, and process walkthroughs.
Steps slide attributes include:
titlecolumns(1,2,3)style(cards,minimal,connected)theme
Step item attributes include:
titlenumberdescriptionstyletheme
<x-slidewire::steps-slide title="Workflow" columns="3" style="cards">
<x-slidewire::step-item title="Plan" description="Choose the right structure for the talk." />
<x-slidewire::step-item title="Compose" description="Fill slots with text, code, or media." />
<x-slidewire::step-item title="Present" description="Keep the story paced with fragments and transitions." />
</x-slidewire::steps-slide>
If number is omitted, SlideWire numbers steps automatically.
Agenda slide
<x-slidewire::agenda-slide> and <x-slidewire::agenda-item> provide structured chapter and agenda layouts.
Agenda slide attributes include:
titlesubtitlestyle(list,cards,timeline)highlighttheme
Agenda item attributes include:
titledescriptionindexactivestyletheme
<x-slidewire::agenda-slide title="Agenda" subtitle="How we will spend the hour" style="cards">
<x-slidewire::agenda-item index="1" title="State of the product" description="What changed since last quarter" style="cards" />
<x-slidewire::agenda-item index="2" title="Launch plan" description="What ships next" style="cards" active />
</x-slidewire::agenda-slide>
Use list for lighter chapter overviews, then move to cards or timeline when the structure should carry more visual weight.
Text
<x-slidewire::text> renders semantic text elements without repeating the same markup and animation metadata by hand.
Supported attributes include:
type(paragraph,inline,heading)font(any configured family fromconfig('slidewire.fonts'))orientation(horizontal,vertical)animationanimation-speed(fast,default,slow)class- any additional HTML attributes that make sense on the rendered element
<x-slidewire::text
type="heading"
font="Inter"
orientation="vertical"
animation="slide-up"
animation-speed="slow"
class="text-4xl font-semibold"
>
Launch Day
</x-slidewire::text>
By default, the text component renders a <p> tag with horizontal layout. type="inline" renders a <span>, while type="heading" renders an <h2>.
Use orientation="vertical" for side labels, editorial layouts, or compact callouts. Use font when you want a one-off typography change that still stays within your configured presentation fonts. For longer prose or more custom markup, you may still prefer plain HTML.
Image
<x-slidewire::image> renders a normal <img> tag and adds the same animation contract used by other SlideWire content components.
Supported attributes include:
- all native image attributes like
src,alt,class,width,height,loading,decoding, andfetchpriority animationanimation-speed(fast,default,slow)
<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"
/>
The image component does not replace the native <img> API. Instead, it forwards standard attributes directly to the rendered element.
Always provide useful alt text unless the image is purely decorative.
Markdown
<x-slidewire::markdown> converts Markdown to HTML and highlights fenced code blocks.
<x-slidewire::markdown size="text-lg">
## Metrics
```php
echo 'highlighted';
```
Regular Markdown content also works.
</x-slidewire::markdown>
Fenced Blade examples are preserved safely, so component syntax inside code fences is not compiled as live Blade.
This makes the markdown component a good fit for speaker notes, text-heavy slides, and code walkthroughs.
Code
<x-slidewire::code> renders a single highlighted code block.
<x-slidewire::code language="php" theme="solarized-light" font="FiraCode" size="text-lg">
Route::slidewire('/slides/demo', 'demo/showcase');
</x-slidewire::code>
When no explicit theme is provided, SlideWire resolves the highlight theme using this order:
- explicit component or deck highlight theme
- active presentation theme
- configured default highlight theme
Diagram
<x-slidewire::diagram> renders Mermaid source that is processed in the browser.
<x-slidewire::diagram theme="dark">
flowchart LR
A[Start] --> B[Ship It]
</x-slidewire::diagram>
SlideWire marks diagram blocks for runtime rendering and lazy-loads Mermaid in the presentation view.
Use this component when you want architecture diagrams, flows, or sequence charts without leaving the presentation file.