{
  "$schema": "https://uipkge.dev/schema/registry-item.json",
  "name": "features-01",
  "title": "Tabbed Feature Matrix",
  "type": "registry:block",
  "description": "Interactive enterprise product feature workbench with live module simulations, dynamic directory filters, real-time payroll calculations, continuous SOC 2 compliance verification, and TypeScript API code viewer.",
  "categories": [
    "marketing"
  ],
  "files": [
    {
      "path": "packages/elements-lit/src/blocks/features-01/features-01.ts",
      "content": "import { LitElement, css, html, nothing } from 'lit'\nimport {\n  ArrowRight,\n  BarChart3,\n  Bot,\n  Check,\n  ChevronRight,\n  Code2,\n  Copy,\n  Layers,\n  ShieldCheck,\n  Users,\n  Wallet,\n  type IconNode,\n} from 'lucide'\nimport { cn } from '../../lib/utils'\nimport { tailwind } from '../../lib/styles'\nimport { ThemeController } from '../../lib/theme'\nimport { icon } from '../../lib/icon'\n// Side-effect imports: register the composed elements for standalone use\n// (consumers who install only this block still get working primitives).\nimport '../../components/badge/badge'\nimport '../../components/button/button'\nimport { renderApi, renderCompliance, renderCopilot, renderDirectory, renderPayroll } from './simulations'\n\ninterface FeatureModule {\n  id: string\n  title: string\n  category: 'core' | 'dx' | 'security' | 'ai'\n  badge: string\n  description: string\n  icon: IconNode\n  iconName: string\n  metrics: { label: string; value: string; trend: string }[]\n  previewType: 'directory' | 'payroll' | 'performance' | 'compliance' | 'api' | 'copilot'\n}\n\nconst features: FeatureModule[] = [\n  {\n    id: 'directory',\n    title: 'Global Employee Directory',\n    category: 'core',\n    badge: 'Real-time Sync',\n    description:\n      'Single source of truth for global teams, reporting hierarchies, custom attributes, and automated SCIM provisioning.',\n    icon: Users,\n    iconName: 'users',\n    metrics: [\n      { label: 'Sync Latency', value: '<12ms', trend: 'P99 Edge' },\n      { label: 'SCIM Connectors', value: '24+', trend: 'Okta/Google' },\n      { label: 'Export Formats', value: 'JSON/CSV', trend: 'Bi-directional' },\n    ],\n    previewType: 'directory',\n  },\n  {\n    id: 'payroll',\n    title: 'Multi-Currency Global Payroll',\n    category: 'core',\n    badge: 'Automated Tax',\n    description:\n      'Instant payroll calculation across 140+ countries with automated localized tax withholding, statutory benefits, and direct FX routing.',\n    icon: Wallet,\n    iconName: 'wallet',\n    metrics: [\n      { label: 'Supported Currencies', value: '140+', trend: 'Live FX' },\n      { label: 'Settlement Time', value: 'Instant', trend: 'SEPA/FedNow' },\n      { label: 'Tax Accuracy', value: '100%', trend: 'Statutory Verified' },\n    ],\n    previewType: 'payroll',\n  },\n  {\n    id: 'performance',\n    title: 'OKR & Continuous Reviews',\n    category: 'dx',\n    badge: '360 Calibration',\n    description:\n      'Transparent objective tracking, real-time 1:1 syncs, and peer review cycles tied directly to engineering and business milestones.',\n    icon: BarChart3,\n    iconName: 'chart-column',\n    metrics: [\n      { label: 'Cycle Completion', value: '98.4%', trend: '+14% vs avg' },\n      { label: 'Review Latency', value: '2.1 days', trend: '-40% faster' },\n      { label: 'Goal Alignment', value: '94%', trend: 'Company-wide' },\n    ],\n    previewType: 'performance',\n  },\n  {\n    id: 'compliance',\n    title: 'SOC 2 & Continuous Compliance',\n    category: 'security',\n    badge: 'Zero Trust',\n    description:\n      'Continuous automated evidence collection across AWS, GCP, Cloudflare, and GitHub with automated auditor-ready export bundles.',\n    icon: ShieldCheck,\n    iconName: 'shield-check',\n    metrics: [\n      { label: 'Continuous Tests', value: '142 / 142', trend: '100% Pass' },\n      { label: 'Evidence Collection', value: 'Automated', trend: 'Every 5m' },\n      { label: 'Standards', value: 'SOC2 / HIPAA', trend: 'ISO 27001' },\n    ],\n    previewType: 'compliance',\n  },\n  {\n    id: 'api',\n    title: 'REST & GraphQL Developer APIs',\n    category: 'dx',\n    badge: 'Type-Safe SDKs',\n    description:\n      'Fully typed OpenAPI 3.1 & TypeScript SDKs with sub-millisecond edge response times, webhooks, and granular scoped API keys.',\n    icon: Code2,\n    iconName: 'code-2',\n    metrics: [\n      { label: 'API Median Latency', value: '18ms', trend: 'Global Edge' },\n      { label: 'Webhook Delivery', value: '99.98%', trend: 'Automatic Retry' },\n      { label: 'Rate Limit', value: '10k req/s', trend: 'Configurable' },\n    ],\n    previewType: 'api',\n  },\n  {\n    id: 'copilot',\n    title: 'Autonomous People Ops Copilot',\n    category: 'ai',\n    badge: 'Agentic AI',\n    description:\n      'Natural language queries over workforce data, intelligent anomaly detection in compensation bands, and automated policy drafts.',\n    icon: Bot,\n    iconName: 'bot',\n    metrics: [\n      { label: 'Inference Speed', value: '94 tps', trend: 'Claude 3.5' },\n      { label: 'Accuracy Score', value: '99.6%', trend: 'RAG Grounded' },\n      { label: 'Task Automation', value: '78%', trend: 'Self-serve' },\n    ],\n    previewType: 'copilot',\n  },\n]\n\n/**\n * <uip-features-01> — the registry Features01 block as a web component.\n *\n * Class strings are React's Features01 verbatim. React state (useState)\n * becomes @state fields; the copy-label and copilot timeouts are cleared in\n * `disconnectedCallback`. The five live simulations live in\n * `./simulations.ts` (same install unit, shipped together) and read/write\n * the element's public simulation fields. React's `performance` previewType\n * has no simulation branch in the source, so that canvas renders empty here\n * too. Card chrome stays plain divs carrying the registry Card part classes\n * (see the login-01 block).\n */\nexport class UipFeatures01 extends LitElement {\n  static shadowRootOptions = { ...LitElement.shadowRootOptions, delegatesFocus: true }\n  // :host display can't be a utility class (the host has no template of its own).\n  static styles = [tailwind, css`:host { display: block; }`]\n\n  static properties = {\n    activeCategory: { state: true },\n    selectedFeatureId: { state: true },\n    copied: { state: true },\n    dirQuery: { state: true },\n    dirTeam: { state: true },\n    headcount: { state: true },\n    copilotPrompt: { state: true },\n    copilotExecuting: { state: true },\n    copilotOutput: { state: true },\n  }\n\n  private activeCategory: 'all' | 'core' | 'dx' | 'security' | 'ai' = 'all'\n  private selectedFeatureId = 'directory'\n  private copied = false\n  /** Simulation state (read by ./simulations.ts). */\n  dirQuery = ''\n  dirTeam = 'All Roles'\n  headcount = 42\n  copilotPrompt = 'Generate quarterly SOC2 compliance audit report with automated PR proof attachments.'\n  copilotExecuting = false\n  copilotOutput =\n    'Audit summary generated. 14 evidence logs compiled across 4 AWS & Cloudflare regions. Zero critical findings.'\n  private copyTimer?: number\n  private copilotTimer?: number\n\n  constructor() {\n    super()\n    new ThemeController(this)\n  }\n\n  connectedCallback() {\n    super.connectedCallback()\n    this.setAttribute('data-uipkge', '')\n    this.setAttribute('data-slot', 'features-01')\n  }\n\n  disconnectedCallback() {\n    super.disconnectedCallback()\n    if (this.copyTimer) window.clearTimeout(this.copyTimer)\n    if (this.copilotTimer) window.clearTimeout(this.copilotTimer)\n  }\n\n  private get filteredFeatures() {\n    if (this.activeCategory === 'all') return features\n    return features.filter((f) => f.category === this.activeCategory)\n  }\n\n  /** Simulation action (called by ./simulations.ts). */\n  triggerCopilot() {\n    this.copilotExecuting = true\n    this.copilotOutput = 'Analyzing real-time event bus and compiling cryptographically signed evidence bundle...'\n    if (this.copilotTimer) window.clearTimeout(this.copilotTimer)\n    this.copilotTimer = window.setTimeout(() => {\n      this.copilotOutput =\n        '✓ SOC 2 Type II bundle validated. 142 controls verified at 100% adherence. Ready for auditor download.'\n      this.copilotExecuting = false\n    }, 900)\n  }\n\n  private copySnippet(text: string) {\n    try {\n      navigator.clipboard?.writeText(text)?.catch(() => {})\n    } catch {\n      // Clipboard unavailable (insecure context): still flash the label.\n    }\n    this.copied = true\n    if (this.copyTimer) window.clearTimeout(this.copyTimer)\n    this.copyTimer = window.setTimeout(() => {\n      this.copied = false\n    }, 2000)\n  }\n\n  render() {\n    const activeFeature = features.find((f) => f.id === this.selectedFeatureId) ?? features[0]\n    return html`\n      <section data-slot=\"features-01\" class=\"bg-background border-border relative w-full border-y py-16 lg:py-24\">\n        <div class=\"mx-auto max-w-7xl space-y-12 px-4 sm:px-6 lg:px-8\">\n          <div class=\"flex flex-col gap-6 md:flex-row md:items-end md:justify-between\">\n            <div class=\"max-w-2xl space-y-3\">\n              <div class=\"inline-flex items-center gap-2\">\n                <uip-badge\n                  variant=\"outline\"\n                  class=\"border-primary/30 text-primary bg-primary/5 gap-1.5 px-2.5 py-1 font-mono text-xs tracking-wide uppercase\"\n                >\n                  ${icon(Layers, 'layers', 'size-3.5')} Unified Architecture\n                </uip-badge>\n                <span class=\"text-muted-foreground font-mono text-xs\">v4.2 Enterprise Release</span>\n              </div>\n              <h2 class=\"text-foreground text-3xl font-bold tracking-tight sm:text-4xl\">\n                Engineered for High-Velocity Teams.\n              </h2>\n              <p class=\"text-muted-foreground text-base leading-relaxed sm:text-lg\">\n                Six modular, composable building blocks that directly interconnect without third-party glue code.\n              </p>\n            </div>\n\n            <div class=\"bg-muted/60 border-border flex flex-wrap items-center gap-1.5 rounded-lg border p-1\">\n              ${[\n                { id: 'all', label: 'All Modules' },\n                { id: 'core', label: 'Core Platform' },\n                { id: 'dx', label: 'Developer DX' },\n                { id: 'security', label: 'Security' },\n                { id: 'ai', label: 'Agentic AI' },\n              ].map(\n                (cat) => html`<button\n                  type=\"button\"\n                  class=${cn(\n                    'rounded-md px-3 py-1.5 text-xs font-medium transition-colors',\n                    this.activeCategory === cat.id\n                      ? 'bg-background text-foreground font-semibold shadow-xs'\n                      : 'text-muted-foreground hover:text-foreground',\n                  )}\n                  @click=${() => {\n                    this.activeCategory = cat.id as 'all' | 'core' | 'dx' | 'security' | 'ai'\n                  }}\n                >\n                  ${cat.label}\n                </button>`,\n              )}\n            </div>\n          </div>\n\n          <div class=\"grid grid-cols-1 items-start gap-8 lg:grid-cols-12\">\n            <div class=\"space-y-3 lg:col-span-5\">\n              ${this.filteredFeatures.map((item) => {\n                const isSelected = this.selectedFeatureId === item.id\n                return html`<div\n                  class=${cn(\n                    'group cursor-pointer rounded-xl border p-4 transition-colors duration-150',\n                    isSelected\n                      ? 'bg-card border-primary/40 ring-primary/20 shadow-xs ring-1'\n                      : 'bg-card/40 border-border hover:bg-card/80 hover:border-border/80',\n                  )}\n                  @click=${() => {\n                    this.selectedFeatureId = item.id\n                  }}\n                >\n                  <div class=\"flex items-start justify-between gap-3\">\n                    <div class=\"flex items-center gap-3\">\n                      <div\n                        class=${cn(\n                          'flex size-9 items-center justify-center rounded-lg border transition-colors',\n                          isSelected\n                            ? 'bg-primary text-primary-foreground border-primary'\n                            : 'bg-muted text-muted-foreground border-border group-hover:text-foreground',\n                        )}\n                      >\n                        ${icon(item.icon, item.iconName, 'size-4.5')}\n                      </div>\n                      <div>\n                        <div class=\"flex items-center gap-2\">\n                          <h3 class=\"text-foreground text-sm font-semibold tracking-tight\">${item.title}</h3>\n                          <uip-badge variant=\"secondary\" class=\"px-1.5 py-0 text-xs font-normal\"\n                            >${item.badge}</uip-badge\n                          >\n                        </div>\n                        <p class=\"text-muted-foreground mt-0.5 line-clamp-1 text-xs\">${item.description}</p>\n                      </div>\n                    </div>\n                    ${icon(\n                      ChevronRight,\n                      'chevron-right',\n                      cn(\n                        'text-muted-foreground size-4 shrink-0 transition-transform',\n                        isSelected ? 'text-primary translate-x-0.5' : 'group-hover:translate-x-0.5',\n                      ),\n                    )}\n                  </div>\n\n                  ${isSelected\n                    ? html`<div class=\"border-border/60 mt-4 grid grid-cols-3 gap-2 border-t pt-3\">\n                        ${item.metrics.map(\n                          (m) => html`<div class=\"space-y-0.5\">\n                            <p class=\"text-muted-foreground font-mono text-xs tracking-wider uppercase\">${m.label}</p>\n                            <div class=\"flex items-baseline gap-1\">\n                              <span class=\"text-foreground text-xs font-semibold\">${m.value}</span>\n                              <span class=\"text-success font-mono text-xs\">${m.trend}</span>\n                            </div>\n                          </div>`,\n                        )}\n                      </div>`\n                    : nothing}\n                </div>`\n              })}\n            </div>\n\n            <div class=\"lg:col-span-7\">\n              <div\n                data-uipkge=\"\"\n                data-slot=\"card\"\n                class=\"bg-card text-card-foreground rounded-xl border border-border shadow-sm transition-colors duration-150 overflow-hidden sticky top-6\"\n              >\n                <div\n                  data-uipkge=\"\"\n                  data-slot=\"card-header\"\n                  class=\"grid auto-rows-min grid-cols-[minmax(0,1fr)] grid-rows-[auto_auto] items-start gap-1.5 p-6 has-data-[slot=card-action]:grid-cols-[minmax(0,1fr)_auto] border-border bg-muted/20 flex-row items-center justify-between space-y-0 border-b px-5 py-3.5\"\n                >\n                  <div class=\"flex items-center gap-2.5\">\n                    <div class=\"bg-success flex size-2 animate-pulse rounded-full\"></div>\n                    <span class=\"text-muted-foreground font-mono text-xs tracking-wider uppercase\">\n                      Interactive Simulation\n                    </span>\n                    <div\n                      data-uipkge=\"\"\n                      data-slot=\"separator\"\n                      data-orientation=\"vertical\"\n                      role=\"none\"\n                      class=\"bg-border shrink-0 w-px h-3.5\"\n                    ></div>\n                    <span class=\"text-foreground text-xs font-semibold\">${activeFeature.title}</span>\n                  </div>\n                  <div class=\"flex items-center gap-2\">\n                    <uip-button\n                      variant=\"outline\"\n                      size=\"sm\"\n                      class=\"h-7 gap-1.5 px-2.5 font-mono text-xs\"\n                      @click=${() => this.copySnippet(JSON.stringify(activeFeature, null, 2))}\n                    >\n                      ${this.copied ? icon(Check, 'check', 'text-success size-3') : icon(Copy, 'copy', 'size-3')}\n                      <span>${this.copied ? 'Copied' : 'Schema JSON'}</span>\n                    </uip-button>\n                  </div>\n                </div>\n\n                <div data-uipkge=\"\" data-slot=\"card-content\" class=\"space-y-6 p-6 pt-0\">\n                  ${activeFeature.previewType === 'directory' ? renderDirectory(this) : nothing}\n                  ${activeFeature.previewType === 'payroll' ? renderPayroll(this) : nothing}\n                  ${activeFeature.previewType === 'compliance' ? renderCompliance() : nothing}\n                  ${activeFeature.previewType === 'api' ? renderApi() : nothing}\n                  ${activeFeature.previewType === 'copilot' ? renderCopilot(this) : nothing}\n                </div>\n\n                <div\n                  data-uipkge=\"\"\n                  data-slot=\"card-footer\"\n                  class=\"flex items-center border-t border-border bg-muted/10 px-5 py-3 text-xs\"\n                >\n                  <span class=\"text-muted-foreground font-mono\">\n                    Architecture SLA: 99.99% Multi-region Active-Active\n                  </span>\n                  <uip-button\n                    variant=\"link\"\n                    size=\"sm\"\n                    class=\"text-primary h-auto gap-1 p-0 text-xs [&::part(base)]:h-auto [&::part(base)]:gap-1 [&::part(base)]:p-0 [&::part(base)]:text-xs\"\n                  >\n                    Explore Full Documentation ${icon(ArrowRight, 'arrow-right', 'size-3.5')}\n                  </uip-button>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </section>\n    `\n  }\n}\n\ncustomElements.get('uip-features-01') || customElements.define('uip-features-01', UipFeatures01)\n\ndeclare global {\n  interface HTMLElementTagNameMap {\n    'uip-features-01': UipFeatures01\n  }\n}\n",
      "type": "registry:file",
      "target": "src/uip/blocks/features-01/features-01.ts"
    },
    {
      "path": "packages/elements-lit/src/blocks/features-01/simulations.ts",
      "content": "import { html } from 'lit'\nimport { Bot, CheckCircle2, Globe, RefreshCw, Search } from 'lucide'\nimport { icon } from '../../lib/icon'\nimport type { UipInput } from '../../components/input/input'\nimport type { UipFeatures01 } from './features-01'\n\n// Live simulation canvases for <uip-features-01>. Same install unit (every\n// .ts in this dir ships with the block); class strings are React's\n// DirectorySimulation / PayrollSimulation / ComplianceSimulation /\n// ApiSimulation / CopilotSimulation verbatim.\n\nconst initialEmployees = [\n  {\n    id: '1',\n    name: 'Sophia Chen',\n    role: 'Staff Design Engineer',\n    team: 'Design Systems',\n    status: 'Active',\n    location: 'San Francisco, CA',\n  },\n  {\n    id: '2',\n    name: 'Marcus Vance',\n    role: 'Principal Distributed Systems',\n    team: 'Core Infrastructure',\n    status: 'Active',\n    location: 'London, UK',\n  },\n  {\n    id: '3',\n    name: 'Elena Rostova',\n    role: 'Lead Security Architect',\n    team: 'SecOps',\n    status: 'In Review',\n    location: 'Berlin, DE',\n  },\n  {\n    id: '4',\n    name: 'Devon Taylor',\n    role: 'Head of Product',\n    team: 'Enterprise Suite',\n    status: 'Active',\n    location: 'New York, NY',\n  },\n]\n\nconst controls = [\n  { name: 'TLS 1.3 Strict Transport Security', framework: 'SOC 2 / ISO 27001', passed: true, score: '100%' },\n  { name: 'Continuous Automated Evidence Sync', framework: 'HIPAA Security Rule', passed: true, score: '99.8%' },\n  { name: 'Hardware Security Keys MFA Enforced', framework: 'Zero Trust Baseline', passed: true, score: '100%' },\n  { name: 'Automated Ephemeral DB Credential TTL', framework: 'SOC 2 CC6.1', passed: true, score: '99.4%' },\n]\n\nconst GROSS_AMOUNT = 184000\nconst PAYROLL_TAX_RATE = 18.5\n\nexport function renderDirectory(el: UipFeatures01) {\n  const q = el.dirQuery.toLowerCase()\n  const filteredEmployees = initialEmployees.filter((emp) => {\n    const matchQuery =\n      emp.name.toLowerCase().includes(q) || emp.role.toLowerCase().includes(q)\n    const matchRole = el.dirTeam === 'All Roles' || emp.team === el.dirTeam\n    return matchQuery && matchRole\n  })\n  return html`<div class=\"space-y-4\">\n    <div class=\"flex flex-col items-center justify-between gap-3 sm:flex-row\">\n      <uip-input\n        class=\"w-full sm:w-64 h-8 font-sans text-xs\"\n        .value=${el.dirQuery}\n        @input=${(e: Event) => {\n          el.dirQuery = (e.target as UipInput).value\n        }}\n        placeholder=\"Search 1,420 employees...\"\n      >\n        <span slot=\"prefix\">${icon(Search, 'search', 'size-3.5')}</span>\n      </uip-input>\n      <div class=\"flex items-center gap-2 self-end sm:self-auto\">\n        <span class=\"text-muted-foreground font-mono text-xs\">Filter Team:</span>\n        <select\n          .value=${el.dirTeam}\n          @change=${(e: Event) => {\n            el.dirTeam = (e.target as HTMLSelectElement).value\n          }}\n          class=\"border-input bg-background text-foreground focus:ring-ring h-8 rounded-md border px-2 py-1 text-xs focus:ring-1 focus:outline-none\"\n        >\n          <option value=\"All Roles\">All Teams</option>\n          <option value=\"Design Systems\">Design Systems</option>\n          <option value=\"Core Infrastructure\">Core Infrastructure</option>\n          <option value=\"SecOps\">SecOps</option>\n          <option value=\"Enterprise Suite\">Enterprise Suite</option>\n        </select>\n      </div>\n    </div>\n\n    <div class=\"border-border divide-border bg-background divide-y overflow-hidden rounded-lg border\">\n      ${filteredEmployees.map(\n        (emp) => html`<div class=\"hover:bg-muted/40 flex items-center justify-between p-3 text-xs transition-colors\">\n          <div class=\"flex items-center gap-3\">\n            <div\n              class=\"bg-primary/10 text-primary border-primary/20 flex size-8 items-center justify-center rounded-full border text-xs font-semibold\"\n            >\n              ${emp.name\n                .split(' ')\n                .map((n) => n[0])\n                .join('')}\n            </div>\n            <div>\n              <p class=\"text-foreground font-medium\">${emp.name}</p>\n              <p class=\"text-muted-foreground text-xs\">${emp.role} · ${emp.team}</p>\n            </div>\n          </div>\n          <div class=\"flex items-center gap-3\">\n            <span class=\"text-muted-foreground hidden font-mono text-xs sm:inline-block\">${emp.location}</span>\n            <uip-badge variant=\"outline\" class=\"border-success/20 bg-success/10 text-success font-mono text-xs\">\n              ${emp.status}\n            </uip-badge>\n          </div>\n        </div>`,\n      )}\n    </div>\n  </div>`\n}\n\nexport function renderPayroll(el: UipFeatures01) {\n  const estimatedDeductions = GROSS_AMOUNT * (PAYROLL_TAX_RATE / 100)\n  const netPayout = GROSS_AMOUNT - estimatedDeductions\n  return html`<div class=\"space-y-5\">\n    <div class=\"grid grid-cols-3 gap-3\">\n      <div class=\"border-border bg-muted/20 rounded-lg border p-3\">\n        <p class=\"text-muted-foreground font-mono text-xs\">Gross Run</p>\n        <p class=\"text-foreground mt-1 text-lg font-bold\">$${GROSS_AMOUNT.toLocaleString()}</p>\n      </div>\n      <div class=\"border-border bg-muted/20 rounded-lg border p-3\">\n        <p class=\"text-muted-foreground font-mono text-xs\">Statutory Taxes</p>\n        <p class=\"text-destructive mt-1 text-lg font-bold\">-$${Math.round(estimatedDeductions).toLocaleString()}</p>\n      </div>\n      <div class=\"border-border border-success/20 bg-success/10 rounded-lg border p-3\">\n        <p class=\"text-success font-mono text-xs\">Net Settlement</p>\n        <p class=\"text-success mt-1 text-lg font-bold\">$${Math.round(netPayout).toLocaleString()}</p>\n      </div>\n    </div>\n\n    <div class=\"space-y-2\">\n      <div class=\"flex justify-between text-xs\">\n        <span class=\"text-muted-foreground\">Adjust Headcount (Employees: ${el.headcount})</span>\n        <span class=\"text-foreground font-mono\">$${(GROSS_AMOUNT / el.headcount).toFixed(0)}/mo avg</span>\n      </div>\n      <input\n        .value=${String(el.headcount)}\n        @input=${(e: Event) => {\n          el.headcount = Number((e.target as HTMLInputElement).value)\n        }}\n        type=\"range\"\n        min=\"10\"\n        max=\"150\"\n        class=\"bg-muted accent-primary h-1.5 w-full cursor-pointer appearance-none rounded-lg\"\n      />\n    </div>\n\n    <div class=\"border-border bg-background flex items-center justify-between rounded-lg border p-3 text-xs\">\n      <div class=\"flex items-center gap-2\">\n        ${icon(Globe, 'globe', 'text-primary size-4')}\n        <span>Cross-border SEPA & FedNow Instant Payout Batch: Ready</span>\n      </div>\n      <uip-badge variant=\"secondary\" class=\"font-mono text-xs\">Zero-FX Spread</uip-badge>\n    </div>\n  </div>`\n}\n\nexport function renderCompliance() {\n  return html`<div class=\"space-y-4\">\n    <div class=\"flex items-center justify-between text-xs\">\n      <span class=\"text-foreground font-semibold\">Continuous Automated Compliance Check (142 Controls)</span>\n      <uip-badge variant=\"outline\" class=\"border-success/20 bg-success/10 text-success font-mono text-xs\">\n        Audit Grade A+\n      </uip-badge>\n    </div>\n\n    <div class=\"space-y-2.5\">\n      ${controls.map(\n        (ctrl) => html`<div class=\"border-border bg-background flex items-center justify-between rounded-lg border p-3 text-xs\">\n          <div class=\"flex items-center gap-2.5\">\n            ${icon(CheckCircle2, 'circle-check-big', 'text-success size-4 shrink-0')}\n            <div>\n              <p class=\"text-foreground font-medium\">${ctrl.name}</p>\n              <p class=\"text-muted-foreground font-mono text-xs\">${ctrl.framework}</p>\n            </div>\n          </div>\n          <span class=\"text-success font-mono text-xs font-semibold\">${ctrl.score}</span>\n        </div>`,\n      )}\n    </div>\n  </div>`\n}\n\nexport function renderApi() {\n  return html`<div class=\"space-y-4\">\n    <div class=\"flex items-center justify-between\">\n      <span class=\"text-muted-foreground font-mono text-xs\">\n        curl --request POST https://api.uipkge.dev/v1/workforce\n      </span>\n      <uip-badge variant=\"secondary\" class=\"font-mono text-xs\">TypeScript SDK</uip-badge>\n    </div>\n    <div\n      class=\"overflow-x-auto rounded-lg border border-zinc-800 bg-zinc-950 p-4 font-mono text-xs leading-relaxed text-zinc-100\"\n    >\n      <span class=\"text-muted-foreground\">// Initialize client with zero-latency edge caching</span>\n      <br />\n      <span class=\"text-chart-1\">import</span> { <span class=\"text-chart-2\">UipkgeClient</span> }\n      <span class=\"text-chart-1\">from</span> <span class=\"text-success\">'@uipkge/sdk'</span>\n      <br />\n      <br />\n      <span class=\"text-chart-1\">const</span> client = <span class=\"text-chart-1\">new</span>\n      <span class=\"text-chart-2\">UipkgeClient</span>({ apiKey: process.env.<span class=\"text-info\">UIPKGE_KEY</span> })<br />\n      <br />\n      <span class=\"text-chart-1\">const</span> { data } = <span class=\"text-chart-1\">await</span> client.directory.<span\n        class=\"text-info\"\n        >syncOrgChart</span\n      >({<br />\n      &nbsp;&nbsp;autoProvision: <span class=\"text-success\">true</span>,<br />\n      &nbsp;&nbsp;enforceMfa: <span class=\"text-success\">true</span>,<br />\n      &nbsp;&nbsp;scimSyncInterval: <span class=\"text-warning\">300</span>,<br />\n      })\n    </div>\n  </div>`\n}\n\nexport function renderCopilot(el: UipFeatures01) {\n  return html`<div class=\"space-y-4\">\n    <div class=\"space-y-2\">\n      <label class=\"text-foreground text-xs font-medium\">Natural Language Workforce Assistant</label>\n      <div class=\"flex gap-2\">\n        <uip-input\n          .value=${el.copilotPrompt}\n          @input=${(e: Event) => {\n            el.copilotPrompt = (e.target as UipInput).value\n          }}\n          class=\"h-9 text-xs\"\n          placeholder=\"Ask copilot to run calculations or compliance checks...\"\n        ></uip-input>\n        <uip-button\n          size=\"sm\"\n          class=\"h-9 shrink-0 gap-1.5 px-4 text-xs font-semibold\"\n          ?disabled=${el.copilotExecuting}\n          @click=${() => el.triggerCopilot()}\n        >\n          ${el.copilotExecuting\n            ? icon(RefreshCw, 'refresh-cw', 'size-3.5 animate-spin')\n            : icon(Bot, 'bot', 'size-3.5')}\n          Run\n        </uip-button>\n      </div>\n    </div>\n\n    <div class=\"border-border bg-muted/20 space-y-2 rounded-lg border p-4\">\n      <div class=\"flex items-center justify-between text-xs\">\n        <span class=\"text-muted-foreground font-mono text-xs\">Copilot Real-time Synthesis</span>\n        <uip-badge variant=\"outline\" class=\"font-mono text-xs\">Claude 3.5 Sonnet</uip-badge>\n      </div>\n      <p class=\"text-foreground bg-background border-border rounded-md border p-3 font-mono text-xs leading-relaxed\">\n        ${el.copilotOutput}\n      </p>\n    </div>\n  </div>`\n}\n",
      "type": "registry:file",
      "target": "src/uip/blocks/features-01/simulations.ts"
    }
  ],
  "dependencies": [
    "lit",
    "lucide"
  ],
  "registryDependencies": [
    "https://uipkge.dev/r/lit/badge.json",
    "https://uipkge.dev/r/lit/button.json",
    "https://uipkge.dev/r/lit/input.json",
    "https://uipkge.dev/r/lit/lit-core.json"
  ]
}
