{"version":3,"sources":["../../src/docs/DocsMobileSidebar.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\nimport Link from 'next/link';\nimport { Menu, X, ChevronRight } from 'lucide-react';\nimport type { DocGroup } from './types';\n\ninterface DocsMobileSidebarProps {\n  groups: DocGroup[];\n  currentHref: string;\n}\n\n/**\n * Mobile-only drawer triggered by the hamburger icon in the docs\n * header. Closes when a link is clicked or the overlay is tapped.\n * Item styling mirrors the dashboard sidebar.\n */\nexport function DocsMobileSidebar({ groups, currentHref }: DocsMobileSidebarProps) {\n  const [open, setOpen] = useState(false);\n  const initialExpanded = () => {\n    const set = new Set<string>();\n    for (const g of groups) {\n      if (g.items.some((i) => i.href === currentHref)) set.add(g.heading);\n    }\n    return set;\n  };\n  const [expanded, setExpanded] = useState<Set<string>>(initialExpanded);\n  const toggle = (heading: string) =>\n    setExpanded((prev) => {\n      const next = new Set(prev);\n      if (next.has(heading)) next.delete(heading);\n      else next.add(heading);\n      return next;\n    });\n\n  return (\n    <>\n      <button\n        type=\"button\"\n        onClick={() => setOpen(true)}\n        aria-label=\"Open navigation\"\n        className=\"inline-flex items-center justify-center rounded-md border border-border bg-background w-9 h-9 hover:bg-muted\"\n      >\n        <Menu className=\"h-4 w-4\" />\n      </button>\n\n      {open && (\n        <div\n          className=\"fixed inset-0 z-50 bg-foreground/40\"\n          onClick={() => setOpen(false)}\n          role=\"presentation\"\n        >\n          <aside\n            className=\"fixed top-0 right-0 h-full w-[85vw] max-w-[320px] overflow-y-auto bg-background border-l border-border shadow-xl\"\n            onClick={(e) => e.stopPropagation()}\n            role=\"dialog\"\n            aria-label=\"Documentation navigation\"\n          >\n            <div className=\"sticky top-0 flex items-center justify-between border-b border-border bg-background px-4 py-3\">\n              <span className=\"text-sm font-semibold\">Documentation</span>\n              <button\n                type=\"button\"\n                onClick={() => setOpen(false)}\n                aria-label=\"Close navigation\"\n                className=\"inline-flex items-center justify-center rounded-md w-8 h-8 hover:bg-muted\"\n              >\n                <X className=\"h-4 w-4\" />\n              </button>\n            </div>\n            <nav className=\"grid gap-4 px-4 py-4 pb-12\" aria-label=\"Documentation\">\n              {groups.map((g) => {\n                const isOpen = expanded.has(g.heading);\n                return (\n                  <div key={g.heading}>\n                    <button\n                      type=\"button\"\n                      onClick={() => toggle(g.heading)}\n                      className=\"flex w-full items-center justify-between px-2.5 pb-1.5 text-left\"\n                      aria-expanded={isOpen}\n                    >\n                      <span className=\"font-mono text-[10.5px] uppercase tracking-[0.12em] text-muted-foreground/70 font-semibold\">\n                        {g.heading}\n                      </span>\n                      <ChevronRight\n                        className={\n                          'h-3 w-3 text-muted-foreground/70 transition-transform ' +\n                          (isOpen ? 'rotate-90' : '')\n                        }\n                        aria-hidden\n                      />\n                    </button>\n                    {isOpen && (\n                      <ul className=\"grid gap-px\">\n                        {g.items.map((item) => {\n                          const active = item.href === currentHref;\n                          return (\n                            <li key={item.href}>\n                              <Link\n                                href={item.href}\n                                onClick={() => setOpen(false)}\n                                className={\n                                  'flex items-center gap-2.5 rounded-lg py-[7px] px-2.5 text-[13.5px] transition-colors ' +\n                                  (active\n                                    ? 'bg-primary/10 text-primary font-semibold'\n                                    : 'text-muted-foreground hover:text-foreground hover:bg-muted/60')\n                                }\n                              >\n                                {item.title}\n                              </Link>\n                            </li>\n                          );\n                        })}\n                      </ul>\n                    )}\n                  </div>\n                );\n              })}\n            </nav>\n          </aside>\n        </div>\n      )}\n    </>\n  );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAoCI;AAlCJ,mBAAyB;AACzB,kBAAiB;AACjB,0BAAsC;AAa/B,SAAS,kBAAkB,EAAE,QAAQ,YAAY,GAA2B;AACjF,QAAM,CAAC,MAAM,OAAO,QAAI,uBAAS,KAAK;AACtC,QAAM,kBAAkB,MAAM;AAC5B,UAAM,MAAM,oBAAI,IAAY;AAC5B,eAAW,KAAK,QAAQ;AACtB,UAAI,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE,SAAS,WAAW,EAAG,KAAI,IAAI,EAAE,OAAO;AAAA,IACpE;AACA,WAAO;AAAA,EACT;AACA,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAsB,eAAe;AACrE,QAAM,SAAS,CAAC,YACd,YAAY,CAAC,SAAS;AACpB,UAAM,OAAO,IAAI,IAAI,IAAI;AACzB,QAAI,KAAK,IAAI,OAAO,EAAG,MAAK,OAAO,OAAO;AAAA,QACrC,MAAK,IAAI,OAAO;AACrB,WAAO;AAAA,EACT,CAAC;AAEH,SACE,4EACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAS,MAAM,QAAQ,IAAI;AAAA,QAC3B,cAAW;AAAA,QACX,WAAU;AAAA,QAEV,sDAAC,4BAAK,WAAU,WAAU;AAAA;AAAA,IAC5B;AAAA,IAEC,QACC;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,SAAS,MAAM,QAAQ,KAAK;AAAA,QAC5B,MAAK;AAAA,QAEL;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA,YAClC,MAAK;AAAA,YACL,cAAW;AAAA,YAEX;AAAA,2DAAC,SAAI,WAAU,iGACb;AAAA,4DAAC,UAAK,WAAU,yBAAwB,2BAAa;AAAA,gBACrD;AAAA,kBAAC;AAAA;AAAA,oBACC,MAAK;AAAA,oBACL,SAAS,MAAM,QAAQ,KAAK;AAAA,oBAC5B,cAAW;AAAA,oBACX,WAAU;AAAA,oBAEV,sDAAC,yBAAE,WAAU,WAAU;AAAA;AAAA,gBACzB;AAAA,iBACF;AAAA,cACA,4CAAC,SAAI,WAAU,8BAA6B,cAAW,iBACpD,iBAAO,IAAI,CAAC,MAAM;AACjB,sBAAM,SAAS,SAAS,IAAI,EAAE,OAAO;AACrC,uBACE,6CAAC,SACC;AAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,MAAK;AAAA,sBACL,SAAS,MAAM,OAAO,EAAE,OAAO;AAAA,sBAC/B,WAAU;AAAA,sBACV,iBAAe;AAAA,sBAEf;AAAA,oEAAC,UAAK,WAAU,8FACb,YAAE,SACL;AAAA,wBACA;AAAA,0BAAC;AAAA;AAAA,4BACC,WACE,4DACC,SAAS,cAAc;AAAA,4BAE1B,eAAW;AAAA;AAAA,wBACb;AAAA;AAAA;AAAA,kBACF;AAAA,kBACC,UACC,4CAAC,QAAG,WAAU,eACX,YAAE,MAAM,IAAI,CAAC,SAAS;AACrB,0BAAM,SAAS,KAAK,SAAS;AAC7B,2BACE,4CAAC,QACC;AAAA,sBAAC,YAAAA;AAAA,sBAAA;AAAA,wBACC,MAAM,KAAK;AAAA,wBACX,SAAS,MAAM,QAAQ,KAAK;AAAA,wBAC5B,WACE,2FACC,SACG,6CACA;AAAA,wBAGL,eAAK;AAAA;AAAA,oBACR,KAZO,KAAK,IAad;AAAA,kBAEJ,CAAC,GACH;AAAA,qBAvCM,EAAE,OAyCZ;AAAA,cAEJ,CAAC,GACH;AAAA;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,KAEJ;AAEJ;","names":["Link"]}