Menu

Change language

GitHub repo

Feature Interactive Tabs

blockmarketing

Master-detail architectural feature workbench with interactive source snippets, copy action, telemetry stats, and verified technical checks.

Installation

$npx shadcn-svelte@latest add https://uipkge.dev/r/svelte/feature-interactive-tabs.json
Manifest:https://uipkge.dev/r/svelte/feature-interactive-tabs.jsonInstalls to:src/lib/components/blocks/feature-interactive-tabs/

Variants

Loading interactive previews…

npm dependencies

Includes

Files installed (1)

  • src/lib/components/blocks/feature-interactive-tabs/FeatureInteractiveTabs.svelte11 kB
    <script lang="ts" module>
      import type { Component } from 'svelte'
    
      export interface FeatureTab {
        id: string
        title: string
        subtitle: string
        icon: Component
        tag: string
        headline: string
        description: string
        codeSnippet: string
        stats: { label: string; value: string }[]
        checks: string[]
      }
    </script>
    
    <script lang="ts">
      import { Activity, Check, CheckCircle2, Code2, Copy, LayoutGrid, Terminal, Zap } from '@lucide/svelte'
      import { Badge } from '$lib/components/ui/badge'
      import { Card } from '$lib/components/ui/card'
    
      const tabs: FeatureTab[] = [
        {
          id: 'unbundled',
          title: 'Zero-Package Registry',
          subtitle: 'Direct source ownership',
          icon: Code2,
          tag: 'No Node Modules Bloat',
          headline: 'You own 100% of the source code. No semver breaking changes.',
          description:
            'Unlike monolithic component packages that lock you into inflexible dependency trees, UIPKGE copies pristine, tree-shakeable source files directly into your project repository.',
          codeSnippet: `// Terminal command:\nnpx shadcn-svelte@latest add https://uipkge.dev/r/svelte/hero-developer-terminal.json\n\n// Output in your repo:\n// \u2714 Placed components/blocks/HeroDeveloperTerminal.svelte\n// \u2714 Installed zero runtime wrapper overhead`,
          stats: [
            { label: 'Bundle Size Overhead', value: '0.0 kB' },
            { label: 'Semver Breakage Risk', value: '0%' },
            { label: 'Customization Freedom', value: '100%' },
          ],
          checks: [
            'Raw Svelte runes files living right in your /components directory',
            'Edit Tailwind tokens, props, or behavior anytime without forking',
            'Never wait on upstream maintainers for critical hotfixes or styling tweaks',
          ],
        },
        {
          id: 'parity',
          title: 'Dual-Framework Parity',
          subtitle: 'Synchronized Svelte 5 & React 19',
          icon: LayoutGrid,
          tag: '1:1 Parity',
          headline: 'One design system, identical aesthetics across Svelte and React.',
          description:
            'Whether your engineering organization uses SvelteKit, Vite, Next.js, or Astro, every primitive and block shares identical OKLCH color spaces, CVA variant tokens, and spring transition curves.',
          codeSnippet: `// Svelte 5 runes:\n<Button variant="default" size="sm">Deploy</Button>\n\n// React 19 JSX:\n<Button variant="default" size="sm">Deploy</Button>\n\n// Both generate identical DOM attributes & micro-interactions`,
          stats: [
            { label: 'Token Parity', value: '100.0%' },
            { label: 'Supported Frameworks', value: 'Svelte 5 + React 19' },
            { label: 'Shared CVA Tokens', value: '31 Primitives' },
          ],
          checks: [
            'Hand-rolled runes state (Svelte) and Radix UI (React) accessible engines',
            'Automated CI check verifying cross-framework class string equality',
            'Identical behavior in Svelte and React microfrontends',
          ],
        },
        {
          id: 'telemetry',
          title: 'Interactive Workbenches',
          subtitle: 'Beyond static cards & fluff',
          icon: Activity,
          tag: 'Dense & Functional',
          headline: 'Real-time controls, telemetry, and live interactive state.',
          description:
            'Every UIPKGE marketing block functions as a live interactive workbench with stateful sliders, timeframe toggles, and reactive calculation engines.',
          codeSnippet: `// Composing live reactive telemetry in your blocks:\nlet activeCohort = $state<'enterprise' | 'growth'>('enterprise')\nconst liveThroughput = $derived(activeCohort === 'enterprise' ? '1.2M QPS' : '45k QPS')`,
          stats: [
            { label: 'Interactive Demos', value: '450+ Blocks' },
            { label: 'Keyboard Ergonomics', value: 'WCAG AA' },
            { label: 'Telemetry Visualizers', value: 'Real SVG Sparklines' },
          ],
          checks: [
            'Functional master-detail views and comparative toggles',
            'Integrated mock API testers, terminal sandboxes, and pricing calculators',
            'Zero placeholder text or dummy lorum ipsum shapes',
          ],
        },
        {
          id: 'performance',
          title: 'Sub-Millisecond Speed',
          subtitle: 'OKLCH Tailwind v4 Engine',
          icon: Zap,
          tag: 'Lighthouse 100',
          headline: 'Engineered for zero-latency interactions and pristine Lighthouse scores.',
          description:
            'Built on modern CSS custom properties and lightweight runes primitives, our blocks avoid hefty client-side runtime libraries, keeping your First Contentful Paint blazing fast.',
          codeSnippet: `@theme inline {\n  --color-primary: oklch(0.205 0 0);\n  --color-primary-foreground: oklch(0.985 0 0);\n  --ease-spring: cubic-bezier(0.16, 1, 0.3, 1);\n}`,
          stats: [
            { label: 'Interaction to Next Paint (INP)', value: '< 16ms' },
            { label: 'Lighthouse Score', value: '100 / 100' },
            { label: 'CSS Engine', value: 'Tailwind CSS v4' },
          ],
          checks: [
            'OKLCH native color spaces with automatic light/dark mode adaptation',
            'Hardware-accelerated transforms and calibrated spring physics',
            'Zero runtime JavaScript CSS parsing or CSS-in-JS style injection',
          ],
        },
      ]
    
      let activeTabId = $state<string>('unbundled')
      let copiedCode = $state(false)
    
      const currentTab = $derived(tabs.find((t) => t.id === activeTabId)!)
    
      function copySnippet() {
        navigator.clipboard.writeText(currentTab.codeSnippet)
        copiedCode = true
        setTimeout(() => (copiedCode = false), 2000)
      }
    </script>
    
    <section
      data-slot="feature-interactive-tabs"
      class="bg-background relative overflow-hidden px-4 py-16 sm:px-6 sm:py-24 lg:px-8"
    >
      <!-- Subtle Radial Glow -->
      <div
        class="bg-primary/5 pointer-events-none absolute top-1/2 left-1/2 -z-10 h-80 w-full max-w-5xl -translate-x-1/2 -translate-y-1/2 rounded-full blur-xl"
      ></div>
    
      <div class="mx-auto max-w-7xl space-y-12">
        <!-- Section Header -->
        <div class="mx-auto max-w-3xl space-y-4 text-center">
          <Badge variant="secondary" class="gap-1.5 px-3 py-1 font-mono text-xs shadow-xs">
            <LayoutGrid class="text-primary size-3.5" />
            Architecture Differentiation
          </Badge>
          <h2 class="text-foreground text-3xl font-bold tracking-tight sm:text-4xl">
            Why engineering teams choose UIPKGE.
          </h2>
          <p class="text-muted-foreground text-base">
            Explore the architectural pillars behind our unbundled component registry.
          </p>
        </div>
    
        <!-- Feature Interactive Tabs Workbench -->
        <div class="grid grid-cols-1 items-start gap-6 lg:grid-cols-12">
          <!-- Left Column: Master Feature Navigation Rail (4 Cols) -->
          <div class="flex flex-col gap-2.5 lg:col-span-4">
            {#each tabs as tab (tab.id)}
              {@const Icon = tab.icon}
              <button
                type="button"
                class="group relative overflow-hidden rounded-2xl border p-4 text-left transition-[colors,box-shadow,transform] duration-150 active:scale-[0.98] {activeTabId ===
                tab.id
                  ? 'border-primary/80 bg-card ring-primary/20 shadow-sm ring-1'
                  : 'border-border bg-card/60 hover:border-border hover:bg-card'}"
                onclick={() => (activeTabId = tab.id)}
              >
                <div class="flex items-start gap-3.5">
                  <div
                    class="flex size-9 shrink-0 items-center justify-center rounded-lg font-mono transition-colors {activeTabId ===
                    tab.id
                      ? 'bg-primary text-primary-foreground font-bold shadow-xs'
                      : 'bg-muted text-muted-foreground group-hover:text-foreground'}"
                  >
                    <Icon class="size-4" />
                  </div>
    
                  <div class="min-w-0 space-y-0.5">
                    <div class="flex items-center justify-between gap-2">
                      <h3 class="text-foreground truncate font-mono text-xs font-bold">{tab.title}</h3>
                      <span
                        class="size-1.5 shrink-0 rounded-full {activeTabId === tab.id
                          ? 'bg-primary animate-pulse'
                          : 'bg-transparent'}"
                      ></span>
                    </div>
                    <p class="text-muted-foreground truncate text-xs">{tab.subtitle}</p>
                  </div>
                </div>
              </button>
            {/each}
          </div>
    
          <!-- Right Column: Interactive Detail Sandbox Panel (8 Cols) -->
          <Card class="border-border bg-card/95 space-y-6 rounded-2xl p-6 text-left shadow-sm sm:p-8 lg:col-span-8">
            <!-- Detail Header -->
            <div class="border-border/80 space-y-3 border-b pb-6">
              <div class="flex flex-wrap items-center justify-between gap-2">
                <Badge variant="outline" class="text-primary bg-primary/5 border-primary/20 font-mono text-xs">
                  {currentTab.tag}
                </Badge>
                <span class="text-muted-foreground font-mono text-xs">Architectural Specification</span>
              </div>
              <h3 class="text-foreground text-xl font-bold tracking-tight sm:text-2xl">
                {currentTab.headline}
              </h3>
              <p class="text-muted-foreground text-xs leading-relaxed sm:text-sm">
                {currentTab.description}
              </p>
            </div>
    
            <!-- Code Snippet Sandbox Preview -->
            <div class="space-y-2">
              <div class="text-muted-foreground flex items-center justify-between font-mono text-xs">
                <span class="flex items-center gap-1.5">
                  <Terminal class="text-primary size-3.5" /> Source Implementation
                </span>
                <button type="button" class="text-primary flex items-center gap-1 hover:underline" onclick={copySnippet}>
                  {#if copiedCode}
                    <Check class="text-success size-3" />
                  {:else}
                    <Copy class="size-3" />
                  {/if}
                  <span>{copiedCode ? 'Copied' : 'Copy Snippet'}</span>
                </button>
              </div>
              <pre
                class="border-border bg-muted/40 text-foreground overflow-x-auto rounded-xl border p-4 font-mono text-xs leading-relaxed"><code>{currentTab.codeSnippet}</code></pre>
            </div>
    
            <!-- 3-Pillar Telemetry Metrics Bar -->
            <div class="grid grid-cols-1 gap-3 pt-2 sm:grid-cols-3">
              {#each currentTab.stats as st, idx (idx)}
                <div class="border-border bg-background/50 space-y-0.5 rounded-xl border p-3.5">
                  <p class="text-muted-foreground font-mono text-xs tracking-wider uppercase">{st.label}</p>
                  <p class="text-foreground font-mono text-base font-bold">{st.value}</p>
                </div>
              {/each}
            </div>
    
            <!-- Technical Checkmarks List -->
            <div class="border-border/60 space-y-2 border-t pt-2">
              <p class="text-muted-foreground font-mono text-xs tracking-wider uppercase">Verified Enforcements</p>
              <ul class="space-y-2">
                {#each currentTab.checks as chk, idx (idx)}
                  <li class="text-foreground/90 flex items-start gap-2 text-xs">
                    <CheckCircle2 class="text-success mt-0.5 size-4 shrink-0" />
                    <span>{chk}</span>
                  </li>
                {/each}
              </ul>
            </div>
          </Card>
        </div>
      </div>
    </section>
    

Raw manifest:https://uipkge.dev/r/svelte/feature-interactive-tabs.json