{
  "$schema": "https://uipkge.dev/schema/registry-item.json",
  "name": "prescription-refill-manager",
  "title": "Prescription Refill Manager",
  "type": "registry:block",
  "files": [
    {
      "path": "packages/registry-angular/blocks/prescription-refill-manager/prescription-refill-manager.component.ts",
      "content": "// Pharmacy patient portal: active prescriptions, refill requests, dosage schedules,\n// delivery tracking, and preferred pharmacy details with integrated dialogs.\n// Consolidates the 7 Vue files (manager + table + 5 dialogs + data + types) into one\n// standalone Angular block. Port of the React block 1:1.\nimport { ChangeDetectionStrategy, Component, Input, computed, signal } from '@angular/core'\nimport {\n  AlertCircle,\n  ArrowLeftRight,\n  Building2,\n  Calendar,\n  Check,\n  CheckCircle2,\n  Clock,\n  FileText,\n  Info,\n  LucideAngularModule,\n  MapPin,\n  MoreHorizontal,\n  Phone,\n  Pill,\n  Plus,\n  RefreshCw,\n  Search,\n  ShieldAlert,\n  Store,\n  Truck,\n} from 'lucide-angular'\nimport { cn } from '@/lib/utils'\nimport { UiBadgeComponent } from '@/ui/badge/badge.component'\nimport { UiButtonComponent } from '@/ui/button/button.component'\nimport {\n  UiCardComponent,\n  UiCardContentComponent,\n  UiCardDescriptionComponent,\n  UiCardFooterComponent,\n  UiCardHeaderComponent,\n  UiCardTitleComponent,\n} from '@/ui/card/card.component'\nimport {\n  UiDialogComponent,\n  UiDialogContentComponent,\n  UiDialogDescriptionComponent,\n  UiDialogFooterComponent,\n  UiDialogHeaderComponent,\n  UiDialogTitleComponent,\n} from '@/ui/dialog/dialog.component'\nimport {\n  UiDropdownMenuComponent,\n  UiDropdownMenuContentComponent,\n  UiDropdownMenuItemComponent,\n  UiDropdownMenuLabelComponent,\n  UiDropdownMenuSeparatorComponent,\n  UiDropdownMenuTriggerComponent,\n} from '@/ui/dropdown-menu/dropdown-menu.component'\nimport { UiInputComponent } from '@/ui/input/input.component'\nimport { UiSeparatorComponent } from '@/ui/separator/separator.component'\nimport {\n  UiTableBodyComponent,\n  UiTableCellComponent,\n  UiTableComponent,\n  UiTableHeadComponent,\n  UiTableHeaderComponent,\n  UiTableRowComponent,\n} from '@/ui/table/table.component'\nimport { UiTextareaComponent } from '@/ui/textarea/textarea.component'\n\nexport type PrescriptionStatus = 'ready' | 'needs_auth' | 'in_transit' | 'active'\n\nexport interface Prescription {\n  id: string\n  rxNumber: string\n  name: string\n  genericFor: string\n  dosageForm: string\n  instructions: string\n  refillsRemaining: number\n  totalRefills: number\n  lastFilledDate: string\n  nextDueDate: string\n  isDue: boolean\n  prescriber: { name: string; specialty: string; clinic: string; phone: string }\n  status: PrescriptionStatus\n  daysSupply: number\n  copayEst: number\n  ndc: string\n  packageTracking?: {\n    carrier: string\n    trackingNumber: string\n    status: string\n    estimatedArrival: string\n    steps: { title: string; time: string; done: boolean; current?: boolean }[]\n  }\n}\n\nexport interface Pharmacy {\n  id: string\n  name: string\n  subtitle: string\n  address: string\n  phone: string\n  fax: string\n  hours: string\n  isDriveThru: boolean\n}\n\nexport interface TransferFormState {\n  pharmacyName: string\n  phone: string\n  rxNumber: string\n  medicationName: string\n  notes: string\n}\n\nconst defaultPrescriptions: Prescription[] = [\n  {\n    id: 'rx-1',\n    rxNumber: 'RX-849201',\n    name: 'Metformin HCl 500mg',\n    genericFor: 'Generic for Glucophage',\n    dosageForm: 'Oral Tablet',\n    instructions: 'Take 1 tablet by mouth twice daily with meals',\n    refillsRemaining: 2,\n    totalRefills: 5,\n    lastFilledDate: 'Jul 24, 2026',\n    nextDueDate: 'Aug 24, 2026',\n    isDue: true,\n    prescriber: {\n      name: 'Dr. Emily Vance, MD',\n      specialty: 'Internal Medicine',\n      clinic: 'Wilshire Medical Center',\n      phone: '(310) 555-0142',\n    },\n    status: 'ready',\n    daysSupply: 30,\n    copayEst: 10,\n    ndc: '50090-0819-0',\n  },\n  {\n    id: 'rx-2',\n    rxNumber: 'RX-849202',\n    name: 'Lisinopril 20mg',\n    genericFor: 'Generic for Prinivil / Zestril',\n    dosageForm: 'Oral Tablet',\n    instructions: 'Take 1 tablet by mouth daily in the morning',\n    refillsRemaining: 3,\n    totalRefills: 6,\n    lastFilledDate: 'Jul 10, 2026',\n    nextDueDate: 'Aug 10, 2026',\n    isDue: true,\n    prescriber: {\n      name: 'Dr. Marcus Chen, MD',\n      specialty: 'Cardiology',\n      clinic: 'Pacific Heart & Vascular Institute',\n      phone: '(310) 555-0188',\n    },\n    status: 'ready',\n    daysSupply: 30,\n    copayEst: 10,\n    ndc: '68180-0518-01',\n  },\n  {\n    id: 'rx-3',\n    rxNumber: 'RX-774920',\n    name: 'Albuterol HFA Inhaler',\n    genericFor: 'ProAir HFA 90mcg Inhalation Aerosol',\n    dosageForm: 'Inhalation Aerosol (8.5g canister)',\n    instructions: 'Inhale 2 puffs every 4-6 hours as needed for wheezing or shortness of breath',\n    refillsRemaining: 0,\n    totalRefills: 3,\n    lastFilledDate: 'Jun 15, 2026',\n    nextDueDate: 'Aug 18, 2026',\n    isDue: false,\n    prescriber: {\n      name: 'Dr. Sarah Lin, MD',\n      specialty: 'Pulmonology',\n      clinic: 'Westside Respiratory Clinic',\n      phone: '(310) 555-0195',\n    },\n    status: 'needs_auth',\n    daysSupply: 30,\n    copayEst: 15,\n    ndc: '59310-0579-22',\n  },\n  {\n    id: 'rx-4',\n    rxNumber: 'RX-910384',\n    name: 'Atorvastatin Calcium 40mg',\n    genericFor: 'Generic for Lipitor',\n    dosageForm: 'Oral Tablet',\n    instructions: 'Take 1 tablet by mouth once daily at bedtime',\n    refillsRemaining: 1,\n    totalRefills: 4,\n    lastFilledDate: 'Aug 19, 2026',\n    nextDueDate: 'Nov 19, 2026',\n    isDue: false,\n    prescriber: {\n      name: 'Dr. Marcus Chen, MD',\n      specialty: 'Cardiology',\n      clinic: 'Pacific Heart & Vascular Institute',\n      phone: '(310) 555-0188',\n    },\n    status: 'in_transit',\n    daysSupply: 90,\n    copayEst: 20,\n    ndc: '00071-0157-23',\n    packageTracking: {\n      carrier: 'USPS Priority Rx Express',\n      trackingNumber: '9400 1118 9956 2831 4092 11',\n      status: 'Out for Delivery',\n      estimatedArrival: 'Today by 6:00 PM',\n      steps: [\n        { title: 'Prescription Refill Ordered', time: 'Aug 19, 9:30 AM', done: true },\n        { title: 'Verified & Dispensed by Pharmacist', time: 'Aug 19, 2:15 PM', done: true },\n        { title: 'Shipped from Regional Fulfillment', time: 'Aug 20, 8:00 AM', done: true },\n        { title: 'Out for Delivery', time: 'Aug 21, 8:45 AM', done: true, current: true },\n      ],\n    },\n  },\n]\n\nconst defaultAvailablePharmacies: Pharmacy[] = [\n  {\n    id: 'cvs-4829',\n    name: 'CVS Pharmacy #4829',\n    subtitle: '24-Hour Drive-Thru',\n    address: '4500 Wilshire Blvd, Los Angeles, CA 90010',\n    phone: '(213) 555-0198',\n    fax: '(213) 555-0199',\n    hours: 'Open 24 Hours · Drive-Thru Open',\n    isDriveThru: true,\n  },\n  {\n    id: 'walgreens-1204',\n    name: 'Walgreens Pharmacy #1204',\n    subtitle: 'Full Service Pharmacy',\n    address: '3724 W Olympic Blvd, Los Angeles, CA 90019',\n    phone: '(323) 555-0144',\n    fax: '(323) 555-0145',\n    hours: 'Mon-Sun: 8:00 AM – 10:00 PM',\n    isDriveThru: false,\n  },\n  {\n    id: 'kaiser-sunset',\n    name: 'Kaiser Sunset Medical Center Pharmacy',\n    subtitle: 'Specialty & Mail Hub',\n    address: '4760 Sunset Blvd, Los Angeles, CA 90027',\n    phone: '(323) 555-0177',\n    fax: '(323) 555-0178',\n    hours: 'Mon-Fri: 7:00 AM – 9:00 PM · Sat-Sun: 8:00 AM – 6:00 PM',\n    isDriveThru: true,\n  },\n]\n\ntype StatusFilter = 'all' | 'ready' | 'needs_auth' | 'in_transit'\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.Eager,\n  selector: 'ui-prescription-refill-manager, [ui-prescription-refill-manager]',\n  standalone: true,\n  // React renders the root <div> itself: the host stays out of layout and `class` goes to the root.\n  host: { '[attr.class]': '\"contents\"' },\n  imports: [\n    LucideAngularModule,\n    UiBadgeComponent,\n    UiButtonComponent,\n    UiCardComponent,\n    UiCardContentComponent,\n    UiCardDescriptionComponent,\n    UiCardFooterComponent,\n    UiCardHeaderComponent,\n    UiCardTitleComponent,\n    UiDialogComponent,\n    UiDialogContentComponent,\n    UiDialogDescriptionComponent,\n    UiDialogFooterComponent,\n    UiDialogHeaderComponent,\n    UiDialogTitleComponent,\n    UiDropdownMenuComponent,\n    UiDropdownMenuContentComponent,\n    UiDropdownMenuItemComponent,\n    UiDropdownMenuLabelComponent,\n    UiDropdownMenuSeparatorComponent,\n    UiDropdownMenuTriggerComponent,\n    UiInputComponent,\n    UiSeparatorComponent,\n    UiTableBodyComponent,\n    UiTableCellComponent,\n    UiTableComponent,\n    UiTableHeadComponent,\n    UiTableHeaderComponent,\n    UiTableRowComponent,\n    UiTextareaComponent,\n  ],\n  template: `\n    <div data-slot=\"prescription-refill-manager\" [class]=\"rootClass\">\n      <!-- Header Section -->\n      <header\n        class=\"bg-card border-border flex flex-col justify-between gap-4 rounded-xl border p-5 shadow-xs sm:p-6 md:flex-row md:items-center\"\n      >\n        <div class=\"space-y-1\">\n          <div class=\"flex flex-wrap items-center gap-2.5\">\n            <div class=\"bg-primary/10 text-primary flex size-8 items-center justify-center rounded-lg\">\n              <lucide-icon [img]=\"Pill\" class=\"size-4\" />\n            </div>\n            <h1 class=\"text-foreground text-xl font-bold tracking-tight sm:text-2xl\">Prescriptions & Medications</h1>\n            <span ui-badge variant=\"outline\" class=\"border-primary/20 bg-primary/5 text-primary text-xs font-medium\">\n              Active Care Plan\n            </span>\n          </div>\n          <p class=\"text-muted-foreground text-sm\">\n            Manage recurring refills, dosage schedules, and home delivery tracking.\n          </p>\n        </div>\n\n        <div class=\"flex flex-wrap items-center gap-2.5\">\n          <button ui-button variant=\"outline\" class=\"gap-1.5 text-xs font-medium\" (click)=\"handleOpenTransfer()\">\n            <lucide-icon [img]=\"ArrowLeftRight\" class=\"size-3.5\" />\n            Transfer Prescription\n          </button>\n          <button ui-button variant=\"default\" class=\"gap-1.5 text-xs font-medium shadow-xs\" (click)=\"openRefillModal()\">\n            <lucide-icon [img]=\"Plus\" class=\"size-3.5\" />\n            Request Refill\n          </button>\n        </div>\n      </header>\n\n      <!-- 3 Medication Status Metric Cards -->\n      <section class=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n        <div ui-card class=\"shadow-xs\">\n          <div ui-card-content class=\"flex items-center justify-between p-5\">\n            <div class=\"space-y-1\">\n              <p class=\"text-muted-foreground text-xs font-medium\">Active Prescriptions</p>\n              <div class=\"flex items-baseline gap-2\">\n                <span class=\"text-foreground text-2xl font-bold tracking-tight tabular-nums\">4</span>\n                <span class=\"text-muted-foreground text-xs\">Total on file</span>\n              </div>\n              <p class=\"text-muted-foreground text-xs\">All active maintenance therapies</p>\n            </div>\n            <div class=\"bg-primary/10 text-primary flex size-11 shrink-0 items-center justify-center rounded-xl\">\n              <lucide-icon [img]=\"Pill\" class=\"size-5\" />\n            </div>\n          </div>\n        </div>\n\n        <div ui-card class=\"border-warning/30 bg-warning/5 bg-warning/10 shadow-xs\">\n          <div ui-card-content class=\"flex items-center justify-between p-5\">\n            <div class=\"space-y-1\">\n              <div class=\"flex items-center gap-1.5\">\n                <p class=\"text-warning text-xs font-semibold\">Refills Ready for Order</p>\n                <span\n                  ui-badge\n                  variant=\"outline\"\n                  class=\"border-warning/40 bg-warning/15 text-warning text-xs font-medium\"\n                >\n                  2 Action Needed\n                </span>\n              </div>\n              <div class=\"flex items-baseline gap-2\">\n                <span class=\"text-warning text-warning text-2xl font-bold tracking-tight tabular-nums\">2</span>\n                <span class=\"text-warning/80 text-xs\">Meds eligible now</span>\n              </div>\n              <p class=\"text-warning/80 text-xs\">Metformin HCl & Lisinopril due</p>\n            </div>\n            <div class=\"bg-warning/20 text-warning flex size-11 shrink-0 items-center justify-center rounded-xl\">\n              <lucide-icon [img]=\"AlertCircle\" class=\"size-5\" />\n            </div>\n          </div>\n        </div>\n\n        <div ui-card class=\"shadow-xs sm:col-span-2 lg:col-span-1\">\n          <div ui-card-content class=\"flex items-center justify-between p-5\">\n            <div class=\"space-y-1\">\n              <div class=\"flex items-center gap-1.5\">\n                <p class=\"text-muted-foreground text-xs font-medium\">In Delivery / Transit</p>\n                <span ui-badge variant=\"outline\" class=\"border-info/30 bg-info/10 text-info gap-1 text-xs font-medium\">\n                  <span class=\"bg-info size-1.5 animate-pulse rounded-full\"></span>\n                  1 En Route\n                </span>\n              </div>\n              <div class=\"flex items-baseline gap-2\">\n                <span class=\"text-foreground text-2xl font-bold tracking-tight tabular-nums\">1</span>\n                <span class=\"text-muted-foreground text-xs\">Package tracked</span>\n              </div>\n              <p class=\"text-muted-foreground text-xs\">Atorvastatin 40mg · USPS Priority</p>\n            </div>\n            <div class=\"bg-info/10 text-info flex size-11 shrink-0 items-center justify-center rounded-xl\">\n              <lucide-icon [img]=\"Truck\" class=\"size-5\" />\n            </div>\n          </div>\n        </div>\n      </section>\n\n      <!-- Preferred Pharmacy Card -->\n      <div ui-card class=\"border-border shadow-xs\">\n        <div ui-card-header class=\"pb-3\">\n          <div class=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\">\n            <div class=\"flex items-start gap-3\">\n              <div\n                class=\"bg-muted text-foreground mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg border\"\n              >\n                <lucide-icon [img]=\"Store\" class=\"text-primary size-4\" />\n              </div>\n              <div class=\"space-y-0.5\">\n                <div class=\"flex flex-wrap items-center gap-2\">\n                  <h3 ui-card-title class=\"text-base font-semibold\">\n                    {{ activePharmacy().name }} · {{ activePharmacy().subtitle }}\n                  </h3>\n                  <span ui-badge variant=\"secondary\" class=\"gap-1 text-xs font-medium\">\n                    <lucide-icon [img]=\"CheckCircle2\" class=\"text-success size-3\" />\n                    Preferred Pharmacy\n                  </span>\n                  <span\n                    ui-badge\n                    variant=\"outline\"\n                    class=\"border-success/30 bg-success/10 text-success text-xs font-medium\"\n                  >\n                    {{ activePharmacy().hours }}\n                  </span>\n                </div>\n                <p ui-card-description class=\"text-xs\">\n                  Default location for prescription fulfillment, drive-thru pick-ups, and transfers.\n                </p>\n              </div>\n            </div>\n\n            <button\n              ui-button\n              variant=\"outline\"\n              size=\"sm\"\n              class=\"shrink-0 gap-1.5 text-xs font-medium\"\n              (click)=\"handleChangePharmacy()\"\n            >\n              <lucide-icon [img]=\"Building2\" class=\"size-3.5\" />\n              Change Pharmacy\n            </button>\n          </div>\n        </div>\n        <ui-separator />\n        <div ui-card-content class=\"pt-3\">\n          <div class=\"grid grid-cols-1 gap-3 text-xs sm:grid-cols-3\">\n            <div class=\"text-muted-foreground flex items-center gap-2\">\n              <lucide-icon [img]=\"MapPin\" class=\"text-primary size-3.5 shrink-0\" />\n              <span class=\"text-foreground truncate font-medium\">{{ activePharmacy().address }}</span>\n            </div>\n            <div class=\"text-muted-foreground flex items-center gap-2\">\n              <lucide-icon [img]=\"Phone\" class=\"text-primary size-3.5 shrink-0\" />\n              <span\n                >Phone: <strong class=\"text-foreground font-medium\">{{ activePharmacy().phone }}</strong></span\n              >\n            </div>\n            <div class=\"text-muted-foreground flex items-center gap-2\">\n              <lucide-icon [img]=\"Clock\" class=\"text-primary size-3.5 shrink-0\" />\n              <span>Rx Counter: <strong class=\"text-foreground font-medium\">Ready in 2 hrs</strong></span>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <!-- Prescriptions List Table Section -->\n      <div ui-card class=\"border-border shadow-xs\">\n        <div ui-card-header class=\"pb-3\">\n          <div class=\"flex flex-col gap-4 md:flex-row md:items-center md:justify-between\">\n            <div>\n              <h3 ui-card-title class=\"text-lg font-bold\">\n                Active Prescriptions ({{ filteredPrescriptions().length }})\n              </h3>\n              <p ui-card-description class=\"text-xs\">\n                Review remaining refills, dosage instructions, and ordering eligibility.\n              </p>\n            </div>\n\n            <div class=\"flex flex-wrap items-center gap-2\">\n              <div class=\"relative w-full sm:w-64\">\n                <lucide-icon\n                  [img]=\"Search\"\n                  class=\"text-muted-foreground absolute top-1/2 left-2.5 size-3.5 -translate-y-1/2\"\n                />\n                <ui-input\n                  [value]=\"searchQuery()\"\n                  (valueChange)=\"searchQuery.set($event)\"\n                  placeholder=\"Search medication, Rx#, doctor...\"\n                  class=\"h-8 w-full pr-3 pl-8 text-xs shadow-xs\"\n                />\n              </div>\n\n              <div class=\"flex items-center gap-1\">\n                <button\n                  ui-button\n                  variant=\"ghost\"\n                  size=\"sm\"\n                  [class]=\"filterButtonClass('all')\"\n                  (click)=\"statusFilter.set('all')\"\n                >\n                  All ({{ prescriptions().length }})\n                </button>\n                <button\n                  ui-button\n                  variant=\"ghost\"\n                  size=\"sm\"\n                  [class]=\"filterButtonClass('ready')\"\n                  (click)=\"statusFilter.set('ready')\"\n                >\n                  Ready for Refill (2)\n                </button>\n                <button\n                  ui-button\n                  variant=\"ghost\"\n                  size=\"sm\"\n                  [class]=\"filterButtonClass('in_transit')\"\n                  (click)=\"statusFilter.set('in_transit')\"\n                >\n                  In Transit (1)\n                </button>\n                <button\n                  ui-button\n                  variant=\"ghost\"\n                  size=\"sm\"\n                  [class]=\"filterButtonClass('needs_auth')\"\n                  (click)=\"statusFilter.set('needs_auth')\"\n                >\n                  Needs Auth (1)\n                </button>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        <div class=\"overflow-x-auto\">\n          <table ui-table>\n            <thead ui-table-header>\n              <tr ui-table-row class=\"hover:bg-transparent\">\n                <th ui-table-head class=\"min-w-[220px] text-xs font-semibold\">Medication & Rx#</th>\n                <th ui-table-head class=\"min-w-[240px] text-xs font-semibold\">Directions & Dosage</th>\n                <th ui-table-head class=\"min-w-[170px] text-xs font-semibold\">Refill Status</th>\n                <th ui-table-head class=\"min-w-[160px] text-xs font-semibold\">Fill Dates / Schedule</th>\n                <th ui-table-head class=\"min-w-[180px] text-xs font-semibold\">Prescribing Doctor</th>\n                <th ui-table-head class=\"min-w-[150px] text-right text-xs font-semibold\">Quick Action</th>\n              </tr>\n            </thead>\n            <tbody ui-table-body>\n              @for (rx of filteredPrescriptions(); track rx.id) {\n                <tr ui-table-row [class]=\"prescriptionRowClass(rx)\">\n                  <td ui-table-cell class=\"py-4 align-top\">\n                    <div class=\"space-y-1\">\n                      <div class=\"flex items-center gap-1.5\">\n                        <span class=\"text-foreground text-sm font-semibold\">{{ rx.name }}</span>\n                      </div>\n                      <p class=\"text-muted-foreground text-xs\">{{ rx.genericFor }}</p>\n                      <div class=\"flex items-center gap-2 pt-0.5\">\n                        <span\n                          class=\"bg-muted text-muted-foreground rounded px-1.5 py-0.5 font-mono text-xs font-medium\"\n                        >\n                          {{ rx.rxNumber }}\n                        </span>\n                        <span class=\"text-muted-foreground text-xs\">NDC: {{ rx.ndc }}</span>\n                      </div>\n                    </div>\n                  </td>\n\n                  <td ui-table-cell class=\"py-4 align-top\">\n                    <div class=\"space-y-1\">\n                      <p class=\"text-foreground text-xs leading-relaxed font-medium\">\n                        {{ rx.instructions }}\n                      </p>\n                      <p class=\"text-muted-foreground text-xs\">\n                        Form: <span class=\"text-foreground font-medium\">{{ rx.dosageForm }}</span> · Qty:\n                        <span class=\"font-mono tabular-nums\">{{ rx.daysSupply }} Days</span>\n                      </p>\n                    </div>\n                  </td>\n\n                  <td ui-table-cell class=\"py-4 align-top\">\n                    <div class=\"space-y-1.5\">\n                      @if (rx.status === 'ready') {\n                        <span\n                          ui-badge\n                          variant=\"outline\"\n                          class=\"border-warning/40 bg-warning/10 text-warning gap-1 text-xs font-medium\"\n                        >\n                          <lucide-icon [img]=\"AlertCircle\" class=\"size-3\" />\n                          {{ rx.refillsRemaining }} refills remaining\n                        </span>\n                      } @else if (rx.status === 'needs_auth') {\n                        <span\n                          ui-badge\n                          variant=\"destructive\"\n                          class=\"bg-destructive/15 text-destructive dark:text-destructive-foreground dark:bg-destructive/30 gap-1 border-transparent text-xs font-medium\"\n                        >\n                          <lucide-icon [img]=\"ShieldAlert\" class=\"size-3\" />\n                          0 refills - Needs MD authorization\n                        </span>\n                      } @else if (rx.status === 'in_transit') {\n                        <span\n                          ui-badge\n                          variant=\"outline\"\n                          class=\"border-info/30 bg-info/10 text-info gap-1 text-xs font-medium\"\n                        >\n                          <lucide-icon [img]=\"Truck\" class=\"size-3\" />\n                          In Transit · Est. Arrival Today\n                        </span>\n                      } @else {\n                        <span ui-badge variant=\"secondary\" class=\"text-xs font-medium\">\n                          {{ rx.refillsRemaining }} of {{ rx.totalRefills }} remaining\n                        </span>\n                      }\n\n                      <p class=\"text-muted-foreground text-xs tabular-nums\">\n                        Est. Copay: <strong class=\"text-foreground\">\\${{ rx.copayEst }}.00</strong>\n                      </p>\n                    </div>\n                  </td>\n\n                  <td ui-table-cell class=\"py-4 align-top text-xs\">\n                    <div class=\"space-y-1\">\n                      <div class=\"text-muted-foreground flex items-center gap-1.5\">\n                        <lucide-icon [img]=\"Calendar\" class=\"size-3 shrink-0\" />\n                        <span>\n                          Last Filled:\n                          <strong class=\"text-foreground font-medium tabular-nums\">{{ rx.lastFilledDate }}</strong>\n                        </span>\n                      </div>\n                      <div [class]=\"dueDateClass(rx)\">\n                        <lucide-icon [img]=\"Clock\" class=\"size-3 shrink-0\" />\n                        <span>Next Due: {{ rx.nextDueDate }}</span>\n                      </div>\n                      @if (rx.isDue) {\n                        <span class=\"text-warning inline-block text-xs font-medium\"> Refill window open </span>\n                      }\n                    </div>\n                  </td>\n\n                  <td ui-table-cell class=\"py-4 align-top text-xs\">\n                    <div class=\"space-y-0.5\">\n                      <p class=\"text-foreground font-medium\">{{ rx.prescriber.name }}</p>\n                      <p class=\"text-muted-foreground\">{{ rx.prescriber.specialty }}</p>\n                      <p class=\"text-muted-foreground truncate text-xs\">{{ rx.prescriber.clinic }}</p>\n                    </div>\n                  </td>\n\n                  <td ui-table-cell class=\"py-4 text-right align-top\">\n                    <div class=\"flex items-center justify-end gap-1.5\">\n                      @if (rx.status === 'ready') {\n                        <button\n                          ui-button\n                          variant=\"default\"\n                          size=\"sm\"\n                          class=\"h-8 gap-1 text-xs font-medium shadow-xs\"\n                          (click)=\"openRefillModal(rx.id)\"\n                        >\n                          <lucide-icon [img]=\"RefreshCw\" class=\"size-3\" />\n                          Order Refill\n                        </button>\n                      } @else if (rx.status === 'needs_auth') {\n                        <button\n                          ui-button\n                          variant=\"outline\"\n                          size=\"sm\"\n                          class=\"border-destructive/30 text-destructive hover:bg-destructive/10 h-8 gap-1 text-xs font-medium\"\n                          (click)=\"handleOpenAuthRequest(rx)\"\n                        >\n                          <lucide-icon [img]=\"Clock\" class=\"size-3\" />\n                          Request Auth\n                        </button>\n                      } @else if (rx.status === 'in_transit') {\n                        <button\n                          ui-button\n                          variant=\"secondary\"\n                          size=\"sm\"\n                          class=\"h-8 gap-1 text-xs font-medium\"\n                          (click)=\"handleOpenTracking(rx)\"\n                        >\n                          <lucide-icon [img]=\"Truck\" class=\"text-info size-3\" />\n                          Track\n                        </button>\n                      }\n\n                      <ui-dropdown-menu>\n                        <button\n                          ui-button\n                          ui-dropdown-menu-trigger\n                          variant=\"ghost\"\n                          size=\"icon\"\n                          class=\"size-8\"\n                          [attr.aria-label]=\"'Prescription options for ' + rx.name\"\n                        >\n                          <lucide-icon [img]=\"MoreHorizontal\" class=\"size-4\" />\n                        </button>\n                        <ui-dropdown-menu-content align=\"end\" class=\"w-52\">\n                          <ui-dropdown-menu-label class=\"text-xs font-semibold\">Rx Options</ui-dropdown-menu-label>\n                          <ui-dropdown-menu-separator />\n                          @if (rx.status === 'ready') {\n                            <ui-dropdown-menu-item class=\"gap-2 text-xs\" (select)=\"openRefillModal(rx.id)\">\n                              <lucide-icon [img]=\"RefreshCw\" class=\"text-primary size-3.5\" />\n                              <span>Order Refill (30/90 Days)</span>\n                            </ui-dropdown-menu-item>\n                          }\n                          @if (rx.status === 'needs_auth') {\n                            <ui-dropdown-menu-item\n                              class=\"text-destructive gap-2 text-xs\"\n                              (select)=\"handleOpenAuthRequest(rx)\"\n                            >\n                              <lucide-icon [img]=\"ShieldAlert\" class=\"size-3.5\" />\n                              <span>Request MD Renewal</span>\n                            </ui-dropdown-menu-item>\n                          }\n                          @if (rx.packageTracking) {\n                            <ui-dropdown-menu-item class=\"gap-2 text-xs\" (select)=\"handleOpenTracking(rx)\">\n                              <lucide-icon [img]=\"Truck\" class=\"text-info size-3.5\" />\n                              <span>Track USPS Delivery</span>\n                            </ui-dropdown-menu-item>\n                          }\n                          <ui-dropdown-menu-item class=\"gap-2 text-xs\" (select)=\"handleOpenTransfer()\">\n                            <lucide-icon [img]=\"ArrowLeftRight\" class=\"size-3.5\" />\n                            <span>Transfer to Another Pharmacy</span>\n                          </ui-dropdown-menu-item>\n                          <ui-dropdown-menu-separator />\n                          <ui-dropdown-menu-item class=\"gap-2 text-xs\">\n                            <lucide-icon [img]=\"FileText\" class=\"text-muted-foreground size-3.5\" />\n                            <span>View Full Drug Monograph</span>\n                          </ui-dropdown-menu-item>\n                          <ui-dropdown-menu-item class=\"gap-2 text-xs\">\n                            <lucide-icon [img]=\"Phone\" class=\"text-muted-foreground size-3.5\" />\n                            <span>Call Prescriber ({{ rx.prescriber.phone }})</span>\n                          </ui-dropdown-menu-item>\n                        </ui-dropdown-menu-content>\n                      </ui-dropdown-menu>\n                    </div>\n                  </td>\n                </tr>\n              }\n            </tbody>\n          </table>\n        </div>\n\n        <div\n          ui-card-footer\n          class=\"bg-muted/30 border-border text-muted-foreground flex flex-col justify-between gap-3 border-t p-4 text-xs sm:flex-row sm:items-center\"\n        >\n          <div class=\"flex items-center gap-2\">\n            <lucide-icon [img]=\"Info\" class=\"text-primary size-3.5 shrink-0\" />\n            <span>Refills requested before 3:00 PM are processed same-day by our clinical pharmacy team.</span>\n          </div>\n          <div class=\"flex items-center gap-3\">\n            <span>Automatic Refill Program: <strong class=\"text-foreground font-medium\">Enabled</strong></span>\n          </div>\n        </div>\n      </div>\n\n      <!-- Refill Request Dialog -->\n      <ui-dialog [open]=\"isRefillOpen()\" (openChange)=\"onRefillOpenChange($event)\">\n        @if (selectedPrescription(); as rx) {\n          <ui-dialog-content class=\"sm:max-w-xl\">\n            <div ui-dialog-header>\n              <div class=\"flex items-center gap-2\">\n                <div class=\"bg-primary/10 text-primary flex size-8 items-center justify-center rounded-lg\">\n                  <lucide-icon [img]=\"RefreshCw\" class=\"size-4\" />\n                </div>\n                <div>\n                  <h2 ui-dialog-title class=\"text-lg font-bold\">Request Prescription Refill</h2>\n                  <p ui-dialog-description class=\"text-xs\">\n                    Select your supply duration, delivery method, and confirm your copay.\n                  </p>\n                </div>\n              </div>\n            </div>\n\n            @if (orderSubmitted()) {\n              <div class=\"space-y-4 py-4\">\n                <div class=\"border-success/30 bg-success/10 text-success space-y-2 rounded-xl border p-5 text-center\">\n                  <div class=\"bg-success/20 text-success mx-auto flex size-12 items-center justify-center rounded-full\">\n                    <lucide-icon [img]=\"CheckCircle2\" class=\"size-6\" />\n                  </div>\n                  <h3 class=\"text-base font-bold\">Refill Order Successfully Placed!</h3>\n                  <p class=\"text-success/90 mx-auto max-w-md text-xs\">\n                    Your order for <strong>{{ rx.name }}</strong> ({{ supplyDuration() }}-day supply) has been sent to\n                    {{ activePharmacy().name }}.\n                  </p>\n                </div>\n\n                <div class=\"bg-muted/40 text-muted-foreground space-y-1.5 rounded-lg border p-3 text-xs\">\n                  <div class=\"flex justify-between\">\n                    <span>Fulfillment Method:</span>\n                    <strong class=\"text-foreground\">{{\n                      deliveryMethod() === 'delivery' ? 'Express Home Delivery (1-2 Days)' : 'In-Store Pickup'\n                    }}</strong>\n                  </div>\n                  <div class=\"flex justify-between\">\n                    <span>Estimated Copay:</span>\n                    <strong class=\"text-foreground font-mono tabular-nums\">\\${{ estimatedCopay().toFixed(2) }}</strong>\n                  </div>\n                  <div class=\"flex justify-between\">\n                    <span>Remaining Refills After This Order:</span>\n                    <strong class=\"text-foreground tabular-nums\">{{\n                      rx.refillsRemaining - 1 >= 0 ? rx.refillsRemaining - 1 : 0\n                    }}</strong>\n                  </div>\n                </div>\n\n                <div ui-dialog-footer class=\"pt-2\">\n                  <button ui-button variant=\"default\" class=\"w-full\" (click)=\"isRefillOpen.set(false)\">\n                    Done & Return to Prescriptions\n                  </button>\n                </div>\n              </div>\n            } @else {\n              <div class=\"space-y-5 py-2\">\n                <div class=\"bg-muted/40 border-border space-y-3 rounded-xl border p-4\">\n                  <div class=\"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between\">\n                    <div class=\"space-y-0.5\">\n                      <p class=\"text-muted-foreground text-xs font-semibold\">Selected Prescription</p>\n                      <h4 class=\"text-foreground text-sm font-bold\">{{ rx.name }}</h4>\n                      <p class=\"text-muted-foreground text-xs\">{{ rx.genericFor }}</p>\n                    </div>\n                    <div class=\"space-y-0.5 text-left sm:text-right\">\n                      <span class=\"bg-background rounded border px-2 py-0.5 font-mono text-xs font-medium\">\n                        {{ rx.rxNumber }}\n                      </span>\n                      <p class=\"text-success text-xs font-medium\">{{ rx.refillsRemaining }} refills remaining</p>\n                    </div>\n                  </div>\n                </div>\n\n                <div class=\"space-y-2\">\n                  <span class=\"text-foreground text-xs font-semibold\">Supply Duration</span>\n                  <div class=\"grid grid-cols-2 gap-2\">\n                    <button\n                      ui-button\n                      [variant]=\"supplyDuration() === '30' ? 'default' : 'outline'\"\n                      size=\"sm\"\n                      (click)=\"supplyDuration.set('30')\"\n                    >\n                      30-Day Supply · \\${{ rx.copayEst }}.00\n                    </button>\n                    <button\n                      ui-button\n                      [variant]=\"supplyDuration() === '90' ? 'default' : 'outline'\"\n                      size=\"sm\"\n                      (click)=\"supplyDuration.set('90')\"\n                    >\n                      90-Day Supply · $20.00\n                    </button>\n                  </div>\n                </div>\n\n                <div class=\"space-y-2\">\n                  <span class=\"text-foreground text-xs font-semibold\">Fulfillment Method</span>\n                  <div class=\"grid grid-cols-2 gap-2\">\n                    <button\n                      ui-button\n                      [variant]=\"deliveryMethod() === 'pickup' ? 'default' : 'outline'\"\n                      size=\"sm\"\n                      class=\"gap-1.5\"\n                      (click)=\"deliveryMethod.set('pickup')\"\n                    >\n                      <lucide-icon [img]=\"Store\" class=\"size-3.5\" />\n                      In-Store Pickup\n                    </button>\n                    <button\n                      ui-button\n                      [variant]=\"deliveryMethod() === 'delivery' ? 'default' : 'outline'\"\n                      size=\"sm\"\n                      class=\"gap-1.5\"\n                      (click)=\"deliveryMethod.set('delivery')\"\n                    >\n                      <lucide-icon [img]=\"Truck\" class=\"size-3.5\" />\n                      Home Delivery\n                    </button>\n                  </div>\n                </div>\n\n                <div ui-dialog-footer class=\"pt-2\">\n                  <button ui-button variant=\"outline\" (click)=\"isRefillOpen.set(false)\">Cancel</button>\n                  <button ui-button variant=\"default\" class=\"gap-1.5 shadow-xs\" (click)=\"submitRefillOrder()\">\n                    <lucide-icon [img]=\"RefreshCw\" class=\"size-3.5\" />\n                    Place Refill Order\n                  </button>\n                </div>\n              </div>\n            }\n          </ui-dialog-content>\n        }\n      </ui-dialog>\n\n      <!-- Tracking Dialog -->\n      <ui-dialog [open]=\"isTrackingOpen()\" (openChange)=\"isTrackingOpen.set($event)\">\n        @if (trackingPrescription(); as rx) {\n          <ui-dialog-content class=\"sm:max-w-lg\">\n            <div ui-dialog-header>\n              <div class=\"flex items-center gap-2\">\n                <div class=\"bg-info/10 text-info flex size-8 items-center justify-center rounded-lg\">\n                  <lucide-icon [img]=\"Truck\" class=\"size-4\" />\n                </div>\n                <div>\n                  <h2 ui-dialog-title class=\"text-lg font-bold\">Delivery & Tracking Status</h2>\n                  <p ui-dialog-description class=\"text-xs\">Tracking details for {{ rx.name }}</p>\n                </div>\n              </div>\n            </div>\n\n            @if (rx.packageTracking; as tracking) {\n              <div class=\"space-y-4 py-2 text-xs\">\n                <div class=\"bg-muted/40 border-border space-y-2 rounded-xl border p-4\">\n                  <div class=\"flex items-center justify-between\">\n                    <span class=\"text-muted-foreground\">Carrier & Service:</span>\n                    <strong class=\"text-foreground\">{{ tracking.carrier }}</strong>\n                  </div>\n                  <div class=\"flex items-center justify-between\">\n                    <span class=\"text-muted-foreground\">Tracking Number:</span>\n                    <strong class=\"text-foreground font-mono\">{{ tracking.trackingNumber }}</strong>\n                  </div>\n                  <div class=\"flex items-center justify-between\">\n                    <span class=\"text-muted-foreground\">Status:</span>\n                    <span ui-badge variant=\"outline\" class=\"border-info/30 bg-info/10 text-info text-xs font-semibold\">\n                      {{ tracking.status }}\n                    </span>\n                  </div>\n                  <div class=\"flex items-center justify-between border-t pt-1\">\n                    <span class=\"text-muted-foreground\">Estimated Delivery:</span>\n                    <strong class=\"text-foreground font-bold\">{{ tracking.estimatedArrival }}</strong>\n                  </div>\n                </div>\n\n                <div class=\"space-y-3 pl-2\">\n                  <p class=\"text-foreground text-xs font-semibold\">Package History Timeline</p>\n                  <div class=\"border-border relative ml-2 space-y-4 border-l pl-4\">\n                    @for (step of tracking.steps; track step.title) {\n                      <div class=\"relative space-y-0.5\">\n                        <div [class]=\"trackingDotClass(step)\"></div>\n                        <p\n                          [class]=\"\n                            step.current ? 'text-info text-xs font-semibold' : 'text-foreground text-xs font-semibold'\n                          \"\n                        >\n                          {{ step.title }}\n                        </p>\n                        <p class=\"text-muted-foreground text-xs tabular-nums\">{{ step.time }}</p>\n                      </div>\n                    }\n                  </div>\n                </div>\n              </div>\n            }\n\n            <div ui-dialog-footer>\n              <button ui-button variant=\"outline\" class=\"w-full sm:w-auto\" (click)=\"isTrackingOpen.set(false)\">\n                Close Tracking\n              </button>\n            </div>\n          </ui-dialog-content>\n        }\n      </ui-dialog>\n\n      <!-- Transfer Prescription Dialog -->\n      <ui-dialog [open]=\"isTransferOpen()\" (openChange)=\"onTransferOpenChange($event)\">\n        <ui-dialog-content class=\"sm:max-w-lg\">\n          <div ui-dialog-header>\n            <div class=\"flex items-center gap-2\">\n              <div class=\"bg-primary/10 text-primary flex size-8 items-center justify-center rounded-lg\">\n                <lucide-icon [img]=\"ArrowLeftRight\" class=\"size-4\" />\n              </div>\n              <div>\n                <h2 ui-dialog-title class=\"text-lg font-bold\">Transfer Prescription</h2>\n                <p ui-dialog-description class=\"text-xs\">\n                  Move an existing prescription from another pharmacy to {{ activePharmacy().name }}.\n                </p>\n              </div>\n            </div>\n          </div>\n\n          @if (transferSubmitted()) {\n            <div class=\"space-y-4 py-4\">\n              <div class=\"border-success/30 bg-success/10 text-success space-y-2 rounded-xl border p-5 text-center\">\n                <div class=\"bg-success/20 text-success mx-auto flex size-12 items-center justify-center rounded-full\">\n                  <lucide-icon [img]=\"CheckCircle2\" class=\"size-6\" />\n                </div>\n                <h3 class=\"text-base font-bold\">Transfer Request Submitted!</h3>\n                <p class=\"text-success/90 mx-auto max-w-sm text-xs\">\n                  Our clinical pharmacy team will contact your previous pharmacy to transfer the prescription. This\n                  typically takes 24–48 hours.\n                </p>\n              </div>\n              <div ui-dialog-footer>\n                <button ui-button variant=\"default\" class=\"w-full\" (click)=\"isTransferOpen.set(false)\">Done</button>\n              </div>\n            </div>\n          } @else {\n            <div class=\"space-y-3.5 py-2 text-xs\">\n              <div class=\"space-y-1\">\n                <label class=\"text-foreground text-xs font-medium\">Current / Previous Pharmacy Name</label>\n                <ui-input\n                  [value]=\"transferForm().pharmacyName\"\n                  (valueChange)=\"patchTransfer({ pharmacyName: $event })\"\n                  placeholder=\"e.g. Walgreens, Rite Aid, Walmart...\"\n                  class=\"h-9 text-xs shadow-xs\"\n                />\n              </div>\n\n              <div class=\"grid grid-cols-1 gap-3 sm:grid-cols-2\">\n                <div class=\"space-y-1\">\n                  <label class=\"text-foreground text-xs font-medium\">Pharmacy Phone Number</label>\n                  <ui-input\n                    [value]=\"transferForm().phone\"\n                    (valueChange)=\"patchTransfer({ phone: $event })\"\n                    type=\"tel\"\n                    placeholder=\"(555) 000-0000\"\n                    class=\"h-9 text-xs shadow-xs\"\n                  />\n                </div>\n                <div class=\"space-y-1\">\n                  <label class=\"text-foreground text-xs font-medium\">Existing Rx Number (if known)</label>\n                  <ui-input\n                    [value]=\"transferForm().rxNumber\"\n                    (valueChange)=\"patchTransfer({ rxNumber: $event })\"\n                    placeholder=\"e.g. RX-123456\"\n                    class=\"h-9 font-mono text-xs shadow-xs\"\n                  />\n                </div>\n              </div>\n\n              <div class=\"space-y-1\">\n                <label class=\"text-foreground text-xs font-medium\">Medication Name & Strength</label>\n                <ui-input\n                  [value]=\"transferForm().medicationName\"\n                  (valueChange)=\"patchTransfer({ medicationName: $event })\"\n                  placeholder=\"e.g. Lipitor 20mg or Levothyroxine 50mcg\"\n                  class=\"h-9 text-xs shadow-xs\"\n                />\n              </div>\n\n              <div class=\"space-y-1\">\n                <label class=\"text-foreground text-xs font-medium\"\n                  >Special Instructions / Prescriber Notes (Optional)</label\n                >\n                <ui-textarea\n                  [value]=\"transferForm().notes\"\n                  (valueChange)=\"patchTransfer({ notes: $event })\"\n                  [rows]=\"2\"\n                  placeholder=\"Any additional notes for the receiving pharmacist...\"\n                  class=\"text-xs shadow-xs\"\n                />\n              </div>\n\n              <div ui-dialog-footer class=\"pt-2\">\n                <button ui-button variant=\"outline\" (click)=\"isTransferOpen.set(false)\">Cancel</button>\n                <button ui-button variant=\"default\" class=\"gap-1.5 shadow-xs\" (click)=\"submitTransfer()\">\n                  <lucide-icon [img]=\"ArrowLeftRight\" class=\"size-3.5\" />\n                  Initiate Transfer\n                </button>\n              </div>\n            </div>\n          }\n        </ui-dialog-content>\n      </ui-dialog>\n\n      <!-- Change Preferred Pharmacy Dialog -->\n      <ui-dialog [open]=\"isChangePharmacyOpen()\" (openChange)=\"isChangePharmacyOpen.set($event)\">\n        <ui-dialog-content class=\"sm:max-w-lg\">\n          <div ui-dialog-header>\n            <div class=\"flex items-center gap-2\">\n              <div class=\"bg-primary/10 text-primary flex size-8 items-center justify-center rounded-lg\">\n                <lucide-icon [img]=\"Building2\" class=\"size-4\" />\n              </div>\n              <div>\n                <h2 ui-dialog-title class=\"text-lg font-bold\">Select Preferred Pharmacy</h2>\n                <p ui-dialog-description class=\"text-xs\">\n                  Choose the location where your local orders and drive-thru pickups are routed.\n                </p>\n              </div>\n            </div>\n          </div>\n\n          <div class=\"space-y-3 py-2 text-xs\">\n            @for (pharmacy of availablePharmacies(); track pharmacy.id) {\n              <div [class]=\"pharmacyOptionClass(pharmacy)\" (click)=\"tempSelectedPharmacyId.set(pharmacy.id)\">\n                <div class=\"space-y-1\">\n                  <div class=\"flex items-center gap-2\">\n                    <span class=\"text-foreground font-bold\">{{ pharmacy.name }}</span>\n                    @if (pharmacy.id === activePharmacy().id) {\n                      <span ui-badge variant=\"secondary\" class=\"text-xs\">Current</span>\n                    }\n                  </div>\n                  <p class=\"text-muted-foreground\">{{ pharmacy.address }}</p>\n                  <div class=\"text-muted-foreground flex items-center gap-3 pt-1\">\n                    <span\n                      >Phone: <strong class=\"text-foreground font-medium\">{{ pharmacy.phone }}</strong></span\n                    >\n                    <span>{{ pharmacy.hours }}</span>\n                  </div>\n                </div>\n                <div class=\"pt-0.5\">\n                  <div [class]=\"pharmacyRadioClass(pharmacy)\">\n                    @if (tempSelectedPharmacyId() === pharmacy.id) {\n                      <div class=\"bg-background size-1.5 rounded-full\"></div>\n                    }\n                  </div>\n                </div>\n              </div>\n            }\n          </div>\n\n          <div ui-dialog-footer class=\"pt-2\">\n            <button ui-button variant=\"outline\" (click)=\"isChangePharmacyOpen.set(false)\">Cancel</button>\n            <button ui-button variant=\"default\" (click)=\"savePharmacyChange()\">Save Preferred Pharmacy</button>\n          </div>\n        </ui-dialog-content>\n      </ui-dialog>\n\n      <!-- Request MD Authorization Dialog -->\n      <ui-dialog [open]=\"isAuthRequestOpen()\" (openChange)=\"isAuthRequestOpen.set($event)\">\n        @if (authRequestedRx(); as rx) {\n          <ui-dialog-content class=\"sm:max-w-md\">\n            <div ui-dialog-header>\n              <div class=\"flex items-center gap-2\">\n                <div class=\"bg-destructive/10 text-destructive flex size-8 items-center justify-center rounded-lg\">\n                  <lucide-icon [img]=\"ShieldAlert\" class=\"size-4\" />\n                </div>\n                <div>\n                  <h2 ui-dialog-title class=\"text-lg font-bold\">Request Prescriber Authorization</h2>\n                  <p ui-dialog-description class=\"text-xs\">Renew zero-refill prescription with your physician.</p>\n                </div>\n              </div>\n            </div>\n\n            @if (authRequestSubmitted()) {\n              <div class=\"space-y-3 py-4 text-center\">\n                <div class=\"bg-success/20 text-success mx-auto flex size-12 items-center justify-center rounded-full\">\n                  <lucide-icon [img]=\"CheckCircle2\" class=\"size-6\" />\n                </div>\n                <h3 class=\"text-foreground text-sm font-bold\">Authorization Request Sent!</h3>\n                <p class=\"text-muted-foreground text-xs\">\n                  A renewal request for <strong>{{ rx.name }}</strong> has been electronically transmitted to\n                  <strong>{{ rx.prescriber.name }}</strong\n                  >.\n                </p>\n                <div ui-dialog-footer class=\"pt-2\">\n                  <button ui-button variant=\"default\" class=\"w-full\" (click)=\"isAuthRequestOpen.set(false)\">\n                    Done\n                  </button>\n                </div>\n              </div>\n            } @else {\n              <div class=\"space-y-4 py-2 text-xs\">\n                <div class=\"bg-muted/40 space-y-1.5 rounded-xl border p-3.5\">\n                  <p class=\"text-foreground font-bold\">{{ rx.name }}</p>\n                  <p class=\"text-muted-foreground\">{{ rx.genericFor }}</p>\n                  <p class=\"text-muted-foreground\">\n                    Prescribing Physician: <strong class=\"text-foreground\">{{ rx.prescriber.name }}</strong>\n                  </p>\n                  <p class=\"text-muted-foreground\">Clinic: {{ rx.prescriber.clinic }} ({{ rx.prescriber.phone }})</p>\n                </div>\n\n                <p class=\"text-muted-foreground leading-relaxed\">\n                  Because this prescription has 0 refills remaining, we will send an electronic request (e-Prescription\n                  Renewal) directly to your doctor's office.\n                </p>\n\n                <div ui-dialog-footer>\n                  <button ui-button variant=\"outline\" (click)=\"isAuthRequestOpen.set(false)\">Cancel</button>\n                  <button ui-button variant=\"default\" class=\"gap-1.5\" (click)=\"authRequestSubmitted.set(true)\">\n                    <lucide-icon [img]=\"Check\" class=\"size-3.5\" />\n                    Send Renewal Request\n                  </button>\n                </div>\n              </div>\n            }\n          </ui-dialog-content>\n        }\n      </ui-dialog>\n    </div>\n  `,\n})\nexport class UiPrescriptionRefillManagerComponent {\n  protected readonly AlertCircle = AlertCircle\n  protected readonly ArrowLeftRight = ArrowLeftRight\n  protected readonly Building2 = Building2\n  protected readonly Calendar = Calendar\n  protected readonly Check = Check\n  protected readonly CheckCircle2 = CheckCircle2\n  protected readonly Clock = Clock\n  protected readonly FileText = FileText\n  protected readonly Info = Info\n  protected readonly MapPin = MapPin\n  protected readonly MoreHorizontal = MoreHorizontal\n  protected readonly Phone = Phone\n  protected readonly Pill = Pill\n  protected readonly Plus = Plus\n  protected readonly RefreshCw = RefreshCw\n  protected readonly Search = Search\n  protected readonly ShieldAlert = ShieldAlert\n  protected readonly Store = Store\n  protected readonly Truck = Truck\n\n  @Input('class') className?: string\n  @Input() set initialPharmacyId(v: string | undefined) {\n    const found = this.availablePharmacies().find((p) => p.id === v)\n    if (found) this.activePharmacy.set(found)\n  }\n\n  readonly prescriptions = signal<Prescription[]>(defaultPrescriptions.map((p) => ({ ...p })))\n  readonly availablePharmacies = signal<Pharmacy[]>(defaultAvailablePharmacies.map((p) => ({ ...p })))\n  readonly activePharmacy = signal<Pharmacy>({ ...defaultAvailablePharmacies[0] })\n\n  readonly searchQuery = signal('')\n  readonly statusFilter = signal<StatusFilter>('all')\n\n  readonly isRefillOpen = signal(false)\n  readonly selectedPrescriptionId = signal('rx-1')\n  readonly supplyDuration = signal<'30' | '90'>('90')\n  readonly deliveryMethod = signal<'pickup' | 'delivery'>('delivery')\n  readonly orderSubmitted = signal(false)\n\n  readonly isTrackingOpen = signal(false)\n  readonly trackingPrescription = signal<Prescription | null>(null)\n\n  readonly isTransferOpen = signal(false)\n  readonly transferForm = signal<TransferFormState>({\n    pharmacyName: '',\n    phone: '',\n    rxNumber: '',\n    medicationName: '',\n    notes: '',\n  })\n  readonly transferSubmitted = signal(false)\n\n  readonly isChangePharmacyOpen = signal(false)\n  readonly tempSelectedPharmacyId = signal(defaultAvailablePharmacies[0].id)\n\n  readonly isAuthRequestOpen = signal(false)\n  readonly authRequestedRx = signal<Prescription | null>(null)\n  readonly authRequestSubmitted = signal(false)\n\n  readonly filteredPrescriptions = computed(() => {\n    const q = this.searchQuery().toLowerCase()\n    const f = this.statusFilter()\n    return this.prescriptions().filter((rx) => {\n      const matchesSearch =\n        rx.name.toLowerCase().includes(q) ||\n        rx.rxNumber.toLowerCase().includes(q) ||\n        rx.genericFor.toLowerCase().includes(q) ||\n        rx.prescriber.name.toLowerCase().includes(q)\n      if (!matchesSearch) return false\n      if (f === 'all') return true\n      return rx.status === f\n    })\n  })\n\n  readonly selectedPrescription = computed<Prescription>(() => {\n    return this.prescriptions().find((rx) => rx.id === this.selectedPrescriptionId()) ?? this.prescriptions()[0]\n  })\n\n  readonly estimatedCopay = computed(() =>\n    this.supplyDuration() === '90' ? 20.0 : this.selectedPrescription().copayEst,\n  )\n\n  get rootClass(): string {\n    return cn('bg-background text-foreground w-full space-y-6', this.className)\n  }\n\n  filterButtonClass(filter: StatusFilter): string {\n    const active = this.statusFilter() === filter\n    return cn(\n      'h-8 text-xs font-medium',\n      active && 'bg-accent text-accent-foreground',\n      active && filter === 'ready' && 'text-warning',\n      active && filter === 'needs_auth' && 'text-destructive',\n    )\n  }\n\n  prescriptionRowClass(rx: Prescription): string {\n    return cn('transition-colors', rx.status === 'ready' && 'bg-warning/[0.02] bg-warning/[0.04]')\n  }\n\n  dueDateClass(rx: Prescription): string {\n    return cn(\n      'flex items-center gap-1.5 font-medium tabular-nums',\n      rx.isDue ? 'text-warning font-semibold' : 'text-muted-foreground',\n    )\n  }\n\n  trackingDotClass(step: { done: boolean; current?: boolean }): string {\n    return cn(\n      'ring-background absolute top-0.5 -left-[23px] flex size-3.5 items-center justify-center rounded-full ring-2',\n      step.current\n        ? 'bg-info ring-info animate-pulse'\n        : step.done\n          ? 'bg-primary text-primary-foreground'\n          : 'bg-muted border',\n    )\n  }\n\n  pharmacyOptionClass(pharmacy: Pharmacy): string {\n    return cn(\n      'flex cursor-pointer items-start justify-between rounded-xl border p-3.5 transition-colors',\n      this.tempSelectedPharmacyId() === pharmacy.id\n        ? 'border-primary bg-primary/5 ring-primary ring-1'\n        : 'border-border bg-card hover:bg-muted/40',\n    )\n  }\n\n  pharmacyRadioClass(pharmacy: Pharmacy): string {\n    return cn(\n      'flex size-4 items-center justify-center rounded-full border',\n      this.tempSelectedPharmacyId() === pharmacy.id\n        ? 'border-primary bg-primary text-primary-foreground'\n        : 'border-muted-foreground/40',\n    )\n  }\n\n  openRefillModal(prescriptionId?: string): void {\n    if (prescriptionId) {\n      this.selectedPrescriptionId.set(prescriptionId)\n    } else {\n      const readyMed = this.prescriptions().find((r) => r.status === 'ready')\n      this.selectedPrescriptionId.set(readyMed ? readyMed.id : this.prescriptions()[0].id)\n    }\n    this.orderSubmitted.set(false)\n    this.isRefillOpen.set(true)\n  }\n\n  onRefillOpenChange(open: boolean): void {\n    this.isRefillOpen.set(open)\n    if (!open) this.orderSubmitted.set(false)\n  }\n\n  submitRefillOrder(): void {\n    this.orderSubmitted.set(true)\n    this.prescriptions.update((prev) =>\n      prev.map((rx) =>\n        rx.id === this.selectedPrescriptionId()\n          ? { ...rx, refillsRemaining: Math.max(0, rx.refillsRemaining - 1) }\n          : rx,\n      ),\n    )\n  }\n\n  handleOpenTracking(rx: Prescription): void {\n    this.trackingPrescription.set(rx)\n    this.isTrackingOpen.set(true)\n  }\n\n  handleOpenAuthRequest(rx: Prescription): void {\n    this.authRequestedRx.set(rx)\n    this.authRequestSubmitted.set(false)\n    this.isAuthRequestOpen.set(true)\n  }\n\n  handleOpenTransfer(): void {\n    this.transferForm.set({ pharmacyName: '', phone: '', rxNumber: '', medicationName: '', notes: '' })\n    this.transferSubmitted.set(false)\n    this.isTransferOpen.set(true)\n  }\n\n  onTransferOpenChange(open: boolean): void {\n    this.isTransferOpen.set(open)\n    if (!open) this.transferSubmitted.set(false)\n  }\n\n  patchTransfer(patch: Partial<TransferFormState>): void {\n    this.transferForm.update((prev) => ({ ...prev, ...patch }))\n  }\n\n  submitTransfer(): void {\n    this.transferSubmitted.set(true)\n  }\n\n  handleChangePharmacy(): void {\n    this.tempSelectedPharmacyId.set(this.activePharmacy().id)\n    this.isChangePharmacyOpen.set(true)\n  }\n\n  savePharmacyChange(): void {\n    const chosen = this.availablePharmacies().find((p) => p.id === this.tempSelectedPharmacyId())\n    if (chosen) this.activePharmacy.set(chosen)\n    this.isChangePharmacyOpen.set(false)\n  }\n}\n",
      "type": "registry:block",
      "target": "~/src/app/components/blocks/prescription-refill-manager/prescription-refill-manager.component.ts"
    },
    {
      "path": "packages/registry-angular/blocks/prescription-refill-manager/index.ts",
      "content": "export {\n  UiPrescriptionRefillManagerComponent,\n  type Pharmacy,\n  type Prescription,\n  type PrescriptionStatus,\n  type TransferFormState,\n} from './prescription-refill-manager.component'\n",
      "type": "registry:block",
      "target": "~/src/app/components/blocks/prescription-refill-manager/index.ts"
    }
  ],
  "dependencies": [
    "lucide-angular"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "https://uipkge.dev/r/angular/badge.json",
    "https://uipkge.dev/r/angular/button.json",
    "https://uipkge.dev/r/angular/card.json",
    "https://uipkge.dev/r/angular/dialog.json",
    "https://uipkge.dev/r/angular/dropdown-menu.json",
    "https://uipkge.dev/r/angular/input.json",
    "https://uipkge.dev/r/angular/separator.json",
    "https://uipkge.dev/r/angular/table.json",
    "https://uipkge.dev/r/angular/textarea.json"
  ],
  "description": "Pharmacy patient portal for managing active prescriptions, refill requests, dosage schedules, delivery tracking, and preferred pharmacy details with an integrated refill order dialog.",
  "categories": [
    "healthcare",
    "app"
  ]
}