From dd0d583bf428aaee4b6098089016301f45a8fa4a Mon Sep 17 00:00:00 2001 From: “wangming” <“wangming@antissoft.com”> Date: Fri, 27 Feb 2026 22:37:38 +0800 Subject: [PATCH] 1 --- 泰额版/Food Labeling Management Platform/.npmrc | 3 +++ 泰额版/Food Labeling Management Platform/LabelTemplateEditor_Full.md | 344 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/README.md | 11 +++++++++++ 泰额版/Food Labeling Management Platform/build/assets/773f0c39e1986271e9144596caac519f934a6ae6-IDRCy9hk.png | Bin 0 -> 25887 bytes 泰额版/Food Labeling Management Platform/build/assets/FreightSans Bold-CftzBXfG.ttf | Bin 0 -> 95556 bytes 泰额版/Food Labeling Management Platform/build/assets/index-Casc5CPp.js | 527 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/build/assets/index-j-TrTQbz.css | 1 + 泰额版/Food Labeling Management Platform/build/index.html | 16 ++++++++++++++++ 泰额版/Food Labeling Management Platform/index.html | 15 +++++++++++++++ 泰额版/Food Labeling Management Platform/package-lock.json | 4495 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/package.json | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/App.tsx | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/Attributions.md | 3 +++ 泰额版/Food Labeling Management Platform/src/assets/773f0c39e1986271e9144596caac519f934a6ae6.png | Bin 0 -> 25887 bytes 泰额版/Food Labeling Management Platform/src/assets/FreightSans Bold.ttf | Bin 0 -> 95556 bytes 泰额版/Food Labeling Management Platform/src/components/PlaceholderView.tsx | 29 +++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/alerts/AlertsView.tsx | 290 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/dashboard/AlertsWidget.tsx | 39 +++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/dashboard/Dashboard.tsx | 351 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/dashboard/FoodWasteChart.tsx | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/dashboard/InfoChart.tsx | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/dashboard/RightPanel.tsx | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/dashboard/SensorsNetwork.tsx | 42 ++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/dashboard/TasksWidget.tsx | 43 +++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/devices/DevicesView.tsx | 392 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/figma/ImageWithFallback.tsx | 27 +++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/invoices/InvoicesView.tsx | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/labels/LabelBatchesView.tsx | 5 +++++ 泰额版/Food Labeling Management Platform/src/components/labels/LabelCategoriesView.tsx | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/ElementsPanel.tsx | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/LabelCanvas.tsx | 1246 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/PropertiesPanel.tsx | 346 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/index.tsx | 198 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplatesView.tsx | 178 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/labels/LabelTypesView.tsx | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/labels/LabelsList.tsx | 151 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/labels/LabelsView.tsx | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/labels/MultipleOptionsView.tsx | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/layout/Header.tsx | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/layout/Layout.tsx | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/layout/Sidebar.tsx | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/locations/LocationsView.tsx | 267 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/people/PeopleView.tsx | 549 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/products/ProductsView.tsx | 569 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/qrcodes/QRCodesView.tsx | 259 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/reports/ReportsView.tsx | 403 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/training/TrainingView.tsx | 273 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/accordion.tsx | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/alert-dialog.tsx | 157 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/alert.tsx | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/aspect-ratio.tsx | 11 +++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/avatar.tsx | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/badge.tsx | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/breadcrumb.tsx | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/button.tsx | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/calendar.tsx | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/card.tsx | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/carousel.tsx | 241 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/chart.tsx | 353 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/checkbox.tsx | 32 ++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/collapsible.tsx | 33 +++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/command.tsx | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/context-menu.tsx | 252 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/dialog.tsx | 135 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/drawer.tsx | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/dropdown-menu.tsx | 257 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/form.tsx | 168 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/hover-card.tsx | 44 ++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/input-otp.tsx | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/input.tsx | 21 +++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/label.tsx | 24 ++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/menubar.tsx | 276 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/navigation-menu.tsx | 168 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/pagination.tsx | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/popover.tsx | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/progress.tsx | 31 +++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/radio-group.tsx | 45 +++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/resizable.tsx | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/scroll-area.tsx | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/select.tsx | 189 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/separator.tsx | 28 ++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/sheet.tsx | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/sidebar.tsx | 726 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/skeleton.tsx | 13 +++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/slider.tsx | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/sonner.tsx | 25 +++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/switch.tsx | 31 +++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/table.tsx | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/tabs.tsx | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/textarea.tsx | 18 ++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/toggle-group.tsx | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/toggle.tsx | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/tooltip.tsx | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/use-mobile.ts | 21 +++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/components/ui/utils.ts | 6 ++++++ 泰额版/Food Labeling Management Platform/src/guidelines/Guidelines.md | 0 泰额版/Food Labeling Management Platform/src/index.css | 3504 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/lib/labelTemplateStorage.ts | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/lib/presetLabelTemplates.ts | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/lib/supabaseClient.ts | 10 ++++++++++ 泰额版/Food Labeling Management Platform/src/main.tsx | 7 +++++++ 泰额版/Food Labeling Management Platform/src/services/dashboardService.ts | 45 +++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/styles/globals.css | 196 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/supabase/functions/server/index.tsx | 27 +++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/supabase/functions/server/kv_store.tsx | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/types/labelTemplate.ts | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform/src/utils/supabase/info.tsx | 4 ++++ 泰额版/Food Labeling Management Platform/vite.config.ts | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 泰额版/Food Labeling Management Platform泰鄂/.npmrc | 3 --- 泰额版/Food Labeling Management Platform泰鄂/LabelTemplateEditor_Full.md | 344 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/README.md | 11 ----------- 泰额版/Food Labeling Management Platform泰鄂/build/assets/773f0c39e1986271e9144596caac519f934a6ae6-IDRCy9hk.png | Bin 25887 -> 0 bytes 泰额版/Food Labeling Management Platform泰鄂/build/assets/FreightSans Bold-CftzBXfG.ttf | Bin 95556 -> 0 bytes 泰额版/Food Labeling Management Platform泰鄂/build/assets/index-Casc5CPp.js | 527 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/build/assets/index-j-TrTQbz.css | 1 - 泰额版/Food Labeling Management Platform泰鄂/build/index.html | 16 ---------------- 泰额版/Food Labeling Management Platform泰鄂/index.html | 15 --------------- 泰额版/Food Labeling Management Platform泰鄂/package-lock.json | 4495 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/package.json | 68 -------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/App.tsx | 63 --------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/Attributions.md | 3 --- 泰额版/Food Labeling Management Platform泰鄂/src/assets/773f0c39e1986271e9144596caac519f934a6ae6.png | Bin 25887 -> 0 bytes 泰额版/Food Labeling Management Platform泰鄂/src/assets/FreightSans Bold.ttf | Bin 95556 -> 0 bytes 泰额版/Food Labeling Management Platform泰鄂/src/components/PlaceholderView.tsx | 29 ----------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/alerts/AlertsView.tsx | 290 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/dashboard/AlertsWidget.tsx | 39 --------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/dashboard/Dashboard.tsx | 351 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/dashboard/FoodWasteChart.tsx | 54 ------------------------------------------------------ 泰额版/Food Labeling Management Platform泰鄂/src/components/dashboard/InfoChart.tsx | 58 ---------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/dashboard/RightPanel.tsx | 91 ------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/dashboard/SensorsNetwork.tsx | 42 ------------------------------------------ 泰额版/Food Labeling Management Platform泰鄂/src/components/dashboard/TasksWidget.tsx | 43 ------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/devices/DevicesView.tsx | 392 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/figma/ImageWithFallback.tsx | 27 --------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/invoices/InvoicesView.tsx | 177 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelBatchesView.tsx | 5 ----- 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelCategoriesView.tsx | 98 -------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelTemplateEditor/ElementsPanel.tsx | 117 --------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelTemplateEditor/LabelCanvas.tsx | 1246 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelTemplateEditor/PropertiesPanel.tsx | 346 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelTemplateEditor/index.tsx | 198 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelTemplatesView.tsx | 178 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelTypesView.tsx | 105 --------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelsList.tsx | 151 ------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelsView.tsx | 65 ----------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/MultipleOptionsView.tsx | 93 --------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/layout/Header.tsx | 56 -------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/layout/Layout.tsx | 75 --------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/layout/Sidebar.tsx | 158 -------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/locations/LocationsView.tsx | 267 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/people/PeopleView.tsx | 549 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/products/ProductsView.tsx | 569 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/qrcodes/QRCodesView.tsx | 259 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/reports/ReportsView.tsx | 403 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/training/TrainingView.tsx | 273 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/accordion.tsx | 66 ------------------------------------------------------------------ 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/alert-dialog.tsx | 157 ------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/alert.tsx | 66 ------------------------------------------------------------------ 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/aspect-ratio.tsx | 11 ----------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/avatar.tsx | 53 ----------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/badge.tsx | 46 ---------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/breadcrumb.tsx | 109 ------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/button.tsx | 58 ---------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/calendar.tsx | 75 --------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/card.tsx | 92 -------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/carousel.tsx | 241 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/chart.tsx | 353 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/checkbox.tsx | 32 -------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/collapsible.tsx | 33 --------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/command.tsx | 177 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/context-menu.tsx | 252 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/dialog.tsx | 135 --------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/drawer.tsx | 132 ------------------------------------------------------------------------------------------------------------------------------------ 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/dropdown-menu.tsx | 257 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/form.tsx | 168 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/hover-card.tsx | 44 -------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/input-otp.tsx | 77 ----------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/input.tsx | 21 --------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/label.tsx | 24 ------------------------ 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/menubar.tsx | 276 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/navigation-menu.tsx | 168 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/pagination.tsx | 127 ------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/popover.tsx | 48 ------------------------------------------------ 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/progress.tsx | 31 ------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/radio-group.tsx | 45 --------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/resizable.tsx | 56 -------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/scroll-area.tsx | 58 ---------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/select.tsx | 189 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/separator.tsx | 28 ---------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/sheet.tsx | 139 ------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/sidebar.tsx | 726 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/skeleton.tsx | 13 ------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/slider.tsx | 63 --------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/sonner.tsx | 25 ------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/switch.tsx | 31 ------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/table.tsx | 116 -------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/tabs.tsx | 66 ------------------------------------------------------------------ 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/textarea.tsx | 18 ------------------ 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/toggle-group.tsx | 73 ------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/toggle.tsx | 47 ----------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/tooltip.tsx | 61 ------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/use-mobile.ts | 21 --------------------- 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/utils.ts | 6 ------ 泰额版/Food Labeling Management Platform泰鄂/src/guidelines/Guidelines.md | 0 泰额版/Food Labeling Management Platform泰鄂/src/index.css | 3504 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 泰额版/Food Labeling Management Platform泰鄂/src/lib/labelTemplateStorage.ts | 59 ----------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/lib/presetLabelTemplates.ts | 128 -------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/lib/supabaseClient.ts | 10 ---------- 泰额版/Food Labeling Management Platform泰鄂/src/main.tsx | 7 ------- 泰额版/Food Labeling Management Platform泰鄂/src/services/dashboardService.ts | 45 --------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/styles/globals.css | 196 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/supabase/functions/server/index.tsx | 27 --------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/supabase/functions/server/kv_store.tsx | 87 --------------------------------------------------------------------------------------- 泰额版/Food Labeling Management Platform泰鄂/src/types/labelTemplate.ts | 150 ------------------------------------------------------------------------------------------------------------------------------------------------------ 泰额版/Food Labeling Management Platform泰鄂/src/utils/supabase/info.tsx | 4 ---- 泰额版/Food Labeling Management Platform泰鄂/vite.config.ts | 63 --------------------------------------------------------------- 216 files changed, 21740 insertions(+), 21740 deletions(-) create mode 100755 泰额版/Food Labeling Management Platform/.npmrc create mode 100644 泰额版/Food Labeling Management Platform/LabelTemplateEditor_Full.md create mode 100755 泰额版/Food Labeling Management Platform/README.md create mode 100644 泰额版/Food Labeling Management Platform/build/assets/773f0c39e1986271e9144596caac519f934a6ae6-IDRCy9hk.png create mode 100644 泰额版/Food Labeling Management Platform/build/assets/FreightSans Bold-CftzBXfG.ttf create mode 100644 泰额版/Food Labeling Management Platform/build/assets/index-Casc5CPp.js create mode 100644 泰额版/Food Labeling Management Platform/build/assets/index-j-TrTQbz.css create mode 100644 泰额版/Food Labeling Management Platform/build/index.html create mode 100755 泰额版/Food Labeling Management Platform/index.html create mode 100644 泰额版/Food Labeling Management Platform/package-lock.json create mode 100755 泰额版/Food Labeling Management Platform/package.json create mode 100755 泰额版/Food Labeling Management Platform/src/App.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/Attributions.md create mode 100644 泰额版/Food Labeling Management Platform/src/assets/773f0c39e1986271e9144596caac519f934a6ae6.png create mode 100755 泰额版/Food Labeling Management Platform/src/assets/FreightSans Bold.ttf create mode 100755 泰额版/Food Labeling Management Platform/src/components/PlaceholderView.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/alerts/AlertsView.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/dashboard/AlertsWidget.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/dashboard/Dashboard.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/dashboard/FoodWasteChart.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/dashboard/InfoChart.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/dashboard/RightPanel.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/dashboard/SensorsNetwork.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/dashboard/TasksWidget.tsx create mode 100644 泰额版/Food Labeling Management Platform/src/components/devices/DevicesView.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/figma/ImageWithFallback.tsx create mode 100644 泰额版/Food Labeling Management Platform/src/components/invoices/InvoicesView.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/labels/LabelBatchesView.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/labels/LabelCategoriesView.tsx create mode 100644 泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/ElementsPanel.tsx create mode 100644 泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/LabelCanvas.tsx create mode 100644 泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/PropertiesPanel.tsx create mode 100644 泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/index.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplatesView.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/labels/LabelTypesView.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/labels/LabelsList.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/labels/LabelsView.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/labels/MultipleOptionsView.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/layout/Header.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/layout/Layout.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/layout/Sidebar.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/locations/LocationsView.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/people/PeopleView.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/products/ProductsView.tsx create mode 100644 泰额版/Food Labeling Management Platform/src/components/qrcodes/QRCodesView.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/reports/ReportsView.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/training/TrainingView.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/accordion.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/alert-dialog.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/alert.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/aspect-ratio.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/avatar.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/badge.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/breadcrumb.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/button.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/calendar.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/card.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/carousel.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/chart.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/checkbox.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/collapsible.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/command.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/context-menu.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/dialog.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/drawer.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/dropdown-menu.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/form.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/hover-card.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/input-otp.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/input.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/label.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/menubar.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/navigation-menu.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/pagination.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/popover.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/progress.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/radio-group.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/resizable.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/scroll-area.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/select.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/separator.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/sheet.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/sidebar.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/skeleton.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/slider.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/sonner.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/switch.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/table.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/tabs.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/textarea.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/toggle-group.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/toggle.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/tooltip.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/use-mobile.ts create mode 100755 泰额版/Food Labeling Management Platform/src/components/ui/utils.ts create mode 100755 泰额版/Food Labeling Management Platform/src/guidelines/Guidelines.md create mode 100755 泰额版/Food Labeling Management Platform/src/index.css create mode 100644 泰额版/Food Labeling Management Platform/src/lib/labelTemplateStorage.ts create mode 100644 泰额版/Food Labeling Management Platform/src/lib/presetLabelTemplates.ts create mode 100755 泰额版/Food Labeling Management Platform/src/lib/supabaseClient.ts create mode 100755 泰额版/Food Labeling Management Platform/src/main.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/services/dashboardService.ts create mode 100755 泰额版/Food Labeling Management Platform/src/styles/globals.css create mode 100755 泰额版/Food Labeling Management Platform/src/supabase/functions/server/index.tsx create mode 100755 泰额版/Food Labeling Management Platform/src/supabase/functions/server/kv_store.tsx create mode 100644 泰额版/Food Labeling Management Platform/src/types/labelTemplate.ts create mode 100755 泰额版/Food Labeling Management Platform/src/utils/supabase/info.tsx create mode 100755 泰额版/Food Labeling Management Platform/vite.config.ts delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/.npmrc delete mode 100644 泰额版/Food Labeling Management Platform泰鄂/LabelTemplateEditor_Full.md delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/README.md delete mode 100644 泰额版/Food Labeling Management Platform泰鄂/build/assets/773f0c39e1986271e9144596caac519f934a6ae6-IDRCy9hk.png delete mode 100644 泰额版/Food Labeling Management Platform泰鄂/build/assets/FreightSans Bold-CftzBXfG.ttf delete mode 100644 泰额版/Food Labeling Management Platform泰鄂/build/assets/index-Casc5CPp.js delete mode 100644 泰额版/Food Labeling Management Platform泰鄂/build/assets/index-j-TrTQbz.css delete mode 100644 泰额版/Food Labeling Management Platform泰鄂/build/index.html delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/index.html delete mode 100644 泰额版/Food Labeling Management Platform泰鄂/package-lock.json delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/package.json delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/App.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/Attributions.md delete mode 100644 泰额版/Food Labeling Management Platform泰鄂/src/assets/773f0c39e1986271e9144596caac519f934a6ae6.png delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/assets/FreightSans Bold.ttf delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/PlaceholderView.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/alerts/AlertsView.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/dashboard/AlertsWidget.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/dashboard/Dashboard.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/dashboard/FoodWasteChart.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/dashboard/InfoChart.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/dashboard/RightPanel.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/dashboard/SensorsNetwork.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/dashboard/TasksWidget.tsx delete mode 100644 泰额版/Food Labeling Management Platform泰鄂/src/components/devices/DevicesView.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/figma/ImageWithFallback.tsx delete mode 100644 泰额版/Food Labeling Management Platform泰鄂/src/components/invoices/InvoicesView.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelBatchesView.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelCategoriesView.tsx delete mode 100644 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelTemplateEditor/ElementsPanel.tsx delete mode 100644 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelTemplateEditor/LabelCanvas.tsx delete mode 100644 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelTemplateEditor/PropertiesPanel.tsx delete mode 100644 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelTemplateEditor/index.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelTemplatesView.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelTypesView.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelsList.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/LabelsView.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/labels/MultipleOptionsView.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/layout/Header.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/layout/Layout.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/layout/Sidebar.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/locations/LocationsView.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/people/PeopleView.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/products/ProductsView.tsx delete mode 100644 泰额版/Food Labeling Management Platform泰鄂/src/components/qrcodes/QRCodesView.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/reports/ReportsView.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/training/TrainingView.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/accordion.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/alert-dialog.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/alert.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/aspect-ratio.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/avatar.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/badge.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/breadcrumb.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/button.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/calendar.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/card.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/carousel.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/chart.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/checkbox.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/collapsible.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/command.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/context-menu.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/dialog.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/drawer.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/dropdown-menu.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/form.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/hover-card.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/input-otp.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/input.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/label.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/menubar.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/navigation-menu.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/pagination.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/popover.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/progress.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/radio-group.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/resizable.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/scroll-area.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/select.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/separator.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/sheet.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/sidebar.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/skeleton.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/slider.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/sonner.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/switch.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/table.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/tabs.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/textarea.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/toggle-group.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/toggle.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/tooltip.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/use-mobile.ts delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/components/ui/utils.ts delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/guidelines/Guidelines.md delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/index.css delete mode 100644 泰额版/Food Labeling Management Platform泰鄂/src/lib/labelTemplateStorage.ts delete mode 100644 泰额版/Food Labeling Management Platform泰鄂/src/lib/presetLabelTemplates.ts delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/lib/supabaseClient.ts delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/main.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/services/dashboardService.ts delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/styles/globals.css delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/supabase/functions/server/index.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/supabase/functions/server/kv_store.tsx delete mode 100644 泰额版/Food Labeling Management Platform泰鄂/src/types/labelTemplate.ts delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/src/utils/supabase/info.tsx delete mode 100755 泰额版/Food Labeling Management Platform泰鄂/vite.config.ts diff --git a/泰额版/Food Labeling Management Platform/.npmrc b/泰额版/Food Labeling Management Platform/.npmrc new file mode 100755 index 0000000..5f97f99 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/.npmrc @@ -0,0 +1,3 @@ + + @jsr:registry=https://npm.jsr.io + \ No newline at end of file diff --git a/泰额版/Food Labeling Management Platform/LabelTemplateEditor_Full.md b/泰额版/Food Labeling Management Platform/LabelTemplateEditor_Full.md new file mode 100644 index 0000000..c8bc567 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/LabelTemplateEditor_Full.md @@ -0,0 +1,344 @@ +# 标签模板编辑器(Label Template Editor) +> **超级完整 · 前端开发规格说明** +> +> 适用对象:AI 前端开发模型 / 前端工程师 +> 技术范围:仅前端页面(Vue / React 均可) +> 数据范围:仅前端内存 / LocalStorage +> 不包含:后端、接口、登录、权限、真实打印 + +--- + +## 一、项目目标(必须理解) + +本系统用于实现一个 **所见即所得(WYSIWYG)的标签模板编辑器**,用于配置和设计可打印的商品标签、价格标签、营养标签等。 + +系统最终产物: +- 一个可交互的前端页面 +- 一份可导出的 JSON 标签模板结构 + +--- + +## 二、整体页面布局(强约束) + +页面必须为 **三栏布局**,不可合并、不可简化: + +``` +┌──────────────┬────────────────────────────┬────────────────────┐ +│ 左侧标签库 │ 中央标签画布 │ 右侧属性设置面板 │ +│ Elements │ Label Canvas │ Properties │ +└──────────────┴────────────────────────────┴────────────────────┘ +``` + +--- + +## 三、核心数据模型(绝对不可改) + +### 3.1 标签模板(LabelTemplate) + +```json +{ + "id": "template-001", + "name": "Price Label", + "labelType": "PRICE", + "unit": "cm", + "width": 6, + "height": 4, + "appliedLocation": "ALL", + "showRuler": true, + "elements": [] +} +``` + +字段说明: + +| 字段 | 说明 | +|----|----| +| id | 模板唯一标识 | +| name | 模板名称 | +| labelType | 标签类型(PRICE / NUTRITION / SHIPPING) | +| unit | 尺寸单位(cm / inch) | +| width | 标签宽度 | +| height | 标签高度 | +| appliedLocation | 适用门店 | +| showRuler | 是否显示刻度 | +| elements | 标签元素集合 | + +--- + +### 3.2 标签元素(LabelElement) + +```json +{ + "id": "el-001", + "type": "TEXT_PRICE", + "x": 10, + "y": 20, + "width": 120, + "height": 30, + "rotation": "horizontal", + "border": "none", + "config": {} +} +``` + +通用字段说明: + +| 字段 | 说明 | +|----|----| +| id | 元素唯一标识 | +| type | 元素类型 | +| x / y | 在画布中的坐标 | +| width / height | 元素尺寸 | +| rotation | horizontal / vertical | +| border | none / line / dotted | +| config | 元素专属配置 | + +--- + +## 四、左侧标签库(Elements Panel) +> **100% 对照 Excel,不允许遗漏** + +### A. 基础文字类(Excel: Text, Price, etc) + +| UI名称 | type | +|----|----| +| 普通文本 | TEXT_STATIC | +| 商品名称 | TEXT_PRODUCT | +| 商品价格 | TEXT_PRICE | + +--- + +### B. 编码类(Excel: Barcode / QR Code) + +| UI名称 | type | +|----|----| +| 一维条码 | BARCODE | +| 二维码 | QRCODE | + +--- + +### C. 图形类(Excel: Image, Logo) + +| UI名称 | type | +|----|----| +| 图片 / Logo | IMAGE | + +--- + +### D. 时间日期类(Excel: Current Date / Time / Duration) + +| UI名称 | type | +|----|----| +| 当前日期 | DATE | +| 当前时间 | TIME | +| 保质期 / 有效期 | DURATION | + +--- + +### E. 重量与计价类(Excel: Weight / Weight Based) + +| UI名称 | type | +|----|----| +| 重量 | WEIGHT | +| 按重量计价 | WEIGHT_PRICE | + +--- + +### F. 结构辅助类(Excel: Blank Space) + +| UI名称 | type | +|----|----| +| 空白占位 | BLANK | + +--- + +### G. 复合结构类(Excel: Nutrition Facts) + +| UI名称 | type | +|----|----| +| 营养成分表 | NUTRITION | + +--- + +## 五、中央画布(Label Canvas) + +### 5.1 画布规则 +- 画布尺寸 = 模板 width × height +- 根据 unit 自动换算 px +- 可显示刻度尺 +- 背景为白色 + +### 5.2 元素交互规则 +- 拖拽移动 +- 拖拽缩放(四角) +- 单击选中 +- Delete 删除 +- 仅允许单选 + +--- + +## 六、右侧属性面板(Properties Panel) + +### 6.1 状态一:未选中元素(模板级) + +字段: +- Template Name +- Starter Template +- Label Type +- Applied Location +- Width / Height +- Unit +- Show Ruler + +--- + +### 6.2 状态二:选中元素(通用) + +字段: +- X / Y +- Width / Height +- Rotation +- Border + +--- + +### 6.3 状态三:元素专属属性(完整定义) + +#### TEXT_STATIC / TEXT_PRODUCT / TEXT_PRICE + +```json +{ + "contentType": "STATIC | PRODUCT | PRICE", + "text": "Apple", + "fontFamily": "Arial", + "fontSize": 14, + "fontWeight": "normal | bold", + "textAlign": "left | center | right", + "prefix": "¥", + "decimal": 2 +} +``` + +--- + +#### BARCODE + +```json +{ + "barcodeType": "CODE128 | EAN13", + "data": "123456789", + "showText": true +} +``` + +--- + +#### QRCODE + +```json +{ + "data": "https://example.com", + "errorLevel": "L | M | Q | H" +} +``` + +--- + +#### IMAGE + +```json +{ + "src": "base64 / url", + "scaleMode": "contain | cover" +} +``` + +--- + +#### DATE / TIME / DURATION + +```json +{ + "format": "YYYY-MM-DD HH:mm", + "offsetDays": 3 +} +``` + +--- + +#### WEIGHT + +```json +{ + "unit": "g | kg | lb", + "value": 500 +} +``` + +--- + +#### WEIGHT_PRICE + +```json +{ + "unitPrice": 10, + "weight": 0.5, + "currency": "¥" +} +``` + +--- + +#### NUTRITION + +```json +{ + "calories": 120, + "fat": "5g", + "protein": "3g", + "carbs": "10g", + "layout": "standard" +} +``` + +--- + +## 七、模板保存与导出 + +- 保存至 LocalStorage +- Key:label-template-{id} +- 支持导出 JSON 文件 + +--- + +## 八、Excel Sheet 覆盖性校验(结论) + +Excel 中所有 Sheet 均已覆盖: +- Text, Price, etc +- Barcode +- QR Code +- Image, Logo +- Blank Space +- Nutrition Facts +- Weight Based +- Weight +- Duration +- Current Date +- Current Time +- Label Type +- How-to +- Label ID +- Multiple Options / DateTime + +**无遗漏功能点** + +--- + +## 九、给 AI 的最终开发指令(强约束) + +> 请严格按照本文档实现前端标签模板编辑器 +> 不得修改数据结构 +> 不得自行简化功能 +> 不得引入后端或接口 + +--- diff --git a/泰额版/Food Labeling Management Platform/README.md b/泰额版/Food Labeling Management Platform/README.md new file mode 100755 index 0000000..e40736b --- /dev/null +++ b/泰额版/Food Labeling Management Platform/README.md @@ -0,0 +1,11 @@ + + # Food Labeling Management Platform + + This is a code bundle for Food Labeling Management Platform. The original project is available at https://www.figma.com/design/PaL1ichhZXRYnFJQCNXHyo/Food-Labeling-Management-Platform. + + ## Running the code + + Run `npm i` to install the dependencies. + + Run `npm run dev` to start the development server. + \ No newline at end of file diff --git a/泰额版/Food Labeling Management Platform/build/assets/773f0c39e1986271e9144596caac519f934a6ae6-IDRCy9hk.png b/泰额版/Food Labeling Management Platform/build/assets/773f0c39e1986271e9144596caac519f934a6ae6-IDRCy9hk.png new file mode 100644 index 0000000..d7942ea Binary files /dev/null and b/泰额版/Food Labeling Management Platform/build/assets/773f0c39e1986271e9144596caac519f934a6ae6-IDRCy9hk.png differ diff --git a/泰额版/Food Labeling Management Platform/build/assets/FreightSans Bold-CftzBXfG.ttf b/泰额版/Food Labeling Management Platform/build/assets/FreightSans Bold-CftzBXfG.ttf new file mode 100644 index 0000000..3fa144b Binary files /dev/null and b/泰额版/Food Labeling Management Platform/build/assets/FreightSans Bold-CftzBXfG.ttf differ diff --git a/泰额版/Food Labeling Management Platform/build/assets/index-Casc5CPp.js b/泰额版/Food Labeling Management Platform/build/assets/index-Casc5CPp.js new file mode 100644 index 0000000..b23b20b --- /dev/null +++ b/泰额版/Food Labeling Management Platform/build/assets/index-Casc5CPp.js @@ -0,0 +1,527 @@ +function Y5(e,t){for(var r=0;rn[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const a of i)if(a.type==="childList")for(const s of a.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&n(s)}).observe(document,{childList:!0,subtree:!0});function r(i){const a={};return i.integrity&&(a.integrity=i.integrity),i.referrerPolicy&&(a.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?a.credentials="include":i.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function n(i){if(i.ep)return;i.ep=!0;const a=r(i);fetch(i.href,a)}})();var Sf=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function at(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var qv={exports:{}},Ll={},Uv={exports:{}},Qe={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var SO;function Q5(){if(SO)return Qe;SO=1;var e=Symbol.for("react.element"),t=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),a=Symbol.for("react.provider"),s=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),f=Symbol.for("react.suspense"),c=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),p=Symbol.iterator;function m(z){return z===null||typeof z!="object"?null:(z=p&&z[p]||z["@@iterator"],typeof z=="function"?z:null)}var g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w=Object.assign,y={};function b(z,K,se){this.props=z,this.context=K,this.refs=y,this.updater=se||g}b.prototype.isReactComponent={},b.prototype.setState=function(z,K){if(typeof z!="object"&&typeof z!="function"&&z!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,z,K,"setState")},b.prototype.forceUpdate=function(z){this.updater.enqueueForceUpdate(this,z,"forceUpdate")};function _(){}_.prototype=b.prototype;function j(z,K,se){this.props=z,this.context=K,this.refs=y,this.updater=se||g}var P=j.prototype=new _;P.constructor=j,w(P,b.prototype),P.isPureReactComponent=!0;var k=Array.isArray,A=Object.prototype.hasOwnProperty,N={current:null},C={key:!0,ref:!0,__self:!0,__source:!0};function T(z,K,se){var pe,G={},Q=null,J=null;if(K!=null)for(pe in K.ref!==void 0&&(J=K.ref),K.key!==void 0&&(Q=""+K.key),K)A.call(K,pe)&&!C.hasOwnProperty(pe)&&(G[pe]=K[pe]);var ce=arguments.length-2;if(ce===1)G.children=se;else if(1>>1,K=$[z];if(0>>1;zi(G,re))Qi(J,G)?($[z]=J,$[Q]=re,z=Q):($[z]=G,$[pe]=re,z=pe);else if(Qi(J,re))$[z]=J,$[Q]=re,z=Q;else break e}}return ee}function i($,ee){var re=$.sortIndex-ee.sortIndex;return re!==0?re:$.id-ee.id}if(typeof performance=="object"&&typeof performance.now=="function"){var a=performance;e.unstable_now=function(){return a.now()}}else{var s=Date,u=s.now();e.unstable_now=function(){return s.now()-u}}var f=[],c=[],d=1,p=null,m=3,g=!1,w=!1,y=!1,b=typeof setTimeout=="function"?setTimeout:null,_=typeof clearTimeout=="function"?clearTimeout:null,j=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function P($){for(var ee=r(c);ee!==null;){if(ee.callback===null)n(c);else if(ee.startTime<=$)n(c),ee.sortIndex=ee.expirationTime,t(f,ee);else break;ee=r(c)}}function k($){if(y=!1,P($),!w)if(r(f)!==null)w=!0,X(A);else{var ee=r(c);ee!==null&&Y(k,ee.startTime-$)}}function A($,ee){w=!1,y&&(y=!1,_(T),T=-1),g=!0;var re=m;try{for(P(ee),p=r(f);p!==null&&(!(p.expirationTime>ee)||$&&!I());){var z=p.callback;if(typeof z=="function"){p.callback=null,m=p.priorityLevel;var K=z(p.expirationTime<=ee);ee=e.unstable_now(),typeof K=="function"?p.callback=K:p===r(f)&&n(f),P(ee)}else n(f);p=r(f)}if(p!==null)var se=!0;else{var pe=r(c);pe!==null&&Y(k,pe.startTime-ee),se=!1}return se}finally{p=null,m=re,g=!1}}var N=!1,C=null,T=-1,M=5,F=-1;function I(){return!(e.unstable_now()-F$||125<$?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):M=0<$?Math.floor(1e3/$):5},e.unstable_getCurrentPriorityLevel=function(){return m},e.unstable_getFirstCallbackNode=function(){return r(f)},e.unstable_next=function($){switch(m){case 1:case 2:case 3:var ee=3;break;default:ee=m}var re=m;m=ee;try{return $()}finally{m=re}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function($,ee){switch($){case 1:case 2:case 3:case 4:case 5:break;default:$=3}var re=m;m=$;try{return ee()}finally{m=re}},e.unstable_scheduleCallback=function($,ee,re){var z=e.unstable_now();switch(typeof re=="object"&&re!==null?(re=re.delay,re=typeof re=="number"&&0z?($.sortIndex=re,t(c,$),r(f)===null&&$===r(c)&&(y?(_(T),T=-1):y=!0,Y(k,re-z))):($.sortIndex=K,t(f,$),w||g||(w=!0,X(A))),$},e.unstable_shouldYield=I,e.unstable_wrapCallback=function($){var ee=m;return function(){var re=m;m=ee;try{return $.apply(this,arguments)}finally{m=re}}}})(Vv)),Vv}var PO;function t8(){return PO||(PO=1,Hv.exports=e8()),Hv.exports}/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var AO;function r8(){if(AO)return _r;AO=1;var e=Kh(),t=t8();function r(o){for(var l="https://reactjs.org/docs/error-decoder.html?invariant="+o,v=1;v"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),f=Object.prototype.hasOwnProperty,c=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,d={},p={};function m(o){return f.call(p,o)?!0:f.call(d,o)?!1:c.test(o)?p[o]=!0:(d[o]=!0,!1)}function g(o,l,v,x){if(v!==null&&v.type===0)return!1;switch(typeof l){case"function":case"symbol":return!0;case"boolean":return x?!1:v!==null?!v.acceptsBooleans:(o=o.toLowerCase().slice(0,5),o!=="data-"&&o!=="aria-");default:return!1}}function w(o,l,v,x){if(l===null||typeof l>"u"||g(o,l,v,x))return!0;if(x)return!1;if(v!==null)switch(v.type){case 3:return!l;case 4:return l===!1;case 5:return isNaN(l);case 6:return isNaN(l)||1>l}return!1}function y(o,l,v,x,S,O,R){this.acceptsBooleans=l===2||l===3||l===4,this.attributeName=x,this.attributeNamespace=S,this.mustUseProperty=v,this.propertyName=o,this.type=l,this.sanitizeURL=O,this.removeEmptyString=R}var b={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(o){b[o]=new y(o,0,!1,o,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(o){var l=o[0];b[l]=new y(l,1,!1,o[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(o){b[o]=new y(o,2,!1,o.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(o){b[o]=new y(o,2,!1,o,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(o){b[o]=new y(o,3,!1,o.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(o){b[o]=new y(o,3,!0,o,null,!1,!1)}),["capture","download"].forEach(function(o){b[o]=new y(o,4,!1,o,null,!1,!1)}),["cols","rows","size","span"].forEach(function(o){b[o]=new y(o,6,!1,o,null,!1,!1)}),["rowSpan","start"].forEach(function(o){b[o]=new y(o,5,!1,o.toLowerCase(),null,!1,!1)});var _=/[\-:]([a-z])/g;function j(o){return o[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(o){var l=o.replace(_,j);b[l]=new y(l,1,!1,o,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(o){var l=o.replace(_,j);b[l]=new y(l,1,!1,o,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(o){var l=o.replace(_,j);b[l]=new y(l,1,!1,o,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(o){b[o]=new y(o,1,!1,o.toLowerCase(),null,!1,!1)}),b.xlinkHref=new y("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(o){b[o]=new y(o,1,!1,o.toLowerCase(),null,!0,!0)});function P(o,l,v,x){var S=b.hasOwnProperty(l)?b[l]:null;(S!==null?S.type!==0:x||!(2B||S[R]!==O[B]){var W=` +`+S[R].replace(" at new "," at ");return o.displayName&&W.includes("")&&(W=W.replace("",o.displayName)),W}while(1<=R&&0<=B);break}}}finally{se=!1,Error.prepareStackTrace=v}return(o=o?o.displayName||o.name:"")?K(o):""}function G(o){switch(o.tag){case 5:return K(o.type);case 16:return K("Lazy");case 13:return K("Suspense");case 19:return K("SuspenseList");case 0:case 2:case 15:return o=pe(o.type,!1),o;case 11:return o=pe(o.type.render,!1),o;case 1:return o=pe(o.type,!0),o;default:return""}}function Q(o){if(o==null)return null;if(typeof o=="function")return o.displayName||o.name||null;if(typeof o=="string")return o;switch(o){case C:return"Fragment";case N:return"Portal";case M:return"Profiler";case T:return"StrictMode";case q:return"Suspense";case U:return"SuspenseList"}if(typeof o=="object")switch(o.$$typeof){case I:return(o.displayName||"Context")+".Consumer";case F:return(o._context.displayName||"Context")+".Provider";case D:var l=o.render;return o=o.displayName,o||(o=l.displayName||l.name||"",o=o!==""?"ForwardRef("+o+")":"ForwardRef"),o;case H:return l=o.displayName||null,l!==null?l:Q(o.type)||"Memo";case X:l=o._payload,o=o._init;try{return Q(o(l))}catch{}}return null}function J(o){var l=o.type;switch(o.tag){case 24:return"Cache";case 9:return(l.displayName||"Context")+".Consumer";case 10:return(l._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return o=l.render,o=o.displayName||o.name||"",l.displayName||(o!==""?"ForwardRef("+o+")":"ForwardRef");case 7:return"Fragment";case 5:return l;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Q(l);case 8:return l===T?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof l=="function")return l.displayName||l.name||null;if(typeof l=="string")return l}return null}function ce(o){switch(typeof o){case"boolean":case"number":case"string":case"undefined":return o;case"object":return o;default:return""}}function ie(o){var l=o.type;return(o=o.nodeName)&&o.toLowerCase()==="input"&&(l==="checkbox"||l==="radio")}function fe(o){var l=ie(o)?"checked":"value",v=Object.getOwnPropertyDescriptor(o.constructor.prototype,l),x=""+o[l];if(!o.hasOwnProperty(l)&&typeof v<"u"&&typeof v.get=="function"&&typeof v.set=="function"){var S=v.get,O=v.set;return Object.defineProperty(o,l,{configurable:!0,get:function(){return S.call(this)},set:function(R){x=""+R,O.call(this,R)}}),Object.defineProperty(o,l,{enumerable:v.enumerable}),{getValue:function(){return x},setValue:function(R){x=""+R},stopTracking:function(){o._valueTracker=null,delete o[l]}}}}function xe(o){o._valueTracker||(o._valueTracker=fe(o))}function ae(o){if(!o)return!1;var l=o._valueTracker;if(!l)return!0;var v=l.getValue(),x="";return o&&(x=ie(o)?o.checked?"true":"false":o.value),o=x,o!==v?(l.setValue(o),!0):!1}function Be(o){if(o=o||(typeof document<"u"?document:void 0),typeof o>"u")return null;try{return o.activeElement||o.body}catch{return o.body}}function De(o,l){var v=l.checked;return re({},l,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:v??o._wrapperState.initialChecked})}function ot(o,l){var v=l.defaultValue==null?"":l.defaultValue,x=l.checked!=null?l.checked:l.defaultChecked;v=ce(l.value!=null?l.value:v),o._wrapperState={initialChecked:x,initialValue:v,controlled:l.type==="checkbox"||l.type==="radio"?l.checked!=null:l.value!=null}}function et(o,l){l=l.checked,l!=null&&P(o,"checked",l,!1)}function ct(o,l){et(o,l);var v=ce(l.value),x=l.type;if(v!=null)x==="number"?(v===0&&o.value===""||o.value!=v)&&(o.value=""+v):o.value!==""+v&&(o.value=""+v);else if(x==="submit"||x==="reset"){o.removeAttribute("value");return}l.hasOwnProperty("value")?Ut(o,l.type,v):l.hasOwnProperty("defaultValue")&&Ut(o,l.type,ce(l.defaultValue)),l.checked==null&&l.defaultChecked!=null&&(o.defaultChecked=!!l.defaultChecked)}function qt(o,l,v){if(l.hasOwnProperty("value")||l.hasOwnProperty("defaultValue")){var x=l.type;if(!(x!=="submit"&&x!=="reset"||l.value!==void 0&&l.value!==null))return;l=""+o._wrapperState.initialValue,v||l===o.value||(o.value=l),o.defaultValue=l}v=o.name,v!==""&&(o.name=""),o.defaultChecked=!!o._wrapperState.initialChecked,v!==""&&(o.name=v)}function Ut(o,l,v){(l!=="number"||Be(o.ownerDocument)!==o)&&(v==null?o.defaultValue=""+o._wrapperState.initialValue:o.defaultValue!==""+v&&(o.defaultValue=""+v))}var Pr=Array.isArray;function Jt(o,l,v,x){if(o=o.options,l){l={};for(var S=0;S"+l.valueOf().toString()+"",l=hu.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;l.firstChild;)o.appendChild(l.firstChild)}});function Js(o,l){if(l){var v=o.firstChild;if(v&&v===o.lastChild&&v.nodeType===3){v.nodeValue=l;return}}o.textContent=l}var el={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},e$=["Webkit","ms","Moz","O"];Object.keys(el).forEach(function(o){e$.forEach(function(l){l=l+o.charAt(0).toUpperCase()+o.substring(1),el[l]=el[o]})});function LS(o,l,v){return l==null||typeof l=="boolean"||l===""?"":v||typeof l!="number"||l===0||el.hasOwnProperty(o)&&el[o]?(""+l).trim():l+"px"}function $S(o,l){o=o.style;for(var v in l)if(l.hasOwnProperty(v)){var x=v.indexOf("--")===0,S=LS(v,l[v],x);v==="float"&&(v="cssFloat"),x?o.setProperty(v,S):o[v]=S}}var t$=re({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function em(o,l){if(l){if(t$[o]&&(l.children!=null||l.dangerouslySetInnerHTML!=null))throw Error(r(137,o));if(l.dangerouslySetInnerHTML!=null){if(l.children!=null)throw Error(r(60));if(typeof l.dangerouslySetInnerHTML!="object"||!("__html"in l.dangerouslySetInnerHTML))throw Error(r(61))}if(l.style!=null&&typeof l.style!="object")throw Error(r(62))}}function tm(o,l){if(o.indexOf("-")===-1)return typeof l.is=="string";switch(o){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var rm=null;function nm(o){return o=o.target||o.srcElement||window,o.correspondingUseElement&&(o=o.correspondingUseElement),o.nodeType===3?o.parentNode:o}var im=null,fo=null,ho=null;function BS(o){if(o=Sl(o)){if(typeof im!="function")throw Error(r(280));var l=o.stateNode;l&&(l=Du(l),im(o.stateNode,o.type,l))}}function FS(o){fo?ho?ho.push(o):ho=[o]:fo=o}function zS(){if(fo){var o=fo,l=ho;if(ho=fo=null,BS(o),l)for(o=0;o>>=0,o===0?32:31-(d$(o)/h$|0)|0}var yu=64,xu=4194304;function il(o){switch(o&-o){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return o&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return o&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return o}}function bu(o,l){var v=o.pendingLanes;if(v===0)return 0;var x=0,S=o.suspendedLanes,O=o.pingedLanes,R=v&268435455;if(R!==0){var B=R&~S;B!==0?x=il(B):(O&=R,O!==0&&(x=il(O)))}else R=v&~S,R!==0?x=il(R):O!==0&&(x=il(O));if(x===0)return 0;if(l!==0&&l!==x&&(l&S)===0&&(S=x&-x,O=l&-l,S>=O||S===16&&(O&4194240)!==0))return l;if((x&4)!==0&&(x|=v&16),l=o.entangledLanes,l!==0)for(o=o.entanglements,l&=x;0v;v++)l.push(o);return l}function al(o,l,v){o.pendingLanes|=l,l!==536870912&&(o.suspendedLanes=0,o.pingedLanes=0),o=o.eventTimes,l=31-un(l),o[l]=v}function g$(o,l){var v=o.pendingLanes&~l;o.pendingLanes=l,o.suspendedLanes=0,o.pingedLanes=0,o.expiredLanes&=l,o.mutableReadLanes&=l,o.entangledLanes&=l,l=o.entanglements;var x=o.eventTimes;for(o=o.expirationTimes;0=hl),m_=" ",v_=!1;function g_(o,l){switch(o){case"keyup":return H$.indexOf(l.keyCode)!==-1;case"keydown":return l.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function y_(o){return o=o.detail,typeof o=="object"&&"data"in o?o.data:null}var vo=!1;function G$(o,l){switch(o){case"compositionend":return y_(l);case"keypress":return l.which!==32?null:(v_=!0,m_);case"textInput":return o=l.data,o===m_&&v_?null:o;default:return null}}function X$(o,l){if(vo)return o==="compositionend"||!Sm&&g_(o,l)?(o=c_(),Ou=vm=Ii=null,vo=!1,o):null;switch(o){case"paste":return null;case"keypress":if(!(l.ctrlKey||l.altKey||l.metaKey)||l.ctrlKey&&l.altKey){if(l.char&&1=l)return{node:v,offset:l-o};o=x}e:{for(;v;){if(v.nextSibling){v=v.nextSibling;break e}v=v.parentNode}v=void 0}v=O_(v)}}function P_(o,l){return o&&l?o===l?!0:o&&o.nodeType===3?!1:l&&l.nodeType===3?P_(o,l.parentNode):"contains"in o?o.contains(l):o.compareDocumentPosition?!!(o.compareDocumentPosition(l)&16):!1:!1}function A_(){for(var o=window,l=Be();l instanceof o.HTMLIFrameElement;){try{var v=typeof l.contentWindow.location.href=="string"}catch{v=!1}if(v)o=l.contentWindow;else break;l=Be(o.document)}return l}function Om(o){var l=o&&o.nodeName&&o.nodeName.toLowerCase();return l&&(l==="input"&&(o.type==="text"||o.type==="search"||o.type==="tel"||o.type==="url"||o.type==="password")||l==="textarea"||o.contentEditable==="true")}function n5(o){var l=A_(),v=o.focusedElem,x=o.selectionRange;if(l!==v&&v&&v.ownerDocument&&P_(v.ownerDocument.documentElement,v)){if(x!==null&&Om(v)){if(l=x.start,o=x.end,o===void 0&&(o=l),"selectionStart"in v)v.selectionStart=l,v.selectionEnd=Math.min(o,v.value.length);else if(o=(l=v.ownerDocument||document)&&l.defaultView||window,o.getSelection){o=o.getSelection();var S=v.textContent.length,O=Math.min(x.start,S);x=x.end===void 0?O:Math.min(x.end,S),!o.extend&&O>x&&(S=x,x=O,O=S),S=E_(v,O);var R=E_(v,x);S&&R&&(o.rangeCount!==1||o.anchorNode!==S.node||o.anchorOffset!==S.offset||o.focusNode!==R.node||o.focusOffset!==R.offset)&&(l=l.createRange(),l.setStart(S.node,S.offset),o.removeAllRanges(),O>x?(o.addRange(l),o.extend(R.node,R.offset)):(l.setEnd(R.node,R.offset),o.addRange(l)))}}for(l=[],o=v;o=o.parentNode;)o.nodeType===1&&l.push({element:o,left:o.scrollLeft,top:o.scrollTop});for(typeof v.focus=="function"&&v.focus(),v=0;v=document.documentMode,go=null,Em=null,gl=null,Pm=!1;function N_(o,l,v){var x=v.window===v?v.document:v.nodeType===9?v:v.ownerDocument;Pm||go==null||go!==Be(x)||(x=go,"selectionStart"in x&&Om(x)?x={start:x.selectionStart,end:x.selectionEnd}:(x=(x.ownerDocument&&x.ownerDocument.defaultView||window).getSelection(),x={anchorNode:x.anchorNode,anchorOffset:x.anchorOffset,focusNode:x.focusNode,focusOffset:x.focusOffset}),gl&&vl(gl,x)||(gl=x,x=Ru(Em,"onSelect"),0So||(o.current=Bm[So],Bm[So]=null,So--)}function ht(o,l){So++,Bm[So]=o.current,o.current=l}var Bi={},nr=$i(Bi),yr=$i(!1),ma=Bi;function _o(o,l){var v=o.type.contextTypes;if(!v)return Bi;var x=o.stateNode;if(x&&x.__reactInternalMemoizedUnmaskedChildContext===l)return x.__reactInternalMemoizedMaskedChildContext;var S={},O;for(O in v)S[O]=l[O];return x&&(o=o.stateNode,o.__reactInternalMemoizedUnmaskedChildContext=l,o.__reactInternalMemoizedMaskedChildContext=S),S}function xr(o){return o=o.childContextTypes,o!=null}function Lu(){yt(yr),yt(nr)}function W_(o,l,v){if(nr.current!==Bi)throw Error(r(168));ht(nr,l),ht(yr,v)}function H_(o,l,v){var x=o.stateNode;if(l=l.childContextTypes,typeof x.getChildContext!="function")return v;x=x.getChildContext();for(var S in x)if(!(S in l))throw Error(r(108,J(o)||"Unknown",S));return re({},v,x)}function $u(o){return o=(o=o.stateNode)&&o.__reactInternalMemoizedMergedChildContext||Bi,ma=nr.current,ht(nr,o),ht(yr,yr.current),!0}function V_(o,l,v){var x=o.stateNode;if(!x)throw Error(r(169));v?(o=H_(o,l,ma),x.__reactInternalMemoizedMergedChildContext=o,yt(yr),yt(nr),ht(nr,o)):yt(yr),ht(yr,v)}var ei=null,Bu=!1,Fm=!1;function G_(o){ei===null?ei=[o]:ei.push(o)}function m5(o){Bu=!0,G_(o)}function Fi(){if(!Fm&&ei!==null){Fm=!0;var o=0,l=ut;try{var v=ei;for(ut=1;o>=R,S-=R,ti=1<<32-un(l)+S|v<Le?(Vt=Re,Re=null):Vt=Re.sibling;var tt=ue(Z,Re,te[Le],ve);if(tt===null){Re===null&&(Re=Vt);break}o&&Re&&tt.alternate===null&&l(Z,Re),V=O(tt,V,Le),Te===null?ke=tt:Te.sibling=tt,Te=tt,Re=Vt}if(Le===te.length)return v(Z,Re),bt&&ga(Z,Le),ke;if(Re===null){for(;LeLe?(Vt=Re,Re=null):Vt=Re.sibling;var Ki=ue(Z,Re,tt.value,ve);if(Ki===null){Re===null&&(Re=Vt);break}o&&Re&&Ki.alternate===null&&l(Z,Re),V=O(Ki,V,Le),Te===null?ke=Ki:Te.sibling=Ki,Te=Ki,Re=Vt}if(tt.done)return v(Z,Re),bt&&ga(Z,Le),ke;if(Re===null){for(;!tt.done;Le++,tt=te.next())tt=he(Z,tt.value,ve),tt!==null&&(V=O(tt,V,Le),Te===null?ke=tt:Te.sibling=tt,Te=tt);return bt&&ga(Z,Le),ke}for(Re=x(Z,Re);!tt.done;Le++,tt=te.next())tt=we(Re,Z,Le,tt.value,ve),tt!==null&&(o&&tt.alternate!==null&&Re.delete(tt.key===null?Le:tt.key),V=O(tt,V,Le),Te===null?ke=tt:Te.sibling=tt,Te=tt);return o&&Re.forEach(function(K5){return l(Z,K5)}),bt&&ga(Z,Le),ke}function Nt(Z,V,te,ve){if(typeof te=="object"&&te!==null&&te.type===C&&te.key===null&&(te=te.props.children),typeof te=="object"&&te!==null){switch(te.$$typeof){case A:e:{for(var ke=te.key,Te=V;Te!==null;){if(Te.key===ke){if(ke=te.type,ke===C){if(Te.tag===7){v(Z,Te.sibling),V=S(Te,te.props.children),V.return=Z,Z=V;break e}}else if(Te.elementType===ke||typeof ke=="object"&&ke!==null&&ke.$$typeof===X&&J_(ke)===Te.type){v(Z,Te.sibling),V=S(Te,te.props),V.ref=_l(Z,Te,te),V.return=Z,Z=V;break e}v(Z,Te);break}else l(Z,Te);Te=Te.sibling}te.type===C?(V=Oa(te.props.children,Z.mode,ve,te.key),V.return=Z,Z=V):(ve=pf(te.type,te.key,te.props,null,Z.mode,ve),ve.ref=_l(Z,V,te),ve.return=Z,Z=ve)}return R(Z);case N:e:{for(Te=te.key;V!==null;){if(V.key===Te)if(V.tag===4&&V.stateNode.containerInfo===te.containerInfo&&V.stateNode.implementation===te.implementation){v(Z,V.sibling),V=S(V,te.children||[]),V.return=Z,Z=V;break e}else{v(Z,V);break}else l(Z,V);V=V.sibling}V=Lv(te,Z.mode,ve),V.return=Z,Z=V}return R(Z);case X:return Te=te._init,Nt(Z,V,Te(te._payload),ve)}if(Pr(te))return Ee(Z,V,te,ve);if(ee(te))return Ce(Z,V,te,ve);Uu(Z,te)}return typeof te=="string"&&te!==""||typeof te=="number"?(te=""+te,V!==null&&V.tag===6?(v(Z,V.sibling),V=S(V,te),V.return=Z,Z=V):(v(Z,V),V=Dv(te,Z.mode,ve),V.return=Z,Z=V),R(Z)):v(Z,V)}return Nt}var Po=ej(!0),tj=ej(!1),Wu=$i(null),Hu=null,Ao=null,Vm=null;function Gm(){Vm=Ao=Hu=null}function Xm(o){var l=Wu.current;yt(Wu),o._currentValue=l}function Km(o,l,v){for(;o!==null;){var x=o.alternate;if((o.childLanes&l)!==l?(o.childLanes|=l,x!==null&&(x.childLanes|=l)):x!==null&&(x.childLanes&l)!==l&&(x.childLanes|=l),o===v)break;o=o.return}}function No(o,l){Hu=o,Vm=Ao=null,o=o.dependencies,o!==null&&o.firstContext!==null&&((o.lanes&l)!==0&&(br=!0),o.firstContext=null)}function Xr(o){var l=o._currentValue;if(Vm!==o)if(o={context:o,memoizedValue:l,next:null},Ao===null){if(Hu===null)throw Error(r(308));Ao=o,Hu.dependencies={lanes:0,firstContext:o}}else Ao=Ao.next=o;return l}var ya=null;function Ym(o){ya===null?ya=[o]:ya.push(o)}function rj(o,l,v,x){var S=l.interleaved;return S===null?(v.next=v,Ym(l)):(v.next=S.next,S.next=v),l.interleaved=v,ni(o,x)}function ni(o,l){o.lanes|=l;var v=o.alternate;for(v!==null&&(v.lanes|=l),v=o,o=o.return;o!==null;)o.childLanes|=l,v=o.alternate,v!==null&&(v.childLanes|=l),v=o,o=o.return;return v.tag===3?v.stateNode:null}var zi=!1;function Qm(o){o.updateQueue={baseState:o.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function nj(o,l){o=o.updateQueue,l.updateQueue===o&&(l.updateQueue={baseState:o.baseState,firstBaseUpdate:o.firstBaseUpdate,lastBaseUpdate:o.lastBaseUpdate,shared:o.shared,effects:o.effects})}function ii(o,l){return{eventTime:o,lane:l,tag:0,payload:null,callback:null,next:null}}function qi(o,l,v){var x=o.updateQueue;if(x===null)return null;if(x=x.shared,(Je&2)!==0){var S=x.pending;return S===null?l.next=l:(l.next=S.next,S.next=l),x.pending=l,ni(o,v)}return S=x.interleaved,S===null?(l.next=l,Ym(x)):(l.next=S.next,S.next=l),x.interleaved=l,ni(o,v)}function Vu(o,l,v){if(l=l.updateQueue,l!==null&&(l=l.shared,(v&4194240)!==0)){var x=l.lanes;x&=o.pendingLanes,v|=x,l.lanes=v,fm(o,v)}}function ij(o,l){var v=o.updateQueue,x=o.alternate;if(x!==null&&(x=x.updateQueue,v===x)){var S=null,O=null;if(v=v.firstBaseUpdate,v!==null){do{var R={eventTime:v.eventTime,lane:v.lane,tag:v.tag,payload:v.payload,callback:v.callback,next:null};O===null?S=O=R:O=O.next=R,v=v.next}while(v!==null);O===null?S=O=l:O=O.next=l}else S=O=l;v={baseState:x.baseState,firstBaseUpdate:S,lastBaseUpdate:O,shared:x.shared,effects:x.effects},o.updateQueue=v;return}o=v.lastBaseUpdate,o===null?v.firstBaseUpdate=l:o.next=l,v.lastBaseUpdate=l}function Gu(o,l,v,x){var S=o.updateQueue;zi=!1;var O=S.firstBaseUpdate,R=S.lastBaseUpdate,B=S.shared.pending;if(B!==null){S.shared.pending=null;var W=B,ne=W.next;W.next=null,R===null?O=ne:R.next=ne,R=W;var de=o.alternate;de!==null&&(de=de.updateQueue,B=de.lastBaseUpdate,B!==R&&(B===null?de.firstBaseUpdate=ne:B.next=ne,de.lastBaseUpdate=W))}if(O!==null){var he=S.baseState;R=0,de=ne=W=null,B=O;do{var ue=B.lane,we=B.eventTime;if((x&ue)===ue){de!==null&&(de=de.next={eventTime:we,lane:0,tag:B.tag,payload:B.payload,callback:B.callback,next:null});e:{var Ee=o,Ce=B;switch(ue=l,we=v,Ce.tag){case 1:if(Ee=Ce.payload,typeof Ee=="function"){he=Ee.call(we,he,ue);break e}he=Ee;break e;case 3:Ee.flags=Ee.flags&-65537|128;case 0:if(Ee=Ce.payload,ue=typeof Ee=="function"?Ee.call(we,he,ue):Ee,ue==null)break e;he=re({},he,ue);break e;case 2:zi=!0}}B.callback!==null&&B.lane!==0&&(o.flags|=64,ue=S.effects,ue===null?S.effects=[B]:ue.push(B))}else we={eventTime:we,lane:ue,tag:B.tag,payload:B.payload,callback:B.callback,next:null},de===null?(ne=de=we,W=he):de=de.next=we,R|=ue;if(B=B.next,B===null){if(B=S.shared.pending,B===null)break;ue=B,B=ue.next,ue.next=null,S.lastBaseUpdate=ue,S.shared.pending=null}}while(!0);if(de===null&&(W=he),S.baseState=W,S.firstBaseUpdate=ne,S.lastBaseUpdate=de,l=S.shared.interleaved,l!==null){S=l;do R|=S.lane,S=S.next;while(S!==l)}else O===null&&(S.shared.lanes=0);wa|=R,o.lanes=R,o.memoizedState=he}}function aj(o,l,v){if(o=l.effects,l.effects=null,o!==null)for(l=0;lv?v:4,o(!0);var x=rv.transition;rv.transition={};try{o(!1),l()}finally{ut=v,rv.transition=x}}function jj(){return Kr().memoizedState}function x5(o,l,v){var x=Vi(o);if(v={lane:x,action:v,hasEagerState:!1,eagerState:null,next:null},Oj(o))Ej(l,v);else if(v=rj(o,l,v,x),v!==null){var S=fr();vn(v,o,x,S),Pj(v,l,x)}}function b5(o,l,v){var x=Vi(o),S={lane:x,action:v,hasEagerState:!1,eagerState:null,next:null};if(Oj(o))Ej(l,S);else{var O=o.alternate;if(o.lanes===0&&(O===null||O.lanes===0)&&(O=l.lastRenderedReducer,O!==null))try{var R=l.lastRenderedState,B=O(R,v);if(S.hasEagerState=!0,S.eagerState=B,fn(B,R)){var W=l.interleaved;W===null?(S.next=S,Ym(l)):(S.next=W.next,W.next=S),l.interleaved=S;return}}catch{}finally{}v=rj(o,l,S,x),v!==null&&(S=fr(),vn(v,o,x,S),Pj(v,l,x))}}function Oj(o){var l=o.alternate;return o===_t||l!==null&&l===_t}function Ej(o,l){Pl=Yu=!0;var v=o.pending;v===null?l.next=l:(l.next=v.next,v.next=l),o.pending=l}function Pj(o,l,v){if((v&4194240)!==0){var x=l.lanes;x&=o.pendingLanes,v|=x,l.lanes=v,fm(o,v)}}var Ju={readContext:Xr,useCallback:ir,useContext:ir,useEffect:ir,useImperativeHandle:ir,useInsertionEffect:ir,useLayoutEffect:ir,useMemo:ir,useReducer:ir,useRef:ir,useState:ir,useDebugValue:ir,useDeferredValue:ir,useTransition:ir,useMutableSource:ir,useSyncExternalStore:ir,useId:ir,unstable_isNewReconciler:!1},w5={readContext:Xr,useCallback:function(o,l){return kn().memoizedState=[o,l===void 0?null:l],o},useContext:Xr,useEffect:vj,useImperativeHandle:function(o,l,v){return v=v!=null?v.concat([o]):null,Qu(4194308,4,xj.bind(null,l,o),v)},useLayoutEffect:function(o,l){return Qu(4194308,4,o,l)},useInsertionEffect:function(o,l){return Qu(4,2,o,l)},useMemo:function(o,l){var v=kn();return l=l===void 0?null:l,o=o(),v.memoizedState=[o,l],o},useReducer:function(o,l,v){var x=kn();return l=v!==void 0?v(l):l,x.memoizedState=x.baseState=l,o={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:o,lastRenderedState:l},x.queue=o,o=o.dispatch=x5.bind(null,_t,o),[x.memoizedState,o]},useRef:function(o){var l=kn();return o={current:o},l.memoizedState=o},useState:pj,useDebugValue:cv,useDeferredValue:function(o){return kn().memoizedState=o},useTransition:function(){var o=pj(!1),l=o[0];return o=y5.bind(null,o[1]),kn().memoizedState=o,[l,o]},useMutableSource:function(){},useSyncExternalStore:function(o,l,v){var x=_t,S=kn();if(bt){if(v===void 0)throw Error(r(407));v=v()}else{if(v=l(),Ht===null)throw Error(r(349));(ba&30)!==0||cj(x,l,v)}S.memoizedState=v;var O={value:v,getSnapshot:l};return S.queue=O,vj(fj.bind(null,x,O,o),[o]),x.flags|=2048,Cl(9,uj.bind(null,x,O,v,l),void 0,null),v},useId:function(){var o=kn(),l=Ht.identifierPrefix;if(bt){var v=ri,x=ti;v=(x&~(1<<32-un(x)-1)).toString(32)+v,l=":"+l+"R"+v,v=Al++,0<\/script>",o=o.removeChild(o.firstChild)):typeof x.is=="string"?o=R.createElement(v,{is:x.is}):(o=R.createElement(v),v==="select"&&(R=o,x.multiple?R.multiple=!0:x.size&&(R.size=x.size))):o=R.createElementNS(o,v),o[Nn]=l,o[wl]=x,Gj(o,l,!1,!1),l.stateNode=o;e:{switch(R=tm(v,x),v){case"dialog":gt("cancel",o),gt("close",o),S=x;break;case"iframe":case"object":case"embed":gt("load",o),S=x;break;case"video":case"audio":for(S=0;SMo&&(l.flags|=128,x=!0,kl(O,!1),l.lanes=4194304)}else{if(!x)if(o=Xu(R),o!==null){if(l.flags|=128,x=!0,v=o.updateQueue,v!==null&&(l.updateQueue=v,l.flags|=4),kl(O,!0),O.tail===null&&O.tailMode==="hidden"&&!R.alternate&&!bt)return ar(l),null}else 2*At()-O.renderingStartTime>Mo&&v!==1073741824&&(l.flags|=128,x=!0,kl(O,!1),l.lanes=4194304);O.isBackwards?(R.sibling=l.child,l.child=R):(v=O.last,v!==null?v.sibling=R:l.child=R,O.last=R)}return O.tail!==null?(l=O.tail,O.rendering=l,O.tail=l.sibling,O.renderingStartTime=At(),l.sibling=null,v=St.current,ht(St,x?v&1|2:v&1),l):(ar(l),null);case 22:case 23:return Rv(),x=l.memoizedState!==null,o!==null&&o.memoizedState!==null!==x&&(l.flags|=8192),x&&(l.mode&1)!==0?(kr&1073741824)!==0&&(ar(l),l.subtreeFlags&6&&(l.flags|=8192)):ar(l),null;case 24:return null;case 25:return null}throw Error(r(156,l.tag))}function N5(o,l){switch(qm(l),l.tag){case 1:return xr(l.type)&&Lu(),o=l.flags,o&65536?(l.flags=o&-65537|128,l):null;case 3:return Co(),yt(yr),yt(nr),tv(),o=l.flags,(o&65536)!==0&&(o&128)===0?(l.flags=o&-65537|128,l):null;case 5:return Jm(l),null;case 13:if(yt(St),o=l.memoizedState,o!==null&&o.dehydrated!==null){if(l.alternate===null)throw Error(r(340));Eo()}return o=l.flags,o&65536?(l.flags=o&-65537|128,l):null;case 19:return yt(St),null;case 4:return Co(),null;case 10:return Xm(l.type._context),null;case 22:case 23:return Rv(),null;case 24:return null;default:return null}}var nf=!1,or=!1,C5=typeof WeakSet=="function"?WeakSet:Set,Se=null;function To(o,l){var v=o.ref;if(v!==null)if(typeof v=="function")try{v(null)}catch(x){jt(o,l,x)}else v.current=null}function wv(o,l,v){try{v()}catch(x){jt(o,l,x)}}var Yj=!1;function k5(o,l){if(Rm=_u,o=A_(),Om(o)){if("selectionStart"in o)var v={start:o.selectionStart,end:o.selectionEnd};else e:{v=(v=o.ownerDocument)&&v.defaultView||window;var x=v.getSelection&&v.getSelection();if(x&&x.rangeCount!==0){v=x.anchorNode;var S=x.anchorOffset,O=x.focusNode;x=x.focusOffset;try{v.nodeType,O.nodeType}catch{v=null;break e}var R=0,B=-1,W=-1,ne=0,de=0,he=o,ue=null;t:for(;;){for(var we;he!==v||S!==0&&he.nodeType!==3||(B=R+S),he!==O||x!==0&&he.nodeType!==3||(W=R+x),he.nodeType===3&&(R+=he.nodeValue.length),(we=he.firstChild)!==null;)ue=he,he=we;for(;;){if(he===o)break t;if(ue===v&&++ne===S&&(B=R),ue===O&&++de===x&&(W=R),(we=he.nextSibling)!==null)break;he=ue,ue=he.parentNode}he=we}v=B===-1||W===-1?null:{start:B,end:W}}else v=null}v=v||{start:0,end:0}}else v=null;for(Mm={focusedElem:o,selectionRange:v},_u=!1,Se=l;Se!==null;)if(l=Se,o=l.child,(l.subtreeFlags&1028)!==0&&o!==null)o.return=l,Se=o;else for(;Se!==null;){l=Se;try{var Ee=l.alternate;if((l.flags&1024)!==0)switch(l.tag){case 0:case 11:case 15:break;case 1:if(Ee!==null){var Ce=Ee.memoizedProps,Nt=Ee.memoizedState,Z=l.stateNode,V=Z.getSnapshotBeforeUpdate(l.elementType===l.type?Ce:hn(l.type,Ce),Nt);Z.__reactInternalSnapshotBeforeUpdate=V}break;case 3:var te=l.stateNode.containerInfo;te.nodeType===1?te.textContent="":te.nodeType===9&&te.documentElement&&te.removeChild(te.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(r(163))}}catch(ve){jt(l,l.return,ve)}if(o=l.sibling,o!==null){o.return=l.return,Se=o;break}Se=l.return}return Ee=Yj,Yj=!1,Ee}function Tl(o,l,v){var x=l.updateQueue;if(x=x!==null?x.lastEffect:null,x!==null){var S=x=x.next;do{if((S.tag&o)===o){var O=S.destroy;S.destroy=void 0,O!==void 0&&wv(l,v,O)}S=S.next}while(S!==x)}}function af(o,l){if(l=l.updateQueue,l=l!==null?l.lastEffect:null,l!==null){var v=l=l.next;do{if((v.tag&o)===o){var x=v.create;v.destroy=x()}v=v.next}while(v!==l)}}function Sv(o){var l=o.ref;if(l!==null){var v=o.stateNode;switch(o.tag){case 5:o=v;break;default:o=v}typeof l=="function"?l(o):l.current=o}}function Qj(o){var l=o.alternate;l!==null&&(o.alternate=null,Qj(l)),o.child=null,o.deletions=null,o.sibling=null,o.tag===5&&(l=o.stateNode,l!==null&&(delete l[Nn],delete l[wl],delete l[$m],delete l[h5],delete l[p5])),o.stateNode=null,o.return=null,o.dependencies=null,o.memoizedProps=null,o.memoizedState=null,o.pendingProps=null,o.stateNode=null,o.updateQueue=null}function Zj(o){return o.tag===5||o.tag===3||o.tag===4}function Jj(o){e:for(;;){for(;o.sibling===null;){if(o.return===null||Zj(o.return))return null;o=o.return}for(o.sibling.return=o.return,o=o.sibling;o.tag!==5&&o.tag!==6&&o.tag!==18;){if(o.flags&2||o.child===null||o.tag===4)continue e;o.child.return=o,o=o.child}if(!(o.flags&2))return o.stateNode}}function _v(o,l,v){var x=o.tag;if(x===5||x===6)o=o.stateNode,l?v.nodeType===8?v.parentNode.insertBefore(o,l):v.insertBefore(o,l):(v.nodeType===8?(l=v.parentNode,l.insertBefore(o,v)):(l=v,l.appendChild(o)),v=v._reactRootContainer,v!=null||l.onclick!==null||(l.onclick=Iu));else if(x!==4&&(o=o.child,o!==null))for(_v(o,l,v),o=o.sibling;o!==null;)_v(o,l,v),o=o.sibling}function jv(o,l,v){var x=o.tag;if(x===5||x===6)o=o.stateNode,l?v.insertBefore(o,l):v.appendChild(o);else if(x!==4&&(o=o.child,o!==null))for(jv(o,l,v),o=o.sibling;o!==null;)jv(o,l,v),o=o.sibling}var er=null,pn=!1;function Ui(o,l,v){for(v=v.child;v!==null;)eO(o,l,v),v=v.sibling}function eO(o,l,v){if(An&&typeof An.onCommitFiberUnmount=="function")try{An.onCommitFiberUnmount(gu,v)}catch{}switch(v.tag){case 5:or||To(v,l);case 6:var x=er,S=pn;er=null,Ui(o,l,v),er=x,pn=S,er!==null&&(pn?(o=er,v=v.stateNode,o.nodeType===8?o.parentNode.removeChild(v):o.removeChild(v)):er.removeChild(v.stateNode));break;case 18:er!==null&&(pn?(o=er,v=v.stateNode,o.nodeType===8?Lm(o.parentNode,v):o.nodeType===1&&Lm(o,v),ul(o)):Lm(er,v.stateNode));break;case 4:x=er,S=pn,er=v.stateNode.containerInfo,pn=!0,Ui(o,l,v),er=x,pn=S;break;case 0:case 11:case 14:case 15:if(!or&&(x=v.updateQueue,x!==null&&(x=x.lastEffect,x!==null))){S=x=x.next;do{var O=S,R=O.destroy;O=O.tag,R!==void 0&&((O&2)!==0||(O&4)!==0)&&wv(v,l,R),S=S.next}while(S!==x)}Ui(o,l,v);break;case 1:if(!or&&(To(v,l),x=v.stateNode,typeof x.componentWillUnmount=="function"))try{x.props=v.memoizedProps,x.state=v.memoizedState,x.componentWillUnmount()}catch(B){jt(v,l,B)}Ui(o,l,v);break;case 21:Ui(o,l,v);break;case 22:v.mode&1?(or=(x=or)||v.memoizedState!==null,Ui(o,l,v),or=x):Ui(o,l,v);break;default:Ui(o,l,v)}}function tO(o){var l=o.updateQueue;if(l!==null){o.updateQueue=null;var v=o.stateNode;v===null&&(v=o.stateNode=new C5),l.forEach(function(x){var S=F5.bind(null,o,x);v.has(x)||(v.add(x),x.then(S,S))})}}function mn(o,l){var v=l.deletions;if(v!==null)for(var x=0;xS&&(S=R),x&=~O}if(x=S,x=At()-x,x=(120>x?120:480>x?480:1080>x?1080:1920>x?1920:3e3>x?3e3:4320>x?4320:1960*R5(x/1960))-x,10o?16:o,Hi===null)var x=!1;else{if(o=Hi,Hi=null,uf=0,(Je&6)!==0)throw Error(r(331));var S=Je;for(Je|=4,Se=o.current;Se!==null;){var O=Se,R=O.child;if((Se.flags&16)!==0){var B=O.deletions;if(B!==null){for(var W=0;WAt()-Pv?_a(o,0):Ev|=v),Sr(o,l)}function pO(o,l){l===0&&((o.mode&1)===0?l=1:(l=xu,xu<<=1,(xu&130023424)===0&&(xu=4194304)));var v=fr();o=ni(o,l),o!==null&&(al(o,l,v),Sr(o,v))}function B5(o){var l=o.memoizedState,v=0;l!==null&&(v=l.retryLane),pO(o,v)}function F5(o,l){var v=0;switch(o.tag){case 13:var x=o.stateNode,S=o.memoizedState;S!==null&&(v=S.retryLane);break;case 19:x=o.stateNode;break;default:throw Error(r(314))}x!==null&&x.delete(l),pO(o,v)}var mO;mO=function(o,l,v){if(o!==null)if(o.memoizedProps!==l.pendingProps||yr.current)br=!0;else{if((o.lanes&v)===0&&(l.flags&128)===0)return br=!1,P5(o,l,v);br=(o.flags&131072)!==0}else br=!1,bt&&(l.flags&1048576)!==0&&X_(l,zu,l.index);switch(l.lanes=0,l.tag){case 2:var x=l.type;rf(o,l),o=l.pendingProps;var S=_o(l,nr.current);No(l,v),S=iv(null,l,x,o,S,v);var O=av();return l.flags|=1,typeof S=="object"&&S!==null&&typeof S.render=="function"&&S.$$typeof===void 0?(l.tag=1,l.memoizedState=null,l.updateQueue=null,xr(x)?(O=!0,$u(l)):O=!1,l.memoizedState=S.state!==null&&S.state!==void 0?S.state:null,Qm(l),S.updater=ef,l.stateNode=S,S._reactInternals=l,fv(l,x,o,v),l=mv(null,l,x,!0,O,v)):(l.tag=0,bt&&O&&zm(l),ur(null,l,S,v),l=l.child),l;case 16:x=l.elementType;e:{switch(rf(o,l),o=l.pendingProps,S=x._init,x=S(x._payload),l.type=x,S=l.tag=q5(x),o=hn(x,o),S){case 0:l=pv(null,l,x,o,v);break e;case 1:l=zj(null,l,x,o,v);break e;case 11:l=Dj(null,l,x,o,v);break e;case 14:l=Lj(null,l,x,hn(x.type,o),v);break e}throw Error(r(306,x,""))}return l;case 0:return x=l.type,S=l.pendingProps,S=l.elementType===x?S:hn(x,S),pv(o,l,x,S,v);case 1:return x=l.type,S=l.pendingProps,S=l.elementType===x?S:hn(x,S),zj(o,l,x,S,v);case 3:e:{if(qj(l),o===null)throw Error(r(387));x=l.pendingProps,O=l.memoizedState,S=O.element,nj(o,l),Gu(l,x,null,v);var R=l.memoizedState;if(x=R.element,O.isDehydrated)if(O={element:x,isDehydrated:!1,cache:R.cache,pendingSuspenseBoundaries:R.pendingSuspenseBoundaries,transitions:R.transitions},l.updateQueue.baseState=O,l.memoizedState=O,l.flags&256){S=ko(Error(r(423)),l),l=Uj(o,l,x,v,S);break e}else if(x!==S){S=ko(Error(r(424)),l),l=Uj(o,l,x,v,S);break e}else for(Cr=Li(l.stateNode.containerInfo.firstChild),Nr=l,bt=!0,dn=null,v=tj(l,null,x,v),l.child=v;v;)v.flags=v.flags&-3|4096,v=v.sibling;else{if(Eo(),x===S){l=ai(o,l,v);break e}ur(o,l,x,v)}l=l.child}return l;case 5:return oj(l),o===null&&Wm(l),x=l.type,S=l.pendingProps,O=o!==null?o.memoizedProps:null,R=S.children,Im(x,S)?R=null:O!==null&&Im(x,O)&&(l.flags|=32),Fj(o,l),ur(o,l,R,v),l.child;case 6:return o===null&&Wm(l),null;case 13:return Wj(o,l,v);case 4:return Zm(l,l.stateNode.containerInfo),x=l.pendingProps,o===null?l.child=Po(l,null,x,v):ur(o,l,x,v),l.child;case 11:return x=l.type,S=l.pendingProps,S=l.elementType===x?S:hn(x,S),Dj(o,l,x,S,v);case 7:return ur(o,l,l.pendingProps,v),l.child;case 8:return ur(o,l,l.pendingProps.children,v),l.child;case 12:return ur(o,l,l.pendingProps.children,v),l.child;case 10:e:{if(x=l.type._context,S=l.pendingProps,O=l.memoizedProps,R=S.value,ht(Wu,x._currentValue),x._currentValue=R,O!==null)if(fn(O.value,R)){if(O.children===S.children&&!yr.current){l=ai(o,l,v);break e}}else for(O=l.child,O!==null&&(O.return=l);O!==null;){var B=O.dependencies;if(B!==null){R=O.child;for(var W=B.firstContext;W!==null;){if(W.context===x){if(O.tag===1){W=ii(-1,v&-v),W.tag=2;var ne=O.updateQueue;if(ne!==null){ne=ne.shared;var de=ne.pending;de===null?W.next=W:(W.next=de.next,de.next=W),ne.pending=W}}O.lanes|=v,W=O.alternate,W!==null&&(W.lanes|=v),Km(O.return,v,l),B.lanes|=v;break}W=W.next}}else if(O.tag===10)R=O.type===l.type?null:O.child;else if(O.tag===18){if(R=O.return,R===null)throw Error(r(341));R.lanes|=v,B=R.alternate,B!==null&&(B.lanes|=v),Km(R,v,l),R=O.sibling}else R=O.child;if(R!==null)R.return=O;else for(R=O;R!==null;){if(R===l){R=null;break}if(O=R.sibling,O!==null){O.return=R.return,R=O;break}R=R.return}O=R}ur(o,l,S.children,v),l=l.child}return l;case 9:return S=l.type,x=l.pendingProps.children,No(l,v),S=Xr(S),x=x(S),l.flags|=1,ur(o,l,x,v),l.child;case 14:return x=l.type,S=hn(x,l.pendingProps),S=hn(x.type,S),Lj(o,l,x,S,v);case 15:return $j(o,l,l.type,l.pendingProps,v);case 17:return x=l.type,S=l.pendingProps,S=l.elementType===x?S:hn(x,S),rf(o,l),l.tag=1,xr(x)?(o=!0,$u(l)):o=!1,No(l,v),Nj(l,x,S),fv(l,x,S,v),mv(null,l,x,!0,o,v);case 19:return Vj(o,l,v);case 22:return Bj(o,l,v)}throw Error(r(156,l.tag))};function vO(o,l){return KS(o,l)}function z5(o,l,v,x){this.tag=o,this.key=v,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=l,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=x,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Qr(o,l,v,x){return new z5(o,l,v,x)}function Iv(o){return o=o.prototype,!(!o||!o.isReactComponent)}function q5(o){if(typeof o=="function")return Iv(o)?1:0;if(o!=null){if(o=o.$$typeof,o===D)return 11;if(o===H)return 14}return 2}function Xi(o,l){var v=o.alternate;return v===null?(v=Qr(o.tag,l,o.key,o.mode),v.elementType=o.elementType,v.type=o.type,v.stateNode=o.stateNode,v.alternate=o,o.alternate=v):(v.pendingProps=l,v.type=o.type,v.flags=0,v.subtreeFlags=0,v.deletions=null),v.flags=o.flags&14680064,v.childLanes=o.childLanes,v.lanes=o.lanes,v.child=o.child,v.memoizedProps=o.memoizedProps,v.memoizedState=o.memoizedState,v.updateQueue=o.updateQueue,l=o.dependencies,v.dependencies=l===null?null:{lanes:l.lanes,firstContext:l.firstContext},v.sibling=o.sibling,v.index=o.index,v.ref=o.ref,v}function pf(o,l,v,x,S,O){var R=2;if(x=o,typeof o=="function")Iv(o)&&(R=1);else if(typeof o=="string")R=5;else e:switch(o){case C:return Oa(v.children,S,O,l);case T:R=8,S|=8;break;case M:return o=Qr(12,v,l,S|2),o.elementType=M,o.lanes=O,o;case q:return o=Qr(13,v,l,S),o.elementType=q,o.lanes=O,o;case U:return o=Qr(19,v,l,S),o.elementType=U,o.lanes=O,o;case Y:return mf(v,S,O,l);default:if(typeof o=="object"&&o!==null)switch(o.$$typeof){case F:R=10;break e;case I:R=9;break e;case D:R=11;break e;case H:R=14;break e;case X:R=16,x=null;break e}throw Error(r(130,o==null?o:typeof o,""))}return l=Qr(R,v,l,S),l.elementType=o,l.type=x,l.lanes=O,l}function Oa(o,l,v,x){return o=Qr(7,o,x,l),o.lanes=v,o}function mf(o,l,v,x){return o=Qr(22,o,x,l),o.elementType=Y,o.lanes=v,o.stateNode={isHidden:!1},o}function Dv(o,l,v){return o=Qr(6,o,null,l),o.lanes=v,o}function Lv(o,l,v){return l=Qr(4,o.children!==null?o.children:[],o.key,l),l.lanes=v,l.stateNode={containerInfo:o.containerInfo,pendingChildren:null,implementation:o.implementation},l}function U5(o,l,v,x,S){this.tag=l,this.containerInfo=o,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=um(0),this.expirationTimes=um(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=um(0),this.identifierPrefix=x,this.onRecoverableError=S,this.mutableSourceEagerHydrationData=null}function $v(o,l,v,x,S,O,R,B,W){return o=new U5(o,l,v,B,W),l===1?(l=1,O===!0&&(l|=8)):l=0,O=Qr(3,null,null,l),o.current=O,O.stateNode=o,O.memoizedState={element:x,isDehydrated:v,cache:null,transitions:null,pendingSuspenseBoundaries:null},Qm(O),o}function W5(o,l,v){var x=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),Wv.exports=r8(),Wv.exports}var CO;function n8(){if(CO)return _f;CO=1;var e=gR();return _f.createRoot=e.createRoot,_f.hydrateRoot=e.hydrateRoot,_f}var i8=n8(),E=Kh();const L=at(E),rw=Y5({__proto__:null,default:L},[E]);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const a8=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),o8=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,r,n)=>n?n.toUpperCase():r.toLowerCase()),kO=e=>{const t=o8(e);return t.charAt(0).toUpperCase()+t.slice(1)},yR=(...e)=>e.filter((t,r,n)=>!!t&&t.trim()!==""&&n.indexOf(t)===r).join(" ").trim();/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var s8={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const l8=E.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:r=2,absoluteStrokeWidth:n,className:i="",children:a,iconNode:s,...u},f)=>E.createElement("svg",{ref:f,...s8,width:t,height:t,stroke:e,strokeWidth:n?Number(r)*24/Number(t):r,className:yR("lucide",i),...u},[...s.map(([c,d])=>E.createElement(c,d)),...Array.isArray(a)?a:[a]]));/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const je=(e,t)=>{const r=E.forwardRef(({className:n,...i},a)=>E.createElement(l8,{ref:a,iconNode:t,className:yR(`lucide-${a8(kO(e))}`,`lucide-${e}`,n),...i}));return r.displayName=kO(e),r};/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const c8=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],u8=je("activity",c8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const f8=[["path",{d:"M12 20.94c1.5 0 2.75 1.06 4 1.06 3 0 6-8 6-12.22A4.91 4.91 0 0 0 17 5c-2.22 0-4 1.44-5 2-1-.56-2.78-2-5-2a4.9 4.9 0 0 0-5 4.78C2 14 5 22 8 22c1.25 0 2.5-1.06 4-1.06Z",key:"3s7exb"}],["path",{d:"M10 2c1 .5 2 2 2 5",key:"fcco2y"}]],d8=je("apple",f8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const h8=[["path",{d:"m3 16 4 4 4-4",key:"1co6wj"}],["path",{d:"M7 20V4",key:"1yoxec"}],["path",{d:"M20 8h-5",key:"1vsyxs"}],["path",{d:"M15 10V6.5a2.5 2.5 0 0 1 5 0V10",key:"ag13bf"}],["path",{d:"M15 14h5l-5 6h5",key:"ur5jdg"}]],p8=je("arrow-down-a-z",h8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const m8=[["path",{d:"m7 7 10 10",key:"1fmybs"}],["path",{d:"M17 7v10H7",key:"6fjiku"}]],v8=je("arrow-down-right",m8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const g8=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],y8=je("arrow-left",g8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const x8=[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]],b8=je("arrow-up-down",x8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const w8=[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]],xR=je("arrow-up-right",w8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const S8=[["path",{d:"M3 5v14",key:"1nt18q"}],["path",{d:"M8 5v14",key:"1ybrkv"}],["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"M17 5v14",key:"ycjyhj"}],["path",{d:"M21 5v14",key:"nzette"}]],_8=je("barcode",S8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const j8=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]],O8=je("bell",j8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const E8=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],P8=je("calendar",E8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const A8=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],N8=je("chart-column",A8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const C8=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],bR=je("check",C8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const k8=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],hc=je("chevron-down",k8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const T8=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],R8=je("chevron-left",T8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const M8=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],Td=je("chevron-right",M8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const I8=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],D8=je("chevron-up",I8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const L8=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],mb=je("circle-help",L8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $8=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]],B8=je("circle-user",$8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const F8=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]],z8=je("clock",F8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const q8=[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]],U8=je("code",q8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const W8=[["path",{d:"M10 2v2",key:"7u0qdc"}],["path",{d:"M14 2v2",key:"6buw04"}],["path",{d:"M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1",key:"pwadti"}],["path",{d:"M6 2v2",key:"colzsn"}]],H8=je("coffee",W8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const V8=[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]],Ls=je("download",V8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const G8=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],wR=je("ellipsis",G8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const X8=[["path",{d:"M14.5 22H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4",key:"16lz6z"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M3 13.1a2 2 0 0 0-1 1.76v3.24a2 2 0 0 0 .97 1.78L6 21.7a2 2 0 0 0 2.03.01L11 19.9a2 2 0 0 0 1-1.76V14.9a2 2 0 0 0-.97-1.78L8 11.3a2 2 0 0 0-2.03-.01Z",key:"99pj1s"}],["path",{d:"M7 17v5",key:"1yj1jh"}],["path",{d:"M11.7 14.2 7 17l-4.7-2.8",key:"1yk8tc"}]],K8=je("file-box",X8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Y8=[["path",{d:"M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4",key:"1pf5j1"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["rect",{width:"4",height:"6",x:"2",y:"12",rx:"2",key:"jm304g"}],["path",{d:"M10 12h2v6",key:"12zw74"}],["path",{d:"M10 18h4",key:"1ulq68"}]],Q8=je("file-digit",Y8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Z8=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],pc=je("file-text",Z8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const J8=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"M15 3v18",key:"14nvp0"}]],eB=je("grid-3x3",J8);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const tB=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]],rB=je("history",tB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const nB=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],Ua=je("image",nB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const iB=[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]],aB=je("layers",iB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const oB=[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]],sB=je("layout-dashboard",oB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lB=[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]],cB=je("link-2",lB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const uB=[["rect",{x:"3",y:"5",width:"6",height:"6",rx:"1",key:"1defrl"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"M13 6h8",key:"15sg57"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 18h8",key:"oe0vm4"}]],TO=je("list-todo",uB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const fB=[["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 18h.01",key:"1tta3j"}],["path",{d:"M3 6h.01",key:"1rqtza"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 18h13",key:"1lx6n3"}],["path",{d:"M8 6h13",key:"ik3vkj"}]],dB=je("list",fB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hB=[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]],pB=je("log-out",hB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mB=[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]],Yh=je("map-pin",mB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const vB=[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]],gB=je("menu",vB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const yB=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],vb=je("package",yB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const xB=[["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z",key:"12rzf8"}]],SR=je("palette",xB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bB=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],Pd=je("pencil",bB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wB=[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]],SB=je("pin",wB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const _B=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],vr=je("plus",_B);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jB=[["path",{d:"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2",key:"143wyd"}],["path",{d:"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6",key:"1itne7"}],["rect",{x:"6",y:"14",width:"12",height:"8",rx:"1",key:"1ue0tg"}]],_R=je("printer",jB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const OB=[["rect",{width:"5",height:"5",x:"3",y:"3",rx:"1",key:"1tu5fj"}],["rect",{width:"5",height:"5",x:"16",y:"3",rx:"1",key:"1v8r4q"}],["rect",{width:"5",height:"5",x:"3",y:"16",rx:"1",key:"1x03jg"}],["path",{d:"M21 16h-3a2 2 0 0 0-2 2v3",key:"177gqh"}],["path",{d:"M21 21v.01",key:"ents32"}],["path",{d:"M12 7v3a2 2 0 0 1-2 2H7",key:"8crl2c"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M12 3h.01",key:"n36tog"}],["path",{d:"M12 16v.01",key:"133mhm"}],["path",{d:"M16 12h1",key:"1slzba"}],["path",{d:"M21 12v.01",key:"1lwtk9"}],["path",{d:"M12 21v-1",key:"1880an"}]],EB=je("qr-code",OB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const PB=[["path",{d:"M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1Z",key:"q3az6g"}],["path",{d:"M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8",key:"1h4pet"}],["path",{d:"M12 17.5v-11",key:"1jc1ny"}]],AB=je("receipt",PB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const NB=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],CB=je("refresh-cw",NB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const kB=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],TB=je("save",kB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const RB=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]],Qh=je("search",RB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const MB=[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],jR=je("settings",MB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const IB=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],DB=je("shield",IB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const LB=[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]],$B=je("smartphone",LB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const BB=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],Da=je("square-pen",BB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const FB=[["path",{d:"m2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7",key:"ztvudi"}],["path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8",key:"1b2hhj"}],["path",{d:"M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4",key:"2ebpfo"}],["path",{d:"M2 7h20",key:"1fcdvo"}],["path",{d:"M22 7v3a2 2 0 0 1-2 2a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 16 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 12 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 8 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 4 12a2 2 0 0 1-2-2V7",key:"6c3vgh"}]],zB=je("store",FB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const qB=[["path",{d:"m18 2 4 4",key:"22kx64"}],["path",{d:"m17 7 3-3",key:"1w1zoj"}],["path",{d:"M19 9 8.7 19.3c-1 1-2.5 1-3.4 0l-.6-.6c-1-1-1-2.5 0-3.4L15 5",key:"1exhtz"}],["path",{d:"m9 11 4 4",key:"rovt3i"}],["path",{d:"m5 19-3 3",key:"59f2uf"}],["path",{d:"m14 4 6 6",key:"yqp9t2"}]],Gv=je("syringe",qB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const UB=[["rect",{width:"16",height:"20",x:"4",y:"2",rx:"2",ry:"2",key:"76otgf"}],["line",{x1:"12",x2:"12.01",y1:"18",y2:"18",key:"1dp563"}]],WB=je("tablet",UB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const HB=[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]],gb=je("tag",HB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const VB=[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]],GB=je("timer",VB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const XB=[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]],RO=je("trash-2",XB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const KB=[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]],YB=je("trending-up",KB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const QB=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],ZB=je("triangle-alert",QB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const JB=[["polyline",{points:"4 7 4 4 20 4 20 7",key:"1nosan"}],["line",{x1:"9",x2:"15",y1:"20",y2:"20",key:"swin9y"}],["line",{x1:"12",x2:"12",y1:"4",y2:"20",key:"1tx1rr"}]],nw=je("type",JB);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const e6=[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]],OR=je("upload",e6);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const t6=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],r6=je("user",t6);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const n6=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]],ER=je("users",n6);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const i6=[["path",{d:"M3 2v7c0 1.1.9 2 2 2h4a2 2 0 0 0 2-2V2",key:"cjf0a3"}],["path",{d:"M7 2v20",key:"1473qp"}],["path",{d:"M21 15V2a5 5 0 0 0-5 5v6c0 1.1.9 2 2 2h3Zm0 0v7",key:"j28e5"}]],a6=je("utensils",i6);/** + * @license lucide-react v0.487.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const o6=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],ac=je("x",o6);function PR(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(t=0;t{const r=new Array(e.length+t.length);for(let n=0;n({classGroupId:e,validator:t}),AR=(e=new Map,t=null,r)=>({nextPart:e,validators:t,classGroupId:r}),Rd="-",MO=[],c6="arbitrary..",u6=e=>{const t=d6(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:n}=e;return{getClassGroupId:s=>{if(s.startsWith("[")&&s.endsWith("]"))return f6(s);const u=s.split(Rd),f=u[0]===""&&u.length>1?1:0;return NR(u,f,t)},getConflictingClassGroupIds:(s,u)=>{if(u){const f=n[s],c=r[s];return f?c?s6(c,f):f:c||MO}return r[s]||MO}}},NR=(e,t,r)=>{if(e.length-t===0)return r.classGroupId;const i=e[t],a=r.nextPart.get(i);if(a){const c=NR(e,t+1,a);if(c)return c}const s=r.validators;if(s===null)return;const u=t===0?e.join(Rd):e.slice(t).join(Rd),f=s.length;for(let c=0;ce.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),r=t.indexOf(":"),n=t.slice(0,r);return n?c6+n:void 0})(),d6=e=>{const{theme:t,classGroups:r}=e;return h6(r,t)},h6=(e,t)=>{const r=AR();for(const n in e){const i=e[n];iw(i,r,n,t)}return r},iw=(e,t,r,n)=>{const i=e.length;for(let a=0;a{if(typeof e=="string"){m6(e,t,r);return}if(typeof e=="function"){v6(e,t,r,n);return}g6(e,t,r,n)},m6=(e,t,r)=>{const n=e===""?t:CR(t,e);n.classGroupId=r},v6=(e,t,r,n)=>{if(y6(e)){iw(e(n),t,r,n);return}t.validators===null&&(t.validators=[]),t.validators.push(l6(r,e))},g6=(e,t,r,n)=>{const i=Object.entries(e),a=i.length;for(let s=0;s{let r=e;const n=t.split(Rd),i=n.length;for(let a=0;a"isThemeGetter"in e&&e.isThemeGetter===!0,x6=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,r=Object.create(null),n=Object.create(null);const i=(a,s)=>{r[a]=s,t++,t>e&&(t=0,n=r,r=Object.create(null))};return{get(a){let s=r[a];if(s!==void 0)return s;if((s=n[a])!==void 0)return i(a,s),s},set(a,s){a in r?r[a]=s:i(a,s)}}},yb="!",IO=":",b6=[],DO=(e,t,r,n,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:r,maybePostfixModifierPosition:n,isExternal:i}),w6=e=>{const{prefix:t,experimentalParseClassName:r}=e;let n=i=>{const a=[];let s=0,u=0,f=0,c;const d=i.length;for(let y=0;yf?c-f:void 0;return DO(a,g,m,w)};if(t){const i=t+IO,a=n;n=s=>s.startsWith(i)?a(s.slice(i.length)):DO(b6,!1,s,void 0,!0)}if(r){const i=n;n=a=>r({className:a,parseClassName:i})}return n},S6=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((r,n)=>{t.set(r,1e6+n)}),r=>{const n=[];let i=[];for(let a=0;a0&&(i.sort(),n.push(...i),i=[]),n.push(s)):i.push(s)}return i.length>0&&(i.sort(),n.push(...i)),n}},_6=e=>({cache:x6(e.cacheSize),parseClassName:w6(e),sortModifiers:S6(e),...u6(e)}),j6=/\s+/,O6=(e,t)=>{const{parseClassName:r,getClassGroupId:n,getConflictingClassGroupIds:i,sortModifiers:a}=t,s=[],u=e.trim().split(j6);let f="";for(let c=u.length-1;c>=0;c-=1){const d=u[c],{isExternal:p,modifiers:m,hasImportantModifier:g,baseClassName:w,maybePostfixModifierPosition:y}=r(d);if(p){f=d+(f.length>0?" "+f:f);continue}let b=!!y,_=n(b?w.substring(0,y):w);if(!_){if(!b){f=d+(f.length>0?" "+f:f);continue}if(_=n(w),!_){f=d+(f.length>0?" "+f:f);continue}b=!1}const j=m.length===0?"":m.length===1?m[0]:a(m).join(":"),P=g?j+yb:j,k=P+_;if(s.indexOf(k)>-1)continue;s.push(k);const A=i(_,b);for(let N=0;N0?" "+f:f)}return f},E6=(...e)=>{let t=0,r,n,i="";for(;t{if(typeof e=="string")return e;let t,r="";for(let n=0;n{let r,n,i,a;const s=f=>{const c=t.reduce((d,p)=>p(d),e());return r=_6(c),n=r.cache.get,i=r.cache.set,a=u,u(f)},u=f=>{const c=n(f);if(c)return c;const d=O6(f,r);return i(f,d),d};return a=s,(...f)=>a(E6(...f))},A6=[],Dt=e=>{const t=r=>r[e]||A6;return t.isThemeGetter=!0,t},TR=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,RR=/^\((?:(\w[\w-]*):)?(.+)\)$/i,N6=/^\d+\/\d+$/,C6=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,k6=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,T6=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,R6=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,M6=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Do=e=>N6.test(e),Ye=e=>!!e&&!Number.isNaN(Number(e)),Yi=e=>!!e&&Number.isInteger(Number(e)),Xv=e=>e.endsWith("%")&&Ye(e.slice(0,-1)),si=e=>C6.test(e),I6=()=>!0,D6=e=>k6.test(e)&&!T6.test(e),MR=()=>!1,L6=e=>R6.test(e),$6=e=>M6.test(e),B6=e=>!Pe(e)&&!Ae(e),F6=e=>$s(e,LR,MR),Pe=e=>TR.test(e),Ea=e=>$s(e,$R,D6),Kv=e=>$s(e,H6,Ye),LO=e=>$s(e,IR,MR),z6=e=>$s(e,DR,$6),jf=e=>$s(e,BR,L6),Ae=e=>RR.test(e),$l=e=>Bs(e,$R),q6=e=>Bs(e,V6),$O=e=>Bs(e,IR),U6=e=>Bs(e,LR),W6=e=>Bs(e,DR),Of=e=>Bs(e,BR,!0),$s=(e,t,r)=>{const n=TR.exec(e);return n?n[1]?t(n[1]):r(n[2]):!1},Bs=(e,t,r=!1)=>{const n=RR.exec(e);return n?n[1]?t(n[1]):r:!1},IR=e=>e==="position"||e==="percentage",DR=e=>e==="image"||e==="url",LR=e=>e==="length"||e==="size"||e==="bg-size",$R=e=>e==="length",H6=e=>e==="number",V6=e=>e==="family-name",BR=e=>e==="shadow",G6=()=>{const e=Dt("color"),t=Dt("font"),r=Dt("text"),n=Dt("font-weight"),i=Dt("tracking"),a=Dt("leading"),s=Dt("breakpoint"),u=Dt("container"),f=Dt("spacing"),c=Dt("radius"),d=Dt("shadow"),p=Dt("inset-shadow"),m=Dt("text-shadow"),g=Dt("drop-shadow"),w=Dt("blur"),y=Dt("perspective"),b=Dt("aspect"),_=Dt("ease"),j=Dt("animate"),P=()=>["auto","avoid","all","avoid-page","page","left","right","column"],k=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],A=()=>[...k(),Ae,Pe],N=()=>["auto","hidden","clip","visible","scroll"],C=()=>["auto","contain","none"],T=()=>[Ae,Pe,f],M=()=>[Do,"full","auto",...T()],F=()=>[Yi,"none","subgrid",Ae,Pe],I=()=>["auto",{span:["full",Yi,Ae,Pe]},Yi,Ae,Pe],D=()=>[Yi,"auto",Ae,Pe],q=()=>["auto","min","max","fr",Ae,Pe],U=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],H=()=>["start","end","center","stretch","center-safe","end-safe"],X=()=>["auto",...T()],Y=()=>[Do,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...T()],$=()=>[e,Ae,Pe],ee=()=>[...k(),$O,LO,{position:[Ae,Pe]}],re=()=>["no-repeat",{repeat:["","x","y","space","round"]}],z=()=>["auto","cover","contain",U6,F6,{size:[Ae,Pe]}],K=()=>[Xv,$l,Ea],se=()=>["","none","full",c,Ae,Pe],pe=()=>["",Ye,$l,Ea],G=()=>["solid","dashed","dotted","double"],Q=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],J=()=>[Ye,Xv,$O,LO],ce=()=>["","none",w,Ae,Pe],ie=()=>["none",Ye,Ae,Pe],fe=()=>["none",Ye,Ae,Pe],xe=()=>[Ye,Ae,Pe],ae=()=>[Do,"full",...T()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[si],breakpoint:[si],color:[I6],container:[si],"drop-shadow":[si],ease:["in","out","in-out"],font:[B6],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[si],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[si],shadow:[si],spacing:["px",Ye],text:[si],"text-shadow":[si],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Do,Pe,Ae,b]}],container:["container"],columns:[{columns:[Ye,Pe,Ae,u]}],"break-after":[{"break-after":P()}],"break-before":[{"break-before":P()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:A()}],overflow:[{overflow:N()}],"overflow-x":[{"overflow-x":N()}],"overflow-y":[{"overflow-y":N()}],overscroll:[{overscroll:C()}],"overscroll-x":[{"overscroll-x":C()}],"overscroll-y":[{"overscroll-y":C()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:M()}],"inset-x":[{"inset-x":M()}],"inset-y":[{"inset-y":M()}],start:[{start:M()}],end:[{end:M()}],top:[{top:M()}],right:[{right:M()}],bottom:[{bottom:M()}],left:[{left:M()}],visibility:["visible","invisible","collapse"],z:[{z:[Yi,"auto",Ae,Pe]}],basis:[{basis:[Do,"full","auto",u,...T()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Ye,Do,"auto","initial","none",Pe]}],grow:[{grow:["",Ye,Ae,Pe]}],shrink:[{shrink:["",Ye,Ae,Pe]}],order:[{order:[Yi,"first","last","none",Ae,Pe]}],"grid-cols":[{"grid-cols":F()}],"col-start-end":[{col:I()}],"col-start":[{"col-start":D()}],"col-end":[{"col-end":D()}],"grid-rows":[{"grid-rows":F()}],"row-start-end":[{row:I()}],"row-start":[{"row-start":D()}],"row-end":[{"row-end":D()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":q()}],"auto-rows":[{"auto-rows":q()}],gap:[{gap:T()}],"gap-x":[{"gap-x":T()}],"gap-y":[{"gap-y":T()}],"justify-content":[{justify:[...U(),"normal"]}],"justify-items":[{"justify-items":[...H(),"normal"]}],"justify-self":[{"justify-self":["auto",...H()]}],"align-content":[{content:["normal",...U()]}],"align-items":[{items:[...H(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...H(),{baseline:["","last"]}]}],"place-content":[{"place-content":U()}],"place-items":[{"place-items":[...H(),"baseline"]}],"place-self":[{"place-self":["auto",...H()]}],p:[{p:T()}],px:[{px:T()}],py:[{py:T()}],ps:[{ps:T()}],pe:[{pe:T()}],pt:[{pt:T()}],pr:[{pr:T()}],pb:[{pb:T()}],pl:[{pl:T()}],m:[{m:X()}],mx:[{mx:X()}],my:[{my:X()}],ms:[{ms:X()}],me:[{me:X()}],mt:[{mt:X()}],mr:[{mr:X()}],mb:[{mb:X()}],ml:[{ml:X()}],"space-x":[{"space-x":T()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":T()}],"space-y-reverse":["space-y-reverse"],size:[{size:Y()}],w:[{w:[u,"screen",...Y()]}],"min-w":[{"min-w":[u,"screen","none",...Y()]}],"max-w":[{"max-w":[u,"screen","none","prose",{screen:[s]},...Y()]}],h:[{h:["screen","lh",...Y()]}],"min-h":[{"min-h":["screen","lh","none",...Y()]}],"max-h":[{"max-h":["screen","lh",...Y()]}],"font-size":[{text:["base",r,$l,Ea]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[n,Ae,Kv]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Xv,Pe]}],"font-family":[{font:[q6,Pe,t]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[i,Ae,Pe]}],"line-clamp":[{"line-clamp":[Ye,"none",Ae,Kv]}],leading:[{leading:[a,...T()]}],"list-image":[{"list-image":["none",Ae,Pe]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Ae,Pe]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:$()}],"text-color":[{text:$()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...G(),"wavy"]}],"text-decoration-thickness":[{decoration:[Ye,"from-font","auto",Ae,Ea]}],"text-decoration-color":[{decoration:$()}],"underline-offset":[{"underline-offset":[Ye,"auto",Ae,Pe]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:T()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Ae,Pe]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Ae,Pe]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ee()}],"bg-repeat":[{bg:re()}],"bg-size":[{bg:z()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Yi,Ae,Pe],radial:["",Ae,Pe],conic:[Yi,Ae,Pe]},W6,z6]}],"bg-color":[{bg:$()}],"gradient-from-pos":[{from:K()}],"gradient-via-pos":[{via:K()}],"gradient-to-pos":[{to:K()}],"gradient-from":[{from:$()}],"gradient-via":[{via:$()}],"gradient-to":[{to:$()}],rounded:[{rounded:se()}],"rounded-s":[{"rounded-s":se()}],"rounded-e":[{"rounded-e":se()}],"rounded-t":[{"rounded-t":se()}],"rounded-r":[{"rounded-r":se()}],"rounded-b":[{"rounded-b":se()}],"rounded-l":[{"rounded-l":se()}],"rounded-ss":[{"rounded-ss":se()}],"rounded-se":[{"rounded-se":se()}],"rounded-ee":[{"rounded-ee":se()}],"rounded-es":[{"rounded-es":se()}],"rounded-tl":[{"rounded-tl":se()}],"rounded-tr":[{"rounded-tr":se()}],"rounded-br":[{"rounded-br":se()}],"rounded-bl":[{"rounded-bl":se()}],"border-w":[{border:pe()}],"border-w-x":[{"border-x":pe()}],"border-w-y":[{"border-y":pe()}],"border-w-s":[{"border-s":pe()}],"border-w-e":[{"border-e":pe()}],"border-w-t":[{"border-t":pe()}],"border-w-r":[{"border-r":pe()}],"border-w-b":[{"border-b":pe()}],"border-w-l":[{"border-l":pe()}],"divide-x":[{"divide-x":pe()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":pe()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...G(),"hidden","none"]}],"divide-style":[{divide:[...G(),"hidden","none"]}],"border-color":[{border:$()}],"border-color-x":[{"border-x":$()}],"border-color-y":[{"border-y":$()}],"border-color-s":[{"border-s":$()}],"border-color-e":[{"border-e":$()}],"border-color-t":[{"border-t":$()}],"border-color-r":[{"border-r":$()}],"border-color-b":[{"border-b":$()}],"border-color-l":[{"border-l":$()}],"divide-color":[{divide:$()}],"outline-style":[{outline:[...G(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Ye,Ae,Pe]}],"outline-w":[{outline:["",Ye,$l,Ea]}],"outline-color":[{outline:$()}],shadow:[{shadow:["","none",d,Of,jf]}],"shadow-color":[{shadow:$()}],"inset-shadow":[{"inset-shadow":["none",p,Of,jf]}],"inset-shadow-color":[{"inset-shadow":$()}],"ring-w":[{ring:pe()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:$()}],"ring-offset-w":[{"ring-offset":[Ye,Ea]}],"ring-offset-color":[{"ring-offset":$()}],"inset-ring-w":[{"inset-ring":pe()}],"inset-ring-color":[{"inset-ring":$()}],"text-shadow":[{"text-shadow":["none",m,Of,jf]}],"text-shadow-color":[{"text-shadow":$()}],opacity:[{opacity:[Ye,Ae,Pe]}],"mix-blend":[{"mix-blend":[...Q(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":Q()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Ye]}],"mask-image-linear-from-pos":[{"mask-linear-from":J()}],"mask-image-linear-to-pos":[{"mask-linear-to":J()}],"mask-image-linear-from-color":[{"mask-linear-from":$()}],"mask-image-linear-to-color":[{"mask-linear-to":$()}],"mask-image-t-from-pos":[{"mask-t-from":J()}],"mask-image-t-to-pos":[{"mask-t-to":J()}],"mask-image-t-from-color":[{"mask-t-from":$()}],"mask-image-t-to-color":[{"mask-t-to":$()}],"mask-image-r-from-pos":[{"mask-r-from":J()}],"mask-image-r-to-pos":[{"mask-r-to":J()}],"mask-image-r-from-color":[{"mask-r-from":$()}],"mask-image-r-to-color":[{"mask-r-to":$()}],"mask-image-b-from-pos":[{"mask-b-from":J()}],"mask-image-b-to-pos":[{"mask-b-to":J()}],"mask-image-b-from-color":[{"mask-b-from":$()}],"mask-image-b-to-color":[{"mask-b-to":$()}],"mask-image-l-from-pos":[{"mask-l-from":J()}],"mask-image-l-to-pos":[{"mask-l-to":J()}],"mask-image-l-from-color":[{"mask-l-from":$()}],"mask-image-l-to-color":[{"mask-l-to":$()}],"mask-image-x-from-pos":[{"mask-x-from":J()}],"mask-image-x-to-pos":[{"mask-x-to":J()}],"mask-image-x-from-color":[{"mask-x-from":$()}],"mask-image-x-to-color":[{"mask-x-to":$()}],"mask-image-y-from-pos":[{"mask-y-from":J()}],"mask-image-y-to-pos":[{"mask-y-to":J()}],"mask-image-y-from-color":[{"mask-y-from":$()}],"mask-image-y-to-color":[{"mask-y-to":$()}],"mask-image-radial":[{"mask-radial":[Ae,Pe]}],"mask-image-radial-from-pos":[{"mask-radial-from":J()}],"mask-image-radial-to-pos":[{"mask-radial-to":J()}],"mask-image-radial-from-color":[{"mask-radial-from":$()}],"mask-image-radial-to-color":[{"mask-radial-to":$()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":k()}],"mask-image-conic-pos":[{"mask-conic":[Ye]}],"mask-image-conic-from-pos":[{"mask-conic-from":J()}],"mask-image-conic-to-pos":[{"mask-conic-to":J()}],"mask-image-conic-from-color":[{"mask-conic-from":$()}],"mask-image-conic-to-color":[{"mask-conic-to":$()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ee()}],"mask-repeat":[{mask:re()}],"mask-size":[{mask:z()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Ae,Pe]}],filter:[{filter:["","none",Ae,Pe]}],blur:[{blur:ce()}],brightness:[{brightness:[Ye,Ae,Pe]}],contrast:[{contrast:[Ye,Ae,Pe]}],"drop-shadow":[{"drop-shadow":["","none",g,Of,jf]}],"drop-shadow-color":[{"drop-shadow":$()}],grayscale:[{grayscale:["",Ye,Ae,Pe]}],"hue-rotate":[{"hue-rotate":[Ye,Ae,Pe]}],invert:[{invert:["",Ye,Ae,Pe]}],saturate:[{saturate:[Ye,Ae,Pe]}],sepia:[{sepia:["",Ye,Ae,Pe]}],"backdrop-filter":[{"backdrop-filter":["","none",Ae,Pe]}],"backdrop-blur":[{"backdrop-blur":ce()}],"backdrop-brightness":[{"backdrop-brightness":[Ye,Ae,Pe]}],"backdrop-contrast":[{"backdrop-contrast":[Ye,Ae,Pe]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Ye,Ae,Pe]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Ye,Ae,Pe]}],"backdrop-invert":[{"backdrop-invert":["",Ye,Ae,Pe]}],"backdrop-opacity":[{"backdrop-opacity":[Ye,Ae,Pe]}],"backdrop-saturate":[{"backdrop-saturate":[Ye,Ae,Pe]}],"backdrop-sepia":[{"backdrop-sepia":["",Ye,Ae,Pe]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":T()}],"border-spacing-x":[{"border-spacing-x":T()}],"border-spacing-y":[{"border-spacing-y":T()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Ae,Pe]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Ye,"initial",Ae,Pe]}],ease:[{ease:["linear","initial",_,Ae,Pe]}],delay:[{delay:[Ye,Ae,Pe]}],animate:[{animate:["none",j,Ae,Pe]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[y,Ae,Pe]}],"perspective-origin":[{"perspective-origin":A()}],rotate:[{rotate:ie()}],"rotate-x":[{"rotate-x":ie()}],"rotate-y":[{"rotate-y":ie()}],"rotate-z":[{"rotate-z":ie()}],scale:[{scale:fe()}],"scale-x":[{"scale-x":fe()}],"scale-y":[{"scale-y":fe()}],"scale-z":[{"scale-z":fe()}],"scale-3d":["scale-3d"],skew:[{skew:xe()}],"skew-x":[{"skew-x":xe()}],"skew-y":[{"skew-y":xe()}],transform:[{transform:[Ae,Pe,"","none","gpu","cpu"]}],"transform-origin":[{origin:A()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:ae()}],"translate-x":[{"translate-x":ae()}],"translate-y":[{"translate-y":ae()}],"translate-z":[{"translate-z":ae()}],"translate-none":["translate-none"],accent:[{accent:$()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:$()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Ae,Pe]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":T()}],"scroll-mx":[{"scroll-mx":T()}],"scroll-my":[{"scroll-my":T()}],"scroll-ms":[{"scroll-ms":T()}],"scroll-me":[{"scroll-me":T()}],"scroll-mt":[{"scroll-mt":T()}],"scroll-mr":[{"scroll-mr":T()}],"scroll-mb":[{"scroll-mb":T()}],"scroll-ml":[{"scroll-ml":T()}],"scroll-p":[{"scroll-p":T()}],"scroll-px":[{"scroll-px":T()}],"scroll-py":[{"scroll-py":T()}],"scroll-ps":[{"scroll-ps":T()}],"scroll-pe":[{"scroll-pe":T()}],"scroll-pt":[{"scroll-pt":T()}],"scroll-pr":[{"scroll-pr":T()}],"scroll-pb":[{"scroll-pb":T()}],"scroll-pl":[{"scroll-pl":T()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Ae,Pe]}],fill:[{fill:["none",...$()]}],"stroke-w":[{stroke:[Ye,$l,Ea,Kv]}],stroke:[{stroke:["none",...$()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},X6=P6(G6);function Ne(...e){return X6(Ge(e))}const K6=""+new URL("773f0c39e1986271e9144596caac519f934a6ae6-IDRCy9hk.png",import.meta.url).href;function Y6({currentView:e,setCurrentView:t}){const[r,n]=E.useState(!0),i=[{name:"Dashboard",icon:sB,type:"item"},{type:"header",name:"MODULES"},{name:"Labeling",icon:gb,type:"sub",isOpen:r,toggle:()=>n(!r),children:[{name:"Labels",icon:gb},{name:"Label Categories",icon:aB},{name:"Label Types",icon:nw},{name:"Label Templates",icon:K8},{name:"Multiple Options",icon:jR}]},{name:"Training",icon:TO,type:"item"},{name:"Alerts",icon:ZB,type:"item"},{name:"Tasks",icon:TO,type:"item"},{name:"Sensors",icon:u8,type:"item"},{name:"Food Waste",icon:d8,type:"item"},{name:"E-Label",icon:Q8,type:"item"},{type:"header",name:"MANAGEMENT"},{name:"Location Manager",icon:Yh,type:"item"},{name:"Account Management",icon:ER,type:"item"},{name:"Menu Manager",icon:vb,type:"item"},{name:"Devices",icon:$B,type:"item",highlight:!0},{name:"Invoices",icon:AB,type:"item"},{name:"Reports",icon:pc,type:"item"},{name:"QR Codes",icon:EB,type:"item"},{name:"API",icon:U8,type:"item"},{name:"Support",icon:mb,type:"action"},{name:"Log Out",icon:pB,type:"action",isLogout:!0}];return h.jsxs("div",{className:"w-64 bg-[#1e3a8a] text-white flex flex-col h-full min-h-0 border-r border-blue-800 shadow-xl z-20 shrink-0",children:[h.jsx("div",{className:"shrink-0 flex items-center justify-center border-b border-blue-800/50 bg-white",style:{height:"var(--header-bar-height, 90px)"},children:h.jsx("img",{src:K6,alt:"MedVantage",className:"h-14 w-auto object-contain"})}),h.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto py-4",style:{flexBasis:0},children:h.jsx("div",{className:"px-3 space-y-1",children:i.map((a,s)=>{if(a.type==="header")return h.jsx("div",{className:"px-4 py-2 mt-4 text-xs font-semibold uppercase tracking-wider",style:{color:"#99CCFF"},children:a.name},s);if(a.type==="sub")return h.jsxs("div",{className:"space-y-1",children:[h.jsxs("button",{onClick:a.toggle,className:Ne("w-full flex items-center justify-between px-4 py-2.5 text-sm font-medium rounded-lg transition-colors text-white","hover:bg-blue-800/50"),children:[h.jsxs("div",{className:"flex items-center gap-3",children:[h.jsx(a.icon,{className:"w-4 h-4"}),a.name]}),a.isOpen?h.jsx(hc,{className:"w-4 h-4"}):h.jsx(Td,{className:"w-4 h-4"})]}),a.isOpen&&h.jsx("div",{className:"pl-4 space-y-1",children:a.children?.map((c,d)=>h.jsxs("button",{onClick:()=>t(c.name),className:Ne("w-full flex items-center gap-3 px-4 py-2 text-sm font-medium rounded-lg transition-colors border-l-2",e===c.name?"bg-orange-500 border-orange-400 text-white":"border-transparent text-white hover:bg-blue-800/30 hover:text-white"),children:[h.jsx("div",{className:"w-1 h-1 rounded-full bg-current"}),c.name]},d))})]},s);const u=a.type==="action",f="isLogout"in a&&a.isLogout;return h.jsxs("button",{onClick:()=>!u&&t(a.name),className:Ne("w-full flex items-center gap-3 px-4 py-2.5 text-sm font-medium rounded-lg transition-colors",f&&"text-red-300 hover:bg-red-900/20",!f&&(e===a.name?"bg-orange-500 text-white shadow-md shadow-orange-900/20":"text-white hover:bg-blue-800 hover:text-white")),children:[h.jsx(a.icon,{className:"w-4 h-4"}),a.name]},s)})})})]})}function ze({className:e,type:t,...r}){return h.jsx("input",{type:t,"data-slot":"input",className:Ne("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base bg-input-background transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...r})}function BO(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function Fs(...e){return t=>{let r=!1;const n=e.map(i=>{const a=BO(i,t);return!r&&typeof a=="function"&&(r=!0),a});if(r)return()=>{for(let i=0;i{let{children:a,...s}=n;FR(a)&&typeof Md=="function"&&(a=Md(a._payload));const u=E.Children.toArray(a),f=u.find(tF);if(f){const c=f.props.children,d=u.map(p=>p===f?E.Children.count(c)>1?E.Children.only(null):E.isValidElement(c)?c.props.children:null:p);return h.jsx(t,{...s,ref:i,children:E.isValidElement(c)?E.cloneElement(c,void 0,d):null})}return h.jsx(t,{...s,ref:i,children:a})});return r.displayName=`${e}.Slot`,r}var ow=aw("Slot");function J6(e){const t=E.forwardRef((r,n)=>{let{children:i,...a}=r;if(FR(i)&&typeof Md=="function"&&(i=Md(i._payload)),E.isValidElement(i)){const s=nF(i),u=rF(a,i.props);return i.type!==E.Fragment&&(u.ref=n?Fs(n,s):s),E.cloneElement(i,u)}return E.Children.count(i)>1?E.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var eF=Symbol("radix.slottable");function tF(e){return E.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===eF}function rF(e,t){const r={...t};for(const n in t){const i=e[n],a=t[n];/^on[A-Z]/.test(n)?i&&a?r[n]=(...u)=>{const f=a(...u);return i(...u),f}:i&&(r[n]=i):n==="style"?r[n]={...i,...a}:n==="className"&&(r[n]=[i,a].filter(Boolean).join(" "))}return{...e,...r}}function nF(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning;return r?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning,r?e.props.ref:e.props.ref||e.ref)}const FO=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,zO=Ge,zR=(e,t)=>r=>{var n;if(t?.variants==null)return zO(e,r?.class,r?.className);const{variants:i,defaultVariants:a}=t,s=Object.keys(i).map(c=>{const d=r?.[c],p=a?.[c];if(d===null)return null;const m=FO(d)||FO(p);return i[c][m]}),u=r&&Object.entries(r).reduce((c,d)=>{let[p,m]=d;return m===void 0||(c[p]=m),c},{}),f=t==null||(n=t.compoundVariants)===null||n===void 0?void 0:n.reduce((c,d)=>{let{class:p,className:m,...g}=d;return Object.entries(g).every(w=>{let[y,b]=w;return Array.isArray(b)?b.includes({...a,...u}[y]):{...a,...u}[y]===b})?[...c,p,m]:c},[]);return zO(e,s,f,r?.class,r?.className)},iF=zR("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background text-foreground hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9 rounded-md"}},defaultVariants:{variant:"default",size:"default"}});function be({className:e,variant:t,size:r,asChild:n=!1,...i}){const a=n?ow:"button";return h.jsx(a,{"data-slot":"button",className:Ne(iF({variant:t,size:r,className:e})),...i})}function aF(e,t=[]){let r=[];function n(a,s){const u=E.createContext(s);u.displayName=a+"Context";const f=r.length;r=[...r,s];const c=p=>{const{scope:m,children:g,...w}=p,y=m?.[e]?.[f]||u,b=E.useMemo(()=>w,Object.values(w));return h.jsx(y.Provider,{value:b,children:g})};c.displayName=a+"Provider";function d(p,m){const g=m?.[e]?.[f]||u,w=E.useContext(g);if(w)return w;if(s!==void 0)return s;throw new Error(`\`${p}\` must be used within \`${a}\``)}return[c,d]}const i=()=>{const a=r.map(s=>E.createContext(s));return function(u){const f=u?.[e]||a;return E.useMemo(()=>({[`__scope${e}`]:{...u,[e]:f}}),[u,f])}};return i.scopeName=e,[n,oF(i,...t)]}function oF(...e){const t=e[0];if(e.length===1)return t;const r=()=>{const n=e.map(i=>({useScope:i(),scopeName:i.scopeName}));return function(a){const s=n.reduce((u,{useScope:f,scopeName:c})=>{const p=f(a)[`__scope${c}`];return{...u,...p}},{});return E.useMemo(()=>({[`__scope${t.scopeName}`]:s}),[s])}};return r.scopeName=t.scopeName,r}function cr(e){const t=E.useRef(e);return E.useEffect(()=>{t.current=e}),E.useMemo(()=>(...r)=>t.current?.(...r),[])}var Rt=globalThis?.document?E.useLayoutEffect:()=>{},Qc=gR();const sF=at(Qc);var lF=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],sw=lF.reduce((e,t)=>{const r=aw(`Primitive.${t}`),n=E.forwardRef((i,a)=>{const{asChild:s,...u}=i,f=s?r:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),h.jsx(f,{...u,ref:a})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),Yv={exports:{}},Qv={};/** + * @license React + * use-sync-external-store-shim.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var qO;function cF(){if(qO)return Qv;qO=1;var e=Kh();function t(p,m){return p===m&&(p!==0||1/p===1/m)||p!==p&&m!==m}var r=typeof Object.is=="function"?Object.is:t,n=e.useState,i=e.useEffect,a=e.useLayoutEffect,s=e.useDebugValue;function u(p,m){var g=m(),w=n({inst:{value:g,getSnapshot:m}}),y=w[0].inst,b=w[1];return a(function(){y.value=g,y.getSnapshot=m,f(y)&&b({inst:y})},[p,g,m]),i(function(){return f(y)&&b({inst:y}),p(function(){f(y)&&b({inst:y})})},[p]),s(g),g}function f(p){var m=p.getSnapshot;p=p.value;try{var g=m();return!r(p,g)}catch{return!0}}function c(p,m){return m()}var d=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?c:u;return Qv.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:d,Qv}var UO;function uF(){return UO||(UO=1,Yv.exports=cF()),Yv.exports}var fF=uF();function dF(){return fF.useSyncExternalStore(hF,()=>!0,()=>!1)}function hF(){return()=>{}}var lw="Avatar",[pF]=aF(lw),[mF,qR]=pF(lw),UR=E.forwardRef((e,t)=>{const{__scopeAvatar:r,...n}=e,[i,a]=E.useState("idle");return h.jsx(mF,{scope:r,imageLoadingStatus:i,onImageLoadingStatusChange:a,children:h.jsx(sw.span,{...n,ref:t})})});UR.displayName=lw;var WR="AvatarImage",HR=E.forwardRef((e,t)=>{const{__scopeAvatar:r,src:n,onLoadingStatusChange:i=()=>{},...a}=e,s=qR(WR,r),u=vF(n,a),f=cr(c=>{i(c),s.onImageLoadingStatusChange(c)});return Rt(()=>{u!=="idle"&&f(u)},[u,f]),u==="loaded"?h.jsx(sw.img,{...a,ref:t,src:n}):null});HR.displayName=WR;var VR="AvatarFallback",GR=E.forwardRef((e,t)=>{const{__scopeAvatar:r,delayMs:n,...i}=e,a=qR(VR,r),[s,u]=E.useState(n===void 0);return E.useEffect(()=>{if(n!==void 0){const f=window.setTimeout(()=>u(!0),n);return()=>window.clearTimeout(f)}},[n]),s&&a.imageLoadingStatus!=="loaded"?h.jsx(sw.span,{...i,ref:t}):null});GR.displayName=VR;function WO(e,t){return e?t?(e.src!==t&&(e.src=t),e.complete&&e.naturalWidth>0?"loaded":"loading"):"error":"idle"}function vF(e,{referrerPolicy:t,crossOrigin:r}){const n=dF(),i=E.useRef(null),a=n?(i.current||(i.current=new window.Image),i.current):null,[s,u]=E.useState(()=>WO(a,e));return Rt(()=>{u(WO(a,e))},[a,e]),Rt(()=>{const f=p=>()=>{u(p)};if(!a)return;const c=f("loaded"),d=f("error");return a.addEventListener("load",c),a.addEventListener("error",d),t&&(a.referrerPolicy=t),typeof r=="string"&&(a.crossOrigin=r),()=>{a.removeEventListener("load",c),a.removeEventListener("error",d)}},[a,r,t]),s}var gF=UR,yF=HR,xF=GR;function bF({className:e,...t}){return h.jsx(gF,{"data-slot":"avatar",className:Ne("relative flex size-10 shrink-0 overflow-hidden rounded-full",e),...t})}function wF({className:e,...t}){return h.jsx(yF,{"data-slot":"avatar-image",className:Ne("aspect-square size-full",e),...t})}function SF({className:e,...t}){return h.jsx(xF,{"data-slot":"avatar-fallback",className:Ne("bg-muted flex size-full items-center justify-center rounded-full",e),...t})}function _F({title:e}){const t=new Date().toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"});return h.jsxs("header",{className:"bg-white border-b border-gray-200 px-8 flex items-center justify-between shadow-sm sticky top-0 z-10 shrink-0",style:{height:"var(--header-bar-height, 90px)"},children:[h.jsxs("div",{children:[h.jsxs("h1",{className:"text-2xl font-bold",style:{color:"#2b328f"},children:[e," Overview"]}),h.jsxs("p",{className:"text-sm text-gray-500 mt-1 flex items-center gap-2",children:[t," | Last updated: Just now"]})]}),h.jsxs("div",{className:"flex items-center gap-4",children:[h.jsxs("div",{className:"relative w-64",children:[h.jsx(Qh,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-400"}),h.jsx(ze,{type:"search",placeholder:"Search...",className:"pl-9 bg-gray-50 border-gray-200 focus:bg-white transition-colors"})]}),h.jsx(be,{variant:"ghost",size:"icon",className:"text-gray-500 hover:text-gray-700",children:h.jsx(jR,{className:"w-5 h-5"})}),h.jsx("div",{className:"h-8 w-px bg-gray-200 mx-2"}),h.jsxs("div",{className:"flex items-center gap-3",children:[h.jsxs("div",{className:"text-right hidden md:block",children:[h.jsx("div",{className:"text-sm font-medium text-gray-900",children:"Admin User"}),h.jsx("div",{className:"text-xs text-gray-500",children:"Administrator"})]}),h.jsxs(bF,{className:"h-10 w-10 border border-gray-200",children:[h.jsx(wF,{src:"https://github.com/shadcn.png"}),h.jsx(SF,{children:"AD"})]})]})]})]})}function jF({...e}){return h.jsx("nav",{"aria-label":"breadcrumb","data-slot":"breadcrumb",...e})}function OF({className:e,...t}){return h.jsx("ol",{"data-slot":"breadcrumb-list",className:Ne("text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",e),...t})}function EF({className:e,...t}){return h.jsx("li",{"data-slot":"breadcrumb-item",className:Ne("inline-flex items-center gap-1.5",e),...t})}function PF({asChild:e,className:t,...r}){const n=e?ow:"a";return h.jsx(n,{"data-slot":"breadcrumb-link",className:Ne("hover:text-foreground transition-colors",t),...r})}function AF({className:e,...t}){return h.jsx("span",{"data-slot":"breadcrumb-page",role:"link","aria-disabled":"true","aria-current":"page",className:Ne("text-foreground font-normal",e),...t})}function NF({children:e,className:t,...r}){return h.jsx("li",{"data-slot":"breadcrumb-separator",role:"presentation","aria-hidden":"true",className:Ne("[&>svg]:size-3.5",t),...r,children:e??h.jsx(Td,{})})}const CF=["Label Categories","Label Types","Label Templates","Multiple Options"];function kF(e){const t=[{label:"Home",view:"Dashboard"}];return e==="Labels"||e==="Label Categories"||e==="Label Types"||e==="Label Templates"||e==="Multiple Options"?(CF.includes(e)&&t.push({label:"Labeling",view:"Labels"}),t.push({label:e,view:e})):t.push({label:e,view:e}),t}function TF({children:e,currentView:t,setCurrentView:r}){const n=kF(t);return h.jsxs("div",{className:"flex h-screen bg-gray-50 overflow-hidden font-sans",style:{"--header-bar-height":"90px"},children:[h.jsx(Y6,{currentView:t,setCurrentView:r}),h.jsxs("div",{className:"flex-1 flex flex-col min-w-0 overflow-hidden",children:[h.jsx(_F,{title:t}),h.jsx("main",{className:"flex-1 overflow-y-auto p-8",children:h.jsxs("div",{className:"flex flex-col gap-6 w-full",children:[h.jsx(jF,{children:h.jsx(OF,{className:"text-gray-500",children:n.map((i,a)=>h.jsxs(L.Fragment,{children:[a>0&&h.jsx(NF,{}),h.jsx(EF,{children:a===n.length-1?h.jsx(AF,{className:"font-medium",style:{color:"#1b46c7"},children:i.label}):h.jsx(PF,{asChild:!0,children:h.jsx("button",{type:"button",onClick:()=>r(i.view),className:"hover:text-gray-900 transition-colors",children:i.label})})})]},a))})}),h.jsx("div",{className:"w-full min-h-0",children:e})]})})]})]})}function jr({className:e,...t}){return h.jsx("div",{"data-slot":"card",className:Ne("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border",e),...t})}function rn({className:e,...t}){return h.jsx("div",{"data-slot":"card-header",className:Ne("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 pt-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",e),...t})}function nn({className:e,...t}){return h.jsx("h4",{"data-slot":"card-title",className:Ne("leading-none",e),...t})}function Id({className:e,...t}){return h.jsx("p",{"data-slot":"card-description",className:Ne("text-muted-foreground",e),...t})}function Lr({className:e,...t}){return h.jsx("div",{"data-slot":"card-content",className:Ne("px-6 [&:last-child]:pb-6",e),...t})}function RF({title:e}){return h.jsxs("div",{className:"space-y-6",children:[h.jsx("div",{className:"grid gap-4 md:grid-cols-2 lg:grid-cols-4",children:[1,2,3,4].map(t=>h.jsxs(jr,{children:[h.jsx(rn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:h.jsxs(nn,{className:"text-sm font-medium",children:["Metric ",t]})}),h.jsxs(Lr,{children:[h.jsx("div",{className:"text-2xl font-bold",children:"000"}),h.jsx("p",{className:"text-xs text-muted-foreground",children:"+0.0% from last month"})]})]},t))}),h.jsx(jr,{className:"min-h-[400px] flex items-center justify-center border-dashed",children:h.jsxs("div",{className:"text-center text-muted-foreground",children:[h.jsxs("h3",{className:"text-lg font-medium",children:[e," Module"]}),h.jsx("p",{children:"This module is currently under development."})]})})]})}function Kt({className:e,...t}){return h.jsx("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:h.jsx("table",{"data-slot":"table",className:Ne("w-full caption-bottom text-sm",e),...t})})}function Yt({className:e,...t}){return h.jsx("thead",{"data-slot":"table-header",className:Ne("[&_tr]:border-b",e),...t})}function Qt({className:e,...t}){return h.jsx("tbody",{"data-slot":"table-body",className:Ne("[&_tr:last-child]:border-0",e),...t})}function Ke({className:e,...t}){return h.jsx("tr",{"data-slot":"table-row",className:Ne("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",e),...t})}function me({className:e,...t}){return h.jsx("th",{"data-slot":"table-head",className:Ne("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...t})}function le({className:e,...t}){return h.jsx("td",{"data-slot":"table-cell",className:Ne("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...t})}function xb(e,[t,r]){return Math.min(r,Math.max(t,e))}function Fe(e,t,{checkForDefaultPrevented:r=!0}={}){return function(i){if(e?.(i),r===!1||!i.defaultPrevented)return t?.(i)}}function MF(e,t){const r=E.createContext(t),n=a=>{const{children:s,...u}=a,f=E.useMemo(()=>u,Object.values(u));return h.jsx(r.Provider,{value:f,children:s})};n.displayName=e+"Provider";function i(a){const s=E.useContext(r);if(s)return s;if(t!==void 0)return t;throw new Error(`\`${a}\` must be used within \`${e}\``)}return[n,i]}function _i(e,t=[]){let r=[];function n(a,s){const u=E.createContext(s),f=r.length;r=[...r,s];const c=p=>{const{scope:m,children:g,...w}=p,y=m?.[e]?.[f]||u,b=E.useMemo(()=>w,Object.values(w));return h.jsx(y.Provider,{value:b,children:g})};c.displayName=a+"Provider";function d(p,m){const g=m?.[e]?.[f]||u,w=E.useContext(g);if(w)return w;if(s!==void 0)return s;throw new Error(`\`${p}\` must be used within \`${a}\``)}return[c,d]}const i=()=>{const a=r.map(s=>E.createContext(s));return function(u){const f=u?.[e]||a;return E.useMemo(()=>({[`__scope${e}`]:{...u,[e]:f}}),[u,f])}};return i.scopeName=e,[n,IF(i,...t)]}function IF(...e){const t=e[0];if(e.length===1)return t;const r=()=>{const n=e.map(i=>({useScope:i(),scopeName:i.scopeName}));return function(a){const s=n.reduce((u,{useScope:f,scopeName:c})=>{const p=f(a)[`__scope${c}`];return{...u,...p}},{});return E.useMemo(()=>({[`__scope${t.scopeName}`]:s}),[s])}};return r.scopeName=t.scopeName,r}function HO(e){const t=DF(e),r=E.forwardRef((n,i)=>{const{children:a,...s}=n,u=E.Children.toArray(a),f=u.find($F);if(f){const c=f.props.children,d=u.map(p=>p===f?E.Children.count(c)>1?E.Children.only(null):E.isValidElement(c)?c.props.children:null:p);return h.jsx(t,{...s,ref:i,children:E.isValidElement(c)?E.cloneElement(c,void 0,d):null})}return h.jsx(t,{...s,ref:i,children:a})});return r.displayName=`${e}.Slot`,r}function DF(e){const t=E.forwardRef((r,n)=>{const{children:i,...a}=r;if(E.isValidElement(i)){const s=FF(i),u=BF(a,i.props);return i.type!==E.Fragment&&(u.ref=n?Fs(n,s):s),E.cloneElement(i,u)}return E.Children.count(i)>1?E.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var LF=Symbol("radix.slottable");function $F(e){return E.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===LF}function BF(e,t){const r={...t};for(const n in t){const i=e[n],a=t[n];/^on[A-Z]/.test(n)?i&&a?r[n]=(...u)=>{const f=a(...u);return i(...u),f}:i&&(r[n]=i):n==="style"?r[n]={...i,...a}:n==="className"&&(r[n]=[i,a].filter(Boolean).join(" "))}return{...e,...r}}function FF(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning;return r?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning,r?e.props.ref:e.props.ref||e.ref)}function XR(e){const t=e+"CollectionProvider",[r,n]=_i(t),[i,a]=r(t,{collectionRef:{current:null},itemMap:new Map}),s=y=>{const{scope:b,children:_}=y,j=L.useRef(null),P=L.useRef(new Map).current;return h.jsx(i,{scope:b,itemMap:P,collectionRef:j,children:_})};s.displayName=t;const u=e+"CollectionSlot",f=HO(u),c=L.forwardRef((y,b)=>{const{scope:_,children:j}=y,P=a(u,_),k=nt(b,P.collectionRef);return h.jsx(f,{ref:k,children:j})});c.displayName=u;const d=e+"CollectionItemSlot",p="data-radix-collection-item",m=HO(d),g=L.forwardRef((y,b)=>{const{scope:_,children:j,...P}=y,k=L.useRef(null),A=nt(b,k),N=a(d,_);return L.useEffect(()=>(N.itemMap.set(k,{ref:k,...P}),()=>void N.itemMap.delete(k))),h.jsx(m,{[p]:"",ref:A,children:j})});g.displayName=d;function w(y){const b=a(e+"CollectionConsumer",y);return L.useCallback(()=>{const j=b.collectionRef.current;if(!j)return[];const P=Array.from(j.querySelectorAll(`[${p}]`));return Array.from(b.itemMap.values()).sort((N,C)=>P.indexOf(N.ref.current)-P.indexOf(C.ref.current))},[b.collectionRef,b.itemMap])}return[{Provider:s,Slot:c,ItemSlot:g},w,n]}var zF=E.createContext(void 0);function Zh(e){const t=E.useContext(zF);return e||t||"ltr"}function qF(e){const t=UF(e),r=E.forwardRef((n,i)=>{const{children:a,...s}=n,u=E.Children.toArray(a),f=u.find(HF);if(f){const c=f.props.children,d=u.map(p=>p===f?E.Children.count(c)>1?E.Children.only(null):E.isValidElement(c)?c.props.children:null:p);return h.jsx(t,{...s,ref:i,children:E.isValidElement(c)?E.cloneElement(c,void 0,d):null})}return h.jsx(t,{...s,ref:i,children:a})});return r.displayName=`${e}.Slot`,r}function UF(e){const t=E.forwardRef((r,n)=>{const{children:i,...a}=r;if(E.isValidElement(i)){const s=GF(i),u=VF(a,i.props);return i.type!==E.Fragment&&(u.ref=n?Fs(n,s):s),E.cloneElement(i,u)}return E.Children.count(i)>1?E.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var WF=Symbol("radix.slottable");function HF(e){return E.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===WF}function VF(e,t){const r={...t};for(const n in t){const i=e[n],a=t[n];/^on[A-Z]/.test(n)?i&&a?r[n]=(...u)=>{const f=a(...u);return i(...u),f}:i&&(r[n]=i):n==="style"?r[n]={...i,...a}:n==="className"&&(r[n]=[i,a].filter(Boolean).join(" "))}return{...e,...r}}function GF(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning;return r?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning,r?e.props.ref:e.props.ref||e.ref)}var XF=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Xe=XF.reduce((e,t)=>{const r=qF(`Primitive.${t}`),n=E.forwardRef((i,a)=>{const{asChild:s,...u}=i,f=s?r:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),h.jsx(f,{...u,ref:a})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{});function KF(e,t){e&&Qc.flushSync(()=>e.dispatchEvent(t))}function YF(e,t=globalThis?.document){const r=cr(e);E.useEffect(()=>{const n=i=>{i.key==="Escape"&&r(i)};return t.addEventListener("keydown",n,{capture:!0}),()=>t.removeEventListener("keydown",n,{capture:!0})},[r,t])}var QF="DismissableLayer",bb="dismissableLayer.update",ZF="dismissableLayer.pointerDownOutside",JF="dismissableLayer.focusOutside",VO,KR=E.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),cw=E.forwardRef((e,t)=>{const{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:n,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:s,onDismiss:u,...f}=e,c=E.useContext(KR),[d,p]=E.useState(null),m=d?.ownerDocument??globalThis?.document,[,g]=E.useState({}),w=nt(t,C=>p(C)),y=Array.from(c.layers),[b]=[...c.layersWithOutsidePointerEventsDisabled].slice(-1),_=y.indexOf(b),j=d?y.indexOf(d):-1,P=c.layersWithOutsidePointerEventsDisabled.size>0,k=j>=_,A=rz(C=>{const T=C.target,M=[...c.branches].some(F=>F.contains(T));!k||M||(i?.(C),s?.(C),C.defaultPrevented||u?.())},m),N=nz(C=>{const T=C.target;[...c.branches].some(F=>F.contains(T))||(a?.(C),s?.(C),C.defaultPrevented||u?.())},m);return YF(C=>{j===c.layers.size-1&&(n?.(C),!C.defaultPrevented&&u&&(C.preventDefault(),u()))},m),E.useEffect(()=>{if(d)return r&&(c.layersWithOutsidePointerEventsDisabled.size===0&&(VO=m.body.style.pointerEvents,m.body.style.pointerEvents="none"),c.layersWithOutsidePointerEventsDisabled.add(d)),c.layers.add(d),GO(),()=>{r&&c.layersWithOutsidePointerEventsDisabled.size===1&&(m.body.style.pointerEvents=VO)}},[d,m,r,c]),E.useEffect(()=>()=>{d&&(c.layers.delete(d),c.layersWithOutsidePointerEventsDisabled.delete(d),GO())},[d,c]),E.useEffect(()=>{const C=()=>g({});return document.addEventListener(bb,C),()=>document.removeEventListener(bb,C)},[]),h.jsx(Xe.div,{...f,ref:w,style:{pointerEvents:P?k?"auto":"none":void 0,...e.style},onFocusCapture:Fe(e.onFocusCapture,N.onFocusCapture),onBlurCapture:Fe(e.onBlurCapture,N.onBlurCapture),onPointerDownCapture:Fe(e.onPointerDownCapture,A.onPointerDownCapture)})});cw.displayName=QF;var ez="DismissableLayerBranch",tz=E.forwardRef((e,t)=>{const r=E.useContext(KR),n=E.useRef(null),i=nt(t,n);return E.useEffect(()=>{const a=n.current;if(a)return r.branches.add(a),()=>{r.branches.delete(a)}},[r.branches]),h.jsx(Xe.div,{...e,ref:i})});tz.displayName=ez;function rz(e,t=globalThis?.document){const r=cr(e),n=E.useRef(!1),i=E.useRef(()=>{});return E.useEffect(()=>{const a=u=>{if(u.target&&!n.current){let f=function(){YR(ZF,r,c,{discrete:!0})};const c={originalEvent:u};u.pointerType==="touch"?(t.removeEventListener("click",i.current),i.current=f,t.addEventListener("click",i.current,{once:!0})):f()}else t.removeEventListener("click",i.current);n.current=!1},s=window.setTimeout(()=>{t.addEventListener("pointerdown",a)},0);return()=>{window.clearTimeout(s),t.removeEventListener("pointerdown",a),t.removeEventListener("click",i.current)}},[t,r]),{onPointerDownCapture:()=>n.current=!0}}function nz(e,t=globalThis?.document){const r=cr(e),n=E.useRef(!1);return E.useEffect(()=>{const i=a=>{a.target&&!n.current&&YR(JF,r,{originalEvent:a},{discrete:!1})};return t.addEventListener("focusin",i),()=>t.removeEventListener("focusin",i)},[t,r]),{onFocusCapture:()=>n.current=!0,onBlurCapture:()=>n.current=!1}}function GO(){const e=new CustomEvent(bb);document.dispatchEvent(e)}function YR(e,t,r,{discrete:n}){const i=r.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:r});t&&i.addEventListener(e,t,{once:!0}),n?KF(i,a):i.dispatchEvent(a)}var Zv=0;function QR(){E.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??XO()),document.body.insertAdjacentElement("beforeend",e[1]??XO()),Zv++,()=>{Zv===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),Zv--}},[])}function XO(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var Jv="focusScope.autoFocusOnMount",eg="focusScope.autoFocusOnUnmount",KO={bubbles:!1,cancelable:!0},iz="FocusScope",uw=E.forwardRef((e,t)=>{const{loop:r=!1,trapped:n=!1,onMountAutoFocus:i,onUnmountAutoFocus:a,...s}=e,[u,f]=E.useState(null),c=cr(i),d=cr(a),p=E.useRef(null),m=nt(t,y=>f(y)),g=E.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;E.useEffect(()=>{if(n){let y=function(P){if(g.paused||!u)return;const k=P.target;u.contains(k)?p.current=k:Qi(p.current,{select:!0})},b=function(P){if(g.paused||!u)return;const k=P.relatedTarget;k!==null&&(u.contains(k)||Qi(p.current,{select:!0}))},_=function(P){if(document.activeElement===document.body)for(const A of P)A.removedNodes.length>0&&Qi(u)};document.addEventListener("focusin",y),document.addEventListener("focusout",b);const j=new MutationObserver(_);return u&&j.observe(u,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",y),document.removeEventListener("focusout",b),j.disconnect()}}},[n,u,g.paused]),E.useEffect(()=>{if(u){QO.add(g);const y=document.activeElement;if(!u.contains(y)){const _=new CustomEvent(Jv,KO);u.addEventListener(Jv,c),u.dispatchEvent(_),_.defaultPrevented||(az(uz(ZR(u)),{select:!0}),document.activeElement===y&&Qi(u))}return()=>{u.removeEventListener(Jv,c),setTimeout(()=>{const _=new CustomEvent(eg,KO);u.addEventListener(eg,d),u.dispatchEvent(_),_.defaultPrevented||Qi(y??document.body,{select:!0}),u.removeEventListener(eg,d),QO.remove(g)},0)}}},[u,c,d,g]);const w=E.useCallback(y=>{if(!r&&!n||g.paused)return;const b=y.key==="Tab"&&!y.altKey&&!y.ctrlKey&&!y.metaKey,_=document.activeElement;if(b&&_){const j=y.currentTarget,[P,k]=oz(j);P&&k?!y.shiftKey&&_===k?(y.preventDefault(),r&&Qi(P,{select:!0})):y.shiftKey&&_===P&&(y.preventDefault(),r&&Qi(k,{select:!0})):_===j&&y.preventDefault()}},[r,n,g.paused]);return h.jsx(Xe.div,{tabIndex:-1,...s,ref:m,onKeyDown:w})});uw.displayName=iz;function az(e,{select:t=!1}={}){const r=document.activeElement;for(const n of e)if(Qi(n,{select:t}),document.activeElement!==r)return}function oz(e){const t=ZR(e),r=YO(t,e),n=YO(t.reverse(),e);return[r,n]}function ZR(e){const t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:n=>{const i=n.tagName==="INPUT"&&n.type==="hidden";return n.disabled||n.hidden||i?NodeFilter.FILTER_SKIP:n.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t}function YO(e,t){for(const r of e)if(!sz(r,{upTo:t}))return r}function sz(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function lz(e){return e instanceof HTMLInputElement&&"select"in e}function Qi(e,{select:t=!1}={}){if(e&&e.focus){const r=document.activeElement;e.focus({preventScroll:!0}),e!==r&&lz(e)&&t&&e.select()}}var QO=cz();function cz(){let e=[];return{add(t){const r=e[0];t!==r&&r?.pause(),e=ZO(e,t),e.unshift(t)},remove(t){e=ZO(e,t),e[0]?.resume()}}}function ZO(e,t){const r=[...e],n=r.indexOf(t);return n!==-1&&r.splice(n,1),r}function uz(e){return e.filter(t=>t.tagName!=="A")}var fz=rw[" useId ".trim().toString()]||(()=>{}),dz=0;function ta(e){const[t,r]=E.useState(fz());return Rt(()=>{r(n=>n??String(dz++))},[e]),e||(t?`radix-${t}`:"")}const hz=["top","right","bottom","left"],ia=Math.min,Br=Math.max,Dd=Math.round,Ef=Math.floor,Ln=e=>({x:e,y:e}),pz={left:"right",right:"left",bottom:"top",top:"bottom"},mz={start:"end",end:"start"};function wb(e,t,r){return Br(e,ia(t,r))}function gi(e,t){return typeof e=="function"?e(t):e}function yi(e){return e.split("-")[0]}function zs(e){return e.split("-")[1]}function fw(e){return e==="x"?"y":"x"}function dw(e){return e==="y"?"height":"width"}const vz=new Set(["top","bottom"]);function In(e){return vz.has(yi(e))?"y":"x"}function hw(e){return fw(In(e))}function gz(e,t,r){r===void 0&&(r=!1);const n=zs(e),i=hw(e),a=dw(i);let s=i==="x"?n===(r?"end":"start")?"right":"left":n==="start"?"bottom":"top";return t.reference[a]>t.floating[a]&&(s=Ld(s)),[s,Ld(s)]}function yz(e){const t=Ld(e);return[Sb(e),t,Sb(t)]}function Sb(e){return e.replace(/start|end/g,t=>mz[t])}const JO=["left","right"],e2=["right","left"],xz=["top","bottom"],bz=["bottom","top"];function wz(e,t,r){switch(e){case"top":case"bottom":return r?t?e2:JO:t?JO:e2;case"left":case"right":return t?xz:bz;default:return[]}}function Sz(e,t,r,n){const i=zs(e);let a=wz(yi(e),r==="start",n);return i&&(a=a.map(s=>s+"-"+i),t&&(a=a.concat(a.map(Sb)))),a}function Ld(e){return e.replace(/left|right|bottom|top/g,t=>pz[t])}function _z(e){return{top:0,right:0,bottom:0,left:0,...e}}function JR(e){return typeof e!="number"?_z(e):{top:e,right:e,bottom:e,left:e}}function $d(e){const{x:t,y:r,width:n,height:i}=e;return{width:n,height:i,top:r,left:t,right:t+n,bottom:r+i,x:t,y:r}}function t2(e,t,r){let{reference:n,floating:i}=e;const a=In(t),s=hw(t),u=dw(s),f=yi(t),c=a==="y",d=n.x+n.width/2-i.width/2,p=n.y+n.height/2-i.height/2,m=n[u]/2-i[u]/2;let g;switch(f){case"top":g={x:d,y:n.y-i.height};break;case"bottom":g={x:d,y:n.y+n.height};break;case"right":g={x:n.x+n.width,y:p};break;case"left":g={x:n.x-i.width,y:p};break;default:g={x:n.x,y:n.y}}switch(zs(t)){case"start":g[s]-=m*(r&&c?-1:1);break;case"end":g[s]+=m*(r&&c?-1:1);break}return g}async function jz(e,t){var r;t===void 0&&(t={});const{x:n,y:i,platform:a,rects:s,elements:u,strategy:f}=e,{boundary:c="clippingAncestors",rootBoundary:d="viewport",elementContext:p="floating",altBoundary:m=!1,padding:g=0}=gi(t,e),w=JR(g),b=u[m?p==="floating"?"reference":"floating":p],_=$d(await a.getClippingRect({element:(r=await(a.isElement==null?void 0:a.isElement(b)))==null||r?b:b.contextElement||await(a.getDocumentElement==null?void 0:a.getDocumentElement(u.floating)),boundary:c,rootBoundary:d,strategy:f})),j=p==="floating"?{x:n,y:i,width:s.floating.width,height:s.floating.height}:s.reference,P=await(a.getOffsetParent==null?void 0:a.getOffsetParent(u.floating)),k=await(a.isElement==null?void 0:a.isElement(P))?await(a.getScale==null?void 0:a.getScale(P))||{x:1,y:1}:{x:1,y:1},A=$d(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:u,rect:j,offsetParent:P,strategy:f}):j);return{top:(_.top-A.top+w.top)/k.y,bottom:(A.bottom-_.bottom+w.bottom)/k.y,left:(_.left-A.left+w.left)/k.x,right:(A.right-_.right+w.right)/k.x}}const Oz=async(e,t,r)=>{const{placement:n="bottom",strategy:i="absolute",middleware:a=[],platform:s}=r,u=a.filter(Boolean),f=await(s.isRTL==null?void 0:s.isRTL(t));let c=await s.getElementRects({reference:e,floating:t,strategy:i}),{x:d,y:p}=t2(c,n,f),m=n,g={},w=0;for(let b=0;b({name:"arrow",options:e,async fn(t){const{x:r,y:n,placement:i,rects:a,platform:s,elements:u,middlewareData:f}=t,{element:c,padding:d=0}=gi(e,t)||{};if(c==null)return{};const p=JR(d),m={x:r,y:n},g=hw(i),w=dw(g),y=await s.getDimensions(c),b=g==="y",_=b?"top":"left",j=b?"bottom":"right",P=b?"clientHeight":"clientWidth",k=a.reference[w]+a.reference[g]-m[g]-a.floating[w],A=m[g]-a.reference[g],N=await(s.getOffsetParent==null?void 0:s.getOffsetParent(c));let C=N?N[P]:0;(!C||!await(s.isElement==null?void 0:s.isElement(N)))&&(C=u.floating[P]||a.floating[w]);const T=k/2-A/2,M=C/2-y[w]/2-1,F=ia(p[_],M),I=ia(p[j],M),D=F,q=C-y[w]-I,U=C/2-y[w]/2+T,H=wb(D,U,q),X=!f.arrow&&zs(i)!=null&&U!==H&&a.reference[w]/2-(UU<=0)){var I,D;const U=(((I=a.flip)==null?void 0:I.index)||0)+1,H=C[U];if(H&&(!(p==="alignment"?j!==In(H):!1)||F.every($=>In($.placement)===j?$.overflows[0]>0:!0)))return{data:{index:U,overflows:F},reset:{placement:H}};let X=(D=F.filter(Y=>Y.overflows[0]<=0).sort((Y,$)=>Y.overflows[1]-$.overflows[1])[0])==null?void 0:D.placement;if(!X)switch(g){case"bestFit":{var q;const Y=(q=F.filter($=>{if(N){const ee=In($.placement);return ee===j||ee==="y"}return!0}).map($=>[$.placement,$.overflows.filter(ee=>ee>0).reduce((ee,re)=>ee+re,0)]).sort(($,ee)=>$[1]-ee[1])[0])==null?void 0:q[0];Y&&(X=Y);break}case"initialPlacement":X=u;break}if(i!==X)return{reset:{placement:X}}}return{}}}};function r2(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function n2(e){return hz.some(t=>e[t]>=0)}const Az=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:r,platform:n}=t,{strategy:i="referenceHidden",...a}=gi(e,t);switch(i){case"referenceHidden":{const s=await n.detectOverflow(t,{...a,elementContext:"reference"}),u=r2(s,r.reference);return{data:{referenceHiddenOffsets:u,referenceHidden:n2(u)}}}case"escaped":{const s=await n.detectOverflow(t,{...a,altBoundary:!0}),u=r2(s,r.floating);return{data:{escapedOffsets:u,escaped:n2(u)}}}default:return{}}}}},eM=new Set(["left","top"]);async function Nz(e,t){const{placement:r,platform:n,elements:i}=e,a=await(n.isRTL==null?void 0:n.isRTL(i.floating)),s=yi(r),u=zs(r),f=In(r)==="y",c=eM.has(s)?-1:1,d=a&&f?-1:1,p=gi(t,e);let{mainAxis:m,crossAxis:g,alignmentAxis:w}=typeof p=="number"?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:p.mainAxis||0,crossAxis:p.crossAxis||0,alignmentAxis:p.alignmentAxis};return u&&typeof w=="number"&&(g=u==="end"?w*-1:w),f?{x:g*d,y:m*c}:{x:m*c,y:g*d}}const Cz=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var r,n;const{x:i,y:a,placement:s,middlewareData:u}=t,f=await Nz(t,e);return s===((r=u.offset)==null?void 0:r.placement)&&(n=u.arrow)!=null&&n.alignmentOffset?{}:{x:i+f.x,y:a+f.y,data:{...f,placement:s}}}}},kz=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:r,y:n,placement:i,platform:a}=t,{mainAxis:s=!0,crossAxis:u=!1,limiter:f={fn:_=>{let{x:j,y:P}=_;return{x:j,y:P}}},...c}=gi(e,t),d={x:r,y:n},p=await a.detectOverflow(t,c),m=In(yi(i)),g=fw(m);let w=d[g],y=d[m];if(s){const _=g==="y"?"top":"left",j=g==="y"?"bottom":"right",P=w+p[_],k=w-p[j];w=wb(P,w,k)}if(u){const _=m==="y"?"top":"left",j=m==="y"?"bottom":"right",P=y+p[_],k=y-p[j];y=wb(P,y,k)}const b=f.fn({...t,[g]:w,[m]:y});return{...b,data:{x:b.x-r,y:b.y-n,enabled:{[g]:s,[m]:u}}}}}},Tz=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:r,y:n,placement:i,rects:a,middlewareData:s}=t,{offset:u=0,mainAxis:f=!0,crossAxis:c=!0}=gi(e,t),d={x:r,y:n},p=In(i),m=fw(p);let g=d[m],w=d[p];const y=gi(u,t),b=typeof y=="number"?{mainAxis:y,crossAxis:0}:{mainAxis:0,crossAxis:0,...y};if(f){const P=m==="y"?"height":"width",k=a.reference[m]-a.floating[P]+b.mainAxis,A=a.reference[m]+a.reference[P]-b.mainAxis;gA&&(g=A)}if(c){var _,j;const P=m==="y"?"width":"height",k=eM.has(yi(i)),A=a.reference[p]-a.floating[P]+(k&&((_=s.offset)==null?void 0:_[p])||0)+(k?0:b.crossAxis),N=a.reference[p]+a.reference[P]+(k?0:((j=s.offset)==null?void 0:j[p])||0)-(k?b.crossAxis:0);wN&&(w=N)}return{[m]:g,[p]:w}}}},Rz=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var r,n;const{placement:i,rects:a,platform:s,elements:u}=t,{apply:f=()=>{},...c}=gi(e,t),d=await s.detectOverflow(t,c),p=yi(i),m=zs(i),g=In(i)==="y",{width:w,height:y}=a.floating;let b,_;p==="top"||p==="bottom"?(b=p,_=m===(await(s.isRTL==null?void 0:s.isRTL(u.floating))?"start":"end")?"left":"right"):(_=p,b=m==="end"?"top":"bottom");const j=y-d.top-d.bottom,P=w-d.left-d.right,k=ia(y-d[b],j),A=ia(w-d[_],P),N=!t.middlewareData.shift;let C=k,T=A;if((r=t.middlewareData.shift)!=null&&r.enabled.x&&(T=P),(n=t.middlewareData.shift)!=null&&n.enabled.y&&(C=j),N&&!m){const F=Br(d.left,0),I=Br(d.right,0),D=Br(d.top,0),q=Br(d.bottom,0);g?T=w-2*(F!==0||I!==0?F+I:Br(d.left,d.right)):C=y-2*(D!==0||q!==0?D+q:Br(d.top,d.bottom))}await f({...t,availableWidth:T,availableHeight:C});const M=await s.getDimensions(u.floating);return w!==M.width||y!==M.height?{reset:{rects:!0}}:{}}}};function Jh(){return typeof window<"u"}function qs(e){return tM(e)?(e.nodeName||"").toLowerCase():"#document"}function qr(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Gn(e){var t;return(t=(tM(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function tM(e){return Jh()?e instanceof Node||e instanceof qr(e).Node:!1}function jn(e){return Jh()?e instanceof Element||e instanceof qr(e).Element:!1}function Fn(e){return Jh()?e instanceof HTMLElement||e instanceof qr(e).HTMLElement:!1}function i2(e){return!Jh()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof qr(e).ShadowRoot}const Mz=new Set(["inline","contents"]);function Zc(e){const{overflow:t,overflowX:r,overflowY:n,display:i}=On(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+r)&&!Mz.has(i)}const Iz=new Set(["table","td","th"]);function Dz(e){return Iz.has(qs(e))}const Lz=[":popover-open",":modal"];function ep(e){return Lz.some(t=>{try{return e.matches(t)}catch{return!1}})}const $z=["transform","translate","scale","rotate","perspective"],Bz=["transform","translate","scale","rotate","perspective","filter"],Fz=["paint","layout","strict","content"];function pw(e){const t=mw(),r=jn(e)?On(e):e;return $z.some(n=>r[n]?r[n]!=="none":!1)||(r.containerType?r.containerType!=="normal":!1)||!t&&(r.backdropFilter?r.backdropFilter!=="none":!1)||!t&&(r.filter?r.filter!=="none":!1)||Bz.some(n=>(r.willChange||"").includes(n))||Fz.some(n=>(r.contain||"").includes(n))}function zz(e){let t=aa(e);for(;Fn(t)&&!cs(t);){if(pw(t))return t;if(ep(t))return null;t=aa(t)}return null}function mw(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const qz=new Set(["html","body","#document"]);function cs(e){return qz.has(qs(e))}function On(e){return qr(e).getComputedStyle(e)}function tp(e){return jn(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function aa(e){if(qs(e)==="html")return e;const t=e.assignedSlot||e.parentNode||i2(e)&&e.host||Gn(e);return i2(t)?t.host:t}function rM(e){const t=aa(e);return cs(t)?e.ownerDocument?e.ownerDocument.body:e.body:Fn(t)&&Zc(t)?t:rM(t)}function mc(e,t,r){var n;t===void 0&&(t=[]),r===void 0&&(r=!0);const i=rM(e),a=i===((n=e.ownerDocument)==null?void 0:n.body),s=qr(i);if(a){const u=_b(s);return t.concat(s,s.visualViewport||[],Zc(i)?i:[],u&&r?mc(u):[])}return t.concat(i,mc(i,[],r))}function _b(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function nM(e){const t=On(e);let r=parseFloat(t.width)||0,n=parseFloat(t.height)||0;const i=Fn(e),a=i?e.offsetWidth:r,s=i?e.offsetHeight:n,u=Dd(r)!==a||Dd(n)!==s;return u&&(r=a,n=s),{width:r,height:n,$:u}}function vw(e){return jn(e)?e:e.contextElement}function ts(e){const t=vw(e);if(!Fn(t))return Ln(1);const r=t.getBoundingClientRect(),{width:n,height:i,$:a}=nM(t);let s=(a?Dd(r.width):r.width)/n,u=(a?Dd(r.height):r.height)/i;return(!s||!Number.isFinite(s))&&(s=1),(!u||!Number.isFinite(u))&&(u=1),{x:s,y:u}}const Uz=Ln(0);function iM(e){const t=qr(e);return!mw()||!t.visualViewport?Uz:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Wz(e,t,r){return t===void 0&&(t=!1),!r||t&&r!==qr(e)?!1:t}function Wa(e,t,r,n){t===void 0&&(t=!1),r===void 0&&(r=!1);const i=e.getBoundingClientRect(),a=vw(e);let s=Ln(1);t&&(n?jn(n)&&(s=ts(n)):s=ts(e));const u=Wz(a,r,n)?iM(a):Ln(0);let f=(i.left+u.x)/s.x,c=(i.top+u.y)/s.y,d=i.width/s.x,p=i.height/s.y;if(a){const m=qr(a),g=n&&jn(n)?qr(n):n;let w=m,y=_b(w);for(;y&&n&&g!==w;){const b=ts(y),_=y.getBoundingClientRect(),j=On(y),P=_.left+(y.clientLeft+parseFloat(j.paddingLeft))*b.x,k=_.top+(y.clientTop+parseFloat(j.paddingTop))*b.y;f*=b.x,c*=b.y,d*=b.x,p*=b.y,f+=P,c+=k,w=qr(y),y=_b(w)}}return $d({width:d,height:p,x:f,y:c})}function rp(e,t){const r=tp(e).scrollLeft;return t?t.left+r:Wa(Gn(e)).left+r}function aM(e,t){const r=e.getBoundingClientRect(),n=r.left+t.scrollLeft-rp(e,r),i=r.top+t.scrollTop;return{x:n,y:i}}function Hz(e){let{elements:t,rect:r,offsetParent:n,strategy:i}=e;const a=i==="fixed",s=Gn(n),u=t?ep(t.floating):!1;if(n===s||u&&a)return r;let f={scrollLeft:0,scrollTop:0},c=Ln(1);const d=Ln(0),p=Fn(n);if((p||!p&&!a)&&((qs(n)!=="body"||Zc(s))&&(f=tp(n)),Fn(n))){const g=Wa(n);c=ts(n),d.x=g.x+n.clientLeft,d.y=g.y+n.clientTop}const m=s&&!p&&!a?aM(s,f):Ln(0);return{width:r.width*c.x,height:r.height*c.y,x:r.x*c.x-f.scrollLeft*c.x+d.x+m.x,y:r.y*c.y-f.scrollTop*c.y+d.y+m.y}}function Vz(e){return Array.from(e.getClientRects())}function Gz(e){const t=Gn(e),r=tp(e),n=e.ownerDocument.body,i=Br(t.scrollWidth,t.clientWidth,n.scrollWidth,n.clientWidth),a=Br(t.scrollHeight,t.clientHeight,n.scrollHeight,n.clientHeight);let s=-r.scrollLeft+rp(e);const u=-r.scrollTop;return On(n).direction==="rtl"&&(s+=Br(t.clientWidth,n.clientWidth)-i),{width:i,height:a,x:s,y:u}}const a2=25;function Xz(e,t){const r=qr(e),n=Gn(e),i=r.visualViewport;let a=n.clientWidth,s=n.clientHeight,u=0,f=0;if(i){a=i.width,s=i.height;const d=mw();(!d||d&&t==="fixed")&&(u=i.offsetLeft,f=i.offsetTop)}const c=rp(n);if(c<=0){const d=n.ownerDocument,p=d.body,m=getComputedStyle(p),g=d.compatMode==="CSS1Compat"&&parseFloat(m.marginLeft)+parseFloat(m.marginRight)||0,w=Math.abs(n.clientWidth-p.clientWidth-g);w<=a2&&(a-=w)}else c<=a2&&(a+=c);return{width:a,height:s,x:u,y:f}}const Kz=new Set(["absolute","fixed"]);function Yz(e,t){const r=Wa(e,!0,t==="fixed"),n=r.top+e.clientTop,i=r.left+e.clientLeft,a=Fn(e)?ts(e):Ln(1),s=e.clientWidth*a.x,u=e.clientHeight*a.y,f=i*a.x,c=n*a.y;return{width:s,height:u,x:f,y:c}}function o2(e,t,r){let n;if(t==="viewport")n=Xz(e,r);else if(t==="document")n=Gz(Gn(e));else if(jn(t))n=Yz(t,r);else{const i=iM(e);n={x:t.x-i.x,y:t.y-i.y,width:t.width,height:t.height}}return $d(n)}function oM(e,t){const r=aa(e);return r===t||!jn(r)||cs(r)?!1:On(r).position==="fixed"||oM(r,t)}function Qz(e,t){const r=t.get(e);if(r)return r;let n=mc(e,[],!1).filter(u=>jn(u)&&qs(u)!=="body"),i=null;const a=On(e).position==="fixed";let s=a?aa(e):e;for(;jn(s)&&!cs(s);){const u=On(s),f=pw(s);!f&&u.position==="fixed"&&(i=null),(a?!f&&!i:!f&&u.position==="static"&&!!i&&Kz.has(i.position)||Zc(s)&&!f&&oM(e,s))?n=n.filter(d=>d!==s):i=u,s=aa(s)}return t.set(e,n),n}function Zz(e){let{element:t,boundary:r,rootBoundary:n,strategy:i}=e;const s=[...r==="clippingAncestors"?ep(t)?[]:Qz(t,this._c):[].concat(r),n],u=s[0],f=s.reduce((c,d)=>{const p=o2(t,d,i);return c.top=Br(p.top,c.top),c.right=ia(p.right,c.right),c.bottom=ia(p.bottom,c.bottom),c.left=Br(p.left,c.left),c},o2(t,u,i));return{width:f.right-f.left,height:f.bottom-f.top,x:f.left,y:f.top}}function Jz(e){const{width:t,height:r}=nM(e);return{width:t,height:r}}function e9(e,t,r){const n=Fn(t),i=Gn(t),a=r==="fixed",s=Wa(e,!0,a,t);let u={scrollLeft:0,scrollTop:0};const f=Ln(0);function c(){f.x=rp(i)}if(n||!n&&!a)if((qs(t)!=="body"||Zc(i))&&(u=tp(t)),n){const g=Wa(t,!0,a,t);f.x=g.x+t.clientLeft,f.y=g.y+t.clientTop}else i&&c();a&&!n&&i&&c();const d=i&&!n&&!a?aM(i,u):Ln(0),p=s.left+u.scrollLeft-f.x-d.x,m=s.top+u.scrollTop-f.y-d.y;return{x:p,y:m,width:s.width,height:s.height}}function tg(e){return On(e).position==="static"}function s2(e,t){if(!Fn(e)||On(e).position==="fixed")return null;if(t)return t(e);let r=e.offsetParent;return Gn(e)===r&&(r=r.ownerDocument.body),r}function sM(e,t){const r=qr(e);if(ep(e))return r;if(!Fn(e)){let i=aa(e);for(;i&&!cs(i);){if(jn(i)&&!tg(i))return i;i=aa(i)}return r}let n=s2(e,t);for(;n&&Dz(n)&&tg(n);)n=s2(n,t);return n&&cs(n)&&tg(n)&&!pw(n)?r:n||zz(e)||r}const t9=async function(e){const t=this.getOffsetParent||sM,r=this.getDimensions,n=await r(e.floating);return{reference:e9(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}};function r9(e){return On(e).direction==="rtl"}const n9={convertOffsetParentRelativeRectToViewportRelativeRect:Hz,getDocumentElement:Gn,getClippingRect:Zz,getOffsetParent:sM,getElementRects:t9,getClientRects:Vz,getDimensions:Jz,getScale:ts,isElement:jn,isRTL:r9};function lM(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function i9(e,t){let r=null,n;const i=Gn(e);function a(){var u;clearTimeout(n),(u=r)==null||u.disconnect(),r=null}function s(u,f){u===void 0&&(u=!1),f===void 0&&(f=1),a();const c=e.getBoundingClientRect(),{left:d,top:p,width:m,height:g}=c;if(u||t(),!m||!g)return;const w=Ef(p),y=Ef(i.clientWidth-(d+m)),b=Ef(i.clientHeight-(p+g)),_=Ef(d),P={rootMargin:-w+"px "+-y+"px "+-b+"px "+-_+"px",threshold:Br(0,ia(1,f))||1};let k=!0;function A(N){const C=N[0].intersectionRatio;if(C!==f){if(!k)return s();C?s(!1,C):n=setTimeout(()=>{s(!1,1e-7)},1e3)}C===1&&!lM(c,e.getBoundingClientRect())&&s(),k=!1}try{r=new IntersectionObserver(A,{...P,root:i.ownerDocument})}catch{r=new IntersectionObserver(A,P)}r.observe(e)}return s(!0),a}function a9(e,t,r,n){n===void 0&&(n={});const{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:s=typeof ResizeObserver=="function",layoutShift:u=typeof IntersectionObserver=="function",animationFrame:f=!1}=n,c=vw(e),d=i||a?[...c?mc(c):[],...mc(t)]:[];d.forEach(_=>{i&&_.addEventListener("scroll",r,{passive:!0}),a&&_.addEventListener("resize",r)});const p=c&&u?i9(c,r):null;let m=-1,g=null;s&&(g=new ResizeObserver(_=>{let[j]=_;j&&j.target===c&&g&&(g.unobserve(t),cancelAnimationFrame(m),m=requestAnimationFrame(()=>{var P;(P=g)==null||P.observe(t)})),r()}),c&&!f&&g.observe(c),g.observe(t));let w,y=f?Wa(e):null;f&&b();function b(){const _=Wa(e);y&&!lM(y,_)&&r(),y=_,w=requestAnimationFrame(b)}return r(),()=>{var _;d.forEach(j=>{i&&j.removeEventListener("scroll",r),a&&j.removeEventListener("resize",r)}),p?.(),(_=g)==null||_.disconnect(),g=null,f&&cancelAnimationFrame(w)}}const o9=Cz,s9=kz,l9=Pz,c9=Rz,u9=Az,l2=Ez,f9=Tz,d9=(e,t,r)=>{const n=new Map,i={platform:n9,...r},a={...i.platform,_c:n};return Oz(e,t,{...i,platform:a})};var h9=typeof document<"u",p9=function(){},Ad=h9?E.useLayoutEffect:p9;function Bd(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let r,n,i;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(r=e.length,r!==t.length)return!1;for(n=r;n--!==0;)if(!Bd(e[n],t[n]))return!1;return!0}if(i=Object.keys(e),r=i.length,r!==Object.keys(t).length)return!1;for(n=r;n--!==0;)if(!{}.hasOwnProperty.call(t,i[n]))return!1;for(n=r;n--!==0;){const a=i[n];if(!(a==="_owner"&&e.$$typeof)&&!Bd(e[a],t[a]))return!1}return!0}return e!==e&&t!==t}function cM(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function c2(e,t){const r=cM(e);return Math.round(t*r)/r}function rg(e){const t=E.useRef(e);return Ad(()=>{t.current=e}),t}function m9(e){e===void 0&&(e={});const{placement:t="bottom",strategy:r="absolute",middleware:n=[],platform:i,elements:{reference:a,floating:s}={},transform:u=!0,whileElementsMounted:f,open:c}=e,[d,p]=E.useState({x:0,y:0,strategy:r,placement:t,middlewareData:{},isPositioned:!1}),[m,g]=E.useState(n);Bd(m,n)||g(n);const[w,y]=E.useState(null),[b,_]=E.useState(null),j=E.useCallback($=>{$!==N.current&&(N.current=$,y($))},[]),P=E.useCallback($=>{$!==C.current&&(C.current=$,_($))},[]),k=a||w,A=s||b,N=E.useRef(null),C=E.useRef(null),T=E.useRef(d),M=f!=null,F=rg(f),I=rg(i),D=rg(c),q=E.useCallback(()=>{if(!N.current||!C.current)return;const $={placement:t,strategy:r,middleware:m};I.current&&($.platform=I.current),d9(N.current,C.current,$).then(ee=>{const re={...ee,isPositioned:D.current!==!1};U.current&&!Bd(T.current,re)&&(T.current=re,Qc.flushSync(()=>{p(re)}))})},[m,t,r,I,D]);Ad(()=>{c===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,p($=>({...$,isPositioned:!1})))},[c]);const U=E.useRef(!1);Ad(()=>(U.current=!0,()=>{U.current=!1}),[]),Ad(()=>{if(k&&(N.current=k),A&&(C.current=A),k&&A){if(F.current)return F.current(k,A,q);q()}},[k,A,q,F,M]);const H=E.useMemo(()=>({reference:N,floating:C,setReference:j,setFloating:P}),[j,P]),X=E.useMemo(()=>({reference:k,floating:A}),[k,A]),Y=E.useMemo(()=>{const $={position:r,left:0,top:0};if(!X.floating)return $;const ee=c2(X.floating,d.x),re=c2(X.floating,d.y);return u?{...$,transform:"translate("+ee+"px, "+re+"px)",...cM(X.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:ee,top:re}},[r,u,X.floating,d.x,d.y]);return E.useMemo(()=>({...d,update:q,refs:H,elements:X,floatingStyles:Y}),[d,q,H,X,Y])}const v9=e=>{function t(r){return{}.hasOwnProperty.call(r,"current")}return{name:"arrow",options:e,fn(r){const{element:n,padding:i}=typeof e=="function"?e(r):e;return n&&t(n)?n.current!=null?l2({element:n.current,padding:i}).fn(r):{}:n?l2({element:n,padding:i}).fn(r):{}}}},g9=(e,t)=>({...o9(e),options:[e,t]}),y9=(e,t)=>({...s9(e),options:[e,t]}),x9=(e,t)=>({...f9(e),options:[e,t]}),b9=(e,t)=>({...l9(e),options:[e,t]}),w9=(e,t)=>({...c9(e),options:[e,t]}),S9=(e,t)=>({...u9(e),options:[e,t]}),_9=(e,t)=>({...v9(e),options:[e,t]});var j9="Arrow",uM=E.forwardRef((e,t)=>{const{children:r,width:n=10,height:i=5,...a}=e;return h.jsx(Xe.svg,{...a,ref:t,width:n,height:i,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?r:h.jsx("polygon",{points:"0,0 30,0 15,10"})})});uM.displayName=j9;var O9=uM;function gw(e){const[t,r]=E.useState(void 0);return Rt(()=>{if(e){r({width:e.offsetWidth,height:e.offsetHeight});const n=new ResizeObserver(i=>{if(!Array.isArray(i)||!i.length)return;const a=i[0];let s,u;if("borderBoxSize"in a){const f=a.borderBoxSize,c=Array.isArray(f)?f[0]:f;s=c.inlineSize,u=c.blockSize}else s=e.offsetWidth,u=e.offsetHeight;r({width:s,height:u})});return n.observe(e,{box:"border-box"}),()=>n.unobserve(e)}else r(void 0)},[e]),t}var yw="Popper",[fM,dM]=_i(yw),[E9,hM]=fM(yw),pM=e=>{const{__scopePopper:t,children:r}=e,[n,i]=E.useState(null);return h.jsx(E9,{scope:t,anchor:n,onAnchorChange:i,children:r})};pM.displayName=yw;var mM="PopperAnchor",vM=E.forwardRef((e,t)=>{const{__scopePopper:r,virtualRef:n,...i}=e,a=hM(mM,r),s=E.useRef(null),u=nt(t,s),f=E.useRef(null);return E.useEffect(()=>{const c=f.current;f.current=n?.current||s.current,c!==f.current&&a.onAnchorChange(f.current)}),n?null:h.jsx(Xe.div,{...i,ref:u})});vM.displayName=mM;var xw="PopperContent",[P9,A9]=fM(xw),gM=E.forwardRef((e,t)=>{const{__scopePopper:r,side:n="bottom",sideOffset:i=0,align:a="center",alignOffset:s=0,arrowPadding:u=0,avoidCollisions:f=!0,collisionBoundary:c=[],collisionPadding:d=0,sticky:p="partial",hideWhenDetached:m=!1,updatePositionStrategy:g="optimized",onPlaced:w,...y}=e,b=hM(xw,r),[_,j]=E.useState(null),P=nt(t,J=>j(J)),[k,A]=E.useState(null),N=gw(k),C=N?.width??0,T=N?.height??0,M=n+(a!=="center"?"-"+a:""),F=typeof d=="number"?d:{top:0,right:0,bottom:0,left:0,...d},I=Array.isArray(c)?c:[c],D=I.length>0,q={padding:F,boundary:I.filter(C9),altBoundary:D},{refs:U,floatingStyles:H,placement:X,isPositioned:Y,middlewareData:$}=m9({strategy:"fixed",placement:M,whileElementsMounted:(...J)=>a9(...J,{animationFrame:g==="always"}),elements:{reference:b.anchor},middleware:[g9({mainAxis:i+T,alignmentAxis:s}),f&&y9({mainAxis:!0,crossAxis:!1,limiter:p==="partial"?x9():void 0,...q}),f&&b9({...q}),w9({...q,apply:({elements:J,rects:ce,availableWidth:ie,availableHeight:fe})=>{const{width:xe,height:ae}=ce.reference,Be=J.floating.style;Be.setProperty("--radix-popper-available-width",`${ie}px`),Be.setProperty("--radix-popper-available-height",`${fe}px`),Be.setProperty("--radix-popper-anchor-width",`${xe}px`),Be.setProperty("--radix-popper-anchor-height",`${ae}px`)}}),k&&_9({element:k,padding:u}),k9({arrowWidth:C,arrowHeight:T}),m&&S9({strategy:"referenceHidden",...q})]}),[ee,re]=bM(X),z=cr(w);Rt(()=>{Y&&z?.()},[Y,z]);const K=$.arrow?.x,se=$.arrow?.y,pe=$.arrow?.centerOffset!==0,[G,Q]=E.useState();return Rt(()=>{_&&Q(window.getComputedStyle(_).zIndex)},[_]),h.jsx("div",{ref:U.setFloating,"data-radix-popper-content-wrapper":"",style:{...H,transform:Y?H.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:G,"--radix-popper-transform-origin":[$.transformOrigin?.x,$.transformOrigin?.y].join(" "),...$.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:h.jsx(P9,{scope:r,placedSide:ee,onArrowChange:A,arrowX:K,arrowY:se,shouldHideArrow:pe,children:h.jsx(Xe.div,{"data-side":ee,"data-align":re,...y,ref:P,style:{...y.style,animation:Y?void 0:"none"}})})})});gM.displayName=xw;var yM="PopperArrow",N9={top:"bottom",right:"left",bottom:"top",left:"right"},xM=E.forwardRef(function(t,r){const{__scopePopper:n,...i}=t,a=A9(yM,n),s=N9[a.placedSide];return h.jsx("span",{ref:a.onArrowChange,style:{position:"absolute",left:a.arrowX,top:a.arrowY,[s]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[a.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[a.placedSide],visibility:a.shouldHideArrow?"hidden":void 0},children:h.jsx(O9,{...i,ref:r,style:{...i.style,display:"block"}})})});xM.displayName=yM;function C9(e){return e!==null}var k9=e=>({name:"transformOrigin",options:e,fn(t){const{placement:r,rects:n,middlewareData:i}=t,s=i.arrow?.centerOffset!==0,u=s?0:e.arrowWidth,f=s?0:e.arrowHeight,[c,d]=bM(r),p={start:"0%",center:"50%",end:"100%"}[d],m=(i.arrow?.x??0)+u/2,g=(i.arrow?.y??0)+f/2;let w="",y="";return c==="bottom"?(w=s?p:`${m}px`,y=`${-f}px`):c==="top"?(w=s?p:`${m}px`,y=`${n.floating.height+f}px`):c==="right"?(w=`${-f}px`,y=s?p:`${g}px`):c==="left"&&(w=`${n.floating.width+f}px`,y=s?p:`${g}px`),{data:{x:w,y}}}});function bM(e){const[t,r="center"]=e.split("-");return[t,r]}var T9=pM,R9=vM,M9=gM,I9=xM,D9="Portal",bw=E.forwardRef((e,t)=>{const{container:r,...n}=e,[i,a]=E.useState(!1);Rt(()=>a(!0),[]);const s=r||i&&globalThis?.document?.body;return s?sF.createPortal(h.jsx(Xe.div,{...n,ref:t}),s):null});bw.displayName=D9;function L9(e){const t=$9(e),r=E.forwardRef((n,i)=>{const{children:a,...s}=n,u=E.Children.toArray(a),f=u.find(F9);if(f){const c=f.props.children,d=u.map(p=>p===f?E.Children.count(c)>1?E.Children.only(null):E.isValidElement(c)?c.props.children:null:p);return h.jsx(t,{...s,ref:i,children:E.isValidElement(c)?E.cloneElement(c,void 0,d):null})}return h.jsx(t,{...s,ref:i,children:a})});return r.displayName=`${e}.Slot`,r}function $9(e){const t=E.forwardRef((r,n)=>{const{children:i,...a}=r;if(E.isValidElement(i)){const s=q9(i),u=z9(a,i.props);return i.type!==E.Fragment&&(u.ref=n?Fs(n,s):s),E.cloneElement(i,u)}return E.Children.count(i)>1?E.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var B9=Symbol("radix.slottable");function F9(e){return E.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===B9}function z9(e,t){const r={...t};for(const n in t){const i=e[n],a=t[n];/^on[A-Z]/.test(n)?i&&a?r[n]=(...u)=>{const f=a(...u);return i(...u),f}:i&&(r[n]=i):n==="style"?r[n]={...i,...a}:n==="className"&&(r[n]=[i,a].filter(Boolean).join(" "))}return{...e,...r}}function q9(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning;return r?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning,r?e.props.ref:e.props.ref||e.ref)}var U9=rw[" useInsertionEffect ".trim().toString()]||Rt;function Ha({prop:e,defaultProp:t,onChange:r=()=>{},caller:n}){const[i,a,s]=W9({defaultProp:t,onChange:r}),u=e!==void 0,f=u?e:i;{const d=E.useRef(e!==void 0);E.useEffect(()=>{const p=d.current;p!==u&&console.warn(`${n} is changing from ${p?"controlled":"uncontrolled"} to ${u?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),d.current=u},[u,n])}const c=E.useCallback(d=>{if(u){const p=H9(d)?d(e):d;p!==e&&s.current?.(p)}else a(d)},[u,e,a,s]);return[f,c]}function W9({defaultProp:e,onChange:t}){const[r,n]=E.useState(e),i=E.useRef(r),a=E.useRef(t);return U9(()=>{a.current=t},[t]),E.useEffect(()=>{i.current!==r&&(a.current?.(r),i.current=r)},[r,i]),[r,n,a]}function H9(e){return typeof e=="function"}function ww(e){const t=E.useRef({value:e,previous:e});return E.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var wM=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),V9="VisuallyHidden",G9=E.forwardRef((e,t)=>h.jsx(Xe.span,{...e,ref:t,style:{...wM,...e.style}}));G9.displayName=V9;var X9=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Lo=new WeakMap,Pf=new WeakMap,Af={},ng=0,SM=function(e){return e&&(e.host||SM(e.parentNode))},K9=function(e,t){return t.map(function(r){if(e.contains(r))return r;var n=SM(r);return n&&e.contains(n)?n:(console.error("aria-hidden",r,"in not contained inside",e,". Doing nothing"),null)}).filter(function(r){return!!r})},Y9=function(e,t,r,n){var i=K9(t,Array.isArray(e)?e:[e]);Af[r]||(Af[r]=new WeakMap);var a=Af[r],s=[],u=new Set,f=new Set(i),c=function(p){!p||u.has(p)||(u.add(p),c(p.parentNode))};i.forEach(c);var d=function(p){!p||f.has(p)||Array.prototype.forEach.call(p.children,function(m){if(u.has(m))d(m);else try{var g=m.getAttribute(n),w=g!==null&&g!=="false",y=(Lo.get(m)||0)+1,b=(a.get(m)||0)+1;Lo.set(m,y),a.set(m,b),s.push(m),y===1&&w&&Pf.set(m,!0),b===1&&m.setAttribute(r,"true"),w||m.setAttribute(n,"true")}catch(_){console.error("aria-hidden: cannot operate on ",m,_)}})};return d(t),u.clear(),ng++,function(){s.forEach(function(p){var m=Lo.get(p)-1,g=a.get(p)-1;Lo.set(p,m),a.set(p,g),m||(Pf.has(p)||p.removeAttribute(n),Pf.delete(p)),g||p.removeAttribute(r)}),ng--,ng||(Lo=new WeakMap,Lo=new WeakMap,Pf=new WeakMap,Af={})}},_M=function(e,t,r){r===void 0&&(r="data-aria-hidden");var n=Array.from(Array.isArray(e)?e:[e]),i=X9(e);return i?(n.push.apply(n,Array.from(i.querySelectorAll("[aria-live], script"))),Y9(n,i,r,"aria-hidden")):function(){return null}},Mn=function(){return Mn=Object.assign||function(t){for(var r,n=1,i=arguments.length;n"u")return hq;var t=pq(e),r=document.documentElement.clientWidth,n=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,n-r+t[2]-t[0])}},vq=PM(),rs="data-scroll-locked",gq=function(e,t,r,n){var i=e.left,a=e.top,s=e.right,u=e.gap;return r===void 0&&(r="margin"),` + .`.concat(Z9,` { + overflow: hidden `).concat(n,`; + padding-right: `).concat(u,"px ").concat(n,`; + } + body[`).concat(rs,`] { + overflow: hidden `).concat(n,`; + overscroll-behavior: contain; + `).concat([t&&"position: relative ".concat(n,";"),r==="margin"&&` + padding-left: `.concat(i,`px; + padding-top: `).concat(a,`px; + padding-right: `).concat(s,`px; + margin-left:0; + margin-top:0; + margin-right: `).concat(u,"px ").concat(n,`; + `),r==="padding"&&"padding-right: ".concat(u,"px ").concat(n,";")].filter(Boolean).join(""),` + } + + .`).concat(Nd,` { + right: `).concat(u,"px ").concat(n,`; + } + + .`).concat(Cd,` { + margin-right: `).concat(u,"px ").concat(n,`; + } + + .`).concat(Nd," .").concat(Nd,` { + right: 0 `).concat(n,`; + } + + .`).concat(Cd," .").concat(Cd,` { + margin-right: 0 `).concat(n,`; + } + + body[`).concat(rs,`] { + `).concat(J9,": ").concat(u,`px; + } +`)},f2=function(){var e=parseInt(document.body.getAttribute(rs)||"0",10);return isFinite(e)?e:0},yq=function(){E.useEffect(function(){return document.body.setAttribute(rs,(f2()+1).toString()),function(){var e=f2()-1;e<=0?document.body.removeAttribute(rs):document.body.setAttribute(rs,e.toString())}},[])},xq=function(e){var t=e.noRelative,r=e.noImportant,n=e.gapMode,i=n===void 0?"margin":n;yq();var a=E.useMemo(function(){return mq(i)},[i]);return E.createElement(vq,{styles:gq(a,!t,i,r?"":"!important")})},jb=!1;if(typeof window<"u")try{var Nf=Object.defineProperty({},"passive",{get:function(){return jb=!0,!0}});window.addEventListener("test",Nf,Nf),window.removeEventListener("test",Nf,Nf)}catch{jb=!1}var $o=jb?{passive:!1}:!1,bq=function(e){return e.tagName==="TEXTAREA"},AM=function(e,t){if(!(e instanceof Element))return!1;var r=window.getComputedStyle(e);return r[t]!=="hidden"&&!(r.overflowY===r.overflowX&&!bq(e)&&r[t]==="visible")},wq=function(e){return AM(e,"overflowY")},Sq=function(e){return AM(e,"overflowX")},d2=function(e,t){var r=t.ownerDocument,n=t;do{typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&(n=n.host);var i=NM(e,n);if(i){var a=CM(e,n),s=a[1],u=a[2];if(s>u)return!0}n=n.parentNode}while(n&&n!==r.body);return!1},_q=function(e){var t=e.scrollTop,r=e.scrollHeight,n=e.clientHeight;return[t,r,n]},jq=function(e){var t=e.scrollLeft,r=e.scrollWidth,n=e.clientWidth;return[t,r,n]},NM=function(e,t){return e==="v"?wq(t):Sq(t)},CM=function(e,t){return e==="v"?_q(t):jq(t)},Oq=function(e,t){return e==="h"&&t==="rtl"?-1:1},Eq=function(e,t,r,n,i){var a=Oq(e,window.getComputedStyle(t).direction),s=a*n,u=r.target,f=t.contains(u),c=!1,d=s>0,p=0,m=0;do{if(!u)break;var g=CM(e,u),w=g[0],y=g[1],b=g[2],_=y-b-a*w;(w||_)&&NM(e,u)&&(p+=_,m+=w);var j=u.parentNode;u=j&&j.nodeType===Node.DOCUMENT_FRAGMENT_NODE?j.host:j}while(!f&&u!==document.body||f&&(t.contains(u)||t===u));return(d&&Math.abs(p)<1||!d&&Math.abs(m)<1)&&(c=!0),c},Cf=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},h2=function(e){return[e.deltaX,e.deltaY]},p2=function(e){return e&&"current"in e?e.current:e},Pq=function(e,t){return e[0]===t[0]&&e[1]===t[1]},Aq=function(e){return` + .block-interactivity-`.concat(e,` {pointer-events: none;} + .allow-interactivity-`).concat(e,` {pointer-events: all;} +`)},Nq=0,Bo=[];function Cq(e){var t=E.useRef([]),r=E.useRef([0,0]),n=E.useRef(),i=E.useState(Nq++)[0],a=E.useState(PM)[0],s=E.useRef(e);E.useEffect(function(){s.current=e},[e]),E.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(i));var y=Q9([e.lockRef.current],(e.shards||[]).map(p2),!0).filter(Boolean);return y.forEach(function(b){return b.classList.add("allow-interactivity-".concat(i))}),function(){document.body.classList.remove("block-interactivity-".concat(i)),y.forEach(function(b){return b.classList.remove("allow-interactivity-".concat(i))})}}},[e.inert,e.lockRef.current,e.shards]);var u=E.useCallback(function(y,b){if("touches"in y&&y.touches.length===2||y.type==="wheel"&&y.ctrlKey)return!s.current.allowPinchZoom;var _=Cf(y),j=r.current,P="deltaX"in y?y.deltaX:j[0]-_[0],k="deltaY"in y?y.deltaY:j[1]-_[1],A,N=y.target,C=Math.abs(P)>Math.abs(k)?"h":"v";if("touches"in y&&C==="h"&&N.type==="range")return!1;var T=window.getSelection(),M=T&&T.anchorNode,F=M?M===N||M.contains(N):!1;if(F)return!1;var I=d2(C,N);if(!I)return!0;if(I?A=C:(A=C==="v"?"h":"v",I=d2(C,N)),!I)return!1;if(!n.current&&"changedTouches"in y&&(P||k)&&(n.current=A),!A)return!0;var D=n.current||A;return Eq(D,b,y,D==="h"?P:k)},[]),f=E.useCallback(function(y){var b=y;if(!(!Bo.length||Bo[Bo.length-1]!==a)){var _="deltaY"in b?h2(b):Cf(b),j=t.current.filter(function(A){return A.name===b.type&&(A.target===b.target||b.target===A.shadowParent)&&Pq(A.delta,_)})[0];if(j&&j.should){b.cancelable&&b.preventDefault();return}if(!j){var P=(s.current.shards||[]).map(p2).filter(Boolean).filter(function(A){return A.contains(b.target)}),k=P.length>0?u(b,P[0]):!s.current.noIsolation;k&&b.cancelable&&b.preventDefault()}}},[]),c=E.useCallback(function(y,b,_,j){var P={name:y,delta:b,target:_,should:j,shadowParent:kq(_)};t.current.push(P),setTimeout(function(){t.current=t.current.filter(function(k){return k!==P})},1)},[]),d=E.useCallback(function(y){r.current=Cf(y),n.current=void 0},[]),p=E.useCallback(function(y){c(y.type,h2(y),y.target,u(y,e.lockRef.current))},[]),m=E.useCallback(function(y){c(y.type,Cf(y),y.target,u(y,e.lockRef.current))},[]);E.useEffect(function(){return Bo.push(a),e.setCallbacks({onScrollCapture:p,onWheelCapture:p,onTouchMoveCapture:m}),document.addEventListener("wheel",f,$o),document.addEventListener("touchmove",f,$o),document.addEventListener("touchstart",d,$o),function(){Bo=Bo.filter(function(y){return y!==a}),document.removeEventListener("wheel",f,$o),document.removeEventListener("touchmove",f,$o),document.removeEventListener("touchstart",d,$o)}},[]);var g=e.removeScrollBar,w=e.inert;return E.createElement(E.Fragment,null,w?E.createElement(a,{styles:Aq(i)}):null,g?E.createElement(xq,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function kq(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const Tq=oq(EM,Cq);var Sw=E.forwardRef(function(e,t){return E.createElement(np,Mn({},e,{ref:t,sideCar:Tq}))});Sw.classNames=np.classNames;var Rq=[" ","Enter","ArrowUp","ArrowDown"],Mq=[" ","Enter"],Va="Select",[ip,ap,Iq]=XR(Va),[Us]=_i(Va,[Iq,dM]),op=dM(),[Dq,oa]=Us(Va),[Lq,$q]=Us(Va),kM=e=>{const{__scopeSelect:t,children:r,open:n,defaultOpen:i,onOpenChange:a,value:s,defaultValue:u,onValueChange:f,dir:c,name:d,autoComplete:p,disabled:m,required:g,form:w}=e,y=op(t),[b,_]=E.useState(null),[j,P]=E.useState(null),[k,A]=E.useState(!1),N=Zh(c),[C,T]=Ha({prop:n,defaultProp:i??!1,onChange:a,caller:Va}),[M,F]=Ha({prop:s,defaultProp:u,onChange:f,caller:Va}),I=E.useRef(null),D=b?w||!!b.closest("form"):!0,[q,U]=E.useState(new Set),H=Array.from(q).map(X=>X.props.value).join(";");return h.jsx(T9,{...y,children:h.jsxs(Dq,{required:g,scope:t,trigger:b,onTriggerChange:_,valueNode:j,onValueNodeChange:P,valueNodeHasChildren:k,onValueNodeHasChildrenChange:A,contentId:ta(),value:M,onValueChange:F,open:C,onOpenChange:T,dir:N,triggerPointerDownPosRef:I,disabled:m,children:[h.jsx(ip.Provider,{scope:t,children:h.jsx(Lq,{scope:e.__scopeSelect,onNativeOptionAdd:E.useCallback(X=>{U(Y=>new Set(Y).add(X))},[]),onNativeOptionRemove:E.useCallback(X=>{U(Y=>{const $=new Set(Y);return $.delete(X),$})},[]),children:r})}),D?h.jsxs(JM,{"aria-hidden":!0,required:g,tabIndex:-1,name:d,autoComplete:p,value:M,onChange:X=>F(X.target.value),disabled:m,form:w,children:[M===void 0?h.jsx("option",{value:""}):null,Array.from(q)]},H):null]})})};kM.displayName=Va;var TM="SelectTrigger",RM=E.forwardRef((e,t)=>{const{__scopeSelect:r,disabled:n=!1,...i}=e,a=op(r),s=oa(TM,r),u=s.disabled||n,f=nt(t,s.onTriggerChange),c=ap(r),d=E.useRef("touch"),[p,m,g]=tI(y=>{const b=c().filter(P=>!P.disabled),_=b.find(P=>P.value===s.value),j=rI(b,y,_);j!==void 0&&s.onValueChange(j.value)}),w=y=>{u||(s.onOpenChange(!0),g()),y&&(s.triggerPointerDownPosRef.current={x:Math.round(y.pageX),y:Math.round(y.pageY)})};return h.jsx(R9,{asChild:!0,...a,children:h.jsx(Xe.button,{type:"button",role:"combobox","aria-controls":s.contentId,"aria-expanded":s.open,"aria-required":s.required,"aria-autocomplete":"none",dir:s.dir,"data-state":s.open?"open":"closed",disabled:u,"data-disabled":u?"":void 0,"data-placeholder":eI(s.value)?"":void 0,...i,ref:f,onClick:Fe(i.onClick,y=>{y.currentTarget.focus(),d.current!=="mouse"&&w(y)}),onPointerDown:Fe(i.onPointerDown,y=>{d.current=y.pointerType;const b=y.target;b.hasPointerCapture(y.pointerId)&&b.releasePointerCapture(y.pointerId),y.button===0&&y.ctrlKey===!1&&y.pointerType==="mouse"&&(w(y),y.preventDefault())}),onKeyDown:Fe(i.onKeyDown,y=>{const b=p.current!=="";!(y.ctrlKey||y.altKey||y.metaKey)&&y.key.length===1&&m(y.key),!(b&&y.key===" ")&&Rq.includes(y.key)&&(w(),y.preventDefault())})})})});RM.displayName=TM;var MM="SelectValue",IM=E.forwardRef((e,t)=>{const{__scopeSelect:r,className:n,style:i,children:a,placeholder:s="",...u}=e,f=oa(MM,r),{onValueNodeHasChildrenChange:c}=f,d=a!==void 0,p=nt(t,f.onValueNodeChange);return Rt(()=>{c(d)},[c,d]),h.jsx(Xe.span,{...u,ref:p,style:{pointerEvents:"none"},children:eI(f.value)?h.jsx(h.Fragment,{children:s}):a})});IM.displayName=MM;var Bq="SelectIcon",DM=E.forwardRef((e,t)=>{const{__scopeSelect:r,children:n,...i}=e;return h.jsx(Xe.span,{"aria-hidden":!0,...i,ref:t,children:n||"▼"})});DM.displayName=Bq;var Fq="SelectPortal",LM=e=>h.jsx(bw,{asChild:!0,...e});LM.displayName=Fq;var Ga="SelectContent",$M=E.forwardRef((e,t)=>{const r=oa(Ga,e.__scopeSelect),[n,i]=E.useState();if(Rt(()=>{i(new DocumentFragment)},[]),!r.open){const a=n;return a?Qc.createPortal(h.jsx(BM,{scope:e.__scopeSelect,children:h.jsx(ip.Slot,{scope:e.__scopeSelect,children:h.jsx("div",{children:e.children})})}),a):null}return h.jsx(FM,{...e,ref:t})});$M.displayName=Ga;var xn=10,[BM,sa]=Us(Ga),zq="SelectContentImpl",qq=L9("SelectContent.RemoveScroll"),FM=E.forwardRef((e,t)=>{const{__scopeSelect:r,position:n="item-aligned",onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:s,side:u,sideOffset:f,align:c,alignOffset:d,arrowPadding:p,collisionBoundary:m,collisionPadding:g,sticky:w,hideWhenDetached:y,avoidCollisions:b,..._}=e,j=oa(Ga,r),[P,k]=E.useState(null),[A,N]=E.useState(null),C=nt(t,J=>k(J)),[T,M]=E.useState(null),[F,I]=E.useState(null),D=ap(r),[q,U]=E.useState(!1),H=E.useRef(!1);E.useEffect(()=>{if(P)return _M(P)},[P]),QR();const X=E.useCallback(J=>{const[ce,...ie]=D().map(ae=>ae.ref.current),[fe]=ie.slice(-1),xe=document.activeElement;for(const ae of J)if(ae===xe||(ae?.scrollIntoView({block:"nearest"}),ae===ce&&A&&(A.scrollTop=0),ae===fe&&A&&(A.scrollTop=A.scrollHeight),ae?.focus(),document.activeElement!==xe))return},[D,A]),Y=E.useCallback(()=>X([T,P]),[X,T,P]);E.useEffect(()=>{q&&Y()},[q,Y]);const{onOpenChange:$,triggerPointerDownPosRef:ee}=j;E.useEffect(()=>{if(P){let J={x:0,y:0};const ce=fe=>{J={x:Math.abs(Math.round(fe.pageX)-(ee.current?.x??0)),y:Math.abs(Math.round(fe.pageY)-(ee.current?.y??0))}},ie=fe=>{J.x<=10&&J.y<=10?fe.preventDefault():P.contains(fe.target)||$(!1),document.removeEventListener("pointermove",ce),ee.current=null};return ee.current!==null&&(document.addEventListener("pointermove",ce),document.addEventListener("pointerup",ie,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",ce),document.removeEventListener("pointerup",ie,{capture:!0})}}},[P,$,ee]),E.useEffect(()=>{const J=()=>$(!1);return window.addEventListener("blur",J),window.addEventListener("resize",J),()=>{window.removeEventListener("blur",J),window.removeEventListener("resize",J)}},[$]);const[re,z]=tI(J=>{const ce=D().filter(xe=>!xe.disabled),ie=ce.find(xe=>xe.ref.current===document.activeElement),fe=rI(ce,J,ie);fe&&setTimeout(()=>fe.ref.current.focus())}),K=E.useCallback((J,ce,ie)=>{const fe=!H.current&&!ie;(j.value!==void 0&&j.value===ce||fe)&&(M(J),fe&&(H.current=!0))},[j.value]),se=E.useCallback(()=>P?.focus(),[P]),pe=E.useCallback((J,ce,ie)=>{const fe=!H.current&&!ie;(j.value!==void 0&&j.value===ce||fe)&&I(J)},[j.value]),G=n==="popper"?Ob:zM,Q=G===Ob?{side:u,sideOffset:f,align:c,alignOffset:d,arrowPadding:p,collisionBoundary:m,collisionPadding:g,sticky:w,hideWhenDetached:y,avoidCollisions:b}:{};return h.jsx(BM,{scope:r,content:P,viewport:A,onViewportChange:N,itemRefCallback:K,selectedItem:T,onItemLeave:se,itemTextRefCallback:pe,focusSelectedItem:Y,selectedItemText:F,position:n,isPositioned:q,searchRef:re,children:h.jsx(Sw,{as:qq,allowPinchZoom:!0,children:h.jsx(uw,{asChild:!0,trapped:j.open,onMountAutoFocus:J=>{J.preventDefault()},onUnmountAutoFocus:Fe(i,J=>{j.trigger?.focus({preventScroll:!0}),J.preventDefault()}),children:h.jsx(cw,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:s,onFocusOutside:J=>J.preventDefault(),onDismiss:()=>j.onOpenChange(!1),children:h.jsx(G,{role:"listbox",id:j.contentId,"data-state":j.open?"open":"closed",dir:j.dir,onContextMenu:J=>J.preventDefault(),..._,...Q,onPlaced:()=>U(!0),ref:C,style:{display:"flex",flexDirection:"column",outline:"none",..._.style},onKeyDown:Fe(_.onKeyDown,J=>{const ce=J.ctrlKey||J.altKey||J.metaKey;if(J.key==="Tab"&&J.preventDefault(),!ce&&J.key.length===1&&z(J.key),["ArrowUp","ArrowDown","Home","End"].includes(J.key)){let fe=D().filter(xe=>!xe.disabled).map(xe=>xe.ref.current);if(["ArrowUp","End"].includes(J.key)&&(fe=fe.slice().reverse()),["ArrowUp","ArrowDown"].includes(J.key)){const xe=J.target,ae=fe.indexOf(xe);fe=fe.slice(ae+1)}setTimeout(()=>X(fe)),J.preventDefault()}})})})})})})});FM.displayName=zq;var Uq="SelectItemAlignedPosition",zM=E.forwardRef((e,t)=>{const{__scopeSelect:r,onPlaced:n,...i}=e,a=oa(Ga,r),s=sa(Ga,r),[u,f]=E.useState(null),[c,d]=E.useState(null),p=nt(t,C=>d(C)),m=ap(r),g=E.useRef(!1),w=E.useRef(!0),{viewport:y,selectedItem:b,selectedItemText:_,focusSelectedItem:j}=s,P=E.useCallback(()=>{if(a.trigger&&a.valueNode&&u&&c&&y&&b&&_){const C=a.trigger.getBoundingClientRect(),T=c.getBoundingClientRect(),M=a.valueNode.getBoundingClientRect(),F=_.getBoundingClientRect();if(a.dir!=="rtl"){const xe=F.left-T.left,ae=M.left-xe,Be=C.left-ae,De=C.width+Be,ot=Math.max(De,T.width),et=window.innerWidth-xn,ct=xb(ae,[xn,Math.max(xn,et-ot)]);u.style.minWidth=De+"px",u.style.left=ct+"px"}else{const xe=T.right-F.right,ae=window.innerWidth-M.right-xe,Be=window.innerWidth-C.right-ae,De=C.width+Be,ot=Math.max(De,T.width),et=window.innerWidth-xn,ct=xb(ae,[xn,Math.max(xn,et-ot)]);u.style.minWidth=De+"px",u.style.right=ct+"px"}const I=m(),D=window.innerHeight-xn*2,q=y.scrollHeight,U=window.getComputedStyle(c),H=parseInt(U.borderTopWidth,10),X=parseInt(U.paddingTop,10),Y=parseInt(U.borderBottomWidth,10),$=parseInt(U.paddingBottom,10),ee=H+X+q+$+Y,re=Math.min(b.offsetHeight*5,ee),z=window.getComputedStyle(y),K=parseInt(z.paddingTop,10),se=parseInt(z.paddingBottom,10),pe=C.top+C.height/2-xn,G=D-pe,Q=b.offsetHeight/2,J=b.offsetTop+Q,ce=H+X+J,ie=ee-ce;if(ce<=pe){const xe=I.length>0&&b===I[I.length-1].ref.current;u.style.bottom="0px";const ae=c.clientHeight-y.offsetTop-y.offsetHeight,Be=Math.max(G,Q+(xe?se:0)+ae+Y),De=ce+Be;u.style.height=De+"px"}else{const xe=I.length>0&&b===I[0].ref.current;u.style.top="0px";const Be=Math.max(pe,H+y.offsetTop+(xe?K:0)+Q)+ie;u.style.height=Be+"px",y.scrollTop=ce-pe+y.offsetTop}u.style.margin=`${xn}px 0`,u.style.minHeight=re+"px",u.style.maxHeight=D+"px",n?.(),requestAnimationFrame(()=>g.current=!0)}},[m,a.trigger,a.valueNode,u,c,y,b,_,a.dir,n]);Rt(()=>P(),[P]);const[k,A]=E.useState();Rt(()=>{c&&A(window.getComputedStyle(c).zIndex)},[c]);const N=E.useCallback(C=>{C&&w.current===!0&&(P(),j?.(),w.current=!1)},[P,j]);return h.jsx(Hq,{scope:r,contentWrapper:u,shouldExpandOnScrollRef:g,onScrollButtonChange:N,children:h.jsx("div",{ref:f,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:k},children:h.jsx(Xe.div,{...i,ref:p,style:{boxSizing:"border-box",maxHeight:"100%",...i.style}})})})});zM.displayName=Uq;var Wq="SelectPopperPosition",Ob=E.forwardRef((e,t)=>{const{__scopeSelect:r,align:n="start",collisionPadding:i=xn,...a}=e,s=op(r);return h.jsx(M9,{...s,...a,ref:t,align:n,collisionPadding:i,style:{boxSizing:"border-box",...a.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});Ob.displayName=Wq;var[Hq,_w]=Us(Ga,{}),Eb="SelectViewport",qM=E.forwardRef((e,t)=>{const{__scopeSelect:r,nonce:n,...i}=e,a=sa(Eb,r),s=_w(Eb,r),u=nt(t,a.onViewportChange),f=E.useRef(0);return h.jsxs(h.Fragment,{children:[h.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:n}),h.jsx(ip.Slot,{scope:r,children:h.jsx(Xe.div,{"data-radix-select-viewport":"",role:"presentation",...i,ref:u,style:{position:"relative",flex:1,overflow:"hidden auto",...i.style},onScroll:Fe(i.onScroll,c=>{const d=c.currentTarget,{contentWrapper:p,shouldExpandOnScrollRef:m}=s;if(m?.current&&p){const g=Math.abs(f.current-d.scrollTop);if(g>0){const w=window.innerHeight-xn*2,y=parseFloat(p.style.minHeight),b=parseFloat(p.style.height),_=Math.max(y,b);if(_0?k:0,p.style.justifyContent="flex-end")}}}f.current=d.scrollTop})})})]})});qM.displayName=Eb;var UM="SelectGroup",[Vq,Gq]=Us(UM),Xq=E.forwardRef((e,t)=>{const{__scopeSelect:r,...n}=e,i=ta();return h.jsx(Vq,{scope:r,id:i,children:h.jsx(Xe.div,{role:"group","aria-labelledby":i,...n,ref:t})})});Xq.displayName=UM;var WM="SelectLabel",Kq=E.forwardRef((e,t)=>{const{__scopeSelect:r,...n}=e,i=Gq(WM,r);return h.jsx(Xe.div,{id:i.id,...n,ref:t})});Kq.displayName=WM;var Fd="SelectItem",[Yq,HM]=Us(Fd),VM=E.forwardRef((e,t)=>{const{__scopeSelect:r,value:n,disabled:i=!1,textValue:a,...s}=e,u=oa(Fd,r),f=sa(Fd,r),c=u.value===n,[d,p]=E.useState(a??""),[m,g]=E.useState(!1),w=nt(t,j=>f.itemRefCallback?.(j,n,i)),y=ta(),b=E.useRef("touch"),_=()=>{i||(u.onValueChange(n),u.onOpenChange(!1))};if(n==="")throw new Error("A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return h.jsx(Yq,{scope:r,value:n,disabled:i,textId:y,isSelected:c,onItemTextChange:E.useCallback(j=>{p(P=>P||(j?.textContent??"").trim())},[]),children:h.jsx(ip.ItemSlot,{scope:r,value:n,disabled:i,textValue:d,children:h.jsx(Xe.div,{role:"option","aria-labelledby":y,"data-highlighted":m?"":void 0,"aria-selected":c&&m,"data-state":c?"checked":"unchecked","aria-disabled":i||void 0,"data-disabled":i?"":void 0,tabIndex:i?void 0:-1,...s,ref:w,onFocus:Fe(s.onFocus,()=>g(!0)),onBlur:Fe(s.onBlur,()=>g(!1)),onClick:Fe(s.onClick,()=>{b.current!=="mouse"&&_()}),onPointerUp:Fe(s.onPointerUp,()=>{b.current==="mouse"&&_()}),onPointerDown:Fe(s.onPointerDown,j=>{b.current=j.pointerType}),onPointerMove:Fe(s.onPointerMove,j=>{b.current=j.pointerType,i?f.onItemLeave?.():b.current==="mouse"&&j.currentTarget.focus({preventScroll:!0})}),onPointerLeave:Fe(s.onPointerLeave,j=>{j.currentTarget===document.activeElement&&f.onItemLeave?.()}),onKeyDown:Fe(s.onKeyDown,j=>{f.searchRef?.current!==""&&j.key===" "||(Mq.includes(j.key)&&_(),j.key===" "&&j.preventDefault())})})})})});VM.displayName=Fd;var ec="SelectItemText",GM=E.forwardRef((e,t)=>{const{__scopeSelect:r,className:n,style:i,...a}=e,s=oa(ec,r),u=sa(ec,r),f=HM(ec,r),c=$q(ec,r),[d,p]=E.useState(null),m=nt(t,_=>p(_),f.onItemTextChange,_=>u.itemTextRefCallback?.(_,f.value,f.disabled)),g=d?.textContent,w=E.useMemo(()=>h.jsx("option",{value:f.value,disabled:f.disabled,children:g},f.value),[f.disabled,f.value,g]),{onNativeOptionAdd:y,onNativeOptionRemove:b}=c;return Rt(()=>(y(w),()=>b(w)),[y,b,w]),h.jsxs(h.Fragment,{children:[h.jsx(Xe.span,{id:f.textId,...a,ref:m}),f.isSelected&&s.valueNode&&!s.valueNodeHasChildren?Qc.createPortal(a.children,s.valueNode):null]})});GM.displayName=ec;var XM="SelectItemIndicator",KM=E.forwardRef((e,t)=>{const{__scopeSelect:r,...n}=e;return HM(XM,r).isSelected?h.jsx(Xe.span,{"aria-hidden":!0,...n,ref:t}):null});KM.displayName=XM;var Pb="SelectScrollUpButton",YM=E.forwardRef((e,t)=>{const r=sa(Pb,e.__scopeSelect),n=_w(Pb,e.__scopeSelect),[i,a]=E.useState(!1),s=nt(t,n.onScrollButtonChange);return Rt(()=>{if(r.viewport&&r.isPositioned){let u=function(){const c=f.scrollTop>0;a(c)};const f=r.viewport;return u(),f.addEventListener("scroll",u),()=>f.removeEventListener("scroll",u)}},[r.viewport,r.isPositioned]),i?h.jsx(ZM,{...e,ref:s,onAutoScroll:()=>{const{viewport:u,selectedItem:f}=r;u&&f&&(u.scrollTop=u.scrollTop-f.offsetHeight)}}):null});YM.displayName=Pb;var Ab="SelectScrollDownButton",QM=E.forwardRef((e,t)=>{const r=sa(Ab,e.__scopeSelect),n=_w(Ab,e.__scopeSelect),[i,a]=E.useState(!1),s=nt(t,n.onScrollButtonChange);return Rt(()=>{if(r.viewport&&r.isPositioned){let u=function(){const c=f.scrollHeight-f.clientHeight,d=Math.ceil(f.scrollTop)f.removeEventListener("scroll",u)}},[r.viewport,r.isPositioned]),i?h.jsx(ZM,{...e,ref:s,onAutoScroll:()=>{const{viewport:u,selectedItem:f}=r;u&&f&&(u.scrollTop=u.scrollTop+f.offsetHeight)}}):null});QM.displayName=Ab;var ZM=E.forwardRef((e,t)=>{const{__scopeSelect:r,onAutoScroll:n,...i}=e,a=sa("SelectScrollButton",r),s=E.useRef(null),u=ap(r),f=E.useCallback(()=>{s.current!==null&&(window.clearInterval(s.current),s.current=null)},[]);return E.useEffect(()=>()=>f(),[f]),Rt(()=>{u().find(d=>d.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:"nearest"})},[u]),h.jsx(Xe.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:Fe(i.onPointerDown,()=>{s.current===null&&(s.current=window.setInterval(n,50))}),onPointerMove:Fe(i.onPointerMove,()=>{a.onItemLeave?.(),s.current===null&&(s.current=window.setInterval(n,50))}),onPointerLeave:Fe(i.onPointerLeave,()=>{f()})})}),Qq="SelectSeparator",Zq=E.forwardRef((e,t)=>{const{__scopeSelect:r,...n}=e;return h.jsx(Xe.div,{"aria-hidden":!0,...n,ref:t})});Zq.displayName=Qq;var Nb="SelectArrow",Jq=E.forwardRef((e,t)=>{const{__scopeSelect:r,...n}=e,i=op(r),a=oa(Nb,r),s=sa(Nb,r);return a.open&&s.position==="popper"?h.jsx(I9,{...i,...n,ref:t}):null});Jq.displayName=Nb;var e7="SelectBubbleInput",JM=E.forwardRef(({__scopeSelect:e,value:t,...r},n)=>{const i=E.useRef(null),a=nt(n,i),s=ww(t);return E.useEffect(()=>{const u=i.current;if(!u)return;const f=window.HTMLSelectElement.prototype,d=Object.getOwnPropertyDescriptor(f,"value").set;if(s!==t&&d){const p=new Event("change",{bubbles:!0});d.call(u,t),u.dispatchEvent(p)}},[s,t]),h.jsx(Xe.select,{...r,style:{...wM,...r.style},ref:a,defaultValue:t})});JM.displayName=e7;function eI(e){return e===""||e===void 0}function tI(e){const t=cr(e),r=E.useRef(""),n=E.useRef(0),i=E.useCallback(s=>{const u=r.current+s;t(u),(function f(c){r.current=c,window.clearTimeout(n.current),c!==""&&(n.current=window.setTimeout(()=>f(""),1e3))})(u)},[t]),a=E.useCallback(()=>{r.current="",window.clearTimeout(n.current)},[]);return E.useEffect(()=>()=>window.clearTimeout(n.current),[]),[r,i,a]}function rI(e,t,r){const i=t.length>1&&Array.from(t).every(c=>c===t[0])?t[0]:t,a=r?e.indexOf(r):-1;let s=t7(e,Math.max(a,0));i.length===1&&(s=s.filter(c=>c!==r));const f=s.find(c=>c.textValue.toLowerCase().startsWith(i.toLowerCase()));return f!==r?f:void 0}function t7(e,t){return e.map((r,n)=>e[(t+n)%e.length])}var r7=kM,n7=RM,i7=IM,a7=DM,o7=LM,s7=$M,l7=qM,c7=VM,u7=GM,f7=KM,d7=YM,h7=QM;function qe({...e}){return h.jsx(r7,{"data-slot":"select",...e})}function Ue({...e}){return h.jsx(i7,{"data-slot":"select-value",...e})}function We({className:e,size:t="default",children:r,...n}){return h.jsxs(n7,{"data-slot":"select-trigger","data-size":t,className:Ne("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-full items-center justify-between gap-2 rounded-md border bg-input-background px-3 py-2 text-sm whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...n,children:[r,h.jsx(a7,{asChild:!0,children:h.jsx(hc,{className:"size-4 opacity-50"})})]})}function Ve({className:e,children:t,position:r="popper",...n}){return h.jsx(o7,{children:h.jsxs(s7,{"data-slot":"select-content",className:Ne("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",r==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:r,...n,children:[h.jsx(p7,{}),h.jsx(l7,{className:Ne("p-1",r==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:t}),h.jsx(m7,{})]})})}function ge({className:e,children:t,...r}){return h.jsxs(c7,{"data-slot":"select-item",className:Ne("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...r,children:[h.jsx("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:h.jsx(f7,{children:h.jsx(bR,{className:"size-4"})})}),h.jsx(u7,{children:t})]})}function p7({className:e,...t}){return h.jsx(d7,{"data-slot":"select-scroll-up-button",className:Ne("flex cursor-default items-center justify-center py-1",e),...t,children:h.jsx(D8,{className:"size-4"})})}function m7({className:e,...t}){return h.jsx(h7,{"data-slot":"select-scroll-down-button",className:Ne("flex cursor-default items-center justify-center py-1",e),...t,children:h.jsx(hc,{className:"size-4"})})}function v7(){const e=[{id:1,location:"Location A",labelCategory:"Prep",productCategory:"Meat",product:"Chicken",template:'2"x2" Basic',labelType:"Defrost",lastEdited:"2025.12.03.11:45",hasError:!1},{id:2,location:"Location A",labelCategory:"Prep",productCategory:"Meat",product:"Chicken",template:'2"x2" Basic',labelType:"Opened/Preped",lastEdited:"2025.12.03.11:45",hasError:!1},{id:3,location:"Location A",labelCategory:"Prep",productCategory:"Meat",product:"Chicken",template:'2"x2" Basic',labelType:"Heated",lastEdited:"2025.12.03.11:45",hasError:!1},{id:4,location:"Location A",labelCategory:"Grab'n'Go",productCategory:"Sandwich",product:"Chicken Sandwich",template:`2"x6" G'n'G`,labelType:"",lastEdited:"2025.12.03.11:45",hasError:!0}];return h.jsxs("div",{className:"space-y-6",children:[h.jsxs("div",{className:"flex flex-wrap items-center gap-3",style:{height:40},children:[h.jsx(ze,{placeholder:"Search",className:"bg-white border border-black rounded-lg w-[180px] shrink-0 py-0 leading-normal",style:{height:40}}),h.jsxs(qe,{defaultValue:"all",children:[h.jsx(We,{className:"bg-white border border-black rounded-lg w-[180px] shrink-0 py-0",style:{height:40},children:h.jsx(Ue,{placeholder:"Location"})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"all",children:"All Locations"}),h.jsx(ge,{value:"loc-a",children:"Location A"}),h.jsx(ge,{value:"loc-b",children:"Location B"})]})]}),h.jsxs("div",{className:"flex items-stretch rounded-lg overflow-hidden border border-black shrink-0",style:{height:40},children:[h.jsx(be,{variant:"outline",className:"border-0 border-r border-black rounded-none flex-1 py-0 h-full min-h-0 bg-white hover:bg-gray-100 text-black font-normal px-6",children:"Bulk Import"}),h.jsx(be,{variant:"outline",className:"border-0 border-r border-black rounded-none flex-1 py-0 h-full min-h-0 bg-white hover:bg-gray-100 text-black font-normal px-6",children:"Bulk Export"}),h.jsx(be,{variant:"outline",className:"border-0 rounded-none flex-1 py-0 h-full min-h-0 bg-white hover:bg-gray-100 text-black font-normal px-6",children:"Bulk Edit"})]}),h.jsxs(be,{className:"bg-blue-600 hover:bg-blue-700 text-white font-medium rounded-lg px-6 border-0 shrink-0 ml-auto py-0 min-h-0",style:{height:40},children:["New Label ",h.jsx(vr,{className:"ml-1 h-4 w-4"})]})]}),h.jsx("div",{className:"text-red-600 font-bold italic text-lg",children:"One or more of your labels are missing fields from their templates (! ! ! 1 in total)."}),h.jsx("div",{className:"rounded-md border bg-white shadow-sm",children:h.jsxs(Kt,{children:[h.jsx(Yt,{children:h.jsxs(Ke,{className:"bg-gray-50 hover:bg-gray-50",children:[h.jsx(me,{className:"font-bold text-gray-900 w-[120px]",children:"Location"}),h.jsx(me,{className:"font-bold text-gray-900 w-[140px]",children:"Label Category"}),h.jsx(me,{className:"font-bold text-gray-900 w-[140px]",children:"Product Category"}),h.jsx(me,{className:"font-bold text-gray-900",children:"Product"}),h.jsx(me,{className:"font-bold text-gray-900",children:"Template"}),h.jsx(me,{className:"font-bold text-gray-900",children:"Label Type"}),h.jsx(me,{className:"font-bold text-gray-900",children:"Last Edited"})]})}),h.jsx(Qt,{children:e.map(t=>h.jsxs(Ke,{className:"hover:bg-gray-50",children:[h.jsx(le,{className:"font-medium",children:t.location}),h.jsx(le,{children:t.labelCategory}),h.jsx(le,{children:t.productCategory}),h.jsx(le,{children:t.product}),h.jsxs(le,{className:"font-medium",children:[t.template,t.hasError&&h.jsx("span",{className:"text-red-600 font-bold ml-2",children:"! ! !"})]}),h.jsx(le,{children:t.labelType||"-"}),h.jsx(le,{className:"text-gray-500 tabular-nums",children:t.lastEdited})]},t.id))})]})})]})}function g7(){const e=[{id:1,category:"Prep",count:54,photo:"XXX",lastEdited:"2025.12.03.11:45"},{id:2,category:"Green",count:33,photo:"XXX",lastEdited:"2025.12.03.11:45"},{id:3,category:"Red",count:44,photo:"XXX",lastEdited:"2025.12.03.11:45"}];return h.jsxs("div",{className:"space-y-6",children:[h.jsxs("div",{className:"flex flex-wrap items-center gap-3",style:{height:40},children:[h.jsx(ze,{placeholder:"Search",className:"bg-white border border-black rounded-lg w-[180px] shrink-0 py-0 leading-normal",style:{height:40}}),h.jsxs(qe,{defaultValue:"all",children:[h.jsx(We,{className:"bg-white border border-black rounded-lg w-[180px] shrink-0 py-0",style:{height:40},children:h.jsx(Ue,{placeholder:"Location"})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"all",children:"All Locations"}),h.jsx(ge,{value:"loc-a",children:"Location A"}),h.jsx(ge,{value:"loc-b",children:"Location B"})]})]}),h.jsxs(be,{className:"bg-blue-600 hover:bg-blue-700 text-white font-medium rounded-lg px-6 border-0 shrink-0 ml-auto py-0 min-h-0",style:{height:40},children:["New Label Category ",h.jsx(vr,{className:"ml-1 h-4 w-4"})]})]}),h.jsx("div",{className:"rounded-md border bg-white shadow-sm",children:h.jsxs(Kt,{children:[h.jsx(Yt,{children:h.jsxs(Ke,{className:"bg-gray-50 hover:bg-gray-50",children:[h.jsx(me,{className:"font-bold text-gray-900 w-[250px]",children:"Label Category"}),h.jsx(me,{className:"font-bold text-gray-900 w-[200px]",children:"No. of Labels"}),h.jsx(me,{className:"font-bold text-gray-900 w-[200px]",children:"Category Photo"}),h.jsx(me,{className:"font-bold text-gray-900",children:"Last Edited"})]})}),h.jsx(Qt,{children:e.map(t=>h.jsxs(Ke,{className:"hover:bg-gray-50",children:[h.jsx(le,{className:"font-medium",children:t.category}),h.jsx(le,{children:t.count}),h.jsx(le,{className:"text-gray-500",children:t.photo}),h.jsx(le,{className:"text-gray-500 tabular-nums",children:t.lastEdited})]},t.id))})]})})]})}function y7(){const e=[{id:1,type:"Defrost",count:54,lastEdited:"2025.12.03.11:45"},{id:2,type:"Thawed",count:33,lastEdited:"2025.12.03.11:45"},{id:3,type:"Opened",count:44,lastEdited:"2025.12.03.11:45"},{id:4,type:"Preped",count:17,lastEdited:"2025.12.03.11:45"},{id:5,type:"Heated",count:67,lastEdited:"2025.12.03.11:45"}];return h.jsxs("div",{className:"space-y-6",children:[h.jsxs("div",{className:"flex flex-wrap items-center gap-3",style:{height:40},children:[h.jsx(ze,{placeholder:"Search",className:"bg-white border border-black rounded-lg w-[180px] shrink-0 py-0 leading-normal",style:{height:40}}),h.jsxs(qe,{defaultValue:"all",children:[h.jsx(We,{className:"bg-white border border-black rounded-lg w-[180px] shrink-0 py-0",style:{height:40},children:h.jsx(Ue,{placeholder:"Location"})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"all",children:"all"}),h.jsx(ge,{value:"loc-a",children:"Location A"}),h.jsx(ge,{value:"loc-b",children:"Location B"})]})]}),h.jsxs(be,{className:"bg-blue-600 hover:bg-blue-700 text-white font-medium rounded-lg px-6 border-0 shrink-0 ml-auto py-0 min-h-0",style:{height:40},children:["New Label Type ",h.jsx(vr,{className:"ml-1 h-4 w-4"})]})]}),h.jsx("div",{className:"rounded-md border bg-white shadow-sm",children:h.jsxs(Kt,{children:[h.jsx(Yt,{children:h.jsxs(Ke,{className:"bg-gray-50 hover:bg-gray-50",children:[h.jsx(me,{className:"font-bold text-gray-900 w-[250px]",children:"Label Types"}),h.jsx(me,{className:"font-bold text-gray-900 w-[200px]",children:"No. of Labels"}),h.jsx(me,{className:"font-bold text-gray-900",children:"Last Edited"})]})}),h.jsx(Qt,{children:e.map(t=>h.jsxs(Ke,{className:"hover:bg-gray-50",children:[h.jsx(le,{className:"font-medium",children:t.type}),h.jsx(le,{children:t.count}),h.jsx(le,{className:"text-gray-500 tabular-nums",children:t.lastEdited})]},t.id))})]})})]})}const x7="label-template-",b7="label-template-ids";function nI(e){return`${x7}${e}`}function iI(){return b7}function w7(){return`template-${Date.now()}`}function S7(){return`el-${Date.now()}-${Math.random().toString(36).slice(2,9)}`}function _7(e){return{id:e??w7(),name:"未命名模板",labelType:"PRICE",unit:"cm",width:6,height:4,appliedLocation:"ALL",showRuler:!0,showGrid:!0,elements:[]}}const sg=[{name:'2"×1"',width:2,height:1,unit:"inch"},{name:'2"×2"',width:2,height:2,unit:"inch"},{name:'3"×1"',width:3,height:1,unit:"inch"},{name:'3"×2"',width:3,height:2,unit:"inch"},{name:'4"×2"',width:4,height:2,unit:"inch"},{name:'4"×6"',width:4,height:6,unit:"inch"},{name:"6cm×4cm",width:6,height:4,unit:"cm"},{name:"10cm×6cm",width:10,height:6,unit:"cm"},{name:"A4",width:21,height:29.7,unit:"cm"},{name:"A5",width:14.8,height:21,unit:"cm"}];function aI(e,t=20,r=20){const n=S7(),a={TEXT_STATIC:{width:120,height:24,config:{text:"文本",fontFamily:"Arial",fontSize:14,fontWeight:"normal",textAlign:"left"}},TEXT_PRODUCT:{width:120,height:24,config:{text:"商品名",fontFamily:"Arial",fontSize:14,fontWeight:"normal",textAlign:"left"}},TEXT_PRICE:{width:80,height:24,config:{text:"0.00",prefix:"¥",decimal:2,fontFamily:"Arial",fontSize:14,fontWeight:"bold",textAlign:"right"}},BARCODE:{width:160,height:48,config:{barcodeType:"CODE128",data:"123456789",showText:!0,orientation:"horizontal"}},QRCODE:{width:80,height:80,config:{data:"https://example.com",errorLevel:"M"}},IMAGE:{width:60,height:60,config:{src:"",scaleMode:"contain"}},DATE:{width:120,height:24,config:{format:"YYYY-MM-DD",offsetDays:0}},TIME:{width:100,height:24,config:{format:"HH:mm",offsetDays:0}},DURATION:{width:120,height:24,config:{format:"YYYY-MM-DD",offsetDays:3}},WEIGHT:{width:80,height:24,config:{unit:"g",value:500}},WEIGHT_PRICE:{width:100,height:24,config:{unitPrice:10,weight:.5,currency:"¥"}},BLANK:{width:40,height:24,config:{}},NUTRITION:{width:200,height:120,config:{calories:120,fat:"5g",protein:"3g",carbs:"10g",layout:"standard"}}}[e];return{id:n,type:e,x:t,y:r,width:a.width,height:a.height,rotation:"horizontal",border:"none",config:{...a.config}}}function oI(){try{const e=localStorage.getItem(iI());if(!e)return[];const t=JSON.parse(e);return Array.isArray(t)?t:[]}catch{return[]}}function sI(e){try{const t=localStorage.getItem(nI(e));return t?JSON.parse(t):null}catch{return null}}function m2(){const e=oI(),t=[];for(const r of e){const n=sI(r);n&&t.push(n)}return t.sort((r,n)=>n.id>r.id?1:-1)}function j7(e){localStorage.setItem(iI(),JSON.stringify(e))}function O7(e){const t=nI(e.id);localStorage.setItem(t,JSON.stringify(e));const r=oI();r.includes(e.id)||(r.push(e.id),j7(r))}function E7(e,t){return E.useReducer((r,n)=>t[r][n]??r,e)}var Xn=e=>{const{present:t,children:r}=e,n=P7(t),i=typeof r=="function"?r({present:n.isPresent}):E.Children.only(r),a=nt(n.ref,A7(i));return typeof r=="function"||n.isPresent?E.cloneElement(i,{ref:a}):null};Xn.displayName="Presence";function P7(e){const[t,r]=E.useState(),n=E.useRef(null),i=E.useRef(e),a=E.useRef("none"),s=e?"mounted":"unmounted",[u,f]=E7(s,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return E.useEffect(()=>{const c=kf(n.current);a.current=u==="mounted"?c:"none"},[u]),Rt(()=>{const c=n.current,d=i.current;if(d!==e){const m=a.current,g=kf(c);e?f("MOUNT"):g==="none"||c?.display==="none"?f("UNMOUNT"):f(d&&m!==g?"ANIMATION_OUT":"UNMOUNT"),i.current=e}},[e,f]),Rt(()=>{if(t){let c;const d=t.ownerDocument.defaultView??window,p=g=>{const y=kf(n.current).includes(CSS.escape(g.animationName));if(g.target===t&&y&&(f("ANIMATION_END"),!i.current)){const b=t.style.animationFillMode;t.style.animationFillMode="forwards",c=d.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=b)})}},m=g=>{g.target===t&&(a.current=kf(n.current))};return t.addEventListener("animationstart",m),t.addEventListener("animationcancel",p),t.addEventListener("animationend",p),()=>{d.clearTimeout(c),t.removeEventListener("animationstart",m),t.removeEventListener("animationcancel",p),t.removeEventListener("animationend",p)}}else f("ANIMATION_END")},[t,f]),{isPresent:["mounted","unmountSuspended"].includes(u),ref:E.useCallback(c=>{n.current=c?getComputedStyle(c):null,r(c)},[])}}function kf(e){return e?.animationName||"none"}function A7(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning;return r?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning,r?e.props.ref:e.props.ref||e.ref)}function N7(e){const t=C7(e),r=E.forwardRef((n,i)=>{const{children:a,...s}=n,u=E.Children.toArray(a),f=u.find(T7);if(f){const c=f.props.children,d=u.map(p=>p===f?E.Children.count(c)>1?E.Children.only(null):E.isValidElement(c)?c.props.children:null:p);return h.jsx(t,{...s,ref:i,children:E.isValidElement(c)?E.cloneElement(c,void 0,d):null})}return h.jsx(t,{...s,ref:i,children:a})});return r.displayName=`${e}.Slot`,r}function C7(e){const t=E.forwardRef((r,n)=>{const{children:i,...a}=r;if(E.isValidElement(i)){const s=M7(i),u=R7(a,i.props);return i.type!==E.Fragment&&(u.ref=n?Fs(n,s):s),E.cloneElement(i,u)}return E.Children.count(i)>1?E.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var k7=Symbol("radix.slottable");function T7(e){return E.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===k7}function R7(e,t){const r={...t};for(const n in t){const i=e[n],a=t[n];/^on[A-Z]/.test(n)?i&&a?r[n]=(...u)=>{const f=a(...u);return i(...u),f}:i&&(r[n]=i):n==="style"?r[n]={...i,...a}:n==="className"&&(r[n]=[i,a].filter(Boolean).join(" "))}return{...e,...r}}function M7(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning;return r?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,r=t&&"isReactWarning"in t&&t.isReactWarning,r?e.props.ref:e.props.ref||e.ref)}var sp="Dialog",[lI]=_i(sp),[I7,En]=lI(sp),cI=e=>{const{__scopeDialog:t,children:r,open:n,defaultOpen:i,onOpenChange:a,modal:s=!0}=e,u=E.useRef(null),f=E.useRef(null),[c,d]=Ha({prop:n,defaultProp:i??!1,onChange:a,caller:sp});return h.jsx(I7,{scope:t,triggerRef:u,contentRef:f,contentId:ta(),titleId:ta(),descriptionId:ta(),open:c,onOpenChange:d,onOpenToggle:E.useCallback(()=>d(p=>!p),[d]),modal:s,children:r})};cI.displayName=sp;var uI="DialogTrigger",D7=E.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=En(uI,r),a=nt(t,i.triggerRef);return h.jsx(Xe.button,{type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.contentId,"data-state":Ew(i.open),...n,ref:a,onClick:Fe(e.onClick,i.onOpenToggle)})});D7.displayName=uI;var jw="DialogPortal",[L7,fI]=lI(jw,{forceMount:void 0}),dI=e=>{const{__scopeDialog:t,forceMount:r,children:n,container:i}=e,a=En(jw,t);return h.jsx(L7,{scope:t,forceMount:r,children:E.Children.map(n,s=>h.jsx(Xn,{present:r||a.open,children:h.jsx(bw,{asChild:!0,container:i,children:s})}))})};dI.displayName=jw;var zd="DialogOverlay",hI=E.forwardRef((e,t)=>{const r=fI(zd,e.__scopeDialog),{forceMount:n=r.forceMount,...i}=e,a=En(zd,e.__scopeDialog);return a.modal?h.jsx(Xn,{present:n||a.open,children:h.jsx(B7,{...i,ref:t})}):null});hI.displayName=zd;var $7=N7("DialogOverlay.RemoveScroll"),B7=E.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=En(zd,r);return h.jsx(Sw,{as:$7,allowPinchZoom:!0,shards:[i.contentRef],children:h.jsx(Xe.div,{"data-state":Ew(i.open),...n,ref:t,style:{pointerEvents:"auto",...n.style}})})}),Xa="DialogContent",pI=E.forwardRef((e,t)=>{const r=fI(Xa,e.__scopeDialog),{forceMount:n=r.forceMount,...i}=e,a=En(Xa,e.__scopeDialog);return h.jsx(Xn,{present:n||a.open,children:a.modal?h.jsx(F7,{...i,ref:t}):h.jsx(z7,{...i,ref:t})})});pI.displayName=Xa;var F7=E.forwardRef((e,t)=>{const r=En(Xa,e.__scopeDialog),n=E.useRef(null),i=nt(t,r.contentRef,n);return E.useEffect(()=>{const a=n.current;if(a)return _M(a)},[]),h.jsx(mI,{...e,ref:i,trapFocus:r.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:Fe(e.onCloseAutoFocus,a=>{a.preventDefault(),r.triggerRef.current?.focus()}),onPointerDownOutside:Fe(e.onPointerDownOutside,a=>{const s=a.detail.originalEvent,u=s.button===0&&s.ctrlKey===!0;(s.button===2||u)&&a.preventDefault()}),onFocusOutside:Fe(e.onFocusOutside,a=>a.preventDefault())})}),z7=E.forwardRef((e,t)=>{const r=En(Xa,e.__scopeDialog),n=E.useRef(!1),i=E.useRef(!1);return h.jsx(mI,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:a=>{e.onCloseAutoFocus?.(a),a.defaultPrevented||(n.current||r.triggerRef.current?.focus(),a.preventDefault()),n.current=!1,i.current=!1},onInteractOutside:a=>{e.onInteractOutside?.(a),a.defaultPrevented||(n.current=!0,a.detail.originalEvent.type==="pointerdown"&&(i.current=!0));const s=a.target;r.triggerRef.current?.contains(s)&&a.preventDefault(),a.detail.originalEvent.type==="focusin"&&i.current&&a.preventDefault()}})}),mI=E.forwardRef((e,t)=>{const{__scopeDialog:r,trapFocus:n,onOpenAutoFocus:i,onCloseAutoFocus:a,...s}=e,u=En(Xa,r),f=E.useRef(null),c=nt(t,f);return QR(),h.jsxs(h.Fragment,{children:[h.jsx(uw,{asChild:!0,loop:!0,trapped:n,onMountAutoFocus:i,onUnmountAutoFocus:a,children:h.jsx(cw,{role:"dialog",id:u.contentId,"aria-describedby":u.descriptionId,"aria-labelledby":u.titleId,"data-state":Ew(u.open),...s,ref:c,onDismiss:()=>u.onOpenChange(!1)})}),h.jsxs(h.Fragment,{children:[h.jsx(q7,{titleId:u.titleId}),h.jsx(W7,{contentRef:f,descriptionId:u.descriptionId})]})]})}),Ow="DialogTitle",vI=E.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=En(Ow,r);return h.jsx(Xe.h2,{id:i.titleId,...n,ref:t})});vI.displayName=Ow;var gI="DialogDescription",yI=E.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=En(gI,r);return h.jsx(Xe.p,{id:i.descriptionId,...n,ref:t})});yI.displayName=gI;var xI="DialogClose",bI=E.forwardRef((e,t)=>{const{__scopeDialog:r,...n}=e,i=En(xI,r);return h.jsx(Xe.button,{type:"button",...n,ref:t,onClick:Fe(e.onClick,()=>i.onOpenChange(!1))})});bI.displayName=xI;function Ew(e){return e?"open":"closed"}var wI="DialogTitleWarning",[$ce,SI]=MF(wI,{contentName:Xa,titleName:Ow,docsSlug:"dialog"}),q7=({titleId:e})=>{const t=SI(wI),r=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users. + +If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component. + +For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return E.useEffect(()=>{e&&(document.getElementById(e)||console.error(r))},[r,e]),null},U7="DialogDescriptionWarning",W7=({contentRef:e,descriptionId:t})=>{const n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${SI(U7).contentName}}.`;return E.useEffect(()=>{const i=e.current?.getAttribute("aria-describedby");t&&i&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},H7=cI,V7=dI,G7=hI,X7=pI,K7=vI,Y7=yI,Q7=bI;function zn({...e}){return h.jsx(H7,{"data-slot":"dialog",...e})}function Z7({...e}){return h.jsx(V7,{"data-slot":"dialog-portal",...e})}function J7({className:e,...t}){return h.jsx(G7,{"data-slot":"dialog-overlay",className:Ne("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...t})}function qn({className:e,children:t,...r}){return h.jsxs(Z7,{"data-slot":"dialog-portal",children:[h.jsx(J7,{}),h.jsxs(X7,{"data-slot":"dialog-content",className:Ne("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",e),...r,children:[t,h.jsxs(Q7,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[h.jsx(ac,{}),h.jsx("span",{className:"sr-only",children:"Close"})]})]})]})}function Un({className:e,...t}){return h.jsx("div",{"data-slot":"dialog-header",className:Ne("flex flex-col gap-2 text-center sm:text-left",e),...t})}function xi({className:e,...t}){return h.jsx("div",{"data-slot":"dialog-footer",className:Ne("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",e),...t})}function Wn({className:e,...t}){return h.jsx(K7,{"data-slot":"dialog-title",className:Ne("text-lg leading-none font-semibold",e),...t})}function Ka({className:e,...t}){return h.jsx(Y7,{"data-slot":"dialog-description",className:Ne("text-muted-foreground text-sm",e),...t})}function eU(e,t){return E.useReducer((r,n)=>t[r][n]??r,e)}var Pw="ScrollArea",[_I]=_i(Pw),[tU,ln]=_I(Pw),jI=E.forwardRef((e,t)=>{const{__scopeScrollArea:r,type:n="hover",dir:i,scrollHideDelay:a=600,...s}=e,[u,f]=E.useState(null),[c,d]=E.useState(null),[p,m]=E.useState(null),[g,w]=E.useState(null),[y,b]=E.useState(null),[_,j]=E.useState(0),[P,k]=E.useState(0),[A,N]=E.useState(!1),[C,T]=E.useState(!1),M=nt(t,I=>f(I)),F=Zh(i);return h.jsx(tU,{scope:r,type:n,dir:F,scrollHideDelay:a,scrollArea:u,viewport:c,onViewportChange:d,content:p,onContentChange:m,scrollbarX:g,onScrollbarXChange:w,scrollbarXEnabled:A,onScrollbarXEnabledChange:N,scrollbarY:y,onScrollbarYChange:b,scrollbarYEnabled:C,onScrollbarYEnabledChange:T,onCornerWidthChange:j,onCornerHeightChange:k,children:h.jsx(Xe.div,{dir:F,...s,ref:M,style:{position:"relative","--radix-scroll-area-corner-width":_+"px","--radix-scroll-area-corner-height":P+"px",...e.style}})})});jI.displayName=Pw;var OI="ScrollAreaViewport",EI=E.forwardRef((e,t)=>{const{__scopeScrollArea:r,children:n,nonce:i,...a}=e,s=ln(OI,r),u=E.useRef(null),f=nt(t,u,s.onViewportChange);return h.jsxs(h.Fragment,{children:[h.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:i}),h.jsx(Xe.div,{"data-radix-scroll-area-viewport":"",...a,ref:f,style:{overflowX:s.scrollbarXEnabled?"scroll":"hidden",overflowY:s.scrollbarYEnabled?"scroll":"hidden",...e.style},children:h.jsx("div",{ref:s.onContentChange,style:{minWidth:"100%",display:"table"},children:n})})]})});EI.displayName=OI;var Kn="ScrollAreaScrollbar",PI=E.forwardRef((e,t)=>{const{forceMount:r,...n}=e,i=ln(Kn,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:s}=i,u=e.orientation==="horizontal";return E.useEffect(()=>(u?a(!0):s(!0),()=>{u?a(!1):s(!1)}),[u,a,s]),i.type==="hover"?h.jsx(rU,{...n,ref:t,forceMount:r}):i.type==="scroll"?h.jsx(nU,{...n,ref:t,forceMount:r}):i.type==="auto"?h.jsx(AI,{...n,ref:t,forceMount:r}):i.type==="always"?h.jsx(Aw,{...n,ref:t}):null});PI.displayName=Kn;var rU=E.forwardRef((e,t)=>{const{forceMount:r,...n}=e,i=ln(Kn,e.__scopeScrollArea),[a,s]=E.useState(!1);return E.useEffect(()=>{const u=i.scrollArea;let f=0;if(u){const c=()=>{window.clearTimeout(f),s(!0)},d=()=>{f=window.setTimeout(()=>s(!1),i.scrollHideDelay)};return u.addEventListener("pointerenter",c),u.addEventListener("pointerleave",d),()=>{window.clearTimeout(f),u.removeEventListener("pointerenter",c),u.removeEventListener("pointerleave",d)}}},[i.scrollArea,i.scrollHideDelay]),h.jsx(Xn,{present:r||a,children:h.jsx(AI,{"data-state":a?"visible":"hidden",...n,ref:t})})}),nU=E.forwardRef((e,t)=>{const{forceMount:r,...n}=e,i=ln(Kn,e.__scopeScrollArea),a=e.orientation==="horizontal",s=cp(()=>f("SCROLL_END"),100),[u,f]=eU("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return E.useEffect(()=>{if(u==="idle"){const c=window.setTimeout(()=>f("HIDE"),i.scrollHideDelay);return()=>window.clearTimeout(c)}},[u,i.scrollHideDelay,f]),E.useEffect(()=>{const c=i.viewport,d=a?"scrollLeft":"scrollTop";if(c){let p=c[d];const m=()=>{const g=c[d];p!==g&&(f("SCROLL"),s()),p=g};return c.addEventListener("scroll",m),()=>c.removeEventListener("scroll",m)}},[i.viewport,a,f,s]),h.jsx(Xn,{present:r||u!=="hidden",children:h.jsx(Aw,{"data-state":u==="hidden"?"hidden":"visible",...n,ref:t,onPointerEnter:Fe(e.onPointerEnter,()=>f("POINTER_ENTER")),onPointerLeave:Fe(e.onPointerLeave,()=>f("POINTER_LEAVE"))})})}),AI=E.forwardRef((e,t)=>{const r=ln(Kn,e.__scopeScrollArea),{forceMount:n,...i}=e,[a,s]=E.useState(!1),u=e.orientation==="horizontal",f=cp(()=>{if(r.viewport){const c=r.viewport.offsetWidth{const{orientation:r="vertical",...n}=e,i=ln(Kn,e.__scopeScrollArea),a=E.useRef(null),s=E.useRef(0),[u,f]=E.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),c=RI(u.viewport,u.content),d={...n,sizes:u,onSizesChange:f,hasThumb:c>0&&c<1,onThumbChange:m=>a.current=m,onThumbPointerUp:()=>s.current=0,onThumbPointerDown:m=>s.current=m};function p(m,g){return cU(m,s.current,u,g)}return r==="horizontal"?h.jsx(iU,{...d,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){const m=i.viewport.scrollLeft,g=v2(m,u,i.dir);a.current.style.transform=`translate3d(${g}px, 0, 0)`}},onWheelScroll:m=>{i.viewport&&(i.viewport.scrollLeft=m)},onDragScroll:m=>{i.viewport&&(i.viewport.scrollLeft=p(m,i.dir))}}):r==="vertical"?h.jsx(aU,{...d,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){const m=i.viewport.scrollTop,g=v2(m,u);a.current.style.transform=`translate3d(0, ${g}px, 0)`}},onWheelScroll:m=>{i.viewport&&(i.viewport.scrollTop=m)},onDragScroll:m=>{i.viewport&&(i.viewport.scrollTop=p(m))}}):null}),iU=E.forwardRef((e,t)=>{const{sizes:r,onSizesChange:n,...i}=e,a=ln(Kn,e.__scopeScrollArea),[s,u]=E.useState(),f=E.useRef(null),c=nt(t,f,a.onScrollbarXChange);return E.useEffect(()=>{f.current&&u(getComputedStyle(f.current))},[f]),h.jsx(CI,{"data-orientation":"horizontal",...i,ref:c,sizes:r,style:{bottom:0,left:a.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:a.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":lp(r)+"px",...e.style},onThumbPointerDown:d=>e.onThumbPointerDown(d.x),onDragScroll:d=>e.onDragScroll(d.x),onWheelScroll:(d,p)=>{if(a.viewport){const m=a.viewport.scrollLeft+d.deltaX;e.onWheelScroll(m),II(m,p)&&d.preventDefault()}},onResize:()=>{f.current&&a.viewport&&s&&n({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:f.current.clientWidth,paddingStart:Ud(s.paddingLeft),paddingEnd:Ud(s.paddingRight)}})}})}),aU=E.forwardRef((e,t)=>{const{sizes:r,onSizesChange:n,...i}=e,a=ln(Kn,e.__scopeScrollArea),[s,u]=E.useState(),f=E.useRef(null),c=nt(t,f,a.onScrollbarYChange);return E.useEffect(()=>{f.current&&u(getComputedStyle(f.current))},[f]),h.jsx(CI,{"data-orientation":"vertical",...i,ref:c,sizes:r,style:{top:0,right:a.dir==="ltr"?0:void 0,left:a.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":lp(r)+"px",...e.style},onThumbPointerDown:d=>e.onThumbPointerDown(d.y),onDragScroll:d=>e.onDragScroll(d.y),onWheelScroll:(d,p)=>{if(a.viewport){const m=a.viewport.scrollTop+d.deltaY;e.onWheelScroll(m),II(m,p)&&d.preventDefault()}},onResize:()=>{f.current&&a.viewport&&s&&n({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:f.current.clientHeight,paddingStart:Ud(s.paddingTop),paddingEnd:Ud(s.paddingBottom)}})}})}),[oU,NI]=_I(Kn),CI=E.forwardRef((e,t)=>{const{__scopeScrollArea:r,sizes:n,hasThumb:i,onThumbChange:a,onThumbPointerUp:s,onThumbPointerDown:u,onThumbPositionChange:f,onDragScroll:c,onWheelScroll:d,onResize:p,...m}=e,g=ln(Kn,r),[w,y]=E.useState(null),b=nt(t,M=>y(M)),_=E.useRef(null),j=E.useRef(""),P=g.viewport,k=n.content-n.viewport,A=cr(d),N=cr(f),C=cp(p,10);function T(M){if(_.current){const F=M.clientX-_.current.left,I=M.clientY-_.current.top;c({x:F,y:I})}}return E.useEffect(()=>{const M=F=>{const I=F.target;w?.contains(I)&&A(F,k)};return document.addEventListener("wheel",M,{passive:!1}),()=>document.removeEventListener("wheel",M,{passive:!1})},[P,w,k,A]),E.useEffect(N,[n,N]),us(w,C),us(g.content,C),h.jsx(oU,{scope:r,scrollbar:w,hasThumb:i,onThumbChange:cr(a),onThumbPointerUp:cr(s),onThumbPositionChange:N,onThumbPointerDown:cr(u),children:h.jsx(Xe.div,{...m,ref:b,style:{position:"absolute",...m.style},onPointerDown:Fe(e.onPointerDown,M=>{M.button===0&&(M.target.setPointerCapture(M.pointerId),_.current=w.getBoundingClientRect(),j.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",g.viewport&&(g.viewport.style.scrollBehavior="auto"),T(M))}),onPointerMove:Fe(e.onPointerMove,T),onPointerUp:Fe(e.onPointerUp,M=>{const F=M.target;F.hasPointerCapture(M.pointerId)&&F.releasePointerCapture(M.pointerId),document.body.style.webkitUserSelect=j.current,g.viewport&&(g.viewport.style.scrollBehavior=""),_.current=null})})})}),qd="ScrollAreaThumb",kI=E.forwardRef((e,t)=>{const{forceMount:r,...n}=e,i=NI(qd,e.__scopeScrollArea);return h.jsx(Xn,{present:r||i.hasThumb,children:h.jsx(sU,{ref:t,...n})})}),sU=E.forwardRef((e,t)=>{const{__scopeScrollArea:r,style:n,...i}=e,a=ln(qd,r),s=NI(qd,r),{onThumbPositionChange:u}=s,f=nt(t,p=>s.onThumbChange(p)),c=E.useRef(void 0),d=cp(()=>{c.current&&(c.current(),c.current=void 0)},100);return E.useEffect(()=>{const p=a.viewport;if(p){const m=()=>{if(d(),!c.current){const g=uU(p,u);c.current=g,u()}};return u(),p.addEventListener("scroll",m),()=>p.removeEventListener("scroll",m)}},[a.viewport,d,u]),h.jsx(Xe.div,{"data-state":s.hasThumb?"visible":"hidden",...i,ref:f,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...n},onPointerDownCapture:Fe(e.onPointerDownCapture,p=>{const g=p.target.getBoundingClientRect(),w=p.clientX-g.left,y=p.clientY-g.top;s.onThumbPointerDown({x:w,y})}),onPointerUp:Fe(e.onPointerUp,s.onThumbPointerUp)})});kI.displayName=qd;var Nw="ScrollAreaCorner",TI=E.forwardRef((e,t)=>{const r=ln(Nw,e.__scopeScrollArea),n=!!(r.scrollbarX&&r.scrollbarY);return r.type!=="scroll"&&n?h.jsx(lU,{...e,ref:t}):null});TI.displayName=Nw;var lU=E.forwardRef((e,t)=>{const{__scopeScrollArea:r,...n}=e,i=ln(Nw,r),[a,s]=E.useState(0),[u,f]=E.useState(0),c=!!(a&&u);return us(i.scrollbarX,()=>{const d=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(d),f(d)}),us(i.scrollbarY,()=>{const d=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(d),s(d)}),c?h.jsx(Xe.div,{...n,ref:t,style:{width:a,height:u,position:"absolute",right:i.dir==="ltr"?0:void 0,left:i.dir==="rtl"?0:void 0,bottom:0,...e.style}}):null});function Ud(e){return e?parseInt(e,10):0}function RI(e,t){const r=e/t;return isNaN(r)?0:r}function lp(e){const t=RI(e.viewport,e.content),r=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,n=(e.scrollbar.size-r)*t;return Math.max(n,18)}function cU(e,t,r,n="ltr"){const i=lp(r),a=i/2,s=t||a,u=i-s,f=r.scrollbar.paddingStart+s,c=r.scrollbar.size-r.scrollbar.paddingEnd-u,d=r.content-r.viewport,p=n==="ltr"?[0,d]:[d*-1,0];return MI([f,c],p)(e)}function v2(e,t,r="ltr"){const n=lp(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,s=t.content-t.viewport,u=a-n,f=r==="ltr"?[0,s]:[s*-1,0],c=xb(e,f);return MI([0,s],[0,u])(c)}function MI(e,t){return r=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const n=(t[1]-t[0])/(e[1]-e[0]);return t[0]+n*(r-e[0])}}function II(e,t){return e>0&&e{})=>{let r={left:e.scrollLeft,top:e.scrollTop},n=0;return(function i(){const a={left:e.scrollLeft,top:e.scrollTop},s=r.left!==a.left,u=r.top!==a.top;(s||u)&&t(),r=a,n=window.requestAnimationFrame(i)})(),()=>window.cancelAnimationFrame(n)};function cp(e,t){const r=cr(e),n=E.useRef(0);return E.useEffect(()=>()=>window.clearTimeout(n.current),[]),E.useCallback(()=>{window.clearTimeout(n.current),n.current=window.setTimeout(r,t)},[r,t])}function us(e,t){const r=cr(t);Rt(()=>{let n=0;if(e){const i=new ResizeObserver(()=>{cancelAnimationFrame(n),n=window.requestAnimationFrame(r)});return i.observe(e),()=>{window.cancelAnimationFrame(n),i.unobserve(e)}}},[e,r])}var fU=jI,dU=EI,hU=TI;function Wd({className:e,children:t,...r}){return h.jsxs(fU,{"data-slot":"scroll-area",className:Ne("relative",e),...r,children:[h.jsx(dU,{"data-slot":"scroll-area-viewport",className:"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",children:t}),h.jsx(pU,{}),h.jsx(hU,{})]})}function pU({className:e,orientation:t="vertical",...r}){return h.jsx(PI,{"data-slot":"scroll-area-scrollbar",orientation:t,className:Ne("flex touch-none p-px transition-colors select-none",t==="vertical"&&"h-full w-2.5 border-l border-l-transparent",t==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent",e),...r,children:h.jsx(kI,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}const mU=[{title:"Template Info",items:[{label:"Text",type:"TEXT_STATIC"},{label:"QR Code",type:"QRCODE"},{label:"Barcode",type:"BARCODE"},{label:"Blank Space",type:"BLANK"},{label:"Price",type:"TEXT_PRICE"},{label:"Image",type:"IMAGE"},{label:"Logo",type:"IMAGE"}]},{title:"Label Info",items:[{label:"Label Name",type:"TEXT_PRODUCT"},{label:"Text",type:"TEXT_STATIC"},{label:"QR Code",type:"QRCODE"},{label:"Barcode",type:"BARCODE"},{label:"Nutrition Facts",type:"NUTRITION"},{label:"Price",type:"TEXT_PRICE"},{label:"Duration Date",type:"DATE"},{label:"Duration Time",type:"TIME"},{label:"Duration",type:"DURATION"},{label:"Image",type:"IMAGE"},{label:"Label Type",type:"TEXT_STATIC"},{label:"How-to",type:"TEXT_STATIC"},{label:"Expiration Alert",type:"TEXT_STATIC"}]},{title:"Auto-generated",items:[{label:"Company",type:"TEXT_STATIC"},{label:"Employee",type:"TEXT_STATIC"},{label:"Current Date",type:"DATE"},{label:"Current Time",type:"TIME"},{label:"Label ID",type:"TEXT_STATIC"}]},{title:"Input at Print",subtitle:"Click to add to canvas",items:[{label:"Text",type:"TEXT_STATIC",config:{inputType:"text"}},{label:"Weight",type:"WEIGHT"},{label:"Number",type:"TEXT_STATIC",config:{inputType:"number",text:"0"}},{label:"Date & Time",type:"DATE",config:{inputType:"datetime"}},{label:"Multiple Options",type:"TEXT_STATIC",config:{inputType:"options"}}]}],g2=[{bg:"bg-gray-50",border:"border-gray-200",header:"bg-gray-100"},{bg:"bg-slate-50",border:"border-slate-200",header:"bg-slate-100"},{bg:"bg-stone-50",border:"border-stone-200",header:"bg-stone-100"},{bg:"bg-zinc-50",border:"border-zinc-200",header:"bg-zinc-100"}];function vU({onAddElement:e}){return h.jsxs("div",{className:"w-48 shrink-0 border-r-2 border-gray-300 bg-white flex flex-col h-full shadow-sm",children:[h.jsx("div",{className:"px-3 py-2.5 border-b-2 border-gray-300 font-semibold text-gray-800 text-sm bg-gray-50",children:"Elements"}),h.jsx(Wd,{className:"flex-1",children:h.jsx("div",{className:"p-2 space-y-4",children:mU.map((t,r)=>{const n=g2[r%g2.length];return h.jsxs("div",{className:`rounded-lg border-2 ${n.border} ${n.bg} overflow-hidden`,children:[h.jsx("div",{className:`pl-4 pr-2.5 py-1.5 text-xs font-semibold text-gray-700 uppercase tracking-wider ${n.header}`,children:t.title}),t.subtitle&&h.jsx("div",{className:"pl-4 pr-2.5 py-0.5 text-[10px] text-gray-500",children:t.subtitle}),h.jsx("div",{className:"grid grid-cols-2 gap-1.5 p-2",children:t.items.map((i,a)=>h.jsx("button",{type:"button",onClick:()=>e(i.type,i.config),className:"text-left px-2 py-1.5 text-xs rounded border border-gray-200 bg-white hover:bg-gray-100 hover:border-gray-300 truncate transition-colors",children:i.label},`${t.title}-${i.label}-${a}`))})]},t.title)})})})]})}var Tf={},Bl={},Rf={},y2;function Hr(){if(y2)return Rf;y2=1,Object.defineProperty(Rf,"__esModule",{value:!0});function e(r,n){if(!(r instanceof n))throw new TypeError("Cannot call a class as a function")}var t=function r(n,i){e(this,r),this.data=n,this.text=i.text||n,this.options=i};return Rf.default=t,Rf}var x2;function gU(){if(x2)return Bl;x2=1,Object.defineProperty(Bl,"__esModule",{value:!0}),Bl.CODE39=void 0;var e=(function(){function y(b,_){for(var j=0;j<_.length;j++){var P=_[j];P.enumerable=P.enumerable||!1,P.configurable=!0,"value"in P&&(P.writable=!0),Object.defineProperty(b,P.key,P)}}return function(b,_,j){return _&&y(b.prototype,_),j&&y(b,j),b}})(),t=Hr(),r=n(t);function n(y){return y&&y.__esModule?y:{default:y}}function i(y,b){if(!(y instanceof b))throw new TypeError("Cannot call a class as a function")}function a(y,b){if(!y)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return b&&(typeof b=="object"||typeof b=="function")?b:y}function s(y,b){if(typeof b!="function"&&b!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof b);y.prototype=Object.create(b&&b.prototype,{constructor:{value:y,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(y,b):y.__proto__=b)}var u=(function(y){s(b,y);function b(_,j){return i(this,b),_=_.toUpperCase(),j.mod43&&(_+=m(w(_))),a(this,(b.__proto__||Object.getPrototypeOf(b)).call(this,_,j))}return e(b,[{key:"encode",value:function(){for(var j=d("*"),P=0;P=200){b=m.shift()-105;var _=n.SWAP[b];_!==void 0?y=d.next(m,g+1,_):((w===n.SET_A||w===n.SET_B)&&b===n.SHIFT&&(m[0]=w===n.SET_A?m[0]>95?m[0]-96:m[0]:m[0]<32?m[0]+96:m[0]),y=d.next(m,g+1,w))}else b=d.correctIndex(m,w),y=d.next(m,g+1,w);var j=d.getBar(b),P=b*g;return{result:j+y.result,checksum:P+y.checksum}}}]),d})(r.default);return If.default=f,If}var Df={},S2;function yU(){if(S2)return Df;S2=1,Object.defineProperty(Df,"__esModule",{value:!0});var e=Jc(),t=function(u){return u.match(new RegExp("^"+e.A_CHARS+"*"))[0].length},r=function(u){return u.match(new RegExp("^"+e.B_CHARS+"*"))[0].length},n=function(u){return u.match(new RegExp("^"+e.C_CHARS+"*"))[0]};function i(s,u){var f=u?e.A_CHARS:e.B_CHARS,c=s.match(new RegExp("^("+f+"+?)(([0-9]{2}){2,})([^0-9]|$)"));if(c)return c[1]+"Ì"+a(s.substring(c[1].length));var d=s.match(new RegExp("^"+f+"+"))[0];return d.length===s.length?s:d+String.fromCharCode(u?205:206)+i(s.substring(d.length),!u)}function a(s){var u=n(s),f=u.length;if(f===s.length)return s;s=s.substring(f);var c=t(s)>=r(s);return u+String.fromCharCode(c?206:205)+i(s,c)}return Df.default=function(s){var u=void 0,f=n(s).length;if(f>=2)u=e.C_START_CHAR+a(s);else{var c=t(s)>r(s);u=(c?e.A_START_CHAR:e.B_START_CHAR)+i(s,c)}return u.replace(/[\xCD\xCE]([^])[\xCD\xCE]/,function(d,p){return"Ë"+p})},Df}var _2;function xU(){if(_2)return Mf;_2=1,Object.defineProperty(Mf,"__esModule",{value:!0});var e=up(),t=i(e),r=yU(),n=i(r);function i(c){return c&&c.__esModule?c:{default:c}}function a(c,d){if(!(c instanceof d))throw new TypeError("Cannot call a class as a function")}function s(c,d){if(!c)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return d&&(typeof d=="object"||typeof d=="function")?d:c}function u(c,d){if(typeof d!="function"&&d!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof d);c.prototype=Object.create(d&&d.prototype,{constructor:{value:c,enumerable:!1,writable:!0,configurable:!0}}),d&&(Object.setPrototypeOf?Object.setPrototypeOf(c,d):c.__proto__=d)}var f=(function(c){u(d,c);function d(p,m){if(a(this,d),/^[\x00-\x7F\xC8-\xD3]+$/.test(p))var g=s(this,(d.__proto__||Object.getPrototypeOf(d)).call(this,(0,n.default)(p),m));else var g=s(this,(d.__proto__||Object.getPrototypeOf(d)).call(this,p,m));return s(g)}return d})(t.default);return Mf.default=f,Mf}var Lf={},j2;function bU(){if(j2)return Lf;j2=1,Object.defineProperty(Lf,"__esModule",{value:!0});var e=(function(){function c(d,p){for(var m=0;mw.width*10?w.width*10:w.fontSize,y.guardHeight=w.height+y.fontSize/2+w.textMargin,y}return e(m,[{key:"encode",value:function(){return this.options.flat?this.encodeFlat():this.encodeGuarded()}},{key:"leftText",value:function(w,y){return this.text.substr(w,y)}},{key:"leftEncode",value:function(w,y){return(0,n.default)(w,y)}},{key:"rightText",value:function(w,y){return this.text.substr(w,y)}},{key:"rightEncode",value:function(w,y){return(0,n.default)(w,y)}},{key:"encodeGuarded",value:function(){var w={fontSize:this.fontSize},y={height:this.guardHeight};return[{data:t.SIDE_BIN,options:y},{data:this.leftEncode(),text:this.leftText(),options:w},{data:t.MIDDLE_BIN,options:y},{data:this.rightEncode(),text:this.rightText(),options:w},{data:t.SIDE_BIN,options:y}]}},{key:"encodeFlat",value:function(){var w=[t.SIDE_BIN,this.leftEncode(),t.MIDDLE_BIN,this.rightEncode(),t.SIDE_BIN];return{data:w.join(""),text:this.text}}}]),m})(a.default);return zf.default=d,zf}var k2;function jU(){if(k2)return Ff;k2=1,Object.defineProperty(Ff,"__esModule",{value:!0});var e=(function(){function p(m,g){for(var w=0;ww.width*10?y.fontSize=w.width*10:y.fontSize=w.fontSize,y.guardHeight=w.height+y.fontSize/2+w.textMargin,y}return e(m,[{key:"valid",value:function(){return this.data.search(/^[0-9]{12}$/)!==-1&&this.data[11]==d(this.data)}},{key:"encode",value:function(){return this.options.flat?this.flatEncoding():this.guardedEncoding()}},{key:"flatEncoding",value:function(){var w="";return w+="101",w+=(0,r.default)(this.data.substr(0,6),"LLLLLL"),w+="01010",w+=(0,r.default)(this.data.substr(6,6),"RRRRRR"),w+="101",{data:w,text:this.text}}},{key:"guardedEncoding",value:function(){var w=[];return this.displayValue&&w.push({data:"00000000",text:this.text.substr(0,1),options:{textAlign:"left",fontSize:this.fontSize}}),w.push({data:"101"+(0,r.default)(this.data[0],"L"),options:{height:this.guardHeight}}),w.push({data:(0,r.default)(this.data.substr(1,5),"LLLLL"),text:this.text.substr(1,5),options:{fontSize:this.fontSize}}),w.push({data:"01010",options:{height:this.guardHeight}}),w.push({data:(0,r.default)(this.data.substr(6,5),"RRRRR"),text:this.text.substr(6,5),options:{fontSize:this.fontSize}}),w.push({data:(0,r.default)(this.data[11],"R")+"101",options:{height:this.guardHeight}}),this.displayValue&&w.push({data:"00000000",text:this.text.substr(11,1),options:{textAlign:"right",fontSize:this.fontSize}}),w}}]),m})(i.default);function d(p){var m=0,g;for(g=1;g<11;g+=2)m+=parseInt(p[g]);for(g=0;g<11;g+=2)m+=parseInt(p[g])*3;return(10-m%10)%10}return Fl.default=c,Fl}var Vf={},D2;function AU(){if(D2)return Vf;D2=1,Object.defineProperty(Vf,"__esModule",{value:!0});var e=(function(){function w(y,b){for(var _=0;__.width*10?j.fontSize=_.width*10:j.fontSize=_.fontSize,j.guardHeight=_.height+j.fontSize/2+_.textMargin,j}return e(y,[{key:"valid",value:function(){return this.isValid}},{key:"encode",value:function(){return this.options.flat?this.flatEncoding():this.guardedEncoding()}},{key:"flatEncoding",value:function(){var _="";return _+="101",_+=this.encodeMiddleDigits(),_+="010101",{data:_,text:this.text}}},{key:"guardedEncoding",value:function(){var _=[];return this.displayValue&&_.push({data:"00000000",text:this.text[0],options:{textAlign:"left",fontSize:this.fontSize}}),_.push({data:"101",options:{height:this.guardHeight}}),_.push({data:this.encodeMiddleDigits(),text:this.text.substring(1,7),options:{fontSize:this.fontSize}}),_.push({data:"010101",options:{height:this.guardHeight}}),this.displayValue&&_.push({data:"00000000",text:this.text[7],options:{textAlign:"right",fontSize:this.fontSize}}),_}},{key:"encodeMiddleDigits",value:function(){var _=this.upcA[0],j=this.upcA[this.upcA.length-1],P=p[parseInt(j)][parseInt(_)];return(0,r.default)(this.middleDigits,P)}}]),y})(i.default);function g(w,y){for(var b=parseInt(w[w.length-1]),_=d[b],j="",P=0,k=0;k<_.length;k++){var A=_[k];A==="X"?j+=w[P++]:j+=A}return j=""+y+j,""+j+(0,a.checksum)(j)}return Vf.default=m,Vf}var L2;function NU(){if(L2)return dr;L2=1,Object.defineProperty(dr,"__esModule",{value:!0}),dr.UPCE=dr.UPC=dr.EAN2=dr.EAN5=dr.EAN8=dr.EAN13=void 0;var e=jU(),t=m(e),r=OU(),n=m(r),i=EU(),a=m(i),s=PU(),u=m(s),f=LI(),c=m(f),d=AU(),p=m(d);function m(g){return g&&g.__esModule?g:{default:g}}return dr.EAN13=t.default,dr.EAN8=n.default,dr.EAN5=a.default,dr.EAN2=u.default,dr.UPC=c.default,dr.UPCE=p.default,dr}var Pa={},Gf={},Fo={},$2;function CU(){return $2||($2=1,Object.defineProperty(Fo,"__esModule",{value:!0}),Fo.START_BIN="1010",Fo.END_BIN="11101",Fo.BINARIES=["00110","10001","01001","11000","00101","10100","01100","00011","10010","01010"]),Fo}var B2;function $I(){if(B2)return Gf;B2=1,Object.defineProperty(Gf,"__esModule",{value:!0});var e=(function(){function c(d,p){for(var m=0;m=3&&this.number<=131070}}]),c})(r.default);return ql.pharmacode=u,ql}var Ul={},Y2;function BU(){if(Y2)return Ul;Y2=1,Object.defineProperty(Ul,"__esModule",{value:!0}),Ul.codabar=void 0;var e=(function(){function f(c,d){for(var p=0;p":["(%)","I"],"?":["(%)","J"],"@":["(%)","V"],"[":["(%)","K"],"\\":["(%)","L"],"]":["(%)","M"],"^":["(%)","N"],_:["(%)","O"],"`":["(%)","W"],a:["(+)","A"],b:["(+)","B"],c:["(+)","C"],d:["(+)","D"],e:["(+)","E"],f:["(+)","F"],g:["(+)","G"],h:["(+)","H"],i:["(+)","I"],j:["(+)","J"],k:["(+)","K"],l:["(+)","L"],m:["(+)","M"],n:["(+)","N"],o:["(+)","O"],p:["(+)","P"],q:["(+)","Q"],r:["(+)","R"],s:["(+)","S"],t:["(+)","T"],u:["(+)","U"],v:["(+)","V"],w:["(+)","W"],x:["(+)","X"],y:["(+)","Y"],z:["(+)","Z"],"{":["(%)","P"],"|":["(%)","Q"],"}":["(%)","R"],"~":["(%)","S"],"":["(%)","T"]}),zo}var Z2;function BI(){if(Z2)return ed;Z2=1,Object.defineProperty(ed,"__esModule",{value:!0});var e=(function(){function c(d,p){for(var m=0;m0?d.fontSize+d.textMargin:0)+d.marginTop+d.marginBottom}function i(c,d,p){if(p.displayValue&&dd&&(d=c[p].height);return d}function f(c,d,p){var m;if(p)m=p;else if(typeof document<"u")m=document.createElement("canvas").getContext("2d");else return 0;m.font=d.fontOptions+" "+d.fontSize+"px "+d.font;var g=m.measureText(c);if(!g)return 0;var w=g.width;return w}return Rr.getMaximumHeightOfEncodings=u,Rr.getEncodingHeight=n,Rr.getBarcodePadding=i,Rr.calculateEncodingAttributes=a,Rr.getTotalWidthOfEncodings=s,Rr}var uE;function XU(){if(uE)return ud;uE=1,Object.defineProperty(ud,"__esModule",{value:!0});var e=(function(){function u(f,c){for(var d=0;d0?(g=0,p.textAlign="left"):c.textAlign=="right"?(g=d.width-1,p.textAlign="right"):(g=d.width/2,p.textAlign="center"),p.fillText(d.text,g,w)}}},{key:"moveCanvasDrawing",value:function(c){var d=this.canvas.getContext("2d");d.translate(c.width,0)}},{key:"restoreCanvas",value:function(){var c=this.canvas.getContext("2d");c.restore()}}]),u})();return ud.default=s,ud}var fd={},fE;function KU(){if(fE)return fd;fE=1,Object.defineProperty(fd,"__esModule",{value:!0});var e=(function(){function f(c,d){for(var p=0;p0&&(this.drawRect(b-p.width*y,w,p.width*y,p.height,d),y=0);y>0&&this.drawRect(b-p.width*(y-1),w,p.width*y,p.height,d)}},{key:"drawSVGText",value:function(d,p,m){var g=this.document.createElementNS(s,"text");if(p.displayValue){var w,y;g.setAttribute("font-family",p.font),g.setAttribute("font-size",p.fontSize),p.fontOptions.includes("bold")&&g.setAttribute("font-weight","bold"),p.fontOptions.includes("italic")&&g.setAttribute("font-style","italic"),p.textPosition=="top"?y=p.fontSize-p.textMargin:y=p.height+p.textMargin+p.fontSize,p.textAlign=="left"||m.barcodePadding>0?(w=0,g.setAttribute("text-anchor","start")):p.textAlign=="right"?(w=m.width-1,g.setAttribute("text-anchor","end")):(w=m.width/2,g.setAttribute("text-anchor","middle")),g.setAttribute("x",w),g.setAttribute("y",y),g.appendChild(this.document.createTextNode(m.text)),d.appendChild(g)}}},{key:"setSvgAttributes",value:function(d,p){var m=this.svg;m.setAttribute("width",d+"px"),m.setAttribute("height",p+"px"),m.setAttribute("x","0px"),m.setAttribute("y","0px"),m.setAttribute("viewBox","0 0 "+d+" "+p),m.setAttribute("xmlns",s),m.setAttribute("version","1.1")}},{key:"createGroup",value:function(d,p,m){var g=this.document.createElementNS(s,"g");return g.setAttribute("transform","translate("+d+", "+p+")"),m.appendChild(g),g}},{key:"setGroupOptions",value:function(d,p){d.setAttribute("fill",p.lineColor)}},{key:"drawRect",value:function(d,p,m,g,w){var y=this.document.createElementNS(s,"rect");return y.setAttribute("x",d),y.setAttribute("y",p),y.setAttribute("width",m),y.setAttribute("height",g),w.appendChild(y),y}}]),f})();return fd.default=u,fd}var dd={},dE;function YU(){if(dE)return dd;dE=1,Object.defineProperty(dd,"__esModule",{value:!0});var e=(function(){function n(i,a){for(var s=0;s"u"?"undefined":e(d))==="object"&&!d.nodeName)return{element:d,renderer:i.default.ObjectRenderer};throw new a.InvalidElementException}}function f(d){var p=document.querySelectorAll(d);if(p.length!==0){for(var m=[],g=0;g"u")throw Error("No element to render on was provided.");return q._renderProperties=(0,c.default)(F),q._encodings=[],q._options=b.default,q._errorHandler=new g.default(q),typeof I<"u"&&(D=D||{},D.format||(D.format=C()),q.options(D)[D.format](I,D).render()),q};P.getModule=function(M){return t.default[M]};for(var k in t.default)t.default.hasOwnProperty(k)&&A(t.default,k);function A(M,F){j.prototype[F]=j.prototype[F.toUpperCase()]=j.prototype[F.toLowerCase()]=function(I,D){var q=this;return q._errorHandler.wrapBarcodeCall(function(){D.text=typeof D.text>"u"?void 0:""+D.text;var U=(0,n.default)(q._options,D);U=(0,p.default)(U);var H=M[F],X=N(I,H,U);return q._encodings.push(X),q})}}function N(M,F,I){M=""+M;var D=new F(M,I);if(!D.valid())throw new w.InvalidInputException(D.constructor.name,M);var q=D.encode();q=(0,a.default)(q);for(var U=0;Ut in e?nW(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Cb=(e,t)=>{for(var r in t||(t={}))WI.call(t,r)&&yE(e,r,t[r]);if(Hd)for(var r of Hd(t))HI.call(t,r)&&yE(e,r,t[r]);return e},kb=(e,t)=>{var r={};for(var n in e)WI.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Hd)for(var n of Hd(e))t.indexOf(n)<0&&HI.call(e,n)&&(r[n]=e[n]);return r};/** + * @license QR Code generator library (TypeScript) + * Copyright (c) Project Nayuki. + * SPDX-License-Identifier: MIT + */var Ya;(e=>{const t=class Ze{constructor(f,c,d,p){if(this.version=f,this.errorCorrectionLevel=c,this.modules=[],this.isFunction=[],fZe.MAX_VERSION)throw new RangeError("Version value out of range");if(p<-1||p>7)throw new RangeError("Mask value out of range");this.size=f*4+17;let m=[];for(let w=0;w7)throw new RangeError("Invalid value");let w,y;for(w=d;;w++){const P=Ze.getNumDataCodewords(w,c)*8,k=s.getTotalBits(f,w);if(k<=P){y=k;break}if(w>=p)throw new RangeError("Data too long")}for(const P of[Ze.Ecc.MEDIUM,Ze.Ecc.QUARTILE,Ze.Ecc.HIGH])g&&y<=Ze.getNumDataCodewords(w,P)*8&&(c=P);let b=[];for(const P of f){r(P.mode.modeBits,4,b),r(P.numChars,P.mode.numCharCountBits(w),b);for(const k of P.getData())b.push(k)}i(b.length==y);const _=Ze.getNumDataCodewords(w,c)*8;i(b.length<=_),r(0,Math.min(4,_-b.length),b),r(0,(8-b.length%8)%8,b),i(b.length%8==0);for(let P=236;b.length<_;P^=253)r(P,8,b);let j=[];for(;j.length*8j[k>>>3]|=P<<7-(k&7)),new Ze(w,c,j,m)}getModule(f,c){return 0<=f&&f>>9)*1335;const p=(c<<10|d)^21522;i(p>>>15==0);for(let m=0;m<=5;m++)this.setFunctionModule(8,m,n(p,m));this.setFunctionModule(8,7,n(p,6)),this.setFunctionModule(8,8,n(p,7)),this.setFunctionModule(7,8,n(p,8));for(let m=9;m<15;m++)this.setFunctionModule(14-m,8,n(p,m));for(let m=0;m<8;m++)this.setFunctionModule(this.size-1-m,8,n(p,m));for(let m=8;m<15;m++)this.setFunctionModule(8,this.size-15+m,n(p,m));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let f=this.version;for(let d=0;d<12;d++)f=f<<1^(f>>>11)*7973;const c=this.version<<12|f;i(c>>>18==0);for(let d=0;d<18;d++){const p=n(c,d),m=this.size-11+d%3,g=Math.floor(d/3);this.setFunctionModule(m,g,p),this.setFunctionModule(g,m,p)}}drawFinderPattern(f,c){for(let d=-4;d<=4;d++)for(let p=-4;p<=4;p++){const m=Math.max(Math.abs(p),Math.abs(d)),g=f+p,w=c+d;0<=g&&g{(P!=y-m||A>=w)&&j.push(k[P])});return i(j.length==g),j}drawCodewords(f){if(f.length!=Math.floor(Ze.getNumRawDataModules(this.version)/8))throw new RangeError("Invalid argument");let c=0;for(let d=this.size-1;d>=1;d-=2){d==6&&(d=5);for(let p=0;p>>3],7-(c&7)),c++)}}i(c==f.length*8)}applyMask(f){if(f<0||f>7)throw new RangeError("Mask value out of range");for(let c=0;c5&&f++):(this.finderPenaltyAddHistory(w,y),g||(f+=this.finderPenaltyCountPatterns(y)*Ze.PENALTY_N3),g=this.modules[m][b],w=1);f+=this.finderPenaltyTerminateAndCount(g,w,y)*Ze.PENALTY_N3}for(let m=0;m5&&f++):(this.finderPenaltyAddHistory(w,y),g||(f+=this.finderPenaltyCountPatterns(y)*Ze.PENALTY_N3),g=this.modules[b][m],w=1);f+=this.finderPenaltyTerminateAndCount(g,w,y)*Ze.PENALTY_N3}for(let m=0;mg+(w?1:0),c);const d=this.size*this.size,p=Math.ceil(Math.abs(c*20-d*10)/d)-1;return i(0<=p&&p<=9),f+=p*Ze.PENALTY_N4,i(0<=f&&f<=2568888),f}getAlignmentPatternPositions(){if(this.version==1)return[];{const f=Math.floor(this.version/7)+2,c=this.version==32?26:Math.ceil((this.version*4+4)/(f*2-2))*2;let d=[6];for(let p=this.size-7;d.lengthZe.MAX_VERSION)throw new RangeError("Version number out of range");let c=(16*f+128)*f+64;if(f>=2){const d=Math.floor(f/7)+2;c-=(25*d-10)*d-55,f>=7&&(c-=36)}return i(208<=c&&c<=29648),c}static getNumDataCodewords(f,c){return Math.floor(Ze.getNumRawDataModules(f)/8)-Ze.ECC_CODEWORDS_PER_BLOCK[c.ordinal][f]*Ze.NUM_ERROR_CORRECTION_BLOCKS[c.ordinal][f]}static reedSolomonComputeDivisor(f){if(f<1||f>255)throw new RangeError("Degree out of range");let c=[];for(let p=0;p0);for(const p of f){const m=p^d.shift();d.push(0),c.forEach((g,w)=>d[w]^=Ze.reedSolomonMultiply(g,m))}return d}static reedSolomonMultiply(f,c){if(f>>>8||c>>>8)throw new RangeError("Byte out of range");let d=0;for(let p=7;p>=0;p--)d=d<<1^(d>>>7)*285,d^=(c>>>p&1)*f;return i(d>>>8==0),d}finderPenaltyCountPatterns(f){const c=f[1];i(c<=this.size*3);const d=c>0&&f[2]==c&&f[3]==c*3&&f[4]==c&&f[5]==c;return(d&&f[0]>=c*4&&f[6]>=c?1:0)+(d&&f[6]>=c*4&&f[0]>=c?1:0)}finderPenaltyTerminateAndCount(f,c,d){return f&&(this.finderPenaltyAddHistory(c,d),c=0),c+=this.size,this.finderPenaltyAddHistory(c,d),this.finderPenaltyCountPatterns(d)}finderPenaltyAddHistory(f,c){c[0]==0&&(f+=this.size),c.pop(),c.unshift(f)}};t.MIN_VERSION=1,t.MAX_VERSION=40,t.PENALTY_N1=3,t.PENALTY_N2=3,t.PENALTY_N3=40,t.PENALTY_N4=10,t.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],t.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],e.QrCode=t;function r(u,f,c){if(f<0||f>31||u>>>f)throw new RangeError("Value out of range");for(let d=f-1;d>=0;d--)c.push(u>>>d&1)}function n(u,f){return(u>>>f&1)!=0}function i(u){if(!u)throw new Error("Assertion error")}const a=class Et{constructor(f,c,d){if(this.mode=f,this.numChars=c,this.bitData=d,c<0)throw new RangeError("Invalid argument");this.bitData=d.slice()}static makeBytes(f){let c=[];for(const d of f)r(d,8,c);return new Et(Et.Mode.BYTE,f.length,c)}static makeNumeric(f){if(!Et.isNumeric(f))throw new RangeError("String contains non-numeric characters");let c=[];for(let d=0;d=1<{(t=>{const r=class{constructor(i,a){this.ordinal=i,this.formatBits=a}};r.LOW=new r(0,1),r.MEDIUM=new r(1,0),r.QUARTILE=new r(2,3),r.HIGH=new r(3,2),t.Ecc=r})(e.QrCode||(e.QrCode={}))})(Ya||(Ya={}));(e=>{(t=>{const r=class{constructor(i,a){this.modeBits=i,this.numBitsCharCount=a}numCharCountBits(i){return this.numBitsCharCount[Math.floor((i+7)/17)]}};r.NUMERIC=new r(1,[10,12,14]),r.ALPHANUMERIC=new r(2,[9,11,13]),r.BYTE=new r(4,[8,16,16]),r.KANJI=new r(8,[8,10,12]),r.ECI=new r(7,[0,0,0]),t.Mode=r})(e.QrSegment||(e.QrSegment={}))})(Ya||(Ya={}));var Ko=Ya;/** + * @license qrcode.react + * Copyright (c) Paul O'Shannessy + * SPDX-License-Identifier: ISC + */var iW={L:Ko.QrCode.Ecc.LOW,M:Ko.QrCode.Ecc.MEDIUM,Q:Ko.QrCode.Ecc.QUARTILE,H:Ko.QrCode.Ecc.HIGH},VI=128,GI="L",XI="#FFFFFF",KI="#000000",YI=!1,QI=1,aW=4,oW=0,sW=.1;function ZI(e,t=0){const r=[];return e.forEach(function(n,i){let a=null;n.forEach(function(s,u){if(!s&&a!==null){r.push(`M${a+t} ${i+t}h${u-a}v1H${a+t}z`),a=null;return}if(u===n.length-1){if(!s)return;a===null?r.push(`M${u+t},${i+t} h1v1H${u+t}z`):r.push(`M${a+t},${i+t} h${u+1-a}v1H${a+t}z`);return}s&&a===null&&(a=u)})}),r.join("")}function JI(e,t){return e.slice().map((r,n)=>n=t.y+t.h?r:r.map((i,a)=>a=t.x+t.w?i:!1))}function lW(e,t,r,n){if(n==null)return null;const i=e.length+r*2,a=Math.floor(t*sW),s=i/t,u=(n.width||a)*s,f=(n.height||a)*s,c=n.x==null?e.length/2-u/2:n.x*s,d=n.y==null?e.length/2-f/2:n.y*s,p=n.opacity==null?1:n.opacity;let m=null;if(n.excavate){let w=Math.floor(c),y=Math.floor(d),b=Math.ceil(u+c-w),_=Math.ceil(f+d-y);m={x:w,y,w:b,h:_}}const g=n.crossOrigin;return{x:c,y:d,h:f,w:u,excavation:m,opacity:p,crossOrigin:g}}function cW(e,t){return t!=null?Math.max(Math.floor(t),0):e?aW:oW}function eD({value:e,level:t,minVersion:r,includeMargin:n,marginSize:i,imageSettings:a,size:s,boostLevel:u}){let f=L.useMemo(()=>{const w=(Array.isArray(e)?e:[e]).reduce((y,b)=>(y.push(...Ko.QrSegment.makeSegments(b)),y),[]);return Ko.QrCode.encodeSegments(w,iW[t],r,void 0,void 0,u)},[e,t,r,u]);const{cells:c,margin:d,numCells:p,calculatedImageSettings:m}=L.useMemo(()=>{let g=f.getModules();const w=cW(n,i),y=g.length+w*2,b=lW(g,s,w,a);return{cells:g,margin:w,numCells:y,calculatedImageSettings:b}},[f,s,a,n,i]);return{qrcode:f,margin:d,cells:c,numCells:p,calculatedImageSettings:m}}var uW=(function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0})(),fW=L.forwardRef(function(t,r){const n=t,{value:i,size:a=VI,level:s=GI,bgColor:u=XI,fgColor:f=KI,includeMargin:c=YI,minVersion:d=QI,boostLevel:p,marginSize:m,imageSettings:g}=n,y=kb(n,["value","size","level","bgColor","fgColor","includeMargin","minVersion","boostLevel","marginSize","imageSettings"]),{style:b}=y,_=kb(y,["style"]),j=g?.src,P=L.useRef(null),k=L.useRef(null),A=L.useCallback(U=>{P.current=U,typeof r=="function"?r(U):r&&(r.current=U)},[r]),[N,C]=L.useState(!1),{margin:T,cells:M,numCells:F,calculatedImageSettings:I}=eD({value:i,level:s,minVersion:d,boostLevel:p,includeMargin:c,marginSize:m,imageSettings:g,size:a});L.useEffect(()=>{if(P.current!=null){const U=P.current,H=U.getContext("2d");if(!H)return;let X=M;const Y=k.current,$=I!=null&&Y!==null&&Y.complete&&Y.naturalHeight!==0&&Y.naturalWidth!==0;$&&I.excavation!=null&&(X=JI(M,I.excavation));const ee=window.devicePixelRatio||1;U.height=U.width=a*ee;const re=a/F*ee;H.scale(re,re),H.fillStyle=u,H.fillRect(0,0,F,F),H.fillStyle=f,uW?H.fill(new Path2D(ZI(X,T))):M.forEach(function(z,K){z.forEach(function(se,pe){se&&H.fillRect(pe+T,K+T,1,1)})}),I&&(H.globalAlpha=I.opacity),$&&H.drawImage(Y,I.x+T,I.y+T,I.w,I.h)}}),L.useEffect(()=>{C(!1)},[j]);const D=Cb({height:a,width:a},b);let q=null;return j!=null&&(q=L.createElement("img",{src:j,key:j,style:{display:"none"},onLoad:()=>{C(!0)},ref:k,crossOrigin:I?.crossOrigin})),L.createElement(L.Fragment,null,L.createElement("canvas",Cb({style:D,height:a,width:a,ref:A,role:"img"},_)),q)});fW.displayName="QRCodeCanvas";var Vd=L.forwardRef(function(t,r){const n=t,{value:i,size:a=VI,level:s=GI,bgColor:u=XI,fgColor:f=KI,includeMargin:c=YI,minVersion:d=QI,boostLevel:p,title:m,marginSize:g,imageSettings:w}=n,y=kb(n,["value","size","level","bgColor","fgColor","includeMargin","minVersion","boostLevel","title","marginSize","imageSettings"]),{margin:b,cells:_,numCells:j,calculatedImageSettings:P}=eD({value:i,level:s,minVersion:d,boostLevel:p,includeMargin:c,marginSize:g,imageSettings:w,size:a});let k=_,A=null;w!=null&&P!=null&&(P.excavation!=null&&(k=JI(_,P.excavation)),A=L.createElement("image",{href:w.src,height:P.h,width:P.w,x:P.x+b,y:P.y+b,preserveAspectRatio:"none",opacity:P.opacity,crossOrigin:P.crossOrigin}));const N=ZI(k,b);return L.createElement("svg",Cb({height:a,width:a,viewBox:`0 0 ${j} ${j}`,ref:r,role:"img"},y),!!m&&L.createElement("title",null,m),L.createElement("path",{fill:u,d:`M0,0 h${j}v${j}H0z`,shapeRendering:"crispEdges"}),L.createElement("path",{fill:f,d:N,shapeRendering:"crispEdges"}),A)});Vd.displayName="QRCodeSVG";function dW({data:e,width:t,height:r,showText:n,orientation:i="horizontal"}){const a=E.useRef(null),s=i==="vertical",u=Math.max(20,(s?t:r)-(n?14:4));E.useEffect(()=>{if(a.current&&e)try{rW(a.current,e,{format:"CODE128",width:1,height:u,displayValue:n!==!1,margin:2,fontOptions:"",fontSize:10})}catch{}},[e,u,n]);const f=h.jsx("svg",{ref:a,className:"w-full h-full min-h-0",style:{maxHeight:s?t:r}});return s?h.jsx("div",{className:"w-full h-full flex items-center justify-center",children:h.jsx("div",{style:{transform:"rotate(-90deg)",transformOrigin:"center center",width:r,height:t,display:"flex",alignItems:"center",justifyContent:"center"},children:f})}):f}const Ma=8;function Uo(e){return Math.round(e/Ma)*Ma}function fs(e,t){return t==="cm"?e*37.8:e*96}const hW=20,pW=20;function mW({unit:e,width:t}){const i=e==="cm"?t/37.8:t/96,a=[];for(let s=0;s<=i+.01;s+=.5){const u=fs(s,e);u<=t+1&&a.push({value:s,px:u,isMajor:Math.abs(s%1)<.01})}return h.jsxs("div",{className:"bg-gray-100 border-b border-gray-300 pointer-events-none select-none relative overflow-hidden",children:[a.map(s=>h.jsx("div",{className:"absolute bottom-0 border-l border-gray-400",style:{left:s.px,height:s.isMajor?8:4}},`t-${s.value}`)),a.filter(s=>s.isMajor).map(s=>h.jsx("span",{className:"absolute text-[8px] text-gray-600",style:{left:s.px+1,top:0},children:s.value},`tl-${s.value}`))]})}function vW({unit:e,height:t}){const i=e==="cm"?t/37.8:t/96,a=[];for(let s=0;s<=i+.01;s+=.5){const u=fs(s,e);u<=t+1&&a.push({value:s,px:u,isMajor:Math.abs(s%1)<.01})}return h.jsxs("div",{className:"bg-gray-100 border-r border-gray-300 pointer-events-none select-none relative overflow-hidden",children:[a.map(s=>h.jsx("div",{className:"absolute left-0 border-t border-gray-400",style:{top:s.px,width:s.isMajor?8:4}},`l-${s.value}`)),a.filter(s=>s.isMajor).map(s=>h.jsx("span",{className:"absolute text-[8px] text-gray-600",style:{left:1,top:s.px},children:s.value},`ll-${s.value}`))]})}function Tb({el:e}){const t=e.config,r=e.type,n={fontSize:t?.fontSize??14,fontFamily:t?.fontFamily??"Arial",fontWeight:t?.fontWeight??"normal",textAlign:t?.textAlign??"left",color:t?.color??"#000"},i=t?.inputType;if(r==="TEXT_STATIC"){const a=t?.text??"文本";return i==="number"?h.jsx("input",{type:"number",readOnly:!0,value:t?.text??"0",className:"w-full h-full min-w-0 border border-gray-300 bg-white rounded px-1 pointer-events-none",style:{...n,textAlign:"right"}}):i==="options"?h.jsxs("div",{className:"w-full h-full min-w-0 border border-gray-300 bg-white rounded px-1 flex items-center pointer-events-none text-gray-500",style:n,children:[h.jsx("span",{className:"truncate flex-1",children:a||"Select..."}),h.jsx("span",{className:"ml-auto text-gray-400",children:"▼"})]}):i==="text"?h.jsx("input",{type:"text",readOnly:!0,value:a,className:"w-full h-full min-w-0 border border-gray-300 bg-white rounded px-1 pointer-events-none",style:n}):h.jsx("div",{className:"w-full h-full px-1 overflow-hidden whitespace-pre-wrap break-all leading-tight",style:n,children:a})}if(r==="TEXT_PRODUCT"){const a=t?.text??"商品名";return h.jsx("div",{className:"w-full h-full px-1 overflow-hidden whitespace-pre-wrap break-all leading-tight",style:n,children:a})}if(r==="TEXT_PRICE"){const a=t?.prefix??"¥",s=t?.text??"0.00";return h.jsxs("div",{className:"w-full h-full px-1 overflow-hidden flex items-center",style:{...n,justifyContent:n.textAlign==="center"?"center":n.textAlign==="right"?"flex-end":"flex-start"},children:[h.jsx("span",{children:a}),h.jsx("span",{children:s})]})}if(r==="BARCODE"){const a=t?.data??"123456789",s=t?.showText!==!1,u=t?.orientation==="vertical"?"vertical":"horizontal";return h.jsx("div",{className:"flex flex-col items-center justify-center w-full h-full overflow-hidden p-0.5",children:h.jsx("div",{className:"flex-1 w-full min-h-0 flex items-center justify-center",children:h.jsx(dW,{data:a,width:e.width,height:e.height,showText:s,orientation:u})})})}if(r==="QRCODE"){const a=t?.data??"https://example.com",s=Math.min(e.width,e.height)-4;return h.jsx("div",{className:"w-full h-full flex items-center justify-center p-0.5",children:h.jsx(Vd,{value:a,size:Math.max(20,s),level:"M",includeMargin:!1})})}if(r==="IMAGE"){const a=t?.src;return a?h.jsx("img",{src:a,alt:"",className:"w-full h-full object-contain"}):h.jsx("div",{className:"w-full h-full flex flex-col items-center justify-center bg-gray-100 text-gray-500 text-[10px] border border-dashed border-gray-300",children:h.jsx("span",{className:"font-medium",children:"Logo"})})}if(r==="DATE"){const s=(t?.format??"YYYY-MM-DD").replace("YYYY","2025").replace("MM","02").replace("DD","01");return t?.inputType==="datetime"||t?.inputType==="date"?h.jsx("input",{type:"date",readOnly:!0,value:"2025-02-01",className:"w-full h-full min-w-0 border border-gray-300 bg-white rounded px-1 pointer-events-none text-[10px]",style:n}):h.jsx("div",{className:"w-full h-full px-1 overflow-hidden whitespace-nowrap",style:n,children:s})}if(r==="TIME"){const s=(t?.format??"HH:mm").replace("HH","12").replace("mm","30");return h.jsx("div",{className:"w-full h-full px-1 overflow-hidden whitespace-nowrap",style:n,children:s})}if(r==="DURATION")return h.jsx("div",{className:"w-full h-full px-1 overflow-hidden whitespace-nowrap",style:n,children:"保质期 2025-02-04"});if(r==="WEIGHT"){const a=t?.value??500,s=t?.unit??"g";return h.jsxs("div",{className:"w-full h-full px-1 overflow-hidden whitespace-nowrap",style:n,children:[a,s]})}if(r==="WEIGHT_PRICE"){const a=t?.unitPrice??10,s=t?.weight??.5,u=t?.currency??"¥";return h.jsxs("div",{className:"w-full h-full px-1 overflow-hidden whitespace-nowrap",style:n,children:[u,(a*s).toFixed(2)]})}if(r==="NUTRITION"){const a=t?.calories??120;return h.jsxs("div",{className:"text-[8px] p-0.5 w-full h-full overflow-hidden flex flex-col",children:[h.jsx("div",{className:"font-semibold border-b border-black",children:"Nutrition Facts"}),h.jsxs("div",{children:["Calories ",a]})]})}return r==="BLANK"?h.jsx("div",{className:"w-full h-full border border-dashed border-gray-200"}):h.jsx("div",{className:"text-gray-500 text-[10px] px-1 truncate w-full flex items-center justify-center",children:e.type.replace(/_/g," ")})}function gW({template:e,selectedId:t,onSelect:r,onUpdateElement:n,onDeleteElement:i,onTemplateChange:a,scale:s=1,onZoomIn:u,onZoomOut:f,onPreview:c}){const d=E.useRef(null),p=E.useRef(null),m=E.useRef(null),g=E.useRef(null),w=E.useRef(null),y=E.useRef(null),[b,_]=L.useState(!1),[j,P]=L.useState(!1),[k,A]=L.useState(e.unit),[N,C]=L.useState({w:400,h:430}),T=E.useRef(null),[M,F]=L.useState({x:0,y:0}),I=E.useRef(null),D=fs(e.width,e.unit),q=fs(e.height,e.unit),U=e.showGrid!==!1;L.useEffect(()=>{A(e.unit)},[e.unit]);const H=L.useCallback(()=>{const G=d.current;G&&C({w:G.clientWidth,h:G.clientHeight})},[]);L.useEffect(()=>{H();const G=d.current;if(!G)return;const Q=new ResizeObserver(H);return Q.observe(G),()=>Q.disconnect()},[H,e.showRuler]);const X=E.useCallback((G,Q)=>{if(b||G.button===1)return;G.stopPropagation(),r(Q),p.current?.focus();const J=e.elements.find(ie=>ie.id===Q);if(!J)return;const ce=document.getElementById(`element-${Q}`);ce&&(ce.classList.add("z-50","opacity-90","shadow-xl","ring-2","ring-blue-400","ring-offset-2"),ce.style.cursor="grabbing"),m.current={id:Q,startX:G.clientX,startY:G.clientY,elX:J.x,elY:J.y},w.current={id:Q,x:J.x,y:J.y},G.currentTarget.setPointerCapture?.(G.pointerId)},[e.elements,r,b]),Y=E.useCallback(G=>{y.current!==null&&cancelAnimationFrame(y.current),y.current=requestAnimationFrame(()=>{G(),y.current=null})},[]),$=E.useCallback(G=>{if(j&&I.current){const Q=G.clientX-I.current.startX,J=G.clientY-I.current.startY;F({x:I.current.x+Q,y:I.current.y+J});return}if(j&&T.current&&d.current){const Q=G.clientX-T.current.x,J=G.clientY-T.current.y;d.current.scrollLeft=T.current.scrollLeft-Q,d.current.scrollTop=T.current.scrollTop-J;return}if(m.current){const{id:Q,startX:J,startY:ce,elX:ie,elY:fe}=m.current,xe=G.clientX,ae=G.clientY;Y(()=>{const Be=(xe-J)/s,De=(ae-ce)/s,ot=Math.max(0,ie+Be),et=Math.max(0,fe+De),ct=Uo(ot),qt=Uo(et),Ut=document.getElementById(`element-${Q}`);Ut&&(Ut.style.left=`${ct}px`,Ut.style.top=`${qt}px`),w.current={id:Q,x:ct,y:qt}})}if(g.current){const{id:Q,corner:J,startX:ce,startY:ie,w:fe,h:xe,elX:ae,elY:Be}=g.current,De=G.clientX,ot=G.clientY;Y(()=>{const et=(De-ce)/s,ct=(ot-ie)/s;let qt=fe,Ut=xe,Pr=ae,Jt=Be;J.includes("e")&&(qt=Math.max(20,fe+et)),J.includes("w")&&(qt=Math.max(20,fe-et),Pr=ae+et),J.includes("s")&&(Ut=Math.max(12,xe+ct)),J.includes("n")&&(Ut=Math.max(12,xe-ct),Jt=Be+ct);const gr=Uo(qt),Zn=Uo(Ut),Ai=Uo(Pr),Ni=Uo(Jt),Ci=document.getElementById(`element-${Q}`);Ci&&(Ci.style.width=`${gr}px`,Ci.style.height=`${Zn}px`,Ci.style.left=`${Ai}px`,Ci.style.top=`${Ni}px`),w.current={id:Q,width:gr,height:Zn,x:Ai,y:Ni}})}},[j,a,s,e.unit,Y]),ee=E.useCallback(()=>{j&&(P(!1),T.current=null,I.current=null),y.current!==null&&(cancelAnimationFrame(y.current),y.current=null);const G=m.current?.id||g.current?.id;if(G){const Q=document.getElementById(`element-${G}`);Q&&(Q.classList.remove("z-50","opacity-90","shadow-xl","ring-2","ring-blue-400","ring-offset-2"),Q.style.cursor="")}if(w.current){const{id:Q,...J}=w.current;n(Q,J),w.current=null}m.current=null,g.current=null},[n]);E.useEffect(()=>{const G=J=>{J.code==="Space"&&!J.repeat&&_(!0)},Q=J=>{J.code==="Space"&&(_(!1),P(!1),T.current=null,I.current=null)};return window.addEventListener("keydown",G),window.addEventListener("keyup",Q),()=>{window.removeEventListener("keydown",G),window.removeEventListener("keyup",Q)}},[]),E.useEffect(()=>{const G=d.current;if(!G)return;const Q=()=>{G.scrollLeft=Math.max(0,(G.scrollWidth-G.clientWidth)/2),G.scrollTop=Math.max(0,(G.scrollHeight-G.clientHeight)/2)},J=requestAnimationFrame(Q),ce=setTimeout(Q,100);return()=>{cancelAnimationFrame(J),clearTimeout(ce)}},[s,D,q]);const re=E.useCallback(G=>{if(!t)return;if(G.key==="Delete"||G.key==="Backspace"){G.preventDefault();const fe=e.elements.findIndex(xe=>xe.id===t);if(fe>=0){const xe=e.elements.filter(ae=>ae.id!==t);i(t),r(xe[fe]?.id??xe[fe-1]?.id??null)}return}const Q=e.elements.find(fe=>fe.id===t);if(!Q)return;const J=G.shiftKey?1:Ma;let ce=0,ie=0;switch(G.key){case"ArrowLeft":ce=-J;break;case"ArrowRight":ce=J;break;case"ArrowUp":ie=-J;break;case"ArrowDown":ie=-J;break;default:return}G.key==="ArrowDown"&&(ie=J),G.preventDefault(),n(Q.id,{x:Math.max(0,Q.x+ce),y:Math.max(0,Q.y+ie)})},[t,e.elements,n,i,r]),z=()=>r(null),K=G=>{(b||G.button===1)&&(G.preventDefault(),P(!0),T.current={x:G.clientX,y:G.clientY,scrollLeft:d.current?.scrollLeft||0,scrollTop:d.current?.scrollTop||0},G.currentTarget.setPointerCapture(G.pointerId))},se=G=>{if(j&&T.current&&d.current){const Q=G.clientX-T.current.x,J=G.clientY-T.current.y;d.current.scrollLeft=T.current.scrollLeft-Q,d.current.scrollTop=T.current.scrollTop-J}},pe=G=>{j&&(P(!1),T.current=null)};return h.jsxs("div",{className:"flex-1 flex flex-col min-h-0 overflow-hidden bg-gray-100/80 h-full",children:[h.jsxs("div",{className:"shrink-0 px-4 py-2 border-b-2 border-gray-300 bg-white flex items-center justify-between gap-2 flex-wrap z-10",children:[h.jsx("span",{className:"text-sm font-medium text-gray-700",children:"Label Preview"}),h.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[c&&h.jsx("button",{type:"button",onClick:c,className:"h-8 px-3 rounded border border-gray-300 bg-white text-gray-700 hover:bg-gray-50 text-xs font-medium shadow-sm transition-all active:scale-95",children:"Preview"}),a&&h.jsxs(h.Fragment,{children:[h.jsxs(qe,{value:(()=>{const G=sg.findIndex(Q=>Q.width===e.width&&Q.height===e.height&&Q.unit===e.unit);return G>=0?String(G):"custom"})(),onValueChange:G=>{if(G==="custom")return;const Q=sg[Number(G)];Q&&a({width:Q.width,height:Q.height,unit:Q.unit})},children:[h.jsx(We,{className:"h-8 w-[130px] text-xs",children:h.jsx(Ue,{placeholder:"Canvas size"})}),h.jsxs(Ve,{children:[sg.map((G,Q)=>h.jsx(ge,{value:String(Q),className:"text-xs",children:G.name},Q)),h.jsx(ge,{value:"custom",className:"text-xs text-gray-500",children:"Custom"})]})]}),h.jsxs(qe,{value:k,onValueChange:G=>A(G),children:[h.jsx(We,{className:"h-8 w-[90px] text-xs",children:h.jsx(Ue,{placeholder:"Unit"})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"cm",children:"cm"}),h.jsx(ge,{value:"inch",children:"inch"})]})]}),h.jsx("button",{type:"button",onClick:()=>a({showGrid:!U}),className:Ne("h-8 px-3 rounded border text-xs font-medium shadow-sm transition-colors",U?"border-gray-300 bg-white text-gray-700 hover:bg-gray-50":"border-gray-300 bg-gray-100 text-gray-500"),children:U?"Hide grid":"Show grid"})]}),h.jsxs("div",{className:"flex items-center gap-1 bg-white rounded border border-gray-300 p-0.5 shadow-sm h-8",children:[h.jsx("button",{type:"button",onClick:f,disabled:!f,className:"h-6 w-6 rounded hover:bg-gray-100 text-gray-600 disabled:opacity-50 disabled:pointer-events-none flex items-center justify-center text-sm font-medium active:scale-90 transition-transform",title:"缩小",children:"−"}),h.jsxs("span",{className:"min-w-[3rem] text-center text-xs text-gray-600 font-medium",children:[Math.round(s*100),"%"]}),h.jsx("button",{type:"button",onClick:u,disabled:!u,className:"h-6 w-6 rounded hover:bg-gray-100 text-gray-600 disabled:opacity-50 disabled:pointer-events-none flex items-center justify-center text-sm font-medium active:scale-90 transition-transform",title:"放大",children:"+"})]})]})]}),h.jsx("div",{className:"flex-1 min-h-0 flex flex-col",children:e.showRuler?h.jsxs("div",{className:"flex-1 min-h-0 bg-gray-100",style:{display:"grid",gridTemplateColumns:`${pW}px 1fr`,gridTemplateRows:`${hW}px 1fr`},children:[h.jsx("div",{className:"bg-gray-100 border-r border-b border-gray-300 flex items-end justify-end pr-0.5 pb-0.5",children:h.jsx("span",{className:"text-[8px] text-gray-500",children:k==="cm"?"cm":"in"})}),h.jsx(mW,{unit:k,width:N.w}),h.jsx(vW,{unit:k,height:N.h}),h.jsx("div",{ref:d,className:Ne("overflow-auto bg-gray-100 relative",b?"cursor-grab active:cursor-grabbing":""),onClick:z,onPointerDown:K,onPointerMove:se,onPointerUp:pe,onPointerLeave:pe,children:h.jsx("div",{style:{minWidth:"100%",minHeight:"100%",width:"fit-content",height:"fit-content",display:"flex",padding:50,boxSizing:"border-box",transform:`translate(${M.x}px, ${M.y}px) scale(${s})`,transformOrigin:"0 0"},children:h.jsx("div",{ref:p,tabIndex:0,className:Ne("relative bg-white shadow-lg border border-dashed border-gray-300 origin-top-left outline-none shrink-0 m-auto",j?"cursor-grabbing":"cursor-grab"),style:{width:D,height:q,backgroundImage:U?`linear-gradient(to right, rgba(0,0,0,0.06) 1px, transparent 1px), + linear-gradient(to bottom, rgba(0,0,0,0.06) 1px, transparent 1px)`:void 0,backgroundSize:U?`${Ma}px ${Ma}px`:void 0,pointerEvents:b?"none":"auto"},onPointerDown:G=>{const Q=G.target,J=Q.closest('[id^="element-"]');p.current?.contains(Q)&&!J&&!m.current&&!g.current&&(G.preventDefault(),G.stopPropagation(),P(!0),I.current={x:M.x,y:M.y,startX:G.clientX,startY:G.clientY},T.current={x:G.clientX,y:G.clientY,scrollLeft:d.current?.scrollLeft??0,scrollTop:d.current?.scrollTop??0},G.currentTarget.setPointerCapture?.(G.pointerId))},onPointerMove:$,onPointerUp:ee,onKeyDown:re,children:e.elements.map(G=>h.jsxs("div",{id:`element-${G.id}`,className:Ne("absolute box-border cursor-move overflow-hidden transition-shadow",G.border==="line"&&"border border-gray-400",G.border==="dotted"&&"border border-dotted border-gray-400",t===G.id&&"ring-2 ring-blue-500 ring-offset-1 z-10"),style:{left:G.x,top:G.y,width:G.width,height:G.height},onClick:Q=>{Q.stopPropagation(),r(G.id)},onPointerDown:Q=>X(Q,G.id),children:[h.jsx(Tb,{el:G}),t===G.id&&h.jsxs(h.Fragment,{children:[["nw","ne","sw","se"].map(Q=>h.jsx("div",{className:"absolute w-4 h-4 bg-white border-2 border-blue-500 rounded-full z-20 shadow-md hover:scale-110 transition-transform",style:{cursor:"nwse-resize",top:Q.startsWith("n")?-6:void 0,bottom:Q.startsWith("s")?-6:void 0,left:Q.endsWith("w")?-6:void 0,right:Q.endsWith("e")?-6:void 0},onPointerDown:J=>{J.stopPropagation();const ce=e.elements.find(ie=>ie.id===G.id);g.current={id:G.id,corner:Q,startX:J.clientX,startY:J.clientY,w:ce.width,h:ce.height,elX:ce.x,elY:ce.y},J.currentTarget.setPointerCapture?.(J.pointerId)}},Q)),["n","s","w","e"].map(Q=>h.jsx("div",{className:"absolute bg-blue-500/50 border border-white/50 rounded-sm z-10 shadow-sm hover:bg-blue-600",style:{cursor:Q==="n"||Q==="s"?"ns-resize":"ew-resize",width:Q==="n"||Q==="s"?"20px":"6px",height:Q==="n"||Q==="s"?"6px":"20px",top:Q==="n"?-3:Q==="s"?void 0:"50%",bottom:Q==="s"?-3:void 0,left:Q==="w"?-3:Q==="e"?void 0:"50%",right:Q==="e"?-3:void 0,transform:Q==="n"||Q==="s"?"translateX(-50%)":"translateY(-50%)"},onPointerDown:J=>{J.stopPropagation();const ce=e.elements.find(fe=>fe.id===G.id),ie=document.getElementById(`element-${G.id}`);ie&&ie.classList.add("z-50","opacity-90"),g.current={id:G.id,corner:Q,startX:J.clientX,startY:J.clientY,w:ce.width,h:ce.height,elX:ce.x,elY:ce.y},J.currentTarget.setPointerCapture?.(J.pointerId)}},Q))]})]},G.id))})})})]}):h.jsx("div",{ref:d,className:Ne("overflow-auto bg-gray-100 relative h-full",b?"cursor-grab active:cursor-grabbing":""),onClick:z,onPointerDown:K,onPointerMove:se,onPointerUp:pe,onPointerLeave:pe,children:h.jsx("div",{style:{minWidth:"100%",minHeight:"100%",width:"fit-content",height:"fit-content",display:"flex",padding:50,boxSizing:"border-box",transform:`translate(${M.x}px, ${M.y}px) scale(${s})`,transformOrigin:"0 0"},children:h.jsx("div",{ref:p,tabIndex:0,className:Ne("relative bg-white shadow-lg border border-dashed border-gray-300 origin-top-left outline-none shrink-0 m-auto",j?"cursor-grabbing":"cursor-grab"),style:{width:D,height:q,backgroundImage:U?`linear-gradient(to right, rgba(0,0,0,0.06) 1px, transparent 1px), + linear-gradient(to bottom, rgba(0,0,0,0.06) 1px, transparent 1px)`:void 0,backgroundSize:U?`${Ma}px ${Ma}px`:void 0,pointerEvents:b?"none":"auto"},onPointerDown:G=>{const Q=G.target,J=Q.closest('[id^="element-"]');p.current?.contains(Q)&&!J&&!m.current&&!g.current&&(G.preventDefault(),G.stopPropagation(),P(!0),I.current={x:M.x,y:M.y,startX:G.clientX,startY:G.clientY},T.current={x:G.clientX,y:G.clientY,scrollLeft:d.current?.scrollLeft??0,scrollTop:d.current?.scrollTop??0},G.currentTarget.setPointerCapture?.(G.pointerId))},onPointerMove:$,onPointerUp:ee,onKeyDown:re,children:e.elements.map(G=>h.jsxs("div",{id:`element-${G.id}`,className:Ne("absolute box-border cursor-move overflow-hidden transition-shadow",G.border==="line"&&"border border-gray-400",G.border==="dotted"&&"border border-dotted border-gray-400",t===G.id&&"ring-2 ring-blue-500 ring-offset-1 z-10"),style:{left:G.x,top:G.y,width:G.width,height:G.height},onClick:Q=>{Q.stopPropagation(),r(G.id)},onPointerDown:Q=>X(Q,G.id),children:[h.jsx(Tb,{el:G}),t===G.id&&h.jsxs(h.Fragment,{children:[["nw","ne","sw","se"].map(Q=>h.jsx("div",{className:"absolute w-4 h-4 bg-white border-2 border-blue-500 rounded-full z-20 shadow-md",style:{cursor:"nwse-resize",top:Q.startsWith("n")?-6:void 0,bottom:Q.startsWith("s")?-6:void 0,left:Q.endsWith("w")?-6:void 0,right:Q.endsWith("e")?-6:void 0},onPointerDown:J=>{J.stopPropagation();const ce=e.elements.find(ie=>ie.id===G.id);g.current={id:G.id,corner:Q,startX:J.clientX,startY:J.clientY,w:ce.width,h:ce.height,elX:ce.x,elY:ce.y},J.currentTarget.setPointerCapture?.(J.pointerId)}},Q)),["n","s","w","e"].map(Q=>h.jsx("div",{className:"absolute bg-blue-500/50 border border-white/50 rounded-sm z-10",style:{cursor:Q==="n"||Q==="s"?"ns-resize":"ew-resize",width:Q==="n"||Q==="s"?"20px":"6px",height:Q==="n"||Q==="s"?"6px":"20px",top:Q==="n"?-3:Q==="s"?void 0:"50%",bottom:Q==="s"?-3:void 0,left:Q==="w"?-3:Q==="e"?void 0:"50%",right:Q==="e"?-3:void 0,transform:Q==="n"||Q==="s"?"translateX(-50%)":"translateY(-50%)"},onPointerDown:J=>{J.stopPropagation();const ce=e.elements.find(fe=>fe.id===G.id),ie=document.getElementById(`element-${G.id}`);ie&&ie.classList.add("z-50","opacity-90"),g.current={id:G.id,corner:Q,startX:J.clientX,startY:J.clientY,w:ce.width,h:ce.height,elX:ce.x,elY:ce.y},J.currentTarget.setPointerCapture?.(J.pointerId)}},Q))]})]},G.id))})})})})]})}function yW({template:e,maxWidth:t=480}){const r=fs(e.width,e.unit),n=fs(e.height,e.unit),i=t?Math.min(t/r,t/n,2):1,a=r*i,s=n*i;return h.jsx("div",{className:"flex items-center justify-center p-4 bg-gray-100 rounded",children:h.jsx("div",{style:{width:a,height:s},className:"relative bg-white shadow-lg overflow-hidden",children:h.jsx("div",{className:"origin-top-left",style:{position:"absolute",left:0,top:0,width:r,height:n,transform:`scale(${i})`,transformOrigin:"0 0"},children:e.elements.map(u=>h.jsx("div",{className:"absolute box-border overflow-hidden pointer-events-none flex items-center justify-center text-xs",style:{left:u.x,top:u.y,width:u.width,height:u.height,border:u.border==="line"?"1px solid #999":u.border==="dotted"?"1px dotted #999":void 0},children:h.jsx(Tb,{el:u})},u.id))})})})}var xW=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],bW=xW.reduce((e,t)=>{const r=aw(`Primitive.${t}`),n=E.forwardRef((i,a)=>{const{asChild:s,...u}=i,f=s?r:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),h.jsx(f,{...u,ref:a})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),wW="Label",tD=E.forwardRef((e,t)=>h.jsx(bW.label,{...e,ref:t,onMouseDown:r=>{r.target.closest("button, input, select, textarea")||(e.onMouseDown?.(r),!r.defaultPrevented&&r.detail>1&&r.preventDefault())}}));tD.displayName=wW;var SW=tD;function Oe({className:e,...t}){return h.jsx(SW,{"data-slot":"label",className:Ne("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}var hp="Switch",[_W]=_i(hp),[jW,OW]=_W(hp),rD=E.forwardRef((e,t)=>{const{__scopeSwitch:r,name:n,checked:i,defaultChecked:a,required:s,disabled:u,value:f="on",onCheckedChange:c,form:d,...p}=e,[m,g]=E.useState(null),w=nt(t,P=>g(P)),y=E.useRef(!1),b=m?d||!!m.closest("form"):!0,[_,j]=Ha({prop:i,defaultProp:a??!1,onChange:c,caller:hp});return h.jsxs(jW,{scope:r,checked:_,disabled:u,children:[h.jsx(Xe.button,{type:"button",role:"switch","aria-checked":_,"aria-required":s,"data-state":oD(_),"data-disabled":u?"":void 0,disabled:u,value:f,...p,ref:w,onClick:Fe(e.onClick,P=>{j(k=>!k),b&&(y.current=P.isPropagationStopped(),y.current||P.stopPropagation())})}),b&&h.jsx(aD,{control:m,bubbles:!y.current,name:n,value:f,checked:_,required:s,disabled:u,form:d,style:{transform:"translateX(-100%)"}})]})});rD.displayName=hp;var nD="SwitchThumb",iD=E.forwardRef((e,t)=>{const{__scopeSwitch:r,...n}=e,i=OW(nD,r);return h.jsx(Xe.span,{"data-state":oD(i.checked),"data-disabled":i.disabled?"":void 0,...n,ref:t})});iD.displayName=nD;var EW="SwitchBubbleInput",aD=E.forwardRef(({__scopeSwitch:e,control:t,checked:r,bubbles:n=!0,...i},a)=>{const s=E.useRef(null),u=nt(s,a),f=ww(r),c=gw(t);return E.useEffect(()=>{const d=s.current;if(!d)return;const p=window.HTMLInputElement.prototype,g=Object.getOwnPropertyDescriptor(p,"checked").set;if(f!==r&&g){const w=new Event("click",{bubbles:n});g.call(d,r),d.dispatchEvent(w)}},[f,r,n]),h.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:r,...i,tabIndex:-1,ref:u,style:{...i.style,...c,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});aD.displayName=EW;function oD(e){return e?"checked":"unchecked"}var PW=rD,AW=iD;function la({className:e,...t}){return h.jsx(PW,{"data-slot":"switch",className:Ne("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-switch-background focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...t,children:h.jsx(AW,{"data-slot":"switch-thumb",className:Ne("bg-card dark:data-[state=unchecked]:bg-card-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}function NW({template:e,selectedElement:t,onTemplateChange:r,onElementChange:n,onDeleteElement:i}){const a={width:288,minWidth:288,maxWidth:288},s="shrink-0 border-l-2 border-gray-300 bg-white flex flex-col h-full shadow-sm";return t?h.jsxs("div",{className:s,style:a,children:[h.jsx("div",{className:"px-3 py-2 border-b-2 border-gray-300 font-semibold text-gray-800 bg-gray-50",children:"Properties (Element)"}),h.jsx(Wd,{className:"flex-1",children:h.jsxs("div",{className:"p-3 space-y-3",children:[h.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[h.jsxs("div",{children:[h.jsx(Oe,{className:"text-xs",children:"X"}),h.jsx(ze,{type:"number",value:t.x,onChange:u=>n(t.id,{x:Number(u.target.value)||0}),className:"h-8 text-sm"})]}),h.jsxs("div",{children:[h.jsx(Oe,{className:"text-xs",children:"Y"}),h.jsx(ze,{type:"number",value:t.y,onChange:u=>n(t.id,{y:Number(u.target.value)||0}),className:"h-8 text-sm"})]})]}),h.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[h.jsxs("div",{children:[h.jsx(Oe,{className:"text-xs",children:"Width"}),h.jsx(ze,{type:"number",value:t.width,onChange:u=>n(t.id,{width:Math.max(1,Number(u.target.value)||0)}),className:"h-8 text-sm"})]}),h.jsxs("div",{children:[h.jsx(Oe,{className:"text-xs",children:"Height"}),h.jsx(ze,{type:"number",value:t.height,onChange:u=>n(t.id,{height:Math.max(1,Number(u.target.value)||0)}),className:"h-8 text-sm"})]})]}),h.jsxs("div",{children:[h.jsx(Oe,{className:"text-xs",children:"Rotation"}),h.jsxs(qe,{value:t.rotation,onValueChange:u=>n(t.id,{rotation:u}),children:[h.jsx(We,{className:"h-8 text-sm",children:h.jsx(Ue,{})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"horizontal",children:"horizontal"}),h.jsx(ge,{value:"vertical",children:"vertical"})]})]})]}),h.jsxs("div",{children:[h.jsx(Oe,{className:"text-xs",children:"Border"}),h.jsxs(qe,{value:t.border,onValueChange:u=>n(t.id,{border:u}),children:[h.jsx(We,{className:"h-8 text-sm",children:h.jsx(Ue,{})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"none",children:"none"}),h.jsx(ge,{value:"line",children:"line"}),h.jsx(ge,{value:"dotted",children:"dotted"})]})]})]}),h.jsx(CW,{element:t,onChange:u=>n(t.id,{config:{...t.config,...u}})}),i&&h.jsx("div",{className:"pt-4 border-t border-gray-100",children:h.jsx(be,{variant:"destructive",className:"w-full",onClick:()=>i(t.id),children:"Delete Element"})})]})})]}):h.jsxs("div",{className:s,style:a,children:[h.jsx("div",{className:"px-3 py-2 border-b-2 border-gray-300 font-semibold text-gray-800 bg-gray-50",children:"Properties (Template)"}),h.jsx(Wd,{className:"flex-1",children:h.jsxs("div",{className:"p-3 space-y-3",children:[h.jsxs("div",{children:[h.jsx(Oe,{className:"text-xs",children:"Template Name"}),h.jsx(ze,{value:e.name,onChange:u=>r({name:u.target.value}),className:"h-8 text-sm mt-1"})]}),h.jsxs("div",{children:[h.jsx(Oe,{className:"text-xs",children:"Label Type"}),h.jsxs(qe,{value:e.labelType,onValueChange:u=>r({labelType:u}),children:[h.jsx(We,{className:"h-8 text-sm mt-1",children:h.jsx(Ue,{})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"PRICE",children:"PRICE"}),h.jsx(ge,{value:"NUTRITION",children:"NUTRITION"}),h.jsx(ge,{value:"SHIPPING",children:"SHIPPING"})]})]})]}),h.jsxs("div",{children:[h.jsx(Oe,{className:"text-xs",children:"Applied Location"}),h.jsxs(qe,{value:e.appliedLocation,onValueChange:u=>r({appliedLocation:u}),children:[h.jsx(We,{className:"h-8 text-sm mt-1",children:h.jsx(Ue,{})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"ALL",children:"All Locations"}),h.jsx(ge,{value:"loc-a",children:"Location A"}),h.jsx(ge,{value:"loc-b",children:"Location B"})]})]})]}),h.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[h.jsxs("div",{children:[h.jsx(Oe,{className:"text-xs",children:"Width"}),h.jsxs("div",{className:"h-8 text-sm flex items-center text-gray-600",children:[e.width," ",e.unit]})]}),h.jsxs("div",{children:[h.jsx(Oe,{className:"text-xs",children:"Height"}),h.jsxs("div",{className:"h-8 text-sm flex items-center text-gray-600",children:[e.height," ",e.unit]})]})]}),h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(la,{checked:e.showRuler,onCheckedChange:u=>r({showRuler:u})}),h.jsx(Oe,{className:"text-xs",children:"Show Ruler"})]})]})})]})}function CW({element:e,onChange:t}){const r=e.config,n=(i,a)=>t({[i]:a});switch(e.type){case"TEXT_STATIC":case"TEXT_PRODUCT":case"TEXT_PRICE":return h.jsxs(h.Fragment,{children:[h.jsxs("div",{children:[h.jsx(Oe,{className:"text-xs",children:"Text"}),h.jsx(ze,{value:r.text??"",onChange:i=>n("text",i.target.value),className:"h-8 text-sm mt-1"})]}),h.jsxs("div",{children:[h.jsx(Oe,{className:"text-xs",children:"Font Size"}),h.jsx(ze,{type:"number",value:r.fontSize??14,onChange:i=>n("fontSize",Number(i.target.value)||14),className:"h-8 text-sm mt-1"})]}),h.jsxs("div",{children:[h.jsx(Oe,{className:"text-xs",children:"Text Align"}),h.jsxs(qe,{value:r.textAlign??"left",onValueChange:i=>n("textAlign",i),children:[h.jsx(We,{className:"h-8 text-sm mt-1",children:h.jsx(Ue,{})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"left",children:"Left"}),h.jsx(ge,{value:"center",children:"Center"}),h.jsx(ge,{value:"right",children:"Right"})]})]})]})]});case"BARCODE":return h.jsxs(h.Fragment,{children:[h.jsxs("div",{children:[h.jsx(Oe,{className:"text-xs",children:"Data"}),h.jsx(ze,{value:r.data??"",onChange:i=>n("data",i.target.value),className:"h-8 text-sm mt-1"})]}),h.jsxs("div",{children:[h.jsx(Oe,{className:"text-xs",children:"Orientation"}),h.jsxs(qe,{value:r.orientation??"horizontal",onValueChange:i=>n("orientation",i),children:[h.jsx(We,{className:"h-8 text-sm mt-1",children:h.jsx(Ue,{})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"horizontal",children:"Horizontal"}),h.jsx(ge,{value:"vertical",children:"Vertical"})]})]})]})]});case"QRCODE":return h.jsxs("div",{children:[h.jsx(Oe,{className:"text-xs",children:"Data (URL)"}),h.jsx(ze,{value:r.data??"",onChange:i=>n("data",i.target.value),className:"h-8 text-sm mt-1"})]});case"WEIGHT":return h.jsxs("div",{children:[h.jsx(Oe,{className:"text-xs",children:"Value"}),h.jsx(ze,{type:"number",value:r.value??0,onChange:i=>n("value",Number(i.target.value)||0),className:"h-8 text-sm mt-1"})]});default:return h.jsxs("div",{className:"text-xs text-gray-500",children:["Config for ",e.type," (edit in code if needed)"]})}}const cg=[{name:"Price Label (Basic)",labelType:"PRICE",unit:"cm",width:6,height:4,appliedLocation:"ALL",elements:[{type:"TEXT_PRODUCT",x:20,y:20,width:180,height:28,config:{text:"Product Name",fontSize:14}},{type:"TEXT_PRICE",x:20,y:55,width:100,height:28,config:{text:"0.00",prefix:"$",fontSize:18}},{type:"BARCODE",x:20,y:95,width:160,height:48,config:{data:"123456789"}}]},{name:"Price Label (with QR)",labelType:"PRICE",unit:"cm",width:6,height:4,appliedLocation:"ALL",elements:[{type:"TEXT_PRODUCT",x:20,y:20,width:140,height:24,config:{text:"Product Name",fontSize:12}},{type:"TEXT_PRICE",x:20,y:50,width:80,height:24,config:{text:"0.00",prefix:"$",fontSize:16}},{type:"QRCODE",x:180,y:20,width:60,height:60,config:{data:"https://example.com"}},{type:"BARCODE",x:20,y:90,width:180,height:40,config:{data:"123456789"}}]},{name:"Nutrition Label",labelType:"NUTRITION",unit:"cm",width:6,height:8,appliedLocation:"ALL",elements:[{type:"TEXT_PRODUCT",x:20,y:20,width:180,height:24,config:{text:"Product Name",fontSize:14}},{type:"NUTRITION",x:20,y:55,width:200,height:120,config:{calories:120,fat:"5g",protein:"3g",carbs:"10g"}},{type:"DATE",x:20,y:190,width:120,height:24,config:{format:"YYYY-MM-DD"}}]},{name:"Shipping Label",labelType:"SHIPPING",unit:"inch",width:4,height:6,appliedLocation:"ALL",elements:[{type:"TEXT_STATIC",x:20,y:20,width:200,height:24,config:{text:"Ship To:",fontSize:12}},{type:"TEXT_STATIC",x:20,y:50,width:200,height:60,config:{text:`Address Line 1 +Address Line 2 +City, State ZIP`,fontSize:11}},{type:"BARCODE",x:20,y:130,width:200,height:50,config:{data:"1234567890123"}},{type:"QRCODE",x:240,y:20,width:80,height:80,config:{data:"https://tracking.example.com/123"}}]},{name:"Blank (6×4 cm)",labelType:"PRICE",unit:"cm",width:6,height:4,appliedLocation:"ALL",elements:[]},{name:"Blank (4×6 inch)",labelType:"PRICE",unit:"inch",width:4,height:6,appliedLocation:"ALL",elements:[]}];function kW(e,t){const r=e.elements.map(n=>{const i=aI(n.type,n.x,n.y);return i.x=n.x,i.y=n.y,n.width!=null&&(i.width=n.width),n.height!=null&&(i.height=n.height),n.config&&(i.config={...i.config,...n.config}),i});return{id:t,name:e.name,labelType:e.labelType,unit:e.unit,width:e.width,height:e.height,appliedLocation:e.appliedLocation,showRuler:!0,showGrid:!0,elements:r}}const TW=.5,RW=2,xE=.25,MW=1;function IW({templateId:e,initialTemplate:t,onClose:r,onSaved:n}){const[i,a]=E.useState(()=>t?{...t}:_7(e??void 0)),[s,u]=E.useState(null),[f,c]=E.useState(MW),[d,p]=E.useState(!1),m=i.elements.find(N=>N.id===s)??null,g=E.useCallback((N,C)=>{const T=aI(N,30,30);C&&Object.keys(C).length>0&&(T.config={...T.config,...C}),a(M=>({...M,elements:[...M.elements,T]})),u(T.id)},[]),w=E.useCallback((N,C)=>{a(T=>({...T,elements:T.elements.map(M=>M.id===N?{...M,...C}:M)}))},[]),y=E.useCallback(N=>{a(C=>({...C,elements:C.elements.filter(T=>T.id!==N)})),u(null)},[]),b=E.useCallback(N=>{a(C=>({...C,...N}))},[]),_=E.useCallback(()=>{O7(i),n(),r()},[i,n,r]),j=E.useCallback(()=>{const N=new Blob([JSON.stringify(i,null,2)],{type:"application/json"}),C=URL.createObjectURL(N),T=document.createElement("a");T.href=C,T.download=`label-template-${i.id}.json`,T.click(),URL.revokeObjectURL(C)},[i]),[P,k]=E.useState("none"),A=E.useCallback(N=>{if(N==="none")return;const C=parseInt(N,10);if(isNaN(C)||C<0||C>=cg.length)return;const T=cg[C],M=kW(T,i.id);a(M),u(null),k("none")},[i.id]);return h.jsxs("div",{className:"flex flex-col h-full min-h-0 bg-gray-100",children:[h.jsxs("div",{className:"flex items-center gap-3 px-4 py-2.5 border-b-2 border-gray-300 bg-white shrink-0 shadow-sm",children:[h.jsxs(be,{variant:"outline",size:"sm",onClick:r,children:[h.jsx(y8,{className:"w-4 h-4 mr-1"}),"Back"]}),h.jsx("span",{className:"text-sm font-medium text-gray-700 truncate flex-1",children:i.name}),h.jsxs(qe,{value:P,onValueChange:N=>{k(N),A(N)},children:[h.jsx(We,{className:"w-[200px] h-8 text-xs",children:h.jsx(Ue,{placeholder:"Load preset template"})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"none",children:"Load preset template"}),cg.map((N,C)=>h.jsx(ge,{value:String(C),children:N.name},C))]})]}),h.jsxs(be,{size:"sm",onClick:j,variant:"outline",children:[h.jsx(Ls,{className:"w-4 h-4 mr-1"}),"Export JSON"]}),h.jsxs(be,{size:"sm",className:"bg-blue-600 hover:bg-blue-700 text-white",onClick:_,children:[h.jsx(TB,{className:"w-4 h-4 mr-1"}),"Save"]})]}),h.jsxs("div",{className:"flex flex-1 min-h-0 gap-0 items-stretch",children:[h.jsx("div",{className:"flex-shrink-0 flex flex-col",children:h.jsx(vU,{onAddElement:g})}),h.jsx("div",{className:"flex-1 min-w-0 min-h-0 border-x-2 border-gray-300 bg-gray-50 flex flex-col",children:h.jsx(gW,{template:i,selectedId:s,onSelect:u,onUpdateElement:w,onDeleteElement:y,onTemplateChange:b,scale:f,onZoomIn:()=>c(N=>Math.min(RW,N+xE)),onZoomOut:()=>c(N=>Math.max(TW,N-xE)),onPreview:()=>p(!0)})}),h.jsx(zn,{open:d,onOpenChange:p,children:h.jsxs(qn,{className:"max-w-[90vw] max-h-[90vh] overflow-auto",children:[h.jsx(Un,{children:h.jsx(Wn,{children:"Label Preview"})}),h.jsx(yW,{template:i,maxWidth:500})]})}),h.jsx("div",{className:"flex-shrink-0 flex flex-col",style:{width:288},children:h.jsx(NW,{template:i,selectedElement:m,onTemplateChange:b,onElementChange:w,onDeleteElement:y})})]})]})}function DW(){const[e,t]=E.useState(()=>m2()),[r,n]=E.useState("list"),[i,a]=E.useState(null),[s,u]=E.useState(""),[f,c]=E.useState("all"),d=E.useCallback(()=>{t(m2())},[]);E.useEffect(()=>{r==="list"&&d()},[r,d]);const p=e.filter(y=>{const b=!s||y.name.toLowerCase().includes(s.toLowerCase()),_=f==="all"||y.appliedLocation===f;return b&&_}),m=()=>{a(null),n("editor")},g=y=>{a(y),n("editor")},w=()=>{n("list"),a(null)};if(r==="editor"){const y=i?sI(i):null;return h.jsx("div",{className:"h-[calc(100vh-8rem)] min-h-[500px] flex flex-col",children:h.jsx(IW,{templateId:i,initialTemplate:y,onClose:w,onSaved:d})})}return h.jsxs("div",{className:"space-y-6",children:[h.jsxs("div",{className:"flex flex-wrap items-center gap-3",style:{height:40},children:[h.jsx(ze,{placeholder:"Search",className:"bg-white border border-black rounded-lg w-[180px] shrink-0 py-0 leading-normal",style:{height:40},value:s,onChange:y=>u(y.target.value)}),h.jsxs(qe,{value:f,onValueChange:c,children:[h.jsx(We,{className:"bg-white border border-black rounded-lg w-[180px] shrink-0 py-0",style:{height:40},children:h.jsx(Ue,{placeholder:"Location"})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"all",children:"All Locations"}),h.jsx(ge,{value:"ALL",children:"ALL"}),h.jsx(ge,{value:"loc-a",children:"Location A"}),h.jsx(ge,{value:"loc-b",children:"Location B"})]})]}),h.jsxs(be,{className:"bg-blue-600 hover:bg-blue-700 text-white font-medium rounded-lg px-6 border-0 shrink-0 ml-auto py-0 min-h-0",style:{height:40},onClick:m,children:["New Label Template ",h.jsx(vr,{className:"ml-1 w-4 h-4"})]})]}),h.jsxs("div",{className:"text-red-600 font-bold italic text-sm md:text-base",children:["***One or more templates have incomplete labels attached to them.",h.jsx("br",{}),"Go to Labels view to see which labels are missing fields."]}),h.jsx("div",{className:"rounded-md border bg-white shadow-sm",children:h.jsxs(Kt,{children:[h.jsx(Yt,{children:h.jsxs(Ke,{className:"bg-gray-50 hover:bg-gray-50",children:[h.jsx(me,{className:"font-bold text-gray-900 w-[180px]",children:"Label Template"}),h.jsx(me,{className:"font-bold text-gray-900 w-[120px]",children:"Location"}),h.jsx(me,{className:"font-bold text-gray-900",children:"Contents"}),h.jsx(me,{className:"font-bold text-gray-900 w-[150px]",children:"Size"}),h.jsx(me,{className:"font-bold text-gray-900 w-[100px]",children:"Actions"})]})}),h.jsx(Qt,{children:p.length===0?h.jsx(Ke,{children:h.jsx(le,{colSpan:5,className:"text-center text-gray-500 py-8",children:'No templates yet. Click "New Label Template" to create one.'})}):p.map(y=>h.jsxs(Ke,{className:"hover:bg-gray-50 cursor-pointer",onClick:()=>g(y.id),children:[h.jsx(le,{className:"font-medium",children:y.name}),h.jsx(le,{children:y.appliedLocation}),h.jsxs(le,{className:"text-sm text-gray-600",children:[y.elements.length," element(s)"]}),h.jsxs(le,{children:[y.width,"×",y.height," ",y.unit]}),h.jsx(le,{onClick:b=>b.stopPropagation(),children:h.jsxs(be,{variant:"outline",size:"sm",onClick:()=>g(y.id),children:[h.jsx(Pd,{className:"w-3 h-3 mr-1"}),"Edit"]})})]},y.id))})]})})]})}function LW(){const e=[{id:1,name:"Prepped By",contents:"A. Smith; B. Doe; C. Borne",lastEdited:"2025.12.03.11:45"},{id:2,name:"Checked By",contents:"D. Manager; E. Supervisor",lastEdited:"2025.12.04.09:30"},{id:3,name:"Allergens",contents:"Peanuts; Dairy; Gluten; Soy",lastEdited:"2025.12.05.14:15"}];return h.jsxs("div",{className:"space-y-6",children:[h.jsxs("div",{className:"flex flex-wrap items-center gap-3",style:{height:40},children:[h.jsx(ze,{placeholder:"Search",className:"bg-white border border-black rounded-lg w-[180px] shrink-0 py-0 leading-normal",style:{height:40}}),h.jsxs(qe,{defaultValue:"all",children:[h.jsx(We,{className:"bg-white border border-black rounded-lg w-[180px] shrink-0 py-0",style:{height:40},children:h.jsx(Ue,{placeholder:"Location"})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"all",children:"All Locations"}),h.jsx(ge,{value:"loc-a",children:"Location A"}),h.jsx(ge,{value:"loc-b",children:"Location B"})]})]}),h.jsxs(be,{className:"bg-blue-600 hover:bg-blue-700 text-white font-medium rounded-lg px-6 border-0 shrink-0 ml-auto py-0 min-h-0",style:{height:40},children:["New Multiple Options ",h.jsx(vr,{className:"ml-1 h-4 w-4"})]})]}),h.jsx("div",{className:"rounded-md border bg-white shadow-sm",children:h.jsxs(Kt,{children:[h.jsx(Yt,{children:h.jsxs(Ke,{className:"bg-gray-50 hover:bg-gray-50",children:[h.jsx(me,{className:"font-bold text-gray-900 w-[250px]",children:"Multiple Option Name"}),h.jsx(me,{className:"font-bold text-gray-900 w-[200px]",children:"Contents"}),h.jsx(me,{className:"font-bold text-gray-900 pl-[120px]",children:"Last Edited"})]})}),h.jsx(Qt,{children:e.map(t=>h.jsxs(Ke,{className:"hover:bg-gray-50",children:[h.jsx(le,{className:"font-medium",children:t.name}),h.jsx(le,{className:"text-gray-600",children:t.contents}),h.jsx(le,{className:"text-gray-500 tabular-nums pl-[120px]",children:t.lastEdited})]},t.id))})]})})]})}function $W({currentView:e="Labels",onViewChange:t}){const r=["Labels","Label Categories","Label Types","Label Templates","Multiple Options"],n=i=>{t&&t(i)};return h.jsxs("div",{className:"space-y-6",children:[h.jsx("div",{className:"flex overflow-x-auto border-b border-gray-200",children:r.map(i=>h.jsx("div",{onClick:()=>n(i),className:`px-4 py-2 text-sm font-medium whitespace-nowrap cursor-pointer transition-colors ${e===i?"border-b-2":"text-gray-500 hover:text-gray-700"}`,style:e===i?{color:"#1b46c7",borderBottomColor:"#1b46c7"}:void 0,children:i},i))}),h.jsxs("div",{className:"min-h-[400px]",children:[e==="Labels"&&h.jsx(v7,{}),e==="Label Categories"&&h.jsx(g7,{}),e==="Label Types"&&h.jsx(y7,{}),e==="Label Templates"&&h.jsx(DW,{}),e==="Multiple Options"&&h.jsx(LW,{}),!["Labels","Label Categories","Label Types","Label Templates","Multiple Options"].includes(e)&&h.jsxs("div",{className:"flex items-center justify-center h-64 text-gray-400",children:[e," content coming soon..."]})]})]})}function BW(){const[e,t]=E.useState([{id:"1",name:"Pop",isOpen:!0,subcategories:[{id:"1-1",name:"2024",isOpen:!0,files:[{id:"f1",name:"uuuuu",date:"10/23/24, 12:21 AM",type:"image"},{id:"f2",name:"664EF167-DFCE-49C1-A417-DC09FEDF78D7.jpg",date:"11/24/25, 8:40 PM",type:"image"}]}]},{id:"2",name:"Training",isOpen:!0,subcategories:[{id:"2-1",name:"BOH",isOpen:!1,files:[]},{id:"2-2",name:"FOH",isOpen:!0,files:[]}]},{id:"3",name:"ww",isOpen:!1,subcategories:[]}]),r=i=>{t(a=>a.map(s=>s.id===i?{...s,isOpen:!s.isOpen}:s))},n=(i,a)=>{t(s=>s.map(u=>u.id!==i?u:{...u,subcategories:u.subcategories.map(f=>f.id===a?{...f,isOpen:!f.isOpen}:f)}))};return h.jsxs("div",{className:"space-y-6",children:[h.jsxs("div",{className:"flex flex-wrap items-center gap-3",style:{height:40},children:[h.jsx(ze,{placeholder:"Search",className:"bg-white border border-black rounded-lg w-[180px] shrink-0 py-0 leading-normal",style:{height:40}}),h.jsxs(qe,{defaultValue:"all",children:[h.jsx(We,{className:"bg-white border border-black rounded-lg w-[180px] shrink-0 py-0",style:{height:40},children:h.jsx(Ue,{placeholder:"Location"})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"all",children:"all"}),h.jsx(ge,{value:"loc-a",children:"Location A"})]})]})]}),h.jsxs("div",{className:"bg-gray-100 p-2 flex justify-between items-center border-b border-gray-200",children:[h.jsx("h1",{className:"text-xl font-medium text-gray-700",children:"Information"}),h.jsxs("div",{className:"flex items-center gap-4 text-gray-600",children:[h.jsx("div",{className:"flex items-center gap-1 bg-gray-700 text-white text-[10px] px-1 py-0.5 rounded-sm font-bold",children:"NEW"}),h.jsx(zB,{className:"h-5 w-5"}),h.jsx("span",{className:"font-medium",children:"55789"})]})]}),h.jsxs("div",{className:"space-y-4",children:[h.jsxs("button",{className:"w-full bg-[#2c7bb6] hover:bg-[#256b9e] text-white py-2 px-4 flex items-center gap-2 text-sm font-medium rounded-sm",children:[h.jsx(vr,{className:"h-4 w-4"}),"New Category",h.jsx(mb,{className:"h-4 w-4 opacity-70"})]}),h.jsx("div",{className:"space-y-4",children:e.map(i=>h.jsxs("div",{className:"border border-gray-300 rounded-sm overflow-hidden",children:[h.jsxs("div",{className:"bg-gradient-to-b from-gray-50 to-gray-100 border-b border-gray-200 p-2 flex items-center justify-between",children:[h.jsxs("button",{onClick:()=>r(i.id),className:"flex items-center gap-2 text-gray-700 font-medium text-sm flex-1 text-left",children:[i.isOpen?h.jsx(hc,{className:"h-4 w-4 text-[#2c7bb6]"}):h.jsx(Td,{className:"h-4 w-4 text-[#2c7bb6]"}),i.name]}),h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx("button",{className:"text-gray-400 hover:text-gray-600",children:h.jsx(Pd,{className:"h-4 w-4"})}),h.jsx("button",{className:"text-red-400 hover:text-red-600",children:h.jsx(ac,{className:"h-4 w-4"})})]})]}),i.isOpen&&h.jsxs("div",{className:"p-2 space-y-3 bg-white",children:[h.jsxs("button",{className:"w-full bg-[#2c7bb6] hover:bg-[#256b9e] text-white py-2 px-4 flex items-center gap-2 text-sm font-medium rounded-sm",children:[h.jsx(vr,{className:"h-4 w-4"}),"New Subcategory",h.jsx(mb,{className:"h-4 w-4 opacity-70"})]}),h.jsxs("div",{className:"space-y-3",children:[i.subcategories.map(a=>h.jsxs("div",{className:"border border-gray-200 rounded-sm",children:[h.jsxs("div",{className:"bg-white border-b border-gray-200 p-2 flex items-center justify-between",children:[h.jsxs("button",{onClick:()=>n(i.id,a.id),className:"flex items-center gap-2 text-gray-700 font-medium text-sm flex-1 text-left",children:[a.isOpen?h.jsx(hc,{className:"h-4 w-4 text-[#2c7bb6]"}):h.jsx(Td,{className:"h-4 w-4 text-[#2c7bb6]"}),a.name]}),h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx("button",{className:"text-gray-400 hover:text-gray-600",children:h.jsx(Pd,{className:"h-4 w-4"})}),h.jsx("button",{className:"text-red-400 hover:text-red-600",children:h.jsx(ac,{className:"h-4 w-4"})})]})]}),a.isOpen&&h.jsxs("div",{className:"p-3 bg-gray-50/50",children:[h.jsx("div",{className:"mb-2 text-xs font-bold text-gray-500 uppercase tracking-wide",children:"Files"}),h.jsxs("div",{className:"flex flex-wrap gap-2 mb-3 justify-end",children:[h.jsx(be,{size:"sm",className:"h-8 bg-[#4CAF50] hover:bg-[#43a047] text-white text-xs border-none rounded-sm",children:"Upload Your Own File(s)"}),h.jsx(be,{size:"sm",className:"h-8 bg-[#4CAF50] hover:bg-[#43a047] text-white text-xs border-none rounded-sm",children:"Create A Custom File"}),h.jsx(be,{size:"sm",className:"h-8 bg-[#2c7bb6] hover:bg-[#256b9e] text-white text-xs border-none rounded-sm",children:"Edit File Permissions"}),h.jsxs(be,{size:"sm",className:"h-8 bg-[#2c7bb6] hover:bg-[#256b9e] text-white text-xs border-none rounded-sm gap-1",children:["Sort (A-Z) ",h.jsx(b8,{className:"h-3 w-3"})]})]}),h.jsx("div",{className:"space-y-1",children:a.files.length>0?a.files.map(s=>h.jsxs("div",{className:"flex items-center bg-gray-200/50 p-2 border border-gray-200 rounded-sm text-sm hover:bg-gray-200 transition-colors",children:[h.jsx("div",{className:"flex-shrink-0 mr-3",children:s.type==="image"?h.jsx(Ua,{className:"h-5 w-5 text-[#2c7bb6]"}):h.jsx(pc,{className:"h-5 w-5 text-[#2c7bb6]"})}),h.jsx("div",{className:"flex-1 min-w-0",children:h.jsx("div",{className:"font-medium text-gray-700 truncate",children:s.name})}),h.jsx("div",{className:"text-xs text-gray-500 mr-4 whitespace-nowrap",children:s.date}),h.jsxs("div",{className:"flex items-center gap-1",children:[h.jsx("button",{className:"p-1 text-gray-400 hover:text-gray-600 bg-white border border-gray-300 rounded-sm",children:h.jsx(pc,{className:"h-3 w-3"})}),h.jsx("button",{className:"p-1 text-gray-400 hover:text-gray-600 bg-white border border-gray-300 rounded-sm",children:h.jsx(Pd,{className:"h-3 w-3"})}),h.jsx("button",{className:"p-1 text-red-400 hover:text-red-600 bg-white border border-gray-300 rounded-sm",children:h.jsx(ac,{className:"h-3 w-3"})})]})]},s.id)):h.jsx("div",{className:"p-4 border-2 border-dashed border-gray-300 rounded-sm text-center text-gray-400 text-sm",children:"No files in this subcategory"})})]})]},a.id)),i.subcategories.length===0&&h.jsx("div",{className:"p-2 text-sm text-gray-400 italic",children:"No subcategories"})]})]})]},i.id))})]})]})}const FW=[{id:1,title:"Coffee - 2 hrs",subtitle:"1 min - Completes at 12:05 PM",totalTime:7200,remainingTime:0,status:"expired",icon:H8},{id:2,title:"Clean Tablet",subtitle:"1 hrs - Completes at 12:37 PM",totalTime:3600,remainingTime:237,status:"running",icon:WB},{id:3,title:"Replace Sanitizer Towels",subtitle:"1 hrs - Completes at 12:37 PM",totalTime:3600,remainingTime:238,status:"running",icon:RO},{id:4,title:"Take Out Trash",subtitle:"1 hrs - Completes at 01:03 PM",totalTime:3600,remainingTime:58,status:"running",icon:RO},{id:5,title:"Change Utensils",subtitle:"1 hrs - Completes at 01:03 PM",totalTime:3600,remainingTime:58,status:"running",icon:a6},{id:6,title:"Sanitize Surfaces",subtitle:"1 hrs - Completes at 02:00 PM",totalTime:3600,remainingTime:2157,status:"running",icon:Gv},{id:7,title:"Check Temperatures",subtitle:"1 hrs - Completes at 02:00 PM",totalTime:3600,remainingTime:2158,status:"running",icon:Gv},{id:8,title:"Ranch 4 hrs",subtitle:"4 hrs - Completes at 04:04 PM",totalTime:14400,remainingTime:2158,status:"running",icon:Gv}];function zW({timer:e}){const t=(e.totalTime-e.remainingTime)/e.totalTime*100,r=e.remainingTime===0,n=i=>{if(i<=0)return"0s";const a=Math.floor(i/60),s=i%60;return`${a.toString().padStart(2,"0")}:${s.toString().padStart(2,"0")}`};return h.jsxs("div",{className:"bg-gray-200 rounded-xl p-4 flex flex-col items-center relative shadow-sm h-[280px]",children:[h.jsxs("div",{className:"text-center mb-2",children:[h.jsx("h3",{className:"text-lg font-medium text-gray-800 leading-tight",children:e.title}),h.jsx("p",{className:"text-xs text-gray-500 mt-1",children:e.subtitle})]}),h.jsxs("div",{className:"relative w-32 h-32 my-auto flex items-center justify-center",children:[h.jsxs("svg",{className:"w-full h-full transform -rotate-90",children:[h.jsx("circle",{cx:"64",cy:"64",r:"56",stroke:"white",strokeWidth:"12",fill:"transparent"}),h.jsx("circle",{cx:"64",cy:"64",r:"56",stroke:r?"#ef4444":"#3b82f6",strokeWidth:"12",fill:"transparent",strokeDasharray:351.86,strokeDashoffset:r?0:351.86*(t/100),className:"transition-all duration-1000 ease-linear"})]}),h.jsxs("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:[h.jsx("span",{className:Ne("text-3xl font-bold",r?"text-red-500":"text-gray-800"),children:r?"0s":n(e.remainingTime)}),h.jsx("span",{className:Ne("text-[10px] font-medium uppercase mt-1",r?"text-red-400":"text-gray-400"),children:"Remaining"})]})]}),h.jsxs("div",{className:"w-full flex justify-between items-end mt-2",children:[h.jsx(SB,{className:"w-5 h-5 text-blue-700 fill-current"}),h.jsx("div",{className:"flex flex-col items-center",children:h.jsx("div",{className:"w-10 h-10 rounded-full border-2 border-gray-300 flex items-center justify-center text-gray-400 mb-1",children:h.jsx(e.icon,{className:"w-5 h-5"})})}),h.jsx("div",{className:"flex flex-col items-end",children:h.jsx("span",{className:"text-xs text-blue-600 font-bold mb-2 cursor-pointer",children:"EDIT"})})]}),h.jsx("button",{className:"absolute bottom-12 right-4 bg-blue-600 rounded-full p-1 text-white hover:bg-blue-700 shadow-md",children:h.jsx(ac,{className:"w-4 h-4"})})]})}function qW(){const[e,t]=E.useState(!0);return h.jsxs("div",{className:"h-full flex flex-col bg-gray-50 relative",children:[h.jsxs("div",{className:"bg-white border-b border-gray-200 px-4 py-3 flex items-center justify-between shadow-sm z-10",children:[h.jsxs("div",{className:"flex items-center gap-4",children:[h.jsxs("button",{className:"flex items-center text-blue-500 text-lg font-medium",children:[h.jsx(R8,{className:"w-6 h-6"}),"Back"]}),h.jsx(gB,{className:"w-6 h-6 text-gray-500"})]}),h.jsxs("div",{className:"flex flex-col items-center",children:[h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx("div",{className:"bg-blue-600 p-1.5 rounded-md",children:h.jsx(GB,{className:"w-5 h-5 text-white"})}),h.jsx("h1",{className:"text-xl font-bold text-blue-900",children:"Timers"})]}),h.jsxs("div",{className:"flex items-center gap-1 text-xs text-green-600 font-medium",children:[h.jsx("span",{children:"86016"}),h.jsx("div",{className:"w-2 h-2 bg-green-500 rounded-full"})]})]}),h.jsxs("div",{className:"flex items-center gap-4 text-blue-500 font-medium",children:[h.jsx(r6,{className:"w-6 h-6 text-gray-400"}),h.jsxs("button",{className:"flex items-center gap-1",children:[h.jsx(vr,{className:"w-5 h-5"}),"Add Timer"]})]})]}),h.jsxs("div",{className:"bg-gray-700 text-white px-6 py-2 flex items-center justify-between",children:[h.jsx("div",{className:"flex-1"})," ",h.jsx("div",{className:"font-medium",children:"Today, December 15"}),h.jsxs("div",{className:"flex-1 flex justify-end items-center gap-4",children:[h.jsxs("div",{className:"flex items-center gap-1",children:[h.jsx(eB,{className:"w-5 h-5 text-gray-300"}),h.jsx(dB,{className:"w-5 h-5 text-gray-500"})]}),h.jsx(p8,{className:"w-5 h-5 text-blue-400"})]})]}),h.jsx("div",{className:"flex-1 overflow-y-auto p-6",children:h.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4",children:FW.map(r=>h.jsx(zW,{timer:r},r.id))})}),e&&h.jsx("div",{className:"absolute inset-0 z-50 flex items-center justify-center bg-black/40 backdrop-blur-[1px]",children:h.jsx("div",{className:"bg-black text-white rounded-xl shadow-2xl w-[600px] max-w-full overflow-hidden border border-gray-800",children:h.jsxs("div",{className:"p-8 text-center space-y-6",children:[h.jsx("h2",{className:"text-3xl font-medium text-blue-500",children:"Coffee - 2 hrs"}),h.jsxs("div",{className:"space-y-4 py-4",children:[h.jsx("p",{className:"text-2xl font-light",children:"Timer expired at 12:05 PM"}),h.jsx("p",{className:"text-2xl font-light",children:"Please discard the coffee"})]}),h.jsx("div",{className:"flex justify-end",children:h.jsx("span",{className:"bg-gray-200 text-black text-[10px] px-1 rounded-sm opacity-50",children:"TACT_Img_Timer-Notification@2x"})}),h.jsxs("div",{className:"grid grid-cols-3 gap-4 mt-8",children:[h.jsx(be,{onClick:()=>t(!1),className:"bg-blue-700 hover:bg-blue-600 text-white h-14 text-xl font-medium rounded-lg",children:"Mute"}),h.jsx(be,{onClick:()=>t(!1),className:"bg-blue-600 hover:bg-blue-500 text-white h-14 text-xl font-medium rounded-lg",children:"Restart"}),h.jsx(be,{onClick:()=>t(!1),className:"bg-blue-800 hover:bg-blue-700 text-white h-14 text-xl font-medium rounded-lg",children:"Acknowledge"})]})]})})})]})}var ug="rovingFocusGroup.onEntryFocus",UW={bubbles:!1,cancelable:!0},nu="RovingFocusGroup",[Rb,sD,WW]=XR(nu),[HW,lD]=_i(nu,[WW]),[VW,GW]=HW(nu),cD=E.forwardRef((e,t)=>h.jsx(Rb.Provider,{scope:e.__scopeRovingFocusGroup,children:h.jsx(Rb.Slot,{scope:e.__scopeRovingFocusGroup,children:h.jsx(XW,{...e,ref:t})})}));cD.displayName=nu;var XW=E.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:r,orientation:n,loop:i=!1,dir:a,currentTabStopId:s,defaultCurrentTabStopId:u,onCurrentTabStopIdChange:f,onEntryFocus:c,preventScrollOnEntryFocus:d=!1,...p}=e,m=E.useRef(null),g=nt(t,m),w=Zh(a),[y,b]=Ha({prop:s,defaultProp:u??null,onChange:f,caller:nu}),[_,j]=E.useState(!1),P=cr(c),k=sD(r),A=E.useRef(!1),[N,C]=E.useState(0);return E.useEffect(()=>{const T=m.current;if(T)return T.addEventListener(ug,P),()=>T.removeEventListener(ug,P)},[P]),h.jsx(VW,{scope:r,orientation:n,dir:w,loop:i,currentTabStopId:y,onItemFocus:E.useCallback(T=>b(T),[b]),onItemShiftTab:E.useCallback(()=>j(!0),[]),onFocusableItemAdd:E.useCallback(()=>C(T=>T+1),[]),onFocusableItemRemove:E.useCallback(()=>C(T=>T-1),[]),children:h.jsx(Xe.div,{tabIndex:_||N===0?-1:0,"data-orientation":n,...p,ref:g,style:{outline:"none",...e.style},onMouseDown:Fe(e.onMouseDown,()=>{A.current=!0}),onFocus:Fe(e.onFocus,T=>{const M=!A.current;if(T.target===T.currentTarget&&M&&!_){const F=new CustomEvent(ug,UW);if(T.currentTarget.dispatchEvent(F),!F.defaultPrevented){const I=k().filter(X=>X.focusable),D=I.find(X=>X.active),q=I.find(X=>X.id===y),H=[D,q,...I].filter(Boolean).map(X=>X.ref.current);dD(H,d)}}A.current=!1}),onBlur:Fe(e.onBlur,()=>j(!1))})})}),uD="RovingFocusGroupItem",fD=E.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:r,focusable:n=!0,active:i=!1,tabStopId:a,children:s,...u}=e,f=ta(),c=a||f,d=GW(uD,r),p=d.currentTabStopId===c,m=sD(r),{onFocusableItemAdd:g,onFocusableItemRemove:w,currentTabStopId:y}=d;return E.useEffect(()=>{if(n)return g(),()=>w()},[n,g,w]),h.jsx(Rb.ItemSlot,{scope:r,id:c,focusable:n,active:i,children:h.jsx(Xe.span,{tabIndex:p?0:-1,"data-orientation":d.orientation,...u,ref:t,onMouseDown:Fe(e.onMouseDown,b=>{n?d.onItemFocus(c):b.preventDefault()}),onFocus:Fe(e.onFocus,()=>d.onItemFocus(c)),onKeyDown:Fe(e.onKeyDown,b=>{if(b.key==="Tab"&&b.shiftKey){d.onItemShiftTab();return}if(b.target!==b.currentTarget)return;const _=QW(b,d.orientation,d.dir);if(_!==void 0){if(b.metaKey||b.ctrlKey||b.altKey||b.shiftKey)return;b.preventDefault();let P=m().filter(k=>k.focusable).map(k=>k.ref.current);if(_==="last")P.reverse();else if(_==="prev"||_==="next"){_==="prev"&&P.reverse();const k=P.indexOf(b.currentTarget);P=d.loop?ZW(P,k+1):P.slice(k+1)}setTimeout(()=>dD(P))}}),children:typeof s=="function"?s({isCurrentTabStop:p,hasTabStop:y!=null}):s})})});fD.displayName=uD;var KW={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function YW(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function QW(e,t,r){const n=YW(e.key,r);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(n))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(n)))return KW[n]}function dD(e,t=!1){const r=document.activeElement;for(const n of e)if(n===r||(n.focus({preventScroll:t}),document.activeElement!==r))return}function ZW(e,t){return e.map((r,n)=>e[(t+n)%e.length])}var JW=cD,eH=fD,pp="Tabs",[tH]=_i(pp,[lD]),hD=lD(),[rH,Cw]=tH(pp),pD=E.forwardRef((e,t)=>{const{__scopeTabs:r,value:n,onValueChange:i,defaultValue:a,orientation:s="horizontal",dir:u,activationMode:f="automatic",...c}=e,d=Zh(u),[p,m]=Ha({prop:n,onChange:i,defaultProp:a??"",caller:pp});return h.jsx(rH,{scope:r,baseId:ta(),value:p,onValueChange:m,orientation:s,dir:d,activationMode:f,children:h.jsx(Xe.div,{dir:d,"data-orientation":s,...c,ref:t})})});pD.displayName=pp;var mD="TabsList",vD=E.forwardRef((e,t)=>{const{__scopeTabs:r,loop:n=!0,...i}=e,a=Cw(mD,r),s=hD(r);return h.jsx(JW,{asChild:!0,...s,orientation:a.orientation,dir:a.dir,loop:n,children:h.jsx(Xe.div,{role:"tablist","aria-orientation":a.orientation,...i,ref:t})})});vD.displayName=mD;var gD="TabsTrigger",yD=E.forwardRef((e,t)=>{const{__scopeTabs:r,value:n,disabled:i=!1,...a}=e,s=Cw(gD,r),u=hD(r),f=wD(s.baseId,n),c=SD(s.baseId,n),d=n===s.value;return h.jsx(eH,{asChild:!0,...u,focusable:!i,active:d,children:h.jsx(Xe.button,{type:"button",role:"tab","aria-selected":d,"aria-controls":c,"data-state":d?"active":"inactive","data-disabled":i?"":void 0,disabled:i,id:f,...a,ref:t,onMouseDown:Fe(e.onMouseDown,p=>{!i&&p.button===0&&p.ctrlKey===!1?s.onValueChange(n):p.preventDefault()}),onKeyDown:Fe(e.onKeyDown,p=>{[" ","Enter"].includes(p.key)&&s.onValueChange(n)}),onFocus:Fe(e.onFocus,()=>{const p=s.activationMode!=="manual";!d&&!i&&p&&s.onValueChange(n)})})})});yD.displayName=gD;var xD="TabsContent",bD=E.forwardRef((e,t)=>{const{__scopeTabs:r,value:n,forceMount:i,children:a,...s}=e,u=Cw(xD,r),f=wD(u.baseId,n),c=SD(u.baseId,n),d=n===u.value,p=E.useRef(d);return E.useEffect(()=>{const m=requestAnimationFrame(()=>p.current=!1);return()=>cancelAnimationFrame(m)},[]),h.jsx(Xn,{present:i||d,children:({present:m})=>h.jsx(Xe.div,{"data-state":d?"active":"inactive","data-orientation":u.orientation,role:"tabpanel","aria-labelledby":f,hidden:!m,id:c,tabIndex:0,...s,ref:t,style:{...e.style,animationDuration:p.current?"0s":void 0},children:m&&a})})});bD.displayName=xD;function wD(e,t){return`${e}-trigger-${t}`}function SD(e,t){return`${e}-content-${t}`}var nH=pD,iH=vD,aH=yD,oH=bD;function _D({className:e,...t}){return h.jsx(nH,{"data-slot":"tabs",className:Ne("flex flex-col gap-2",e),...t})}function jD({className:e,...t}){return h.jsx(iH,{"data-slot":"tabs-list",className:Ne("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-xl p-[3px] flex",e),...t})}function ns({className:e,...t}){return h.jsx(aH,{"data-slot":"tabs-trigger",className:Ne("data-[state=active]:bg-card dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-xl border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...t})}function is({className:e,...t}){return h.jsx(oH,{"data-slot":"tabs-content",className:Ne("flex-1 outline-none",e),...t})}const sH=zR("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});function Rn({className:e,variant:t,asChild:r=!1,...n}){const i=r?ow:"span";return h.jsx(i,{"data-slot":"badge",className:Ne(sH({variant:t}),e),...n})}const lH=[{id:"cat1",name:"Dairy",type:"color",value:"#bfdbfe",status:"active"},{id:"cat2",name:"Meat",type:"image",value:"meat.png",status:"active"},{id:"cat3",name:"Bakery",type:"text",value:"Bakery",status:"active"}],cH=[{id:"prod1",locationId:"12345",categoryId:"cat1",categoryName:"Dairy",name:"Whole Milk",productId:"2222222",barcode:"123456789",barcodeType:"EAN-13",status:"active",appearance:{type:"text",value:"Whole Milk"}},{id:"prod2",locationId:"12345",categoryId:"cat2",categoryName:"Meat",name:"Ground Beef",productId:"3333333",barcode:"113456789",barcodeType:"UPC-A",status:"active",appearance:{type:"color",value:"#ef4444"}},{id:"prod3",locationId:"67890",categoryId:"cat3",categoryName:"Bakery",name:"Croissant",productId:"4444444",barcode:"998877665",barcodeType:"EAN-8",status:"inactive",appearance:{type:"image",value:"croissant.jpg"}}];function uH(){const[e,t]=E.useState("products"),[r,n]=E.useState(cH),[i,a]=E.useState(lH),[s,u]=E.useState(!1),[f,c]=E.useState(!1);return h.jsxs("div",{className:"h-full flex flex-col bg-white",children:[h.jsx("div",{className:"flex overflow-x-auto border-b border-gray-200 bg-gray-50",children:["products","categories"].map(d=>h.jsx("button",{type:"button",onClick:()=>t(d),className:`px-4 py-2 text-sm font-medium whitespace-nowrap cursor-pointer transition-colors ${e===d?"border-b-2":"text-gray-500 hover:text-gray-700"}`,style:e===d?{color:"#1b46c7",borderBottomColor:"#1b46c7"}:void 0,children:d==="products"?"Products":"Categories"},d))}),h.jsx("div",{className:"border-b border-gray-200 py-4 bg-gray-50",children:h.jsx("div",{className:"flex flex-col gap-4",children:h.jsxs("div",{className:"flex flex-nowrap items-center gap-2 overflow-x-auto min-w-0",children:[h.jsxs("div",{className:"relative w-32 shrink-0",children:[h.jsx(Qh,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-400"}),h.jsx(ze,{placeholder:"Search...",className:"pl-9 h-9 rounded-lg border border-black bg-white text-black"})]}),h.jsxs(qe,{defaultValue:"partner-a",children:[h.jsx(We,{className:"w-[140px] h-9 rounded-lg border border-black font-medium text-black bg-white shrink-0",children:h.jsx(Ue,{placeholder:"Partner"})}),h.jsx(Ve,{children:h.jsx(ge,{value:"partner-a",children:"Partner A"})})]}),h.jsxs(qe,{defaultValue:"group-b",children:[h.jsx(We,{className:"w-[140px] h-9 rounded-lg border border-black font-medium text-black bg-white shrink-0",children:h.jsx(Ue,{placeholder:"Group"})}),h.jsx(Ve,{children:h.jsx(ge,{value:"group-b",children:"Group B"})})]}),h.jsxs(qe,{defaultValue:"loc-12345",children:[h.jsx(We,{className:"w-[160px] h-9 rounded-lg border border-black font-medium text-black bg-white shrink-0",children:h.jsx(Ue,{placeholder:"Location"})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"loc-12345",children:"Location 12345"}),h.jsx(ge,{value:"all",children:"All Locations"})]})]}),h.jsxs(qe,{children:[h.jsx(We,{className:"w-[140px] h-9 rounded-lg border border-black font-medium text-black bg-white shrink-0",children:h.jsx(Ue,{placeholder:"Category"})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"all",children:"All Categories"}),i.map(d=>h.jsx(ge,{value:d.id,children:d.name},d.id))]})]}),h.jsx("div",{className:"flex-1 min-w-0"}),h.jsxs(be,{variant:"outline",className:"h-9 rounded-lg border border-black text-black gap-2 bg-white hover:bg-gray-50 shrink-0",children:[h.jsx(OR,{className:"w-4 h-4"})," Bulk Import"]}),h.jsxs(be,{variant:"outline",className:"h-9 rounded-lg border border-black text-black gap-2 bg-white hover:bg-gray-50 shrink-0",children:[h.jsx(Ls,{className:"w-4 h-4"})," Bulk Export"]}),h.jsxs(be,{variant:"outline",className:"h-9 rounded-lg border border-black text-black gap-2 bg-white hover:bg-gray-50 shrink-0",children:[h.jsx(Da,{className:"w-4 h-4"})," Bulk Edit"]}),e==="products"?h.jsxs(be,{className:"h-9 rounded-lg bg-blue-600 text-white hover:bg-blue-700 font-medium gap-1 border-0 shrink-0",onClick:()=>u(!0),children:["New Product ",h.jsx(vr,{className:"w-4 h-4"})]}):h.jsxs(be,{className:"h-9 rounded-lg bg-blue-600 text-white hover:bg-blue-700 font-medium gap-1 border-0 shrink-0",onClick:()=>c(!0),children:["New Category ",h.jsx(vr,{className:"w-4 h-4"})]})]})})}),h.jsx("div",{className:"flex-1 overflow-auto bg-gray-50",children:e==="products"?h.jsx("div",{className:"bg-white border border-gray-200 shadow-sm rounded-sm overflow-hidden",children:h.jsxs(Kt,{children:[h.jsx(Yt,{children:h.jsxs(Ke,{className:"bg-gray-100 hover:bg-gray-100",children:[h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Location ID"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Product Category"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Product"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Product ID"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Product Barcode"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Status"}),h.jsx(me,{className:"text-gray-900 font-bold text-center",children:"Actions"})]})}),h.jsx(Qt,{children:r.map(d=>h.jsxs(Ke,{children:[h.jsx(le,{className:"border-r",children:d.locationId}),h.jsx(le,{className:"border-r font-medium text-black",children:d.categoryName}),h.jsx(le,{className:"border-r font-medium text-black",children:h.jsxs("div",{className:"flex items-center gap-2",children:[d.appearance.type==="color"&&h.jsx("div",{className:"w-4 h-4 rounded-full border border-gray-300 shadow-sm",style:{backgroundColor:d.appearance.value}}),d.appearance.type==="image"&&h.jsx(Ua,{className:"w-4 h-4 text-gray-500"}),d.name]})}),h.jsx(le,{className:"border-r font-mono text-gray-600",children:d.productId}),h.jsx(le,{className:"border-r font-mono",children:h.jsxs("div",{className:"flex flex-col",children:[h.jsx("span",{className:"text-xs text-gray-400",children:d.barcodeType}),h.jsx("span",{children:d.barcode})]})}),h.jsx(le,{className:"border-r",children:h.jsx(Rn,{variant:d.status==="active"?"default":"secondary",className:d.status==="active"?"bg-green-600":"bg-gray-400",children:d.status})}),h.jsx(le,{className:"text-center",children:h.jsx(be,{variant:"ghost",size:"icon",className:"h-8 w-8",children:h.jsx(wR,{className:"h-4 w-4"})})})]},d.id))})]})}):h.jsx("div",{className:"bg-white border border-gray-200 shadow-sm rounded-sm overflow-hidden",children:h.jsxs(Kt,{children:[h.jsx(Yt,{children:h.jsxs(Ke,{className:"bg-gray-100 hover:bg-gray-100",children:[h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Category Name"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Display Type"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Preview"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Status"}),h.jsx(me,{className:"text-gray-900 font-bold text-center",children:"Actions"})]})}),h.jsx(Qt,{children:i.map(d=>h.jsxs(Ke,{children:[h.jsx(le,{className:"border-r font-medium",children:d.name}),h.jsx(le,{className:"border-r capitalize",children:d.type}),h.jsxs(le,{className:"border-r",children:[d.type==="color"&&h.jsx("div",{className:"w-8 h-8 rounded-md border border-gray-200 shadow-sm",style:{backgroundColor:d.value}}),d.type==="image"&&h.jsx("div",{className:"w-8 h-8 bg-gray-100 flex items-center justify-center rounded-md border border-gray-200",children:h.jsx(Ua,{className:"w-4 h-4 text-gray-500"})}),d.type==="text"&&h.jsx("div",{className:"w-auto px-2 py-1 bg-gray-100 rounded-md border border-gray-200 text-xs font-medium inline-block",children:d.value})]}),h.jsx(le,{className:"border-r",children:h.jsx(Rn,{variant:d.status==="active"?"default":"secondary",className:d.status==="active"?"bg-green-600":"bg-gray-400",children:d.status})}),h.jsx(le,{className:"text-center",children:h.jsx(be,{variant:"ghost",size:"icon",className:"h-8 w-8",children:h.jsx(Da,{className:"h-4 w-4"})})})]},d.id))})]})})}),h.jsx(fH,{open:s,onOpenChange:u,categories:i}),h.jsx(dH,{open:f,onOpenChange:c})]})}function fH({open:e,onOpenChange:t,categories:r}){const[n,i]=E.useState("text");return h.jsx(zn,{open:e,onOpenChange:t,children:h.jsxs(qn,{className:"sm:max-w-[600px] max-h-[90vh] overflow-y-auto",children:[h.jsxs(Un,{children:[h.jsx(Wn,{children:"Add New Product"}),h.jsx(Ka,{children:"Create a new product. Fill in the details below."})]}),h.jsxs("div",{className:"grid gap-6 py-4",children:[h.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Product Category"}),h.jsxs(qe,{children:[h.jsx(We,{children:h.jsx(Ue,{placeholder:"Select Category"})}),h.jsx(Ve,{children:r.map(a=>h.jsx(ge,{value:a.id,children:a.name},a.id))})]})]}),h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Product Name"}),h.jsx(ze,{placeholder:"e.g. Whole Milk"})]})]}),h.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Product ID"}),h.jsx(ze,{placeholder:"Internal ID"})]}),h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Status"}),h.jsxs("div",{className:"flex items-center gap-2 mt-2",children:[h.jsx(la,{defaultChecked:!0}),h.jsx("span",{className:"text-sm text-gray-500",children:"Active"})]})]})]}),h.jsxs("div",{className:"space-y-3 p-4 bg-gray-50 rounded-md border border-gray-100",children:[h.jsxs(Oe,{className:"flex items-center gap-2",children:[h.jsx(_8,{className:"w-4 h-4"})," Barcode Settings"]}),h.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[h.jsx("div",{className:"col-span-1",children:h.jsxs(qe,{defaultValue:"ean13",children:[h.jsx(We,{children:h.jsx(Ue,{placeholder:"Format"})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"ean13",children:"EAN-13"}),h.jsx(ge,{value:"upc-a",children:"UPC-A"}),h.jsx(ge,{value:"code128",children:"Code 128"}),h.jsx(ge,{value:"qr",children:"QR Code"})]})]})}),h.jsx("div",{className:"col-span-2",children:h.jsx(ze,{placeholder:"Barcode Value"})})]}),h.jsx(be,{variant:"link",className:"px-0 text-xs h-auto",children:"+ Add another barcode standard"})]}),h.jsxs("div",{className:"space-y-3",children:[h.jsx(Oe,{children:"App Appearance"}),h.jsxs(_D,{value:n,onValueChange:i,className:"w-full",children:[h.jsxs(jD,{className:"grid w-full grid-cols-3",children:[h.jsxs(ns,{value:"text",className:"flex items-center gap-2",children:[h.jsx(nw,{className:"w-3 h-3"})," Text"]}),h.jsxs(ns,{value:"color",className:"flex items-center gap-2",children:[h.jsx(SR,{className:"w-3 h-3"})," Color"]}),h.jsxs(ns,{value:"image",className:"flex items-center gap-2",children:[h.jsx(Ua,{className:"w-3 h-3"})," Image"]})]}),h.jsxs(is,{value:"text",className:"mt-4 space-y-2",children:[h.jsx(Oe,{children:"Display Text"}),h.jsx(ze,{placeholder:"Text to display on button"})]}),h.jsxs(is,{value:"color",className:"mt-4 space-y-2",children:[h.jsx(Oe,{children:"Select Color"}),h.jsxs("div",{className:"flex gap-2 flex-wrap",children:[["#ef4444","#f97316","#f59e0b","#84cc16","#10b981","#06b6d4","#3b82f6","#6366f1","#a855f7","#ec4899"].map(a=>h.jsx("button",{className:"w-8 h-8 rounded-full border border-gray-200 shadow-sm hover:scale-110 transition-transform",style:{backgroundColor:a}},a)),h.jsx("button",{className:"w-8 h-8 rounded-full border border-dashed border-gray-400 flex items-center justify-center hover:bg-gray-50",children:h.jsx(vr,{className:"w-4 h-4 text-gray-400"})})]})]}),h.jsxs(is,{value:"image",className:"mt-4 space-y-2",children:[h.jsx(Oe,{children:"Upload Image"}),h.jsxs("div",{className:"border-2 border-dashed border-gray-300 rounded-md p-6 flex flex-col items-center justify-center text-gray-500 hover:bg-gray-50 cursor-pointer",children:[h.jsx(Ua,{className:"w-8 h-8 mb-2 opacity-50"}),h.jsx("span",{className:"text-xs",children:"Click to upload or drag and drop"})]})]})]})]}),h.jsxs("div",{className:"space-y-3 pt-2 border-t border-gray-100",children:[h.jsx(Oe,{children:"Store Availability"}),h.jsxs("div",{className:"space-y-2",children:[h.jsxs("div",{className:"flex items-center space-x-2",children:[h.jsx("input",{type:"radio",id:"all-stores",name:"scope",className:"text-blue-600 focus:ring-blue-500",defaultChecked:!0}),h.jsx("label",{htmlFor:"all-stores",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:"All Stores in Group"})]}),h.jsxs("div",{className:"flex items-center space-x-2",children:[h.jsx("input",{type:"radio",id:"specific-stores",name:"scope",className:"text-blue-600 focus:ring-blue-500"}),h.jsx("label",{htmlFor:"specific-stores",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:"Specific Location(s)"})]})]}),h.jsx("div",{className:"pl-6 pt-2",children:h.jsx(qe,{disabled:!0,children:h.jsx(We,{className:"h-8 text-sm",children:h.jsx(Ue,{placeholder:"Select Locations..."})})})})]})]}),h.jsxs(xi,{children:[h.jsx(be,{variant:"outline",onClick:()=>t(!1),children:"Cancel"}),h.jsx(be,{onClick:()=>t(!1),className:"bg-blue-600 hover:bg-blue-700 text-white",children:"Create Product"})]})]})})}function dH({open:e,onOpenChange:t}){const[r,n]=E.useState("text");return h.jsx(zn,{open:e,onOpenChange:t,children:h.jsxs(qn,{className:"sm:max-w-[500px]",children:[h.jsxs(Un,{children:[h.jsx(Wn,{children:"Add New Category"}),h.jsx(Ka,{children:"Create a product category to organize your items."})]}),h.jsxs("div",{className:"grid gap-6 py-4",children:[h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Category Name"}),h.jsx(ze,{placeholder:"e.g. Dairy, Meat, Bakery"})]}),h.jsxs("div",{className:"space-y-3",children:[h.jsx(Oe,{children:"Button Appearance"}),h.jsxs(_D,{value:r,onValueChange:n,className:"w-full",children:[h.jsxs(jD,{className:"grid w-full grid-cols-3",children:[h.jsxs(ns,{value:"text",className:"flex items-center gap-2",children:[h.jsx(nw,{className:"w-3 h-3"})," Text"]}),h.jsxs(ns,{value:"color",className:"flex items-center gap-2",children:[h.jsx(SR,{className:"w-3 h-3"})," Color"]}),h.jsxs(ns,{value:"image",className:"flex items-center gap-2",children:[h.jsx(Ua,{className:"w-3 h-3"})," Image"]})]}),h.jsxs(is,{value:"text",className:"mt-4 space-y-2",children:[h.jsx(Oe,{children:"Display Text"}),h.jsx(ze,{placeholder:"Category Name"})]}),h.jsxs(is,{value:"color",className:"mt-4 space-y-2",children:[h.jsx(Oe,{children:"Select Color"}),h.jsxs("div",{className:"flex gap-2 flex-wrap",children:[["#bfdbfe","#bbf7d0","#fecaca","#ddd6fe","#fde68a"].map(i=>h.jsx("button",{className:"w-8 h-8 rounded-full border border-gray-200 shadow-sm hover:scale-110 transition-transform",style:{backgroundColor:i}},i)),h.jsx("button",{className:"w-8 h-8 rounded-full border border-dashed border-gray-400 flex items-center justify-center hover:bg-gray-50",children:h.jsx(vr,{className:"w-4 h-4 text-gray-400"})})]})]}),h.jsxs(is,{value:"image",className:"mt-4 space-y-2",children:[h.jsx(Oe,{children:"Upload Icon/Image"}),h.jsxs("div",{className:"border-2 border-dashed border-gray-300 rounded-md p-6 flex flex-col items-center justify-center text-gray-500 hover:bg-gray-50 cursor-pointer",children:[h.jsx(Ua,{className:"w-8 h-8 mb-2 opacity-50"}),h.jsx("span",{className:"text-xs",children:"Click to upload"})]})]})]})]}),h.jsx("div",{className:"grid grid-cols-2 gap-4",children:h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Status"}),h.jsxs("div",{className:"flex items-center gap-2 mt-2",children:[h.jsx(la,{defaultChecked:!0}),h.jsx("span",{className:"text-sm text-gray-500",children:"Active"})]})]})}),h.jsxs("div",{className:"space-y-3 pt-2 border-t border-gray-100",children:[h.jsx(Oe,{children:"Store Availability"}),h.jsxs("div",{className:"space-y-2",children:[h.jsxs("div",{className:"flex items-center space-x-2",children:[h.jsx("input",{type:"radio",id:"cat-all-stores",name:"cat-scope",className:"text-blue-600 focus:ring-blue-500",defaultChecked:!0}),h.jsx("label",{htmlFor:"cat-all-stores",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:"All Stores in Group"})]}),h.jsxs("div",{className:"flex items-center space-x-2",children:[h.jsx("input",{type:"radio",id:"cat-specific-stores",name:"cat-scope",className:"text-blue-600 focus:ring-blue-500"}),h.jsx("label",{htmlFor:"cat-specific-stores",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:"Specific Location(s)"})]})]})]})]}),h.jsxs(xi,{children:[h.jsx(be,{variant:"outline",onClick:()=>t(!1),children:"Cancel"}),h.jsx(be,{onClick:()=>t(!1),className:"bg-blue-600 hover:bg-blue-700 text-white",children:"Create Category"})]})]})})}var mp="Checkbox",[hH]=_i(mp),[pH,kw]=hH(mp);function mH(e){const{__scopeCheckbox:t,checked:r,children:n,defaultChecked:i,disabled:a,form:s,name:u,onCheckedChange:f,required:c,value:d="on",internal_do_not_use_render:p}=e,[m,g]=Ha({prop:r,defaultProp:i??!1,onChange:f,caller:mp}),[w,y]=E.useState(null),[b,_]=E.useState(null),j=E.useRef(!1),P=w?!!s||!!w.closest("form"):!0,k={checked:m,disabled:a,setChecked:g,control:w,setControl:y,name:u,form:s,value:d,hasConsumerStoppedPropagationRef:j,required:c,defaultChecked:ra(i)?!1:i,isFormControl:P,bubbleInput:b,setBubbleInput:_};return h.jsx(pH,{scope:t,...k,children:vH(p)?p(k):n})}var OD="CheckboxTrigger",ED=E.forwardRef(({__scopeCheckbox:e,onKeyDown:t,onClick:r,...n},i)=>{const{control:a,value:s,disabled:u,checked:f,required:c,setControl:d,setChecked:p,hasConsumerStoppedPropagationRef:m,isFormControl:g,bubbleInput:w}=kw(OD,e),y=nt(i,d),b=E.useRef(f);return E.useEffect(()=>{const _=a?.form;if(_){const j=()=>p(b.current);return _.addEventListener("reset",j),()=>_.removeEventListener("reset",j)}},[a,p]),h.jsx(Xe.button,{type:"button",role:"checkbox","aria-checked":ra(f)?"mixed":f,"aria-required":c,"data-state":TD(f),"data-disabled":u?"":void 0,disabled:u,value:s,...n,ref:y,onKeyDown:Fe(t,_=>{_.key==="Enter"&&_.preventDefault()}),onClick:Fe(r,_=>{p(j=>ra(j)?!0:!j),w&&g&&(m.current=_.isPropagationStopped(),m.current||_.stopPropagation())})})});ED.displayName=OD;var PD=E.forwardRef((e,t)=>{const{__scopeCheckbox:r,name:n,checked:i,defaultChecked:a,required:s,disabled:u,value:f,onCheckedChange:c,form:d,...p}=e;return h.jsx(mH,{__scopeCheckbox:r,checked:i,defaultChecked:a,disabled:u,required:s,onCheckedChange:c,name:n,form:d,value:f,internal_do_not_use_render:({isFormControl:m})=>h.jsxs(h.Fragment,{children:[h.jsx(ED,{...p,ref:t,__scopeCheckbox:r}),m&&h.jsx(kD,{__scopeCheckbox:r})]})})});PD.displayName=mp;var AD="CheckboxIndicator",ND=E.forwardRef((e,t)=>{const{__scopeCheckbox:r,forceMount:n,...i}=e,a=kw(AD,r);return h.jsx(Xn,{present:n||ra(a.checked)||a.checked===!0,children:h.jsx(Xe.span,{"data-state":TD(a.checked),"data-disabled":a.disabled?"":void 0,...i,ref:t,style:{pointerEvents:"none",...e.style}})})});ND.displayName=AD;var CD="CheckboxBubbleInput",kD=E.forwardRef(({__scopeCheckbox:e,...t},r)=>{const{control:n,hasConsumerStoppedPropagationRef:i,checked:a,defaultChecked:s,required:u,disabled:f,name:c,value:d,form:p,bubbleInput:m,setBubbleInput:g}=kw(CD,e),w=nt(r,g),y=ww(a),b=gw(n);E.useEffect(()=>{const j=m;if(!j)return;const P=window.HTMLInputElement.prototype,A=Object.getOwnPropertyDescriptor(P,"checked").set,N=!i.current;if(y!==a&&A){const C=new Event("click",{bubbles:N});j.indeterminate=ra(a),A.call(j,ra(a)?!1:a),j.dispatchEvent(C)}},[m,y,a,i]);const _=E.useRef(ra(a)?!1:a);return h.jsx(Xe.input,{type:"checkbox","aria-hidden":!0,defaultChecked:s??_.current,required:u,disabled:f,name:c,value:d,form:p,...t,tabIndex:-1,ref:w,style:{...t.style,...b,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});kD.displayName=CD;function vH(e){return typeof e=="function"}function ra(e){return e==="indeterminate"}function TD(e){return ra(e)?"indeterminate":e?"checked":"unchecked"}function tc({className:e,...t}){return h.jsx(PD,{"data-slot":"checkbox",className:Ne("peer border bg-input-background dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...t,children:h.jsx(ND,{"data-slot":"checkbox-indicator",className:"flex items-center justify-center text-current transition-none",children:h.jsx(bR,{className:"size-3.5"})})})}const gH=[{id:"1",name:"Downtown Store (101)"},{id:"2",name:"Uptown Store (102)"},{id:"3",name:"Airport Kiosk (201)"},{id:"4",name:"Mall Outlet (305)"}],yH=[{id:"r1",name:"Partner Admin",permissions:["all"],notifications:["system_updates","billing"]},{id:"r2",name:"Group Admin",permissions:["manage_users","manage_products","view_reports"],notifications:["new_users"]},{id:"r3",name:"Manager",permissions:["manage_store","view_reports","manage_inventory"],notifications:["label_expiry","low_stock"]},{id:"r4",name:"Team Member",permissions:["view_tasks","print_labels"],notifications:["task_assignment"]}],RD=[{id:"p1",name:"Global Foods Inc.",status:"active",contact:"admin@globalfoods.com"},{id:"p2",name:"Local Eateries Co.",status:"active",contact:"support@localeateries.com"}],xH=[{id:"g1",name:"West Coast Region",partner:"Global Foods Inc.",status:"active"},{id:"g2",name:"East Coast Region",partner:"Global Foods Inc.",status:"inactive"}],bH=[{id:"m1",name:"Alice Johnson",role:"Manager",locations:["Downtown Store (101)","Uptown Store (102)"],email:"alice@example.com",status:"active"},{id:"m2",name:"Bob Smith",role:"Team Member",locations:["Airport Kiosk (201)"],email:"bob@example.com",status:"active"},{id:"m3",name:"Charlie Brown",role:"Team Member",locations:["Downtown Store (101)"],email:"charlie@example.com",status:"inactive"}];function wH(){const[e,t]=E.useState("Roles"),[r,n]=E.useState(yH),[i,a]=E.useState(RD),[s,u]=E.useState(xH),[f,c]=E.useState(bH),[d,p]=E.useState(!1),[m,g]=E.useState(!1),[w,y]=E.useState(!1),[b,_]=E.useState(!1),j=()=>{alert(`Exporting ${e} list to PDF...`)},P=()=>{switch(e){case"Roles":p(!0);break;case"Partner":g(!0);break;case"Group":y(!0);break;case"Team Member":_(!0);break}},k=()=>{const N=e==="Team Member";return h.jsxs("div",{className:"flex flex-wrap items-center gap-2 py-4 bg-gray-50",children:[h.jsx(ze,{placeholder:"Search",className:"border border-black rounded-lg h-9 w-64 bg-white text-black"}),h.jsx("div",{className:"flex-1"}),N&&h.jsxs(h.Fragment,{children:[h.jsx(be,{variant:"outline",className:"h-9 border border-black rounded-lg text-black px-4 bg-white hover:bg-gray-50",children:"Bulk Import"}),h.jsx(be,{variant:"outline",className:"h-9 border border-black rounded-lg text-black px-4 bg-white hover:bg-gray-50",children:"Bulk Edit"})]}),h.jsx(be,{variant:"outline",onClick:j,className:"h-9 border border-black rounded-lg text-black px-4 bg-white hover:bg-gray-50",children:"Bulk Export (PDF)"}),h.jsx(be,{className:"h-9 bg-blue-600 hover:bg-blue-700 text-white rounded-lg px-6 font-medium border-0",onClick:P,children:"New+"})]})},A=()=>{switch(e){case"Roles":return h.jsxs(Kt,{children:[h.jsx(Yt,{children:h.jsxs(Ke,{className:"bg-gray-100",children:[h.jsx(me,{className:"font-bold text-black border-r",children:"Role Name"}),h.jsx(me,{className:"font-bold text-black border-r",children:"Access Permissions"}),h.jsx(me,{className:"font-bold text-black border-r",children:"Notifications"}),h.jsx(me,{className:"font-bold text-black text-center",children:"Actions"})]})}),h.jsx(Qt,{children:r.map(N=>h.jsxs(Ke,{children:[h.jsx(le,{className:"font-medium border-r",children:N.name}),h.jsx(le,{className:"border-r",children:h.jsx("div",{className:"flex flex-wrap gap-1",children:N.permissions.map(C=>h.jsx(Rn,{variant:"secondary",className:"text-xs rounded-lg bg-blue-100 text-blue-800 hover:bg-blue-100",children:C},C))})}),h.jsx(le,{className:"border-r",children:h.jsx("div",{className:"flex flex-wrap gap-1",children:N.notifications.map(C=>h.jsx(Rn,{variant:"outline",className:"text-xs rounded-lg border-orange-200 text-orange-700 bg-orange-50",children:C},C))})}),h.jsx(le,{className:"text-center",children:h.jsx(be,{variant:"ghost",size:"sm",className:"rounded-lg",children:h.jsx(Da,{className:"w-4 h-4 text-gray-500"})})})]},N.id))})]});case"Partner":return h.jsxs(Kt,{children:[h.jsx(Yt,{children:h.jsxs(Ke,{className:"bg-gray-100",children:[h.jsx(me,{className:"font-bold text-black border-r",children:"Partner Name"}),h.jsx(me,{className:"font-bold text-black border-r",children:"Contact"}),h.jsx(me,{className:"font-bold text-black border-r",children:"Status"}),h.jsx(me,{className:"font-bold text-black text-center",children:"Actions"})]})}),h.jsx(Qt,{children:i.map(N=>h.jsxs(Ke,{children:[h.jsx(le,{className:"font-medium border-r",children:N.name}),h.jsx(le,{className:"border-r",children:N.contact}),h.jsx(le,{className:"border-r",children:h.jsx(Rn,{className:Ne("rounded-lg",N.status==="active"?"bg-green-600":"bg-gray-400"),children:N.status})}),h.jsx(le,{className:"text-center",children:h.jsx(be,{variant:"ghost",size:"sm",className:"rounded-lg",children:h.jsx(Da,{className:"w-4 h-4 text-gray-500"})})})]},N.id))})]});case"Group":return h.jsxs(Kt,{children:[h.jsx(Yt,{children:h.jsxs(Ke,{className:"bg-gray-100",children:[h.jsx(me,{className:"font-bold text-black border-r",children:"Group Name"}),h.jsx(me,{className:"font-bold text-black border-r",children:"Parent Partner"}),h.jsx(me,{className:"font-bold text-black border-r",children:"Status"}),h.jsx(me,{className:"font-bold text-black text-center",children:"Actions"})]})}),h.jsx(Qt,{children:s.map(N=>h.jsxs(Ke,{children:[h.jsx(le,{className:"font-medium border-r",children:N.name}),h.jsx(le,{className:"border-r",children:N.partner}),h.jsx(le,{className:"border-r",children:h.jsx(Rn,{className:Ne("rounded-lg",N.status==="active"?"bg-green-600":"bg-gray-400"),children:N.status})}),h.jsx(le,{className:"text-center",children:h.jsx(be,{variant:"ghost",size:"sm",className:"rounded-lg",children:h.jsx(Da,{className:"w-4 h-4 text-gray-500"})})})]},N.id))})]});case"Team Member":return h.jsxs(Kt,{children:[h.jsx(Yt,{children:h.jsxs(Ke,{className:"bg-gray-100",children:[h.jsx(me,{className:"font-bold text-black border-r",children:"Name"}),h.jsx(me,{className:"font-bold text-black border-r",children:"Email"}),h.jsx(me,{className:"font-bold text-black border-r",children:"Role"}),h.jsx(me,{className:"font-bold text-black border-r",children:"Assigned Locations"}),h.jsx(me,{className:"font-bold text-black border-r",children:"Status"}),h.jsx(me,{className:"font-bold text-black text-center",children:"Actions"})]})}),h.jsx(Qt,{children:f.map(N=>h.jsxs(Ke,{children:[h.jsx(le,{className:"font-medium border-r",children:N.name}),h.jsx(le,{className:"border-r text-gray-600",children:N.email}),h.jsx(le,{className:"border-r",children:h.jsx(Rn,{variant:"outline",className:"font-normal rounded-lg",children:N.role})}),h.jsx(le,{className:"border-r",children:h.jsx("div",{className:"flex flex-col gap-1",children:N.locations.map(C=>h.jsxs("div",{className:"flex items-center gap-1 text-xs text-gray-600",children:[h.jsx(Yh,{className:"w-3 h-3"})," ",C]},C))})}),h.jsx(le,{className:"border-r",children:h.jsx(Rn,{className:Ne("rounded-lg",N.status==="active"?"bg-green-600":"bg-gray-400"),children:N.status})}),h.jsx(le,{className:"text-center",children:h.jsx(be,{variant:"ghost",size:"sm",className:"rounded-lg",children:h.jsx(Da,{className:"w-4 h-4 text-gray-500"})})})]},N.id))})]})}};return h.jsxs("div",{className:"h-full flex flex-col bg-white",children:[k(),h.jsx("div",{className:"flex-1 overflow-auto bg-gray-50",children:h.jsxs("div",{className:"rounded-lg border border-gray-200 bg-white shadow-sm overflow-hidden",children:[h.jsx("div",{className:"flex border-b border-gray-200 bg-gray-50/50",children:["Roles","Partner","Group","Team Member"].map(N=>h.jsx("button",{onClick:()=>t(N),className:Ne("px-6 py-3 text-sm font-medium transition-colors rounded-t-lg",e===N?"bg-white text-black font-bold border border-b-0 border-gray-200 shadow-sm relative -mb-px":"text-gray-500 hover:bg-gray-100 hover:text-gray-700"),children:N},N))}),h.jsx("div",{className:"min-h-[200px]",children:A()})]})}),h.jsx(SH,{open:d,onOpenChange:p}),h.jsx(_H,{open:m,onOpenChange:g}),h.jsx(jH,{open:w,onOpenChange:y}),h.jsx(OH,{open:b,onOpenChange:_,roles:r})]})}function SH({open:e,onOpenChange:t}){return h.jsx(zn,{open:e,onOpenChange:t,children:h.jsxs(qn,{className:"sm:max-w-[600px]",children:[h.jsxs(Un,{children:[h.jsx(Wn,{children:"Create New Role"}),h.jsx(Ka,{children:"Define permissions and notification settings for this role."})]}),h.jsxs("div",{className:"space-y-4 py-4",children:[h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Role Name"}),h.jsx(ze,{placeholder:"e.g. Inventory Specialist"})]}),h.jsxs("div",{className:"space-y-3",children:[h.jsxs(Oe,{className:"flex items-center gap-2",children:[h.jsx(DB,{className:"w-4 h-4"})," Access Permissions"]}),h.jsx("div",{className:"grid grid-cols-2 gap-2 p-3 bg-gray-50 rounded border border-gray-100",children:["Manage Labels","Manage Products","Manage People","View Reports","Edit Settings","Approve Batches"].map(r=>h.jsxs("div",{className:"flex items-center space-x-2",children:[h.jsx(tc,{id:`perm-${r}`}),h.jsx("label",{htmlFor:`perm-${r}`,className:"text-sm font-medium leading-none cursor-pointer",children:r})]},r))})]}),h.jsxs("div",{className:"space-y-3",children:[h.jsxs(Oe,{className:"flex items-center gap-2",children:[h.jsx(O8,{className:"w-4 h-4"})," Notifications (Alerts)"]}),h.jsxs("div",{className:"grid grid-cols-1 gap-2 p-3 bg-gray-50 rounded border border-gray-100",children:[h.jsxs("div",{className:"flex items-center space-x-2",children:[h.jsx(tc,{id:"notif-expiry",defaultChecked:!0}),h.jsx("label",{htmlFor:"notif-expiry",className:"text-sm font-medium leading-none cursor-pointer",children:"Label Expiry Alerts"})]}),h.jsxs("div",{className:"flex items-center space-x-2",children:[h.jsx(tc,{id:"notif-stock"}),h.jsx("label",{htmlFor:"notif-stock",className:"text-sm font-medium leading-none cursor-pointer",children:"Low Stock Alerts"})]}),h.jsxs("div",{className:"flex items-center space-x-2",children:[h.jsx(tc,{id:"notif-tasks"}),h.jsx("label",{htmlFor:"notif-tasks",className:"text-sm font-medium leading-none cursor-pointer",children:"New Task Assignments"})]})]})]})]}),h.jsxs(xi,{children:[h.jsx(be,{variant:"outline",onClick:()=>t(!1),children:"Cancel"}),h.jsx(be,{onClick:()=>t(!1),className:"bg-blue-600 text-white hover:bg-blue-700",children:"Save Role"})]})]})})}function _H({open:e,onOpenChange:t}){return h.jsx(zn,{open:e,onOpenChange:t,children:h.jsxs(qn,{children:[h.jsx(Un,{children:h.jsx(Wn,{children:"Create New Partner"})}),h.jsxs("div",{className:"space-y-4 py-4",children:[h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Partner Name"}),h.jsx(ze,{placeholder:"Company Name"})]}),h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Contact Email"}),h.jsx(ze,{placeholder:"admin@partner.com"})]}),h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(la,{id:"partner-status",defaultChecked:!0}),h.jsx(Oe,{htmlFor:"partner-status",children:"Active"})]})]}),h.jsxs(xi,{children:[h.jsx(be,{variant:"outline",onClick:()=>t(!1),children:"Cancel"}),h.jsx(be,{onClick:()=>t(!1),className:"bg-blue-600 text-white hover:bg-blue-700",children:"Save Partner"})]})]})})}function jH({open:e,onOpenChange:t}){return h.jsx(zn,{open:e,onOpenChange:t,children:h.jsxs(qn,{children:[h.jsx(Un,{children:h.jsx(Wn,{children:"Create New Group"})}),h.jsxs("div",{className:"space-y-4 py-4",children:[h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Group Name"}),h.jsx(ze,{placeholder:"e.g. West Coast Region"})]}),h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Assign to Partner"}),h.jsxs(qe,{children:[h.jsx(We,{children:h.jsx(Ue,{placeholder:"Select Partner"})}),h.jsx(Ve,{children:RD.map(r=>h.jsx(ge,{value:r.id,children:r.name},r.id))})]})]}),h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(la,{id:"group-status",defaultChecked:!0}),h.jsx(Oe,{htmlFor:"group-status",children:"Active"})]})]}),h.jsxs(xi,{children:[h.jsx(be,{variant:"outline",onClick:()=>t(!1),children:"Cancel"}),h.jsx(be,{onClick:()=>t(!1),className:"bg-blue-600 text-white hover:bg-blue-700",children:"Save Group"})]})]})})}function OH({open:e,onOpenChange:t,roles:r}){return h.jsx(zn,{open:e,onOpenChange:t,children:h.jsxs(qn,{className:"sm:max-w-[500px]",children:[h.jsxs(Un,{children:[h.jsx(Wn,{children:"Add Team Member / Manager"}),h.jsx(Ka,{children:"Create a user account and assign them to locations."})]}),h.jsxs("div",{className:"space-y-4 py-4",children:[h.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Full Name"}),h.jsx(ze,{placeholder:"John Doe"})]}),h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Role"}),h.jsxs(qe,{children:[h.jsx(We,{children:h.jsx(Ue,{placeholder:"Select Role"})}),h.jsx(Ve,{children:r.map(n=>h.jsx(ge,{value:n.name,children:n.name},n.id))})]})]})]}),h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Email Address"}),h.jsx(ze,{type:"email",placeholder:"john@example.com"})]}),h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Assign Locations (Multiple)"}),h.jsx(Wd,{className:"h-[120px] w-full border rounded-md p-2",children:h.jsx("div",{className:"space-y-2",children:gH.map(n=>h.jsxs("div",{className:"flex items-center space-x-2",children:[h.jsx(tc,{id:`loc-${n.id}`}),h.jsx("label",{htmlFor:`loc-${n.id}`,className:"text-sm cursor-pointer w-full hover:bg-gray-50 p-1 rounded",children:n.name})]},n.id))})}),h.jsx("p",{className:"text-xs text-gray-500",children:"* Users must be assigned to at least one location."})]}),h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(la,{id:"member-status",defaultChecked:!0}),h.jsx(Oe,{htmlFor:"member-status",children:"Active Account"})]})]}),h.jsxs(xi,{children:[h.jsx(be,{variant:"outline",onClick:()=>t(!1),children:"Cancel"}),h.jsx(be,{onClick:()=>t(!1),className:"bg-blue-600 text-white hover:bg-blue-700",children:"Create User"})]})]})})}var fg,bE;function Er(){if(bE)return fg;bE=1;var e=Array.isArray;return fg=e,fg}var dg,wE;function MD(){if(wE)return dg;wE=1;var e=typeof Sf=="object"&&Sf&&Sf.Object===Object&&Sf;return dg=e,dg}var hg,SE;function Yn(){if(SE)return hg;SE=1;var e=MD(),t=typeof self=="object"&&self&&self.Object===Object&&self,r=e||t||Function("return this")();return hg=r,hg}var pg,_E;function iu(){if(_E)return pg;_E=1;var e=Yn(),t=e.Symbol;return pg=t,pg}var mg,jE;function EH(){if(jE)return mg;jE=1;var e=iu(),t=Object.prototype,r=t.hasOwnProperty,n=t.toString,i=e?e.toStringTag:void 0;function a(s){var u=r.call(s,i),f=s[i];try{s[i]=void 0;var c=!0}catch{}var d=n.call(s);return c&&(u?s[i]=f:delete s[i]),d}return mg=a,mg}var vg,OE;function PH(){if(OE)return vg;OE=1;var e=Object.prototype,t=e.toString;function r(n){return t.call(n)}return vg=r,vg}var gg,EE;function ji(){if(EE)return gg;EE=1;var e=iu(),t=EH(),r=PH(),n="[object Null]",i="[object Undefined]",a=e?e.toStringTag:void 0;function s(u){return u==null?u===void 0?i:n:a&&a in Object(u)?t(u):r(u)}return gg=s,gg}var yg,PE;function Oi(){if(PE)return yg;PE=1;function e(t){return t!=null&&typeof t=="object"}return yg=e,yg}var xg,AE;function Ws(){if(AE)return xg;AE=1;var e=ji(),t=Oi(),r="[object Symbol]";function n(i){return typeof i=="symbol"||t(i)&&e(i)==r}return xg=n,xg}var bg,NE;function Tw(){if(NE)return bg;NE=1;var e=Er(),t=Ws(),r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,n=/^\w*$/;function i(a,s){if(e(a))return!1;var u=typeof a;return u=="number"||u=="symbol"||u=="boolean"||a==null||t(a)?!0:n.test(a)||!r.test(a)||s!=null&&a in Object(s)}return bg=i,bg}var wg,CE;function ca(){if(CE)return wg;CE=1;function e(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}return wg=e,wg}var Sg,kE;function Rw(){if(kE)return Sg;kE=1;var e=ji(),t=ca(),r="[object AsyncFunction]",n="[object Function]",i="[object GeneratorFunction]",a="[object Proxy]";function s(u){if(!t(u))return!1;var f=e(u);return f==n||f==i||f==r||f==a}return Sg=s,Sg}var _g,TE;function AH(){if(TE)return _g;TE=1;var e=Yn(),t=e["__core-js_shared__"];return _g=t,_g}var jg,RE;function NH(){if(RE)return jg;RE=1;var e=AH(),t=(function(){var n=/[^.]+$/.exec(e&&e.keys&&e.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""})();function r(n){return!!t&&t in n}return jg=r,jg}var Og,ME;function ID(){if(ME)return Og;ME=1;var e=Function.prototype,t=e.toString;function r(n){if(n!=null){try{return t.call(n)}catch{}try{return n+""}catch{}}return""}return Og=r,Og}var Eg,IE;function CH(){if(IE)return Eg;IE=1;var e=Rw(),t=NH(),r=ca(),n=ID(),i=/[\\^$.*+?()[\]{}|]/g,a=/^\[object .+?Constructor\]$/,s=Function.prototype,u=Object.prototype,f=s.toString,c=u.hasOwnProperty,d=RegExp("^"+f.call(c).replace(i,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function p(m){if(!r(m)||t(m))return!1;var g=e(m)?d:a;return g.test(n(m))}return Eg=p,Eg}var Pg,DE;function kH(){if(DE)return Pg;DE=1;function e(t,r){return t?.[r]}return Pg=e,Pg}var Ag,LE;function ao(){if(LE)return Ag;LE=1;var e=CH(),t=kH();function r(n,i){var a=t(n,i);return e(a)?a:void 0}return Ag=r,Ag}var Ng,$E;function vp(){if($E)return Ng;$E=1;var e=ao(),t=e(Object,"create");return Ng=t,Ng}var Cg,BE;function TH(){if(BE)return Cg;BE=1;var e=vp();function t(){this.__data__=e?e(null):{},this.size=0}return Cg=t,Cg}var kg,FE;function RH(){if(FE)return kg;FE=1;function e(t){var r=this.has(t)&&delete this.__data__[t];return this.size-=r?1:0,r}return kg=e,kg}var Tg,zE;function MH(){if(zE)return Tg;zE=1;var e=vp(),t="__lodash_hash_undefined__",r=Object.prototype,n=r.hasOwnProperty;function i(a){var s=this.__data__;if(e){var u=s[a];return u===t?void 0:u}return n.call(s,a)?s[a]:void 0}return Tg=i,Tg}var Rg,qE;function IH(){if(qE)return Rg;qE=1;var e=vp(),t=Object.prototype,r=t.hasOwnProperty;function n(i){var a=this.__data__;return e?a[i]!==void 0:r.call(a,i)}return Rg=n,Rg}var Mg,UE;function DH(){if(UE)return Mg;UE=1;var e=vp(),t="__lodash_hash_undefined__";function r(n,i){var a=this.__data__;return this.size+=this.has(n)?0:1,a[n]=e&&i===void 0?t:i,this}return Mg=r,Mg}var Ig,WE;function LH(){if(WE)return Ig;WE=1;var e=TH(),t=RH(),r=MH(),n=IH(),i=DH();function a(s){var u=-1,f=s==null?0:s.length;for(this.clear();++u-1}return zg=t,zg}var qg,QE;function qH(){if(QE)return qg;QE=1;var e=gp();function t(r,n){var i=this.__data__,a=e(i,r);return a<0?(++this.size,i.push([r,n])):i[a][1]=n,this}return qg=t,qg}var Ug,ZE;function yp(){if(ZE)return Ug;ZE=1;var e=$H(),t=BH(),r=FH(),n=zH(),i=qH();function a(s){var u=-1,f=s==null?0:s.length;for(this.clear();++u0?1:-1},La=function(t){return Qa(t)&&t.indexOf("%")===t.length-1},ye=function(t){return fV(t)&&!au(t)},dV=function(t){return He(t)},Ft=function(t){return ye(t)||Qa(t)},hV=0,Vs=function(t){var r=++hV;return"".concat(t||"").concat(r)},pr=function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(!ye(t)&&!Qa(t))return n;var a;if(La(t)){var s=t.indexOf("%");a=r*parseFloat(t.slice(0,s))/100}else a=+t;return au(a)&&(a=n),i&&a>r&&(a=r),a},Ji=function(t){if(!t)return null;var r=Object.keys(t);return r&&r.length?t[r[0]]:null},pV=function(t){if(!Array.isArray(t))return!1;for(var r=t.length,n={},i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function wV(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function Ib(e){"@babel/helpers - typeof";return Ib=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ib(e)}var EP={click:"onClick",mousedown:"onMouseDown",mouseup:"onMouseUp",mouseover:"onMouseOver",mousemove:"onMouseMove",mouseout:"onMouseOut",mouseenter:"onMouseEnter",mouseleave:"onMouseLeave",touchcancel:"onTouchCancel",touchend:"onTouchEnd",touchmove:"onTouchMove",touchstart:"onTouchStart",contextmenu:"onContextMenu",dblclick:"onDoubleClick"},pi=function(t){return typeof t=="string"?t:t?t.displayName||t.name||"Component":""},PP=null,my=null,Fw=function e(t){if(t===PP&&Array.isArray(my))return my;var r=[];return E.Children.forEach(t,function(n){He(n)||(sV.isFragment(n)?r=r.concat(e(n.props.children)):r.push(n))}),my=r,PP=t,r};function Wr(e,t){var r=[],n=[];return Array.isArray(t)?n=t.map(function(i){return pi(i)}):n=[pi(t)],Fw(e).forEach(function(i){var a=Ur(i,"type.displayName")||Ur(i,"type.name");n.indexOf(a)!==-1&&r.push(i)}),r}function Dr(e,t){var r=Wr(e,t);return r&&r[0]}var AP=function(t){if(!t||!t.props)return!1;var r=t.props,n=r.width,i=r.height;return!(!ye(n)||n<=0||!ye(i)||i<=0)},SV=["a","altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColormatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-url","foreignObject","g","glyph","glyphRef","hkern","image","line","lineGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","script","set","stop","style","svg","switch","symbol","text","textPath","title","tref","tspan","use","view","vkern"],_V=function(t){return t&&t.type&&Qa(t.type)&&SV.indexOf(t.type)>=0},jV=function(t){return t&&Ib(t)==="object"&&"clipDot"in t},OV=function(t,r,n,i){var a,s=(a=py?.[i])!==null&&a!==void 0?a:[];return r.startsWith("data-")||!$e(t)&&(i&&s.includes(r)||gV.includes(r))||n&&Bw.includes(r)},Me=function(t,r,n){if(!t||typeof t=="function"||typeof t=="boolean")return null;var i=t;if(E.isValidElement(t)&&(i=t.props),!Hs(i))return null;var a={};return Object.keys(i).forEach(function(s){var u;OV((u=i)===null||u===void 0?void 0:u[s],s,r,n)&&(a[s]=i[s])}),a},Db=function e(t,r){if(t===r)return!0;var n=E.Children.count(t);if(n!==E.Children.count(r))return!1;if(n===0)return!0;if(n===1)return NP(Array.isArray(t)?t[0]:t,Array.isArray(r)?r[0]:r);for(var i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function CV(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function $b(e){var t=e.children,r=e.width,n=e.height,i=e.viewBox,a=e.className,s=e.style,u=e.title,f=e.desc,c=NV(e,AV),d=i||{width:r,height:n,x:0,y:0},p=Ge("recharts-surface",a);return L.createElement("svg",Lb({},Me(c,!0,"svg"),{className:p,width:r,height:n,style:s,viewBox:"".concat(d.x," ").concat(d.y," ").concat(d.width," ").concat(d.height)}),L.createElement("title",null,u),L.createElement("desc",null,f),t)}var kV=["children","className"];function Bb(){return Bb=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function RV(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var rt=L.forwardRef(function(e,t){var r=e.children,n=e.className,i=TV(e,kV),a=Ge("recharts-layer",n);return L.createElement("g",Bb({className:a},Me(i,!0),{ref:t}),r)}),_n=function(t,r){for(var n=arguments.length,i=new Array(n>2?n-2:0),a=2;aa?0:a+r),n=n>a?a:n,n<0&&(n+=a),a=r>n?0:n-r>>>0,r>>>=0;for(var s=Array(a);++i=a?r:e(r,n,i)}return gy=t,gy}var yy,RP;function zD(){if(RP)return yy;RP=1;var e="\\ud800-\\udfff",t="\\u0300-\\u036f",r="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",i=t+r+n,a="\\ufe0e\\ufe0f",s="\\u200d",u=RegExp("["+s+e+i+a+"]");function f(c){return u.test(c)}return yy=f,yy}var xy,MP;function DV(){if(MP)return xy;MP=1;function e(t){return t.split("")}return xy=e,xy}var by,IP;function LV(){if(IP)return by;IP=1;var e="\\ud800-\\udfff",t="\\u0300-\\u036f",r="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",i=t+r+n,a="\\ufe0e\\ufe0f",s="["+e+"]",u="["+i+"]",f="\\ud83c[\\udffb-\\udfff]",c="(?:"+u+"|"+f+")",d="[^"+e+"]",p="(?:\\ud83c[\\udde6-\\uddff]){2}",m="[\\ud800-\\udbff][\\udc00-\\udfff]",g="\\u200d",w=c+"?",y="["+a+"]?",b="(?:"+g+"(?:"+[d,p,m].join("|")+")"+y+w+")*",_=y+w+b,j="(?:"+[d+u+"?",u,p,m,s].join("|")+")",P=RegExp(f+"(?="+f+")|"+j+_,"g");function k(A){return A.match(P)||[]}return by=k,by}var wy,DP;function $V(){if(DP)return wy;DP=1;var e=DV(),t=zD(),r=LV();function n(i){return t(i)?r(i):e(i)}return wy=n,wy}var Sy,LP;function BV(){if(LP)return Sy;LP=1;var e=IV(),t=zD(),r=$V(),n=LD();function i(a){return function(s){s=n(s);var u=t(s)?r(s):void 0,f=u?u[0]:s.charAt(0),c=u?e(u,1).join(""):s.slice(1);return f[a]()+c}}return Sy=i,Sy}var _y,$P;function FV(){if($P)return _y;$P=1;var e=BV(),t=e("toUpperCase");return _y=t,_y}var zV=FV();const wp=at(zV);function mt(e){return function(){return e}}const qD=Math.cos,Kd=Math.sin,Pn=Math.sqrt,Yd=Math.PI,Sp=2*Yd,Fb=Math.PI,zb=2*Fb,Ta=1e-6,qV=zb-Ta;function UD(e){this._+=e[0];for(let t=1,r=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return UD;const r=10**t;return function(n){this._+=n[0];for(let i=1,a=n.length;iTa)if(!(Math.abs(p*f-c*d)>Ta)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let g=n-s,w=i-u,y=f*f+c*c,b=g*g+w*w,_=Math.sqrt(y),j=Math.sqrt(m),P=a*Math.tan((Fb-Math.acos((y+m-b)/(2*_*j)))/2),k=P/j,A=P/_;Math.abs(k-1)>Ta&&this._append`L${t+k*d},${r+k*p}`,this._append`A${a},${a},0,0,${+(p*g>d*w)},${this._x1=t+A*f},${this._y1=r+A*c}`}}arc(t,r,n,i,a,s){if(t=+t,r=+r,n=+n,s=!!s,n<0)throw new Error(`negative radius: ${n}`);let u=n*Math.cos(i),f=n*Math.sin(i),c=t+u,d=r+f,p=1^s,m=s?i-a:a-i;this._x1===null?this._append`M${c},${d}`:(Math.abs(this._x1-c)>Ta||Math.abs(this._y1-d)>Ta)&&this._append`L${c},${d}`,n&&(m<0&&(m=m%zb+zb),m>qV?this._append`A${n},${n},0,1,${p},${t-u},${r-f}A${n},${n},0,1,${p},${this._x1=c},${this._y1=d}`:m>Ta&&this._append`A${n},${n},0,${+(m>=Fb)},${p},${this._x1=t+n*Math.cos(a)},${this._y1=r+n*Math.sin(a)}`)}rect(t,r,n,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}}function zw(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{const n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new WV(t)}function qw(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function WD(e){this._context=e}WD.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function _p(e){return new WD(e)}function HD(e){return e[0]}function VD(e){return e[1]}function GD(e,t){var r=mt(!0),n=null,i=_p,a=null,s=zw(u);e=typeof e=="function"?e:e===void 0?HD:mt(e),t=typeof t=="function"?t:t===void 0?VD:mt(t);function u(f){var c,d=(f=qw(f)).length,p,m=!1,g;for(n==null&&(a=i(g=s())),c=0;c<=d;++c)!(c=g;--w)u.point(P[w],k[w]);u.lineEnd(),u.areaEnd()}_&&(P[m]=+e(b,m,p),k[m]=+t(b,m,p),u.point(n?+n(b,m,p):P[m],r?+r(b,m,p):k[m]))}if(j)return u=null,j+""||null}function d(){return GD().defined(i).curve(s).context(a)}return c.x=function(p){return arguments.length?(e=typeof p=="function"?p:mt(+p),n=null,c):e},c.x0=function(p){return arguments.length?(e=typeof p=="function"?p:mt(+p),c):e},c.x1=function(p){return arguments.length?(n=p==null?null:typeof p=="function"?p:mt(+p),c):n},c.y=function(p){return arguments.length?(t=typeof p=="function"?p:mt(+p),r=null,c):t},c.y0=function(p){return arguments.length?(t=typeof p=="function"?p:mt(+p),c):t},c.y1=function(p){return arguments.length?(r=p==null?null:typeof p=="function"?p:mt(+p),c):r},c.lineX0=c.lineY0=function(){return d().x(e).y(t)},c.lineY1=function(){return d().x(e).y(r)},c.lineX1=function(){return d().x(n).y(t)},c.defined=function(p){return arguments.length?(i=typeof p=="function"?p:mt(!!p),c):i},c.curve=function(p){return arguments.length?(s=p,a!=null&&(u=s(a)),c):s},c.context=function(p){return arguments.length?(p==null?a=u=null:u=s(a=p),c):a},c}class XD{constructor(t,r){this._context=t,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,r){switch(t=+t,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,r):this._context.moveTo(t,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,r,t,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,t,this._y0,t,r);break}}this._x0=t,this._y0=r}}function HV(e){return new XD(e,!0)}function VV(e){return new XD(e,!1)}const Uw={draw(e,t){const r=Pn(t/Yd);e.moveTo(r,0),e.arc(0,0,r,0,Sp)}},GV={draw(e,t){const r=Pn(t/5)/2;e.moveTo(-3*r,-r),e.lineTo(-r,-r),e.lineTo(-r,-3*r),e.lineTo(r,-3*r),e.lineTo(r,-r),e.lineTo(3*r,-r),e.lineTo(3*r,r),e.lineTo(r,r),e.lineTo(r,3*r),e.lineTo(-r,3*r),e.lineTo(-r,r),e.lineTo(-3*r,r),e.closePath()}},KD=Pn(1/3),XV=KD*2,KV={draw(e,t){const r=Pn(t/XV),n=r*KD;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}},YV={draw(e,t){const r=Pn(t),n=-r/2;e.rect(n,n,r,r)}},QV=.8908130915292852,YD=Kd(Yd/10)/Kd(7*Yd/10),ZV=Kd(Sp/10)*YD,JV=-qD(Sp/10)*YD,eG={draw(e,t){const r=Pn(t*QV),n=ZV*r,i=JV*r;e.moveTo(0,-r),e.lineTo(n,i);for(let a=1;a<5;++a){const s=Sp*a/5,u=qD(s),f=Kd(s);e.lineTo(f*r,-u*r),e.lineTo(u*n-f*i,f*n+u*i)}e.closePath()}},jy=Pn(3),tG={draw(e,t){const r=-Pn(t/(jy*3));e.moveTo(0,r*2),e.lineTo(-jy*r,-r),e.lineTo(jy*r,-r),e.closePath()}},Zr=-.5,Jr=Pn(3)/2,qb=1/Pn(12),rG=(qb/2+1)*3,nG={draw(e,t){const r=Pn(t/rG),n=r/2,i=r*qb,a=n,s=r*qb+r,u=-a,f=s;e.moveTo(n,i),e.lineTo(a,s),e.lineTo(u,f),e.lineTo(Zr*n-Jr*i,Jr*n+Zr*i),e.lineTo(Zr*a-Jr*s,Jr*a+Zr*s),e.lineTo(Zr*u-Jr*f,Jr*u+Zr*f),e.lineTo(Zr*n+Jr*i,Zr*i-Jr*n),e.lineTo(Zr*a+Jr*s,Zr*s-Jr*a),e.lineTo(Zr*u+Jr*f,Zr*f-Jr*u),e.closePath()}};function iG(e,t){let r=null,n=zw(i);e=typeof e=="function"?e:mt(e||Uw),t=typeof t=="function"?t:mt(t===void 0?64:+t);function i(){let a;if(r||(r=a=n()),e.apply(this,arguments).draw(r,+t.apply(this,arguments)),a)return r=null,a+""||null}return i.type=function(a){return arguments.length?(e=typeof a=="function"?a:mt(a),i):e},i.size=function(a){return arguments.length?(t=typeof a=="function"?a:mt(+a),i):t},i.context=function(a){return arguments.length?(r=a??null,i):r},i}function Qd(){}function Zd(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function QD(e){this._context=e}QD.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Zd(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Zd(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function aG(e){return new QD(e)}function ZD(e){this._context=e}ZD.prototype={areaStart:Qd,areaEnd:Qd,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:Zd(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function oG(e){return new ZD(e)}function JD(e){this._context=e}JD.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,n=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:Zd(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function sG(e){return new JD(e)}function eL(e){this._context=e}eL.prototype={areaStart:Qd,areaEnd:Qd,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function lG(e){return new eL(e)}function BP(e){return e<0?-1:1}function FP(e,t,r){var n=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(n||i<0&&-0),s=(r-e._y1)/(i||n<0&&-0),u=(a*i+s*n)/(n+i);return(BP(a)+BP(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(u))||0}function zP(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function Oy(e,t,r){var n=e._x0,i=e._y0,a=e._x1,s=e._y1,u=(a-n)/3;e._context.bezierCurveTo(n+u,i+u*t,a-u,s-u*r,a,s)}function Jd(e){this._context=e}Jd.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Oy(this,this._t0,zP(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,Oy(this,zP(this,r=FP(this,e,t)),r);break;default:Oy(this,this._t0,r=FP(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function tL(e){this._context=new rL(e)}(tL.prototype=Object.create(Jd.prototype)).point=function(e,t){Jd.prototype.point.call(this,t,e)};function rL(e){this._context=e}rL.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,i,a){this._context.bezierCurveTo(t,e,n,r,a,i)}};function cG(e){return new Jd(e)}function uG(e){return new tL(e)}function nL(e){this._context=e}nL.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var n=qP(e),i=qP(t),a=0,s=1;s=0;--t)i[t]=(s[t]-i[t+1])/a[t];for(a[r-1]=(e[r]+i[r-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t}};function dG(e){return new jp(e,.5)}function hG(e){return new jp(e,0)}function pG(e){return new jp(e,1)}function ds(e,t){if((s=e.length)>1)for(var r=1,n,i,a=e[t[0]],s,u=a.length;r=0;)r[t]=t;return r}function mG(e,t){return e[t]}function vG(e){const t=[];return t.key=e,t}function gG(){var e=mt([]),t=Ub,r=ds,n=mG;function i(a){var s=Array.from(e.apply(this,arguments),vG),u,f=s.length,c=-1,d;for(const p of a)for(u=0,++c;u0){for(var r,n,i=0,a=e[0].length,s;i0){for(var r=0,n=e[t[0]],i,a=n.length;r0)||!((a=(i=e[t[0]]).length)>0))){for(var r=0,n=1,i,a,s;n=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function EG(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var iL={symbolCircle:Uw,symbolCross:GV,symbolDiamond:KV,symbolSquare:YV,symbolStar:eG,symbolTriangle:tG,symbolWye:nG},PG=Math.PI/180,AG=function(t){var r="symbol".concat(wp(t));return iL[r]||Uw},NG=function(t,r,n){if(r==="area")return t;switch(n){case"cross":return 5*t*t/9;case"diamond":return .5*t*t/Math.sqrt(3);case"square":return t*t;case"star":{var i=18*PG;return 1.25*t*t*(Math.tan(i)-Math.tan(i*2)*Math.pow(Math.tan(i),2))}case"triangle":return Math.sqrt(3)*t*t/4;case"wye":return(21-10*Math.sqrt(3))*t*t/8;default:return Math.PI*t*t/4}},CG=function(t,r){iL["symbol".concat(wp(t))]=r},Ww=function(t){var r=t.type,n=r===void 0?"circle":r,i=t.size,a=i===void 0?64:i,s=t.sizeType,u=s===void 0?"area":s,f=OG(t,wG),c=WP(WP({},f),{},{type:n,size:a,sizeType:u}),d=function(){var b=AG(n),_=iG().type(b).size(NG(a,u,n));return _()},p=c.className,m=c.cx,g=c.cy,w=Me(c,!0);return m===+m&&g===+g&&a===+a?L.createElement("path",Wb({},w,{className:Ge("recharts-symbols",p),transform:"translate(".concat(m,", ").concat(g,")"),d:d()})):null};Ww.registerSymbol=CG;function hs(e){"@babel/helpers - typeof";return hs=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},hs(e)}function Hb(){return Hb=Object.assign?Object.assign.bind():function(e){for(var t=1;t`);var j=g.inactive?c:g.color;return L.createElement("li",Hb({className:b,style:p,key:"legend-item-".concat(w)},Za(n.props,g,w)),L.createElement($b,{width:s,height:s,viewBox:d,style:m},n.renderIcon(g)),L.createElement("span",{className:"recharts-legend-item-text",style:{color:j}},y?y(_,g,w):_))})}},{key:"render",value:function(){var n=this.props,i=n.payload,a=n.layout,s=n.align;if(!i||!i.length)return null;var u={padding:0,margin:0,textAlign:a==="horizontal"?s:"left"};return L.createElement("ul",{className:"recharts-default-legend",style:u},this.renderItems())}}])})(E.PureComponent);gc(Hw,"displayName","Legend");gc(Hw,"defaultProps",{iconSize:14,layout:"horizontal",align:"center",verticalAlign:"middle",inactiveColor:"#ccc"});var Ey,VP;function FG(){if(VP)return Ey;VP=1;var e=yp();function t(){this.__data__=new e,this.size=0}return Ey=t,Ey}var Py,GP;function zG(){if(GP)return Py;GP=1;function e(t){var r=this.__data__,n=r.delete(t);return this.size=r.size,n}return Py=e,Py}var Ay,XP;function qG(){if(XP)return Ay;XP=1;function e(t){return this.__data__.get(t)}return Ay=e,Ay}var Ny,KP;function UG(){if(KP)return Ny;KP=1;function e(t){return this.__data__.has(t)}return Ny=e,Ny}var Cy,YP;function WG(){if(YP)return Cy;YP=1;var e=yp(),t=Iw(),r=Dw(),n=200;function i(a,s){var u=this.__data__;if(u instanceof e){var f=u.__data__;if(!t||f.lengthg))return!1;var y=p.get(s),b=p.get(u);if(y&&b)return y==u&&b==s;var _=-1,j=!0,P=f&i?new e:void 0;for(p.set(s,u),p.set(u,s);++_-1&&n%1==0&&n-1&&r%1==0&&r<=e}return Zy=t,Zy}var Jy,bA;function nX(){if(bA)return Jy;bA=1;var e=ji(),t=Kw(),r=Oi(),n="[object Arguments]",i="[object Array]",a="[object Boolean]",s="[object Date]",u="[object Error]",f="[object Function]",c="[object Map]",d="[object Number]",p="[object Object]",m="[object RegExp]",g="[object Set]",w="[object String]",y="[object WeakMap]",b="[object ArrayBuffer]",_="[object DataView]",j="[object Float32Array]",P="[object Float64Array]",k="[object Int8Array]",A="[object Int16Array]",N="[object Int32Array]",C="[object Uint8Array]",T="[object Uint8ClampedArray]",M="[object Uint16Array]",F="[object Uint32Array]",I={};I[j]=I[P]=I[k]=I[A]=I[N]=I[C]=I[T]=I[M]=I[F]=!0,I[n]=I[i]=I[b]=I[a]=I[_]=I[s]=I[u]=I[f]=I[c]=I[d]=I[p]=I[m]=I[g]=I[w]=I[y]=!1;function D(q){return r(q)&&t(q.length)&&!!I[e(q)]}return Jy=D,Jy}var e0,wA;function pL(){if(wA)return e0;wA=1;function e(t){return function(r){return t(r)}}return e0=e,e0}var nc={exports:{}};nc.exports;var SA;function iX(){return SA||(SA=1,(function(e,t){var r=MD(),n=t&&!t.nodeType&&t,i=n&&!0&&e&&!e.nodeType&&e,a=i&&i.exports===n,s=a&&r.process,u=(function(){try{var f=i&&i.require&&i.require("util").types;return f||s&&s.binding&&s.binding("util")}catch{}})();e.exports=u})(nc,nc.exports)),nc.exports}var t0,_A;function mL(){if(_A)return t0;_A=1;var e=nX(),t=pL(),r=iX(),n=r&&r.isTypedArray,i=n?t(n):e;return t0=i,t0}var r0,jA;function aX(){if(jA)return r0;jA=1;var e=eX(),t=Gw(),r=Er(),n=hL(),i=Xw(),a=mL(),s=Object.prototype,u=s.hasOwnProperty;function f(c,d){var p=r(c),m=!p&&t(c),g=!p&&!m&&n(c),w=!p&&!m&&!g&&a(c),y=p||m||g||w,b=y?e(c.length,String):[],_=b.length;for(var j in c)(d||u.call(c,j))&&!(y&&(j=="length"||g&&(j=="offset"||j=="parent")||w&&(j=="buffer"||j=="byteLength"||j=="byteOffset")||i(j,_)))&&b.push(j);return b}return r0=f,r0}var n0,OA;function oX(){if(OA)return n0;OA=1;var e=Object.prototype;function t(r){var n=r&&r.constructor,i=typeof n=="function"&&n.prototype||e;return r===i}return n0=t,n0}var i0,EA;function vL(){if(EA)return i0;EA=1;function e(t,r){return function(n){return t(r(n))}}return i0=e,i0}var a0,PA;function sX(){if(PA)return a0;PA=1;var e=vL(),t=e(Object.keys,Object);return a0=t,a0}var o0,AA;function lX(){if(AA)return o0;AA=1;var e=oX(),t=sX(),r=Object.prototype,n=r.hasOwnProperty;function i(a){if(!e(a))return t(a);var s=[];for(var u in Object(a))n.call(a,u)&&u!="constructor"&&s.push(u);return s}return o0=i,o0}var s0,NA;function ou(){if(NA)return s0;NA=1;var e=Rw(),t=Kw();function r(n){return n!=null&&t(n.length)&&!e(n)}return s0=r,s0}var l0,CA;function Op(){if(CA)return l0;CA=1;var e=aX(),t=lX(),r=ou();function n(i){return r(i)?e(i):t(i)}return l0=n,l0}var c0,kA;function cX(){if(kA)return c0;kA=1;var e=YG(),t=JG(),r=Op();function n(i){return e(i,r,t)}return c0=n,c0}var u0,TA;function uX(){if(TA)return u0;TA=1;var e=cX(),t=1,r=Object.prototype,n=r.hasOwnProperty;function i(a,s,u,f,c,d){var p=u&t,m=e(a),g=m.length,w=e(s),y=w.length;if(g!=y&&!p)return!1;for(var b=g;b--;){var _=m[b];if(!(p?_ in s:n.call(s,_)))return!1}var j=d.get(a),P=d.get(s);if(j&&P)return j==s&&P==a;var k=!0;d.set(a,s),d.set(s,a);for(var A=p;++b-1}return D0=t,D0}var L0,aN;function CX(){if(aN)return L0;aN=1;function e(t,r,n){for(var i=-1,a=t==null?0:t.length;++i=s){var _=c?null:i(f);if(_)return a(_);w=!1,m=n,b=new e}else b=c?[]:y;e:for(;++p=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function HX(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function VX(e){return e.value}function GX(e,t){if(L.isValidElement(e))return L.cloneElement(e,t);if(typeof e=="function")return L.createElement(e,t);t.ref;var r=WX(t,DX);return L.createElement(Hw,r)}var hN=1,os=(function(e){function t(){var r;LX(this,t);for(var n=arguments.length,i=new Array(n),a=0;ahN||Math.abs(i.height-this.lastBoundingBox.height)>hN)&&(this.lastBoundingBox.width=i.width,this.lastBoundingBox.height=i.height,n&&n(i)):(this.lastBoundingBox.width!==-1||this.lastBoundingBox.height!==-1)&&(this.lastBoundingBox.width=-1,this.lastBoundingBox.height=-1,n&&n(null))}},{key:"getBBoxSnapshot",value:function(){return this.lastBoundingBox.width>=0&&this.lastBoundingBox.height>=0?ci({},this.lastBoundingBox):{width:0,height:0}}},{key:"getDefaultPosition",value:function(n){var i=this.props,a=i.layout,s=i.align,u=i.verticalAlign,f=i.margin,c=i.chartWidth,d=i.chartHeight,p,m;if(!n||(n.left===void 0||n.left===null)&&(n.right===void 0||n.right===null))if(s==="center"&&a==="vertical"){var g=this.getBBoxSnapshot();p={left:((c||0)-g.width)/2}}else p=s==="right"?{right:f&&f.right||0}:{left:f&&f.left||0};if(!n||(n.top===void 0||n.top===null)&&(n.bottom===void 0||n.bottom===null))if(u==="middle"){var w=this.getBBoxSnapshot();m={top:((d||0)-w.height)/2}}else m=u==="bottom"?{bottom:f&&f.bottom||0}:{top:f&&f.top||0};return ci(ci({},p),m)}},{key:"render",value:function(){var n=this,i=this.props,a=i.content,s=i.width,u=i.height,f=i.wrapperStyle,c=i.payloadUniqBy,d=i.payload,p=ci(ci({position:"absolute",width:s||"auto",height:u||"auto"},this.getDefaultPosition(f)),f);return L.createElement("div",{className:"recharts-legend-wrapper",style:p,ref:function(g){n.wrapperNode=g}},GX(a,ci(ci({},this.props),{},{payload:wL(d,c,VX)})))}}],[{key:"getWithHeight",value:function(n,i){var a=ci(ci({},this.defaultProps),n.props),s=a.layout;return s==="vertical"&&ye(n.props.height)?{height:n.props.height}:s==="horizontal"?{width:n.props.width||i}:null}}])})(E.PureComponent);Ep(os,"displayName","Legend");Ep(os,"defaultProps",{iconSize:14,layout:"horizontal",align:"center",verticalAlign:"bottom"});var q0,pN;function XX(){if(pN)return q0;pN=1;var e=iu(),t=Gw(),r=Er(),n=e?e.isConcatSpreadable:void 0;function i(a){return r(a)||t(a)||!!(n&&a&&a[n])}return q0=i,q0}var U0,mN;function jL(){if(mN)return U0;mN=1;var e=dL(),t=XX();function r(n,i,a,s,u){var f=-1,c=n.length;for(a||(a=t),u||(u=[]);++f0&&a(d)?i>1?r(d,i-1,a,s,u):e(u,d):s||(u[u.length]=d)}return u}return U0=r,U0}var W0,vN;function KX(){if(vN)return W0;vN=1;function e(t){return function(r,n,i){for(var a=-1,s=Object(r),u=i(r),f=u.length;f--;){var c=u[t?f:++a];if(n(s[c],c,s)===!1)break}return r}}return W0=e,W0}var H0,gN;function YX(){if(gN)return H0;gN=1;var e=KX(),t=e();return H0=t,H0}var V0,yN;function OL(){if(yN)return V0;yN=1;var e=YX(),t=Op();function r(n,i){return n&&e(n,i,t)}return V0=r,V0}var G0,xN;function QX(){if(xN)return G0;xN=1;var e=ou();function t(r,n){return function(i,a){if(i==null)return i;if(!e(i))return r(i,a);for(var s=i.length,u=n?s:-1,f=Object(i);(n?u--:++un||u&&f&&d&&!c&&!p||a&&f&&d||!i&&d||!s)return 1;if(!a&&!u&&!p&&r=c)return d;var p=i[a];return d*(p=="desc"?-1:1)}}return r.index-n.index}return Z0=t,Z0}var J0,ON;function tK(){if(ON)return J0;ON=1;var e=Lw(),t=$w(),r=Qn(),n=EL(),i=ZX(),a=pL(),s=eK(),u=Gs(),f=Er();function c(d,p,m){p.length?p=e(p,function(y){return f(y)?function(b){return t(b,y.length===1?y[0]:y)}:y}):p=[u];var g=-1;p=e(p,a(r));var w=n(d,function(y,b,_){var j=e(p,function(P){return P(y)});return{criteria:j,index:++g,value:y}});return i(w,function(y,b){return s(y,b,m)})}return J0=c,J0}var ex,EN;function rK(){if(EN)return ex;EN=1;function e(t,r,n){switch(n.length){case 0:return t.call(r);case 1:return t.call(r,n[0]);case 2:return t.call(r,n[0],n[1]);case 3:return t.call(r,n[0],n[1],n[2])}return t.apply(r,n)}return ex=e,ex}var tx,PN;function nK(){if(PN)return tx;PN=1;var e=rK(),t=Math.max;function r(n,i,a){return i=t(i===void 0?n.length-1:i,0),function(){for(var s=arguments,u=-1,f=t(s.length-i,0),c=Array(f);++u0){if(++a>=e)return arguments[0]}else a=0;return i.apply(void 0,arguments)}}return ax=n,ax}var ox,TN;function sK(){if(TN)return ox;TN=1;var e=aK(),t=oK(),r=t(e);return ox=r,ox}var sx,RN;function lK(){if(RN)return sx;RN=1;var e=Gs(),t=nK(),r=sK();function n(i,a){return r(t(i,a,e),i+"")}return sx=n,sx}var lx,MN;function Pp(){if(MN)return lx;MN=1;var e=Mw(),t=ou(),r=Xw(),n=ca();function i(a,s,u){if(!n(u))return!1;var f=typeof s;return(f=="number"?t(u)&&r(s,u.length):f=="string"&&s in u)?e(u[s],a):!1}return lx=i,lx}var cx,IN;function cK(){if(IN)return cx;IN=1;var e=jL(),t=tK(),r=lK(),n=Pp(),i=r(function(a,s){if(a==null)return[];var u=s.length;return u>1&&n(a,s[0],s[1])?s=[]:u>2&&n(s[0],s[1],s[2])&&(s=[s[0]]),t(a,e(s,1),[])});return cx=i,cx}var uK=cK();const Zw=at(uK);function yc(e){"@babel/helpers - typeof";return yc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},yc(e)}function Xb(){return Xb=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=t.x),"".concat(Hl,"-left"),ye(r)&&t&&ye(t.x)&&r=t.y),"".concat(Hl,"-top"),ye(n)&&t&&ye(t.y)&&ny?Math.max(d,f[n]):Math.max(p,f[n])}function OK(e){var t=e.translateX,r=e.translateY,n=e.useTranslate3d;return{transform:n?"translate3d(".concat(t,"px, ").concat(r,"px, 0)"):"translate(".concat(t,"px, ").concat(r,"px)")}}function EK(e){var t=e.allowEscapeViewBox,r=e.coordinate,n=e.offsetTopLeft,i=e.position,a=e.reverseDirection,s=e.tooltipBox,u=e.useTranslate3d,f=e.viewBox,c,d,p;return s.height>0&&s.width>0&&r?(d=$N({allowEscapeViewBox:t,coordinate:r,key:"x",offsetTopLeft:n,position:i,reverseDirection:a,tooltipDimension:s.width,viewBox:f,viewBoxDimension:f.width}),p=$N({allowEscapeViewBox:t,coordinate:r,key:"y",offsetTopLeft:n,position:i,reverseDirection:a,tooltipDimension:s.height,viewBox:f,viewBoxDimension:f.height}),c=OK({translateX:d,translateY:p,useTranslate3d:u})):c=_K,{cssProperties:c,cssClasses:jK({translateX:d,translateY:p,coordinate:r})}}function ms(e){"@babel/helpers - typeof";return ms=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ms(e)}function BN(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function FN(e){for(var t=1;tzN||Math.abs(n.height-this.state.lastBoundingBox.height)>zN)&&this.setState({lastBoundingBox:{width:n.width,height:n.height}})}else(this.state.lastBoundingBox.width!==-1||this.state.lastBoundingBox.height!==-1)&&this.setState({lastBoundingBox:{width:-1,height:-1}})}},{key:"componentDidMount",value:function(){document.addEventListener("keydown",this.handleKeyDown),this.updateBBox()}},{key:"componentWillUnmount",value:function(){document.removeEventListener("keydown",this.handleKeyDown)}},{key:"componentDidUpdate",value:function(){var n,i;this.props.active&&this.updateBBox(),this.state.dismissed&&(((n=this.props.coordinate)===null||n===void 0?void 0:n.x)!==this.state.dismissedAtCoordinate.x||((i=this.props.coordinate)===null||i===void 0?void 0:i.y)!==this.state.dismissedAtCoordinate.y)&&(this.state.dismissed=!1)}},{key:"render",value:function(){var n=this,i=this.props,a=i.active,s=i.allowEscapeViewBox,u=i.animationDuration,f=i.animationEasing,c=i.children,d=i.coordinate,p=i.hasPayload,m=i.isAnimationActive,g=i.offset,w=i.position,y=i.reverseDirection,b=i.useTranslate3d,_=i.viewBox,j=i.wrapperStyle,P=EK({allowEscapeViewBox:s,coordinate:d,offsetTopLeft:g,position:w,reverseDirection:y,tooltipBox:this.state.lastBoundingBox,useTranslate3d:b,viewBox:_}),k=P.cssClasses,A=P.cssProperties,N=FN(FN({transition:m&&a?"transform ".concat(u,"ms ").concat(f):void 0},A),{},{pointerEvents:"none",visibility:!this.state.dismissed&&a&&p?"visible":"hidden",position:"absolute",top:0,left:0},j);return L.createElement("div",{tabIndex:-1,className:k,style:N,ref:function(T){n.wrapperNode=T}},c)}}])})(E.PureComponent),DK=function(){return!(typeof window<"u"&&window.document&&window.document.createElement&&window.setTimeout)},oo={isSsr:DK()};function vs(e){"@babel/helpers - typeof";return vs=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},vs(e)}function qN(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function UN(e){for(var t=1;t0;return L.createElement(IK,{allowEscapeViewBox:s,animationDuration:u,animationEasing:f,isAnimationActive:m,active:a,coordinate:d,hasPayload:N,offset:g,position:b,reverseDirection:_,useTranslate3d:j,viewBox:P,wrapperStyle:k},VK(c,UN(UN({},this.props),{},{payload:A})))}}])})(E.PureComponent);Jw($r,"displayName","Tooltip");Jw($r,"defaultProps",{accessibilityLayer:!1,allowEscapeViewBox:{x:!1,y:!1},animationDuration:400,animationEasing:"ease",contentStyle:{},coordinate:{x:0,y:0},cursor:!0,cursorStyle:{},filterNull:!0,isAnimationActive:!oo.isSsr,itemStyle:{},labelStyle:{},offset:10,reverseDirection:{x:!1,y:!1},separator:" : ",trigger:"hover",useTranslate3d:!1,viewBox:{x:0,y:0,height:0,width:0},wrapperStyle:{}});var fx,WN;function GK(){if(WN)return fx;WN=1;var e=Yn(),t=function(){return e.Date.now()};return fx=t,fx}var dx,HN;function XK(){if(HN)return dx;HN=1;var e=/\s/;function t(r){for(var n=r.length;n--&&e.test(r.charAt(n)););return n}return dx=t,dx}var hx,VN;function KK(){if(VN)return hx;VN=1;var e=XK(),t=/^\s+/;function r(n){return n&&n.slice(0,e(n)+1).replace(t,"")}return hx=r,hx}var px,GN;function TL(){if(GN)return px;GN=1;var e=KK(),t=ca(),r=Ws(),n=NaN,i=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,s=/^0o[0-7]+$/i,u=parseInt;function f(c){if(typeof c=="number")return c;if(r(c))return n;if(t(c)){var d=typeof c.valueOf=="function"?c.valueOf():c;c=t(d)?d+"":d}if(typeof c!="string")return c===0?c:+c;c=e(c);var p=a.test(c);return p||s.test(c)?u(c.slice(2),p?2:8):i.test(c)?n:+c}return px=f,px}var mx,XN;function YK(){if(XN)return mx;XN=1;var e=ca(),t=GK(),r=TL(),n="Expected a function",i=Math.max,a=Math.min;function s(u,f,c){var d,p,m,g,w,y,b=0,_=!1,j=!1,P=!0;if(typeof u!="function")throw new TypeError(n);f=r(f)||0,e(c)&&(_=!!c.leading,j="maxWait"in c,m=j?i(r(c.maxWait)||0,f):m,P="trailing"in c?!!c.trailing:P);function k(q){var U=d,H=p;return d=p=void 0,b=q,g=u.apply(H,U),g}function A(q){return b=q,w=setTimeout(T,f),_?k(q):g}function N(q){var U=q-y,H=q-b,X=f-U;return j?a(X,m-H):X}function C(q){var U=q-y,H=q-b;return y===void 0||U>=f||U<0||j&&H>=m}function T(){var q=t();if(C(q))return M(q);w=setTimeout(T,N(q))}function M(q){return w=void 0,P&&d?k(q):(d=p=void 0,g)}function F(){w!==void 0&&clearTimeout(w),b=0,d=y=p=w=void 0}function I(){return w===void 0?g:M(t())}function D(){var q=t(),U=C(q);if(d=arguments,p=this,y=q,U){if(w===void 0)return A(y);if(j)return clearTimeout(w),w=setTimeout(T,f),k(y)}return w===void 0&&(w=setTimeout(T,f)),g}return D.cancel=F,D.flush=I,D}return mx=s,mx}var vx,KN;function QK(){if(KN)return vx;KN=1;var e=YK(),t=ca(),r="Expected a function";function n(i,a,s){var u=!0,f=!0;if(typeof i!="function")throw new TypeError(r);return t(s)&&(u="leading"in s?!!s.leading:u,f="trailing"in s?!!s.trailing:f),e(i,a,{leading:u,maxWait:a,trailing:f})}return vx=n,vx}var ZK=QK();const RL=at(ZK);function bc(e){"@babel/helpers - typeof";return bc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},bc(e)}function YN(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function vd(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&(q=RL(q,y,{trailing:!0,leading:!1}));var U=new ResizeObserver(q),H=A.current.getBoundingClientRect(),X=H.width,Y=H.height;return I(X,Y),U.observe(A.current),function(){U.disconnect()}},[I,y]);var D=E.useMemo(function(){var q=M.containerWidth,U=M.containerHeight;if(q<0||U<0)return null;_n(La(s)||La(f),`The width(%s) and height(%s) are both fixed numbers, + maybe you don't need to use a ResponsiveContainer.`,s,f),_n(!r||r>0,"The aspect(%s) must be greater than zero.",r);var H=La(s)?q:s,X=La(f)?U:f;r&&r>0&&(H?X=H/r:X&&(H=X*r),m&&X>m&&(X=m)),_n(H>0||X>0,`The width(%s) and height(%s) of chart should be greater than 0, + please check the style of container, or the props width(%s) and height(%s), + or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the + height and width.`,H,X,s,f,d,p,r);var Y=!Array.isArray(g)&&pi(g.type).endsWith("Chart");return L.Children.map(g,function($){return L.isValidElement($)?E.cloneElement($,vd({width:H,height:X},Y?{style:vd({height:"100%",width:"100%",maxHeight:X,maxWidth:H},$.props.style)}:{})):$})},[r,g,f,m,p,d,M,s]);return L.createElement("div",{id:b?"".concat(b):void 0,className:Ge("recharts-responsive-container",_),style:vd(vd({},k),{},{width:s,height:f,minWidth:d,minHeight:p,maxHeight:m}),ref:A},D)}),Ap=function(t){return null};Ap.displayName="Cell";function wc(e){"@babel/helpers - typeof";return wc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},wc(e)}function ZN(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function Zb(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:{};if(t==null||oo.isSsr)return{width:0,height:0};var n=dY(r),i=JSON.stringify({text:t,copyStyle:n});if(Wo.widthCache[i])return Wo.widthCache[i];try{var a=document.getElementById(JN);a||(a=document.createElement("span"),a.setAttribute("id",JN),a.setAttribute("aria-hidden","true"),document.body.appendChild(a));var s=Zb(Zb({},fY),n);Object.assign(a.style,s),a.textContent="".concat(t);var u=a.getBoundingClientRect(),f={width:u.width,height:u.height};return Wo.widthCache[i]=f,++Wo.cacheCount>uY&&(Wo.cacheCount=0,Wo.widthCache={}),f}catch{return{width:0,height:0}}},hY=function(t){return{top:t.top+window.scrollY-document.documentElement.clientTop,left:t.left+window.scrollX-document.documentElement.clientLeft}};function Sc(e){"@babel/helpers - typeof";return Sc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Sc(e)}function ah(e,t){return gY(e)||vY(e,t)||mY(e,t)||pY()}function pY(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function mY(e,t){if(e){if(typeof e=="string")return eC(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return eC(e,t)}}function eC(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function kY(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function oC(e,t){return IY(e)||MY(e,t)||RY(e,t)||TY()}function TY(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function RY(e,t){if(e){if(typeof e=="string")return sC(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return sC(e,t)}}function sC(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&arguments[0]!==void 0?arguments[0]:[];return H.reduce(function(X,Y){var $=Y.word,ee=Y.width,re=X[X.length-1];if(re&&(i==null||a||re.width+ee+nY.width?X:Y})};if(!d)return g;for(var y="…",b=function(H){var X=p.slice(0,H),Y=LL({breakAll:c,style:f,children:X+y}).wordsWithComputedWidth,$=m(Y),ee=$.length>s||w($).width>Number(i);return[ee,$]},_=0,j=p.length-1,P=0,k;_<=j&&P<=p.length-1;){var A=Math.floor((_+j)/2),N=A-1,C=b(N),T=oC(C,2),M=T[0],F=T[1],I=b(A),D=oC(I,1),q=D[0];if(!M&&!q&&(_=A+1),M&&q&&(j=A-1),!M&&q){k=F;break}P++}return k||g},lC=function(t){var r=He(t)?[]:t.toString().split(DL);return[{words:r}]},LY=function(t){var r=t.width,n=t.scaleToFit,i=t.children,a=t.style,s=t.breakAll,u=t.maxLines;if((r||n)&&!oo.isSsr){var f,c,d=LL({breakAll:s,children:i,style:a});if(d){var p=d.wordsWithComputedWidth,m=d.spaceWidth;f=p,c=m}else return lC(i);return DY({breakAll:s,children:i,maxLines:u,style:a},f,c,r,n)}return lC(i)},cC="#808080",Ja=function(t){var r=t.x,n=r===void 0?0:r,i=t.y,a=i===void 0?0:i,s=t.lineHeight,u=s===void 0?"1em":s,f=t.capHeight,c=f===void 0?"0.71em":f,d=t.scaleToFit,p=d===void 0?!1:d,m=t.textAnchor,g=m===void 0?"start":m,w=t.verticalAnchor,y=w===void 0?"end":w,b=t.fill,_=b===void 0?cC:b,j=aC(t,NY),P=E.useMemo(function(){return LY({breakAll:j.breakAll,children:j.children,maxLines:j.maxLines,scaleToFit:p,style:j.style,width:j.width})},[j.breakAll,j.children,j.maxLines,p,j.style,j.width]),k=j.dx,A=j.dy,N=j.angle,C=j.className,T=j.breakAll,M=aC(j,CY);if(!Ft(n)||!Ft(a))return null;var F=n+(ye(k)?k:0),I=a+(ye(A)?A:0),D;switch(y){case"start":D=gx("calc(".concat(c,")"));break;case"middle":D=gx("calc(".concat((P.length-1)/2," * -").concat(u," + (").concat(c," / 2))"));break;default:D=gx("calc(".concat(P.length-1," * -").concat(u,")"));break}var q=[];if(p){var U=P[0].width,H=j.width;q.push("scale(".concat((ye(H)?H/U:1)/U,")"))}return N&&q.push("rotate(".concat(N,", ").concat(F,", ").concat(I,")")),q.length&&(M.transform=q.join(" ")),L.createElement("text",Jb({},Me(M,!0),{x:F,y:I,className:Ge("recharts-text",C),textAnchor:g,fill:_.includes("url")?cC:_}),P.map(function(X,Y){var $=X.words.join(T?"":" ");return L.createElement("tspan",{x:F,dy:Y===0?D:u,key:"".concat($,"-").concat(Y)},$)}))};function na(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function $Y(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function eS(e){let t,r,n;e.length!==2?(t=na,r=(u,f)=>na(e(u),f),n=(u,f)=>e(u)-f):(t=e===na||e===$Y?e:BY,r=e,n=e);function i(u,f,c=0,d=u.length){if(c>>1;r(u[p],f)<0?c=p+1:d=p}while(c>>1;r(u[p],f)<=0?c=p+1:d=p}while(cc&&n(u[p-1],f)>-n(u[p],f)?p-1:p}return{left:i,center:s,right:a}}function BY(){return 0}function $L(e){return e===null?NaN:+e}function*FY(e,t){for(let r of e)r!=null&&(r=+r)>=r&&(yield r)}const zY=eS(na),su=zY.right;eS($L).center;class uC extends Map{constructor(t,r=WY){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(const[n,i]of t)this.set(n,i)}get(t){return super.get(fC(this,t))}has(t){return super.has(fC(this,t))}set(t,r){return super.set(qY(this,t),r)}delete(t){return super.delete(UY(this,t))}}function fC({_intern:e,_key:t},r){const n=t(r);return e.has(n)?e.get(n):r}function qY({_intern:e,_key:t},r){const n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function UY({_intern:e,_key:t},r){const n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function WY(e){return e!==null&&typeof e=="object"?e.valueOf():e}function HY(e=na){if(e===na)return BL;if(typeof e!="function")throw new TypeError("compare is not a function");return(t,r)=>{const n=e(t,r);return n||n===0?n:(e(r,r)===0)-(e(t,t)===0)}}function BL(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}const VY=Math.sqrt(50),GY=Math.sqrt(10),XY=Math.sqrt(2);function oh(e,t,r){const n=(t-e)/Math.max(0,r),i=Math.floor(Math.log10(n)),a=n/Math.pow(10,i),s=a>=VY?10:a>=GY?5:a>=XY?2:1;let u,f,c;return i<0?(c=Math.pow(10,-i)/s,u=Math.round(e*c),f=Math.round(t*c),u/ct&&--f,c=-c):(c=Math.pow(10,i)*s,u=Math.round(e/c),f=Math.round(t/c),u*ct&&--f),f0))return[];if(e===t)return[e];const n=t=i))return[];const u=a-i+1,f=new Array(u);if(n)if(s<0)for(let c=0;c=n)&&(r=n);return r}function hC(e,t){let r;for(const n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);return r}function FL(e,t,r=0,n=1/0,i){if(t=Math.floor(t),r=Math.floor(Math.max(0,r)),n=Math.floor(Math.min(e.length-1,n)),!(r<=t&&t<=n))return e;for(i=i===void 0?BL:HY(i);n>r;){if(n-r>600){const f=n-r+1,c=t-r+1,d=Math.log(f),p=.5*Math.exp(2*d/3),m=.5*Math.sqrt(d*p*(f-p)/f)*(c-f/2<0?-1:1),g=Math.max(r,Math.floor(t-c*p/f+m)),w=Math.min(n,Math.floor(t+(f-c)*p/f+m));FL(e,t,g,w,i)}const a=e[t];let s=r,u=n;for(Vl(e,r,t),i(e[n],a)>0&&Vl(e,r,n);s0;)--u}i(e[r],a)===0?Vl(e,r,u):(++u,Vl(e,u,n)),u<=t&&(r=u+1),t<=u&&(n=u-1)}return e}function Vl(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function KY(e,t,r){if(e=Float64Array.from(FY(e)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return hC(e);if(t>=1)return dC(e);var n,i=(n-1)*t,a=Math.floor(i),s=dC(FL(e,a).subarray(0,a+1)),u=hC(e.subarray(a+1));return s+(u-s)*(i-a)}}function YY(e,t,r=$L){if(!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return+r(e[0],0,e);if(t>=1)return+r(e[n-1],n-1,e);var n,i=(n-1)*t,a=Math.floor(i),s=+r(e[a],a,e),u=+r(e[a+1],a+1,e);return s+(u-s)*(i-a)}}function QY(e,t,r){e=+e,t=+t,r=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((t-e)/r))|0,a=new Array(i);++n>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?yd(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?yd(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=JY.exec(e))?new Or(t[1],t[2],t[3],1):(t=eQ.exec(e))?new Or(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=tQ.exec(e))?yd(t[1],t[2],t[3],t[4]):(t=rQ.exec(e))?yd(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=nQ.exec(e))?bC(t[1],t[2]/100,t[3]/100,1):(t=iQ.exec(e))?bC(t[1],t[2]/100,t[3]/100,t[4]):pC.hasOwnProperty(e)?gC(pC[e]):e==="transparent"?new Or(NaN,NaN,NaN,0):null}function gC(e){return new Or(e>>16&255,e>>8&255,e&255,1)}function yd(e,t,r,n){return n<=0&&(e=t=r=NaN),new Or(e,t,r,n)}function sQ(e){return e instanceof lu||(e=Ec(e)),e?(e=e.rgb(),new Or(e.r,e.g,e.b,e.opacity)):new Or}function i1(e,t,r,n){return arguments.length===1?sQ(e):new Or(e,t,r,n??1)}function Or(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}rS(Or,i1,qL(lu,{brighter(e){return e=e==null?sh:Math.pow(sh,e),new Or(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?jc:Math.pow(jc,e),new Or(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Or(za(this.r),za(this.g),za(this.b),lh(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:yC,formatHex:yC,formatHex8:lQ,formatRgb:xC,toString:xC}));function yC(){return`#${$a(this.r)}${$a(this.g)}${$a(this.b)}`}function lQ(){return`#${$a(this.r)}${$a(this.g)}${$a(this.b)}${$a((isNaN(this.opacity)?1:this.opacity)*255)}`}function xC(){const e=lh(this.opacity);return`${e===1?"rgb(":"rgba("}${za(this.r)}, ${za(this.g)}, ${za(this.b)}${e===1?")":`, ${e})`}`}function lh(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function za(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function $a(e){return e=za(e),(e<16?"0":"")+e.toString(16)}function bC(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Sn(e,t,r,n)}function UL(e){if(e instanceof Sn)return new Sn(e.h,e.s,e.l,e.opacity);if(e instanceof lu||(e=Ec(e)),!e)return new Sn;if(e instanceof Sn)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),a=Math.max(t,r,n),s=NaN,u=a-i,f=(a+i)/2;return u?(t===a?s=(r-n)/u+(r0&&f<1?0:s,new Sn(s,u,f,e.opacity)}function cQ(e,t,r,n){return arguments.length===1?UL(e):new Sn(e,t,r,n??1)}function Sn(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}rS(Sn,cQ,qL(lu,{brighter(e){return e=e==null?sh:Math.pow(sh,e),new Sn(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?jc:Math.pow(jc,e),new Sn(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new Or(yx(e>=240?e-240:e+120,i,n),yx(e,i,n),yx(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new Sn(wC(this.h),xd(this.s),xd(this.l),lh(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=lh(this.opacity);return`${e===1?"hsl(":"hsla("}${wC(this.h)}, ${xd(this.s)*100}%, ${xd(this.l)*100}%${e===1?")":`, ${e})`}`}}));function wC(e){return e=(e||0)%360,e<0?e+360:e}function xd(e){return Math.max(0,Math.min(1,e||0))}function yx(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}const nS=e=>()=>e;function uQ(e,t){return function(r){return e+r*t}}function fQ(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function dQ(e){return(e=+e)==1?WL:function(t,r){return r-t?fQ(t,r,e):nS(isNaN(t)?r:t)}}function WL(e,t){var r=t-e;return r?uQ(e,r):nS(isNaN(e)?t:e)}const SC=(function e(t){var r=dQ(t);function n(i,a){var s=r((i=i1(i)).r,(a=i1(a)).r),u=r(i.g,a.g),f=r(i.b,a.b),c=WL(i.opacity,a.opacity);return function(d){return i.r=s(d),i.g=u(d),i.b=f(d),i.opacity=c(d),i+""}}return n.gamma=e,n})(1);function hQ(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),i;return function(a){for(i=0;ir&&(a=t.slice(r,a),u[s]?u[s]+=a:u[++s]=a),(n=n[0])===(i=i[0])?u[s]?u[s]+=i:u[++s]=i:(u[++s]=null,f.push({i:s,x:ch(n,i)})),r=xx.lastIndex;return rt&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function jQ(e,t,r){var n=e[0],i=e[1],a=t[0],s=t[1];return i2?OQ:jQ,f=c=null,p}function p(m){return m==null||isNaN(m=+m)?a:(f||(f=u(e.map(n),t,r)))(n(s(m)))}return p.invert=function(m){return s(i((c||(c=u(t,e.map(n),ch)))(m)))},p.domain=function(m){return arguments.length?(e=Array.from(m,uh),d()):e.slice()},p.range=function(m){return arguments.length?(t=Array.from(m),d()):t.slice()},p.rangeRound=function(m){return t=Array.from(m),r=iS,d()},p.clamp=function(m){return arguments.length?(s=m?!0:mr,d()):s!==mr},p.interpolate=function(m){return arguments.length?(r=m,d()):r},p.unknown=function(m){return arguments.length?(a=m,p):a},function(m,g){return n=m,i=g,d()}}function aS(){return Np()(mr,mr)}function EQ(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function fh(e,t){if(!isFinite(e)||e===0)return null;var r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"),n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function gs(e){return e=fh(Math.abs(e)),e?e[1]:NaN}function PQ(e,t){return function(r,n){for(var i=r.length,a=[],s=0,u=e[0],f=0;i>0&&u>0&&(f+u+1>n&&(u=Math.max(1,n-f)),a.push(r.substring(i-=u,i+u)),!((f+=u+1)>n));)u=e[s=(s+1)%e.length];return a.reverse().join(t)}}function AQ(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var NQ=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Pc(e){if(!(t=NQ.exec(e)))throw new Error("invalid format: "+e);var t;return new oS({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Pc.prototype=oS.prototype;function oS(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}oS.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function CQ(e){e:for(var t=e.length,r=1,n=-1,i;r0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(i+1):e}var dh;function kQ(e,t){var r=fh(e,t);if(!r)return dh=void 0,e.toPrecision(t);var n=r[0],i=r[1],a=i-(dh=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=n.length;return a===s?n:a>s?n+new Array(a-s+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+fh(e,Math.max(0,t+a-1))[0]}function jC(e,t){var r=fh(e,t);if(!r)return e+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}const OC={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:EQ,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>jC(e*100,t),r:jC,s:kQ,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function EC(e){return e}var PC=Array.prototype.map,AC=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function TQ(e){var t=e.grouping===void 0||e.thousands===void 0?EC:PQ(PC.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",i=e.decimal===void 0?".":e.decimal+"",a=e.numerals===void 0?EC:AQ(PC.call(e.numerals,String)),s=e.percent===void 0?"%":e.percent+"",u=e.minus===void 0?"−":e.minus+"",f=e.nan===void 0?"NaN":e.nan+"";function c(p,m){p=Pc(p);var g=p.fill,w=p.align,y=p.sign,b=p.symbol,_=p.zero,j=p.width,P=p.comma,k=p.precision,A=p.trim,N=p.type;N==="n"?(P=!0,N="g"):OC[N]||(k===void 0&&(k=12),A=!0,N="g"),(_||g==="0"&&w==="=")&&(_=!0,g="0",w="=");var C=(m&&m.prefix!==void 0?m.prefix:"")+(b==="$"?r:b==="#"&&/[boxX]/.test(N)?"0"+N.toLowerCase():""),T=(b==="$"?n:/[%p]/.test(N)?s:"")+(m&&m.suffix!==void 0?m.suffix:""),M=OC[N],F=/[defgprs%]/.test(N);k=k===void 0?6:/[gprs]/.test(N)?Math.max(1,Math.min(21,k)):Math.max(0,Math.min(20,k));function I(D){var q=C,U=T,H,X,Y;if(N==="c")U=M(D)+U,D="";else{D=+D;var $=D<0||1/D<0;if(D=isNaN(D)?f:M(Math.abs(D),k),A&&(D=CQ(D)),$&&+D==0&&y!=="+"&&($=!1),q=($?y==="("?y:u:y==="-"||y==="("?"":y)+q,U=(N==="s"&&!isNaN(D)&&dh!==void 0?AC[8+dh/3]:"")+U+($&&y==="("?")":""),F){for(H=-1,X=D.length;++HY||Y>57){U=(Y===46?i+D.slice(H+1):D.slice(H))+U,D=D.slice(0,H);break}}}P&&!_&&(D=t(D,1/0));var ee=q.length+D.length+U.length,re=ee>1)+q+D+U+re.slice(ee);break;default:D=re+q+D+U;break}return a(D)}return I.toString=function(){return p+""},I}function d(p,m){var g=Math.max(-8,Math.min(8,Math.floor(gs(m)/3)))*3,w=Math.pow(10,-g),y=c((p=Pc(p),p.type="f",p),{suffix:AC[8+g/3]});return function(b){return y(w*b)}}return{format:c,formatPrefix:d}}var bd,sS,HL;RQ({thousands:",",grouping:[3],currency:["$",""]});function RQ(e){return bd=TQ(e),sS=bd.format,HL=bd.formatPrefix,bd}function MQ(e){return Math.max(0,-gs(Math.abs(e)))}function IQ(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(gs(t)/3)))*3-gs(Math.abs(e)))}function DQ(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,gs(t)-gs(e))+1}function VL(e,t,r,n){var i=r1(e,t,r),a;switch(n=Pc(n??",f"),n.type){case"s":{var s=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(a=IQ(i,s))&&(n.precision=a),HL(n,s)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=DQ(i,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=MQ(i))&&(n.precision=a-(n.type==="%")*2);break}}return sS(n)}function ua(e){var t=e.domain;return e.ticks=function(r){var n=t();return e1(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var i=t();return VL(i[0],i[i.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),i=0,a=n.length-1,s=n[i],u=n[a],f,c,d=10;for(u0;){if(c=t1(s,u,r),c===f)return n[i]=s,n[a]=u,t(n);if(c>0)s=Math.floor(s/c)*c,u=Math.ceil(u/c)*c;else if(c<0)s=Math.ceil(s*c)/c,u=Math.floor(u*c)/c;else break;f=c}return e},e}function hh(){var e=aS();return e.copy=function(){return cu(e,hh())},cn.apply(e,arguments),ua(e)}function GL(e){var t;function r(n){return n==null||isNaN(n=+n)?t:n}return r.invert=r,r.domain=r.range=function(n){return arguments.length?(e=Array.from(n,uh),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return GL(e).unknown(t)},e=arguments.length?Array.from(e,uh):[0,1],ua(r)}function XL(e,t){e=e.slice();var r=0,n=e.length-1,i=e[r],a=e[n],s;return aMath.pow(e,t)}function zQ(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function kC(e){return(t,r)=>-e(-t,r)}function lS(e){const t=e(NC,CC),r=t.domain;let n=10,i,a;function s(){return i=zQ(n),a=FQ(n),r()[0]<0?(i=kC(i),a=kC(a),e(LQ,$Q)):e(NC,CC),t}return t.base=function(u){return arguments.length?(n=+u,s()):n},t.domain=function(u){return arguments.length?(r(u),s()):r()},t.ticks=u=>{const f=r();let c=f[0],d=f[f.length-1];const p=d0){for(;m<=g;++m)for(w=1;wd)break;_.push(y)}}else for(;m<=g;++m)for(w=n-1;w>=1;--w)if(y=m>0?w/a(-m):w*a(m),!(yd)break;_.push(y)}_.length*2{if(u==null&&(u=10),f==null&&(f=n===10?"s":","),typeof f!="function"&&(!(n%1)&&(f=Pc(f)).precision==null&&(f.trim=!0),f=sS(f)),u===1/0)return f;const c=Math.max(1,n*u/t.ticks().length);return d=>{let p=d/a(Math.round(i(d)));return p*nr(XL(r(),{floor:u=>a(Math.floor(i(u))),ceil:u=>a(Math.ceil(i(u)))})),t}function KL(){const e=lS(Np()).domain([1,10]);return e.copy=()=>cu(e,KL()).base(e.base()),cn.apply(e,arguments),e}function TC(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function RC(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function cS(e){var t=1,r=e(TC(t),RC(t));return r.constant=function(n){return arguments.length?e(TC(t=+n),RC(t)):t},ua(r)}function YL(){var e=cS(Np());return e.copy=function(){return cu(e,YL()).constant(e.constant())},cn.apply(e,arguments)}function MC(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function qQ(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function UQ(e){return e<0?-e*e:e*e}function uS(e){var t=e(mr,mr),r=1;function n(){return r===1?e(mr,mr):r===.5?e(qQ,UQ):e(MC(r),MC(1/r))}return t.exponent=function(i){return arguments.length?(r=+i,n()):r},ua(t)}function fS(){var e=uS(Np());return e.copy=function(){return cu(e,fS()).exponent(e.exponent())},cn.apply(e,arguments),e}function WQ(){return fS.apply(null,arguments).exponent(.5)}function IC(e){return Math.sign(e)*e*e}function HQ(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function QL(){var e=aS(),t=[0,1],r=!1,n;function i(a){var s=HQ(e(a));return isNaN(s)?n:r?Math.round(s):s}return i.invert=function(a){return e.invert(IC(a))},i.domain=function(a){return arguments.length?(e.domain(a),i):e.domain()},i.range=function(a){return arguments.length?(e.range((t=Array.from(a,uh)).map(IC)),i):t.slice()},i.rangeRound=function(a){return i.range(a).round(!0)},i.round=function(a){return arguments.length?(r=!!a,i):r},i.clamp=function(a){return arguments.length?(e.clamp(a),i):e.clamp()},i.unknown=function(a){return arguments.length?(n=a,i):n},i.copy=function(){return QL(e.domain(),t).round(r).clamp(e.clamp()).unknown(n)},cn.apply(i,arguments),ua(i)}function ZL(){var e=[],t=[],r=[],n;function i(){var s=0,u=Math.max(1,t.length);for(r=new Array(u-1);++s0?r[u-1]:e[0],u=r?[n[r-1],t]:[n[c-1],n[c]]},s.unknown=function(f){return arguments.length&&(a=f),s},s.thresholds=function(){return n.slice()},s.copy=function(){return JL().domain([e,t]).range(i).unknown(a)},cn.apply(ua(s),arguments)}function e3(){var e=[.5],t=[0,1],r,n=1;function i(a){return a!=null&&a<=a?t[su(e,a,0,n)]:r}return i.domain=function(a){return arguments.length?(e=Array.from(a),n=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(a){return arguments.length?(t=Array.from(a),n=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(a){var s=t.indexOf(a);return[e[s-1],e[s]]},i.unknown=function(a){return arguments.length?(r=a,i):r},i.copy=function(){return e3().domain(e).range(t).unknown(r)},cn.apply(i,arguments)}const bx=new Date,wx=new Date;function zt(e,t,r,n){function i(a){return e(a=arguments.length===0?new Date:new Date(+a)),a}return i.floor=a=>(e(a=new Date(+a)),a),i.ceil=a=>(e(a=new Date(a-1)),t(a,1),e(a),a),i.round=a=>{const s=i(a),u=i.ceil(a);return a-s(t(a=new Date(+a),s==null?1:Math.floor(s)),a),i.range=(a,s,u)=>{const f=[];if(a=i.ceil(a),u=u==null?1:Math.floor(u),!(a0))return f;let c;do f.push(c=new Date(+a)),t(a,u),e(a);while(czt(s=>{if(s>=s)for(;e(s),!a(s);)s.setTime(s-1)},(s,u)=>{if(s>=s)if(u<0)for(;++u<=0;)for(;t(s,-1),!a(s););else for(;--u>=0;)for(;t(s,1),!a(s););}),r&&(i.count=(a,s)=>(bx.setTime(+a),wx.setTime(+s),e(bx),e(wx),Math.floor(r(bx,wx))),i.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?i.filter(n?s=>n(s)%a===0:s=>i.count(0,s)%a===0):i)),i}const ph=zt(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);ph.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?zt(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):ph);ph.range;const fi=1e3,on=fi*60,di=on*60,bi=di*24,dS=bi*7,DC=bi*30,Sx=bi*365,Ba=zt(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*fi)},(e,t)=>(t-e)/fi,e=>e.getUTCSeconds());Ba.range;const hS=zt(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*fi)},(e,t)=>{e.setTime(+e+t*on)},(e,t)=>(t-e)/on,e=>e.getMinutes());hS.range;const pS=zt(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*on)},(e,t)=>(t-e)/on,e=>e.getUTCMinutes());pS.range;const mS=zt(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*fi-e.getMinutes()*on)},(e,t)=>{e.setTime(+e+t*di)},(e,t)=>(t-e)/di,e=>e.getHours());mS.range;const vS=zt(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*di)},(e,t)=>(t-e)/di,e=>e.getUTCHours());vS.range;const uu=zt(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*on)/bi,e=>e.getDate()-1);uu.range;const Cp=zt(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/bi,e=>e.getUTCDate()-1);Cp.range;const t3=zt(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/bi,e=>Math.floor(e/bi));t3.range;function so(e){return zt(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*on)/dS)}const kp=so(0),mh=so(1),VQ=so(2),GQ=so(3),ys=so(4),XQ=so(5),KQ=so(6);kp.range;mh.range;VQ.range;GQ.range;ys.range;XQ.range;KQ.range;function lo(e){return zt(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/dS)}const Tp=lo(0),vh=lo(1),YQ=lo(2),QQ=lo(3),xs=lo(4),ZQ=lo(5),JQ=lo(6);Tp.range;vh.range;YQ.range;QQ.range;xs.range;ZQ.range;JQ.range;const gS=zt(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());gS.range;const yS=zt(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());yS.range;const wi=zt(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());wi.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:zt(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});wi.range;const Si=zt(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Si.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:zt(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});Si.range;function r3(e,t,r,n,i,a){const s=[[Ba,1,fi],[Ba,5,5*fi],[Ba,15,15*fi],[Ba,30,30*fi],[a,1,on],[a,5,5*on],[a,15,15*on],[a,30,30*on],[i,1,di],[i,3,3*di],[i,6,6*di],[i,12,12*di],[n,1,bi],[n,2,2*bi],[r,1,dS],[t,1,DC],[t,3,3*DC],[e,1,Sx]];function u(c,d,p){const m=db).right(s,m);if(g===s.length)return e.every(r1(c/Sx,d/Sx,p));if(g===0)return ph.every(Math.max(r1(c,d,p),1));const[w,y]=s[m/s[g-1][2]53)return null;"w"in ae||(ae.w=1),"Z"in ae?(De=jx(Gl(ae.y,0,1)),ot=De.getUTCDay(),De=ot>4||ot===0?vh.ceil(De):vh(De),De=Cp.offset(De,(ae.V-1)*7),ae.y=De.getUTCFullYear(),ae.m=De.getUTCMonth(),ae.d=De.getUTCDate()+(ae.w+6)%7):(De=_x(Gl(ae.y,0,1)),ot=De.getDay(),De=ot>4||ot===0?mh.ceil(De):mh(De),De=uu.offset(De,(ae.V-1)*7),ae.y=De.getFullYear(),ae.m=De.getMonth(),ae.d=De.getDate()+(ae.w+6)%7)}else("W"in ae||"U"in ae)&&("w"in ae||(ae.w="u"in ae?ae.u%7:"W"in ae?1:0),ot="Z"in ae?jx(Gl(ae.y,0,1)).getUTCDay():_x(Gl(ae.y,0,1)).getDay(),ae.m=0,ae.d="W"in ae?(ae.w+6)%7+ae.W*7-(ot+5)%7:ae.w+ae.U*7-(ot+6)%7);return"Z"in ae?(ae.H+=ae.Z/100|0,ae.M+=ae.Z%100,jx(ae)):_x(ae)}}function T(ie,fe,xe,ae){for(var Be=0,De=fe.length,ot=xe.length,et,ct;Be=ot)return-1;if(et=fe.charCodeAt(Be++),et===37){if(et=fe.charAt(Be++),ct=A[et in LC?fe.charAt(Be++):et],!ct||(ae=ct(ie,xe,ae))<0)return-1}else if(et!=xe.charCodeAt(ae++))return-1}return ae}function M(ie,fe,xe){var ae=c.exec(fe.slice(xe));return ae?(ie.p=d.get(ae[0].toLowerCase()),xe+ae[0].length):-1}function F(ie,fe,xe){var ae=g.exec(fe.slice(xe));return ae?(ie.w=w.get(ae[0].toLowerCase()),xe+ae[0].length):-1}function I(ie,fe,xe){var ae=p.exec(fe.slice(xe));return ae?(ie.w=m.get(ae[0].toLowerCase()),xe+ae[0].length):-1}function D(ie,fe,xe){var ae=_.exec(fe.slice(xe));return ae?(ie.m=j.get(ae[0].toLowerCase()),xe+ae[0].length):-1}function q(ie,fe,xe){var ae=y.exec(fe.slice(xe));return ae?(ie.m=b.get(ae[0].toLowerCase()),xe+ae[0].length):-1}function U(ie,fe,xe){return T(ie,t,fe,xe)}function H(ie,fe,xe){return T(ie,r,fe,xe)}function X(ie,fe,xe){return T(ie,n,fe,xe)}function Y(ie){return s[ie.getDay()]}function $(ie){return a[ie.getDay()]}function ee(ie){return f[ie.getMonth()]}function re(ie){return u[ie.getMonth()]}function z(ie){return i[+(ie.getHours()>=12)]}function K(ie){return 1+~~(ie.getMonth()/3)}function se(ie){return s[ie.getUTCDay()]}function pe(ie){return a[ie.getUTCDay()]}function G(ie){return f[ie.getUTCMonth()]}function Q(ie){return u[ie.getUTCMonth()]}function J(ie){return i[+(ie.getUTCHours()>=12)]}function ce(ie){return 1+~~(ie.getUTCMonth()/3)}return{format:function(ie){var fe=N(ie+="",P);return fe.toString=function(){return ie},fe},parse:function(ie){var fe=C(ie+="",!1);return fe.toString=function(){return ie},fe},utcFormat:function(ie){var fe=N(ie+="",k);return fe.toString=function(){return ie},fe},utcParse:function(ie){var fe=C(ie+="",!0);return fe.toString=function(){return ie},fe}}}var LC={"-":"",_:" ",0:"0"},Zt=/^\s*\d+/,aZ=/^%/,oZ=/[\\^$*+?|[\]().{}]/g;function it(e,t,r){var n=e<0?"-":"",i=(n?-e:e)+"",a=i.length;return n+(a[t.toLowerCase(),r]))}function lZ(e,t,r){var n=Zt.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function cZ(e,t,r){var n=Zt.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function uZ(e,t,r){var n=Zt.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function fZ(e,t,r){var n=Zt.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function dZ(e,t,r){var n=Zt.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function $C(e,t,r){var n=Zt.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function BC(e,t,r){var n=Zt.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function hZ(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function pZ(e,t,r){var n=Zt.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function mZ(e,t,r){var n=Zt.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function FC(e,t,r){var n=Zt.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function vZ(e,t,r){var n=Zt.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function zC(e,t,r){var n=Zt.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function gZ(e,t,r){var n=Zt.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function yZ(e,t,r){var n=Zt.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function xZ(e,t,r){var n=Zt.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function bZ(e,t,r){var n=Zt.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function wZ(e,t,r){var n=aZ.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function SZ(e,t,r){var n=Zt.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function _Z(e,t,r){var n=Zt.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function qC(e,t){return it(e.getDate(),t,2)}function jZ(e,t){return it(e.getHours(),t,2)}function OZ(e,t){return it(e.getHours()%12||12,t,2)}function EZ(e,t){return it(1+uu.count(wi(e),e),t,3)}function n3(e,t){return it(e.getMilliseconds(),t,3)}function PZ(e,t){return n3(e,t)+"000"}function AZ(e,t){return it(e.getMonth()+1,t,2)}function NZ(e,t){return it(e.getMinutes(),t,2)}function CZ(e,t){return it(e.getSeconds(),t,2)}function kZ(e){var t=e.getDay();return t===0?7:t}function TZ(e,t){return it(kp.count(wi(e)-1,e),t,2)}function i3(e){var t=e.getDay();return t>=4||t===0?ys(e):ys.ceil(e)}function RZ(e,t){return e=i3(e),it(ys.count(wi(e),e)+(wi(e).getDay()===4),t,2)}function MZ(e){return e.getDay()}function IZ(e,t){return it(mh.count(wi(e)-1,e),t,2)}function DZ(e,t){return it(e.getFullYear()%100,t,2)}function LZ(e,t){return e=i3(e),it(e.getFullYear()%100,t,2)}function $Z(e,t){return it(e.getFullYear()%1e4,t,4)}function BZ(e,t){var r=e.getDay();return e=r>=4||r===0?ys(e):ys.ceil(e),it(e.getFullYear()%1e4,t,4)}function FZ(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+it(t/60|0,"0",2)+it(t%60,"0",2)}function UC(e,t){return it(e.getUTCDate(),t,2)}function zZ(e,t){return it(e.getUTCHours(),t,2)}function qZ(e,t){return it(e.getUTCHours()%12||12,t,2)}function UZ(e,t){return it(1+Cp.count(Si(e),e),t,3)}function a3(e,t){return it(e.getUTCMilliseconds(),t,3)}function WZ(e,t){return a3(e,t)+"000"}function HZ(e,t){return it(e.getUTCMonth()+1,t,2)}function VZ(e,t){return it(e.getUTCMinutes(),t,2)}function GZ(e,t){return it(e.getUTCSeconds(),t,2)}function XZ(e){var t=e.getUTCDay();return t===0?7:t}function KZ(e,t){return it(Tp.count(Si(e)-1,e),t,2)}function o3(e){var t=e.getUTCDay();return t>=4||t===0?xs(e):xs.ceil(e)}function YZ(e,t){return e=o3(e),it(xs.count(Si(e),e)+(Si(e).getUTCDay()===4),t,2)}function QZ(e){return e.getUTCDay()}function ZZ(e,t){return it(vh.count(Si(e)-1,e),t,2)}function JZ(e,t){return it(e.getUTCFullYear()%100,t,2)}function eJ(e,t){return e=o3(e),it(e.getUTCFullYear()%100,t,2)}function tJ(e,t){return it(e.getUTCFullYear()%1e4,t,4)}function rJ(e,t){var r=e.getUTCDay();return e=r>=4||r===0?xs(e):xs.ceil(e),it(e.getUTCFullYear()%1e4,t,4)}function nJ(){return"+0000"}function WC(){return"%"}function HC(e){return+e}function VC(e){return Math.floor(+e/1e3)}var Ho,s3,l3;iJ({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function iJ(e){return Ho=iZ(e),s3=Ho.format,Ho.parse,l3=Ho.utcFormat,Ho.utcParse,Ho}function aJ(e){return new Date(e)}function oJ(e){return e instanceof Date?+e:+new Date(+e)}function xS(e,t,r,n,i,a,s,u,f,c){var d=aS(),p=d.invert,m=d.domain,g=c(".%L"),w=c(":%S"),y=c("%I:%M"),b=c("%I %p"),_=c("%a %d"),j=c("%b %d"),P=c("%B"),k=c("%Y");function A(N){return(f(N)t(i/(e.length-1)))},r.quantiles=function(n){return Array.from({length:n+1},(i,a)=>KY(e,a/n))},r.copy=function(){return d3(t).domain(e)},Ei.apply(r,arguments)}function Mp(){var e=0,t=.5,r=1,n=1,i,a,s,u,f,c=mr,d,p=!1,m;function g(y){return isNaN(y=+y)?m:(y=.5+((y=+d(y))-a)*(n*yr}return Ex=e,Ex}var Px,YC;function fJ(){if(YC)return Px;YC=1;var e=Ip(),t=v3(),r=Gs();function n(i){return i&&i.length?e(i,r,t):void 0}return Px=n,Px}var dJ=fJ();const Dp=at(dJ);var Ax,QC;function g3(){if(QC)return Ax;QC=1;function e(t,r){return te.e^a.s<0?1:-1;for(n=a.d.length,i=e.d.length,t=0,r=ne.d[t]^a.s<0?1:-1;return n===i?0:n>i^a.s<0?1:-1};_e.decimalPlaces=_e.dp=function(){var e=this,t=e.d.length-1,r=(t-e.e)*xt;if(t=e.d[t],t)for(;t%10==0;t/=10)r--;return r<0?0:r};_e.dividedBy=_e.div=function(e){return mi(this,new this.constructor(e))};_e.dividedToIntegerBy=_e.idiv=function(e){var t=this,r=t.constructor;return dt(mi(t,new r(e),0,1),r.precision)};_e.equals=_e.eq=function(e){return!this.cmp(e)};_e.exponent=function(){return Tt(this)};_e.greaterThan=_e.gt=function(e){return this.cmp(e)>0};_e.greaterThanOrEqualTo=_e.gte=function(e){return this.cmp(e)>=0};_e.isInteger=_e.isint=function(){return this.e>this.d.length-2};_e.isNegative=_e.isneg=function(){return this.s<0};_e.isPositive=_e.ispos=function(){return this.s>0};_e.isZero=function(){return this.s===0};_e.lessThan=_e.lt=function(e){return this.cmp(e)<0};_e.lessThanOrEqualTo=_e.lte=function(e){return this.cmp(e)<1};_e.logarithm=_e.log=function(e){var t,r=this,n=r.constructor,i=n.precision,a=i+5;if(e===void 0)e=new n(10);else if(e=new n(e),e.s<1||e.eq(zr))throw Error(sn+"NaN");if(r.s<1)throw Error(sn+(r.s?"NaN":"-Infinity"));return r.eq(zr)?new n(0):(wt=!1,t=mi(Ac(r,a),Ac(e,a),a),wt=!0,dt(t,i))};_e.minus=_e.sub=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?w3(t,e):x3(t,(e.s=-e.s,e))};_e.modulo=_e.mod=function(e){var t,r=this,n=r.constructor,i=n.precision;if(e=new n(e),!e.s)throw Error(sn+"NaN");return r.s?(wt=!1,t=mi(r,e,0,1).times(e),wt=!0,r.minus(t)):dt(new n(r),i)};_e.naturalExponential=_e.exp=function(){return b3(this)};_e.naturalLogarithm=_e.ln=function(){return Ac(this)};_e.negated=_e.neg=function(){var e=new this.constructor(this);return e.s=-e.s||0,e};_e.plus=_e.add=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?x3(t,e):w3(t,(e.s=-e.s,e))};_e.precision=_e.sd=function(e){var t,r,n,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(qa+e);if(t=Tt(i)+1,n=i.d.length-1,r=n*xt+1,n=i.d[n],n){for(;n%10==0;n/=10)r--;for(n=i.d[0];n>=10;n/=10)r++}return e&&t>r?t:r};_e.squareRoot=_e.sqrt=function(){var e,t,r,n,i,a,s,u=this,f=u.constructor;if(u.s<1){if(!u.s)return new f(0);throw Error(sn+"NaN")}for(e=Tt(u),wt=!1,i=Math.sqrt(+u),i==0||i==1/0?(t=Dn(u.d),(t.length+e)%2==0&&(t+="0"),i=Math.sqrt(t),e=Ys((e+1)/2)-(e<0||e%2),i==1/0?t="5e"+e:(t=i.toExponential(),t=t.slice(0,t.indexOf("e")+1)+e),n=new f(t)):n=new f(i.toString()),r=f.precision,i=s=r+3;;)if(a=n,n=a.plus(mi(u,a,s+2)).times(.5),Dn(a.d).slice(0,s)===(t=Dn(n.d)).slice(0,s)){if(t=t.slice(s-3,s+1),i==s&&t=="4999"){if(dt(a,r+1,0),a.times(a).eq(u)){n=a;break}}else if(t!="9999")break;s+=4}return wt=!0,dt(n,r)};_e.times=_e.mul=function(e){var t,r,n,i,a,s,u,f,c,d=this,p=d.constructor,m=d.d,g=(e=new p(e)).d;if(!d.s||!e.s)return new p(0);for(e.s*=d.s,r=d.e+e.e,f=m.length,c=g.length,f=0;){for(t=0,i=f+n;i>n;)u=a[i]+g[n]*m[i-n-1]+t,a[i--]=u%Gt|0,t=u/Gt|0;a[i]=(a[i]+t)%Gt|0}for(;!a[--s];)a.pop();return t?++r:a.shift(),e.d=a,e.e=r,wt?dt(e,p.precision):e};_e.toDecimalPlaces=_e.todp=function(e,t){var r=this,n=r.constructor;return r=new n(r),e===void 0?r:(Hn(e,0,Ks),t===void 0?t=n.rounding:Hn(t,0,8),dt(r,e+Tt(r)+1,t))};_e.toExponential=function(e,t){var r,n=this,i=n.constructor;return e===void 0?r=eo(n,!0):(Hn(e,0,Ks),t===void 0?t=i.rounding:Hn(t,0,8),n=dt(new i(n),e+1,t),r=eo(n,!0,e+1)),r};_e.toFixed=function(e,t){var r,n,i=this,a=i.constructor;return e===void 0?eo(i):(Hn(e,0,Ks),t===void 0?t=a.rounding:Hn(t,0,8),n=dt(new a(i),e+Tt(i)+1,t),r=eo(n.abs(),!1,e+Tt(n)+1),i.isneg()&&!i.isZero()?"-"+r:r)};_e.toInteger=_e.toint=function(){var e=this,t=e.constructor;return dt(new t(e),Tt(e)+1,t.rounding)};_e.toNumber=function(){return+this};_e.toPower=_e.pow=function(e){var t,r,n,i,a,s,u=this,f=u.constructor,c=12,d=+(e=new f(e));if(!e.s)return new f(zr);if(u=new f(u),!u.s){if(e.s<1)throw Error(sn+"Infinity");return u}if(u.eq(zr))return u;if(n=f.precision,e.eq(zr))return dt(u,n);if(t=e.e,r=e.d.length-1,s=t>=r,a=u.s,s){if((r=d<0?-d:d)<=y3){for(i=new f(zr),t=Math.ceil(n/xt+4),wt=!1;r%2&&(i=i.times(u),nk(i.d,t)),r=Ys(r/2),r!==0;)u=u.times(u),nk(u.d,t);return wt=!0,e.s<0?new f(zr).div(i):dt(i,n)}}else if(a<0)throw Error(sn+"NaN");return a=a<0&&e.d[Math.max(t,r)]&1?-1:1,u.s=1,wt=!1,i=e.times(Ac(u,n+c)),wt=!0,i=b3(i),i.s=a,i};_e.toPrecision=function(e,t){var r,n,i=this,a=i.constructor;return e===void 0?(r=Tt(i),n=eo(i,r<=a.toExpNeg||r>=a.toExpPos)):(Hn(e,1,Ks),t===void 0?t=a.rounding:Hn(t,0,8),i=dt(new a(i),e,t),r=Tt(i),n=eo(i,e<=r||r<=a.toExpNeg,e)),n};_e.toSignificantDigits=_e.tosd=function(e,t){var r=this,n=r.constructor;return e===void 0?(e=n.precision,t=n.rounding):(Hn(e,1,Ks),t===void 0?t=n.rounding:Hn(t,0,8)),dt(new n(r),e,t)};_e.toString=_e.valueOf=_e.val=_e.toJSON=_e[Symbol.for("nodejs.util.inspect.custom")]=function(){var e=this,t=Tt(e),r=e.constructor;return eo(e,t<=r.toExpNeg||t>=r.toExpPos)};function x3(e,t){var r,n,i,a,s,u,f,c,d=e.constructor,p=d.precision;if(!e.s||!t.s)return t.s||(t=new d(e)),wt?dt(t,p):t;if(f=e.d,c=t.d,s=e.e,i=t.e,f=f.slice(),a=s-i,a){for(a<0?(n=f,a=-a,u=c.length):(n=c,i=s,u=f.length),s=Math.ceil(p/xt),u=s>u?s+1:u+1,a>u&&(a=u,n.length=1),n.reverse();a--;)n.push(0);n.reverse()}for(u=f.length,a=c.length,u-a<0&&(a=u,n=c,c=f,f=n),r=0;a;)r=(f[--a]=f[a]+c[a]+r)/Gt|0,f[a]%=Gt;for(r&&(f.unshift(r),++i),u=f.length;f[--u]==0;)f.pop();return t.d=f,t.e=i,wt?dt(t,p):t}function Hn(e,t,r){if(e!==~~e||er)throw Error(qa+e)}function Dn(e){var t,r,n,i=e.length-1,a="",s=e[0];if(i>0){for(a+=s,t=1;ts?1:-1;else for(u=f=0;ui[u]?1:-1;break}return f}function r(n,i,a){for(var s=0;a--;)n[a]-=s,s=n[a]1;)n.shift()}return function(n,i,a,s){var u,f,c,d,p,m,g,w,y,b,_,j,P,k,A,N,C,T,M=n.constructor,F=n.s==i.s?1:-1,I=n.d,D=i.d;if(!n.s)return new M(n);if(!i.s)throw Error(sn+"Division by zero");for(f=n.e-i.e,C=D.length,A=I.length,g=new M(F),w=g.d=[],c=0;D[c]==(I[c]||0);)++c;if(D[c]>(I[c]||0)&&--f,a==null?j=a=M.precision:s?j=a+(Tt(n)-Tt(i))+1:j=a,j<0)return new M(0);if(j=j/xt+2|0,c=0,C==1)for(d=0,D=D[0],j++;(c1&&(D=e(D,d),I=e(I,d),C=D.length,A=I.length),k=C,y=I.slice(0,C),b=y.length;b=Gt/2&&++N;do d=0,u=t(D,y,C,b),u<0?(_=y[0],C!=b&&(_=_*Gt+(y[1]||0)),d=_/N|0,d>1?(d>=Gt&&(d=Gt-1),p=e(D,d),m=p.length,b=y.length,u=t(p,y,m,b),u==1&&(d--,r(p,C16)throw Error(SS+Tt(e));if(!e.s)return new d(zr);for(wt=!1,u=p,s=new d(.03125);e.abs().gte(.1);)e=e.times(s),c+=5;for(n=Math.log(Ra(2,c))/Math.LN10*2+5|0,u+=n,r=i=a=new d(zr),d.precision=u;;){if(i=dt(i.times(e),u),r=r.times(++f),s=a.plus(mi(i,r,u)),Dn(s.d).slice(0,u)===Dn(a.d).slice(0,u)){for(;c--;)a=dt(a.times(a),u);return d.precision=p,t==null?(wt=!0,dt(a,p)):a}a=s}}function Tt(e){for(var t=e.e*xt,r=e.d[0];r>=10;r/=10)t++;return t}function Rx(e,t,r){if(t>e.LN10.sd())throw wt=!0,r&&(e.precision=r),Error(sn+"LN10 precision limit exceeded");return dt(new e(e.LN10),t)}function Zi(e){for(var t="";e--;)t+="0";return t}function Ac(e,t){var r,n,i,a,s,u,f,c,d,p=1,m=10,g=e,w=g.d,y=g.constructor,b=y.precision;if(g.s<1)throw Error(sn+(g.s?"NaN":"-Infinity"));if(g.eq(zr))return new y(0);if(t==null?(wt=!1,c=b):c=t,g.eq(10))return t==null&&(wt=!0),Rx(y,c);if(c+=m,y.precision=c,r=Dn(w),n=r.charAt(0),a=Tt(g),Math.abs(a)<15e14){for(;n<7&&n!=1||n==1&&r.charAt(1)>3;)g=g.times(e),r=Dn(g.d),n=r.charAt(0),p++;a=Tt(g),n>1?(g=new y("0."+r),a++):g=new y(n+"."+r.slice(1))}else return f=Rx(y,c+2,b).times(a+""),g=Ac(new y(n+"."+r.slice(1)),c-m).plus(f),y.precision=b,t==null?(wt=!0,dt(g,b)):g;for(u=s=g=mi(g.minus(zr),g.plus(zr),c),d=dt(g.times(g),c),i=3;;){if(s=dt(s.times(d),c),f=u.plus(mi(s,new y(i),c)),Dn(f.d).slice(0,c)===Dn(u.d).slice(0,c))return u=u.times(2),a!==0&&(u=u.plus(Rx(y,c+2,b).times(a+""))),u=mi(u,new y(p),c),y.precision=b,t==null?(wt=!0,dt(u,b)):u;u=f,i+=2}}function rk(e,t){var r,n,i;for((r=t.indexOf("."))>-1&&(t=t.replace(".","")),(n=t.search(/e/i))>0?(r<0&&(r=n),r+=+t.slice(n+1),t=t.substring(0,n)):r<0&&(r=t.length),n=0;t.charCodeAt(n)===48;)++n;for(i=t.length;t.charCodeAt(i-1)===48;)--i;if(t=t.slice(n,i),t){if(i-=n,r=r-n-1,e.e=Ys(r/xt),e.d=[],n=(r+1)%xt,r<0&&(n+=xt),ngh||e.e<-gh))throw Error(SS+r)}else e.s=0,e.e=0,e.d=[0];return e}function dt(e,t,r){var n,i,a,s,u,f,c,d,p=e.d;for(s=1,a=p[0];a>=10;a/=10)s++;if(n=t-s,n<0)n+=xt,i=t,c=p[d=0];else{if(d=Math.ceil((n+1)/xt),a=p.length,d>=a)return e;for(c=a=p[d],s=1;a>=10;a/=10)s++;n%=xt,i=n-xt+s}if(r!==void 0&&(a=Ra(10,s-i-1),u=c/a%10|0,f=t<0||p[d+1]!==void 0||c%a,f=r<4?(u||f)&&(r==0||r==(e.s<0?3:2)):u>5||u==5&&(r==4||f||r==6&&(n>0?i>0?c/Ra(10,s-i):0:p[d-1])%10&1||r==(e.s<0?8:7))),t<1||!p[0])return f?(a=Tt(e),p.length=1,t=t-a-1,p[0]=Ra(10,(xt-t%xt)%xt),e.e=Ys(-t/xt)||0):(p.length=1,p[0]=e.e=e.s=0),e;if(n==0?(p.length=d,a=1,d--):(p.length=d+1,a=Ra(10,xt-n),p[d]=i>0?(c/Ra(10,s-i)%Ra(10,i)|0)*a:0),f)for(;;)if(d==0){(p[0]+=a)==Gt&&(p[0]=1,++e.e);break}else{if(p[d]+=a,p[d]!=Gt)break;p[d--]=0,a=1}for(n=p.length;p[--n]===0;)p.pop();if(wt&&(e.e>gh||e.e<-gh))throw Error(SS+Tt(e));return e}function w3(e,t){var r,n,i,a,s,u,f,c,d,p,m=e.constructor,g=m.precision;if(!e.s||!t.s)return t.s?t.s=-t.s:t=new m(e),wt?dt(t,g):t;if(f=e.d,p=t.d,n=t.e,c=e.e,f=f.slice(),s=c-n,s){for(d=s<0,d?(r=f,s=-s,u=p.length):(r=p,n=c,u=f.length),i=Math.max(Math.ceil(g/xt),u)+2,s>i&&(s=i,r.length=1),r.reverse(),i=s;i--;)r.push(0);r.reverse()}else{for(i=f.length,u=p.length,d=i0;--i)f[u++]=0;for(i=p.length;i>s;){if(f[--i]0?a=a.charAt(0)+"."+a.slice(1)+Zi(n):s>1&&(a=a.charAt(0)+"."+a.slice(1)),a=a+(i<0?"e":"e+")+i):i<0?(a="0."+Zi(-i-1)+a,r&&(n=r-s)>0&&(a+=Zi(n))):i>=s?(a+=Zi(i+1-s),r&&(n=r-i-1)>0&&(a=a+"."+Zi(n))):((n=i+1)0&&(i+1===s&&(a+="."),a+=Zi(n))),e.s<0?"-"+a:a}function nk(e,t){if(e.length>t)return e.length=t,!0}function S3(e){var t,r,n;function i(a){var s=this;if(!(s instanceof i))return new i(a);if(s.constructor=i,a instanceof i){s.s=a.s,s.e=a.e,s.d=(a=a.d)?a.slice():a;return}if(typeof a=="number"){if(a*0!==0)throw Error(qa+a);if(a>0)s.s=1;else if(a<0)a=-a,s.s=-1;else{s.s=0,s.e=0,s.d=[0];return}if(a===~~a&&a<1e7){s.e=0,s.d=[a];return}return rk(s,a.toString())}else if(typeof a!="string")throw Error(qa+a);if(a.charCodeAt(0)===45?(a=a.slice(1),s.s=-1):s.s=1,SJ.test(a))rk(s,a);else throw Error(qa+a)}if(i.prototype=_e,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.clone=S3,i.config=i.set=_J,e===void 0&&(e={}),e)for(n=["precision","rounding","toExpNeg","toExpPos","LN10"],t=0;t=i[t+1]&&n<=i[t+2])this[r]=n;else throw Error(qa+r+": "+n);if((n=e[r="LN10"])!==void 0)if(n==Math.LN10)this[r]=new this(n);else throw Error(qa+r+": "+n);return this}var _S=S3(wJ);zr=new _S(1);const ft=_S;function jJ(e){return AJ(e)||PJ(e)||EJ(e)||OJ()}function OJ(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function EJ(e,t){if(e){if(typeof e=="string")return s1(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return s1(e,t)}}function PJ(e){if(typeof Symbol<"u"&&Symbol.iterator in Object(e))return Array.from(e)}function AJ(e){if(Array.isArray(e))return s1(e)}function s1(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=t?r.apply(void 0,i):e(t-s,ik(function(){for(var u=arguments.length,f=new Array(u),c=0;ce.length)&&(t=e.length);for(var r=0,n=new Array(t);r"u"||!(Symbol.iterator in Object(e)))){var r=[],n=!0,i=!1,a=void 0;try{for(var s=e[Symbol.iterator](),u;!(n=(u=s.next()).done)&&(r.push(u.value),!(t&&r.length===t));n=!0);}catch(f){i=!0,a=f}finally{try{!n&&s.return!=null&&s.return()}finally{if(i)throw a}}return r}}function UJ(e){if(Array.isArray(e))return e}function P3(e){var t=Nc(e,2),r=t[0],n=t[1],i=r,a=n;return r>n&&(i=n,a=r),[i,a]}function A3(e,t,r){if(e.lte(0))return new ft(0);var n=Bp.getDigitCount(e.toNumber()),i=new ft(10).pow(n),a=e.div(i),s=n!==1?.05:.1,u=new ft(Math.ceil(a.div(s).toNumber())).add(r).mul(s),f=u.mul(i);return t?f:new ft(Math.ceil(f))}function WJ(e,t,r){var n=1,i=new ft(e);if(!i.isint()&&r){var a=Math.abs(e);a<1?(n=new ft(10).pow(Bp.getDigitCount(e)-1),i=new ft(Math.floor(i.div(n).toNumber())).mul(n)):a>1&&(i=new ft(Math.floor(e)))}else e===0?i=new ft(Math.floor((t-1)/2)):r||(i=new ft(Math.floor(e)));var s=Math.floor((t-1)/2),u=TJ(kJ(function(f){return i.add(new ft(f-s).mul(n)).toNumber()}),l1);return u(0,t)}function N3(e,t,r,n){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0;if(!Number.isFinite((t-e)/(r-1)))return{step:new ft(0),tickMin:new ft(0),tickMax:new ft(0)};var a=A3(new ft(t).sub(e).div(r-1),n,i),s;e<=0&&t>=0?s=new ft(0):(s=new ft(e).add(t).div(2),s=s.sub(new ft(s).mod(a)));var u=Math.ceil(s.sub(e).div(a).toNumber()),f=Math.ceil(new ft(t).sub(s).div(a).toNumber()),c=u+f+1;return c>r?N3(e,t,r,n,i+1):(c0?f+(r-c):f,u=t>0?u:u+(r-c)),{step:a,tickMin:s.sub(new ft(u).mul(a)),tickMax:s.add(new ft(f).mul(a))})}function HJ(e){var t=Nc(e,2),r=t[0],n=t[1],i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:6,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=Math.max(i,2),u=P3([r,n]),f=Nc(u,2),c=f[0],d=f[1];if(c===-1/0||d===1/0){var p=d===1/0?[c].concat(u1(l1(0,i-1).map(function(){return 1/0}))):[].concat(u1(l1(0,i-1).map(function(){return-1/0})),[d]);return r>n?c1(p):p}if(c===d)return WJ(c,i,a);var m=N3(c,d,s,a),g=m.step,w=m.tickMin,y=m.tickMax,b=Bp.rangeStep(w,y.add(new ft(.1).mul(g)),g);return r>n?c1(b):b}function VJ(e,t){var r=Nc(e,2),n=r[0],i=r[1],a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=P3([n,i]),u=Nc(s,2),f=u[0],c=u[1];if(f===-1/0||c===1/0)return[n,i];if(f===c)return[f];var d=Math.max(t,2),p=A3(new ft(c).sub(f).div(d-1),a,0),m=[].concat(u1(Bp.rangeStep(new ft(f),new ft(c).sub(new ft(.99).mul(p)),p)),[c]);return n>i?c1(m):m}var GJ=O3(HJ),XJ=O3(VJ),KJ="Invariant failed";function to(e,t){throw new Error(KJ)}var YJ=["offset","layout","width","dataKey","data","dataPointFormatter","xAxis","yAxis"];function bs(e){"@babel/helpers - typeof";return bs=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},bs(e)}function yh(){return yh=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function nee(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function iee(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function aee(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&arguments[1]!==void 0?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0,a=arguments.length>3?arguments[3]:void 0,s=-1,u=(r=n?.length)!==null&&r!==void 0?r:0;if(u<=1)return 0;if(a&&a.axisType==="angleAxis"&&Math.abs(Math.abs(a.range[1]-a.range[0])-360)<=1e-6)for(var f=a.range,c=0;c0?i[c-1].coordinate:i[u-1].coordinate,p=i[c].coordinate,m=c>=u-1?i[0].coordinate:i[c+1].coordinate,g=void 0;if(hr(p-d)!==hr(m-p)){var w=[];if(hr(m-p)===hr(f[1]-f[0])){g=m;var y=p+f[1]-f[0];w[0]=Math.min(y,(y+d)/2),w[1]=Math.max(y,(y+d)/2)}else{g=d;var b=m+f[1]-f[0];w[0]=Math.min(p,(b+p)/2),w[1]=Math.max(p,(b+p)/2)}var _=[Math.min(p,(g+p)/2),Math.max(p,(g+p)/2)];if(t>_[0]&&t<=_[1]||t>=w[0]&&t<=w[1]){s=i[c].index;break}}else{var j=Math.min(d,m),P=Math.max(d,m);if(t>(j+p)/2&&t<=(P+p)/2){s=i[c].index;break}}}else for(var k=0;k0&&k(n[k].coordinate+n[k-1].coordinate)/2&&t<=(n[k].coordinate+n[k+1].coordinate)/2||k===u-1&&t>(n[k].coordinate+n[k-1].coordinate)/2){s=n[k].index;break}return s},jS=function(t){var r,n=t,i=n.type.displayName,a=(r=t.type)!==null&&r!==void 0&&r.defaultProps?Pt(Pt({},t.type.defaultProps),t.props):t.props,s=a.stroke,u=a.fill,f;switch(i){case"Line":f=s;break;case"Area":case"Radar":f=s&&s!=="none"?s:u;break;default:f=u;break}return f},See=function(t){var r=t.barSize,n=t.totalSize,i=t.stackGroups,a=i===void 0?{}:i;if(!a)return{};for(var s={},u=Object.keys(a),f=0,c=u.length;f=0});if(_&&_.length){var j=_[0].type.defaultProps,P=j!==void 0?Pt(Pt({},j),_[0].props):_[0].props,k=P.barSize,A=P[b];s[A]||(s[A]=[]);var N=He(k)?r:k;s[A].push({item:_[0],stackList:_.slice(1),barSize:He(N)?void 0:pr(N,n,0)})}}return s},_ee=function(t){var r=t.barGap,n=t.barCategoryGap,i=t.bandSize,a=t.sizeList,s=a===void 0?[]:a,u=t.maxBarSize,f=s.length;if(f<1)return null;var c=pr(r,i,0,!0),d,p=[];if(s[0].barSize===+s[0].barSize){var m=!1,g=i/f,w=s.reduce(function(k,A){return k+A.barSize||0},0);w+=(f-1)*c,w>=i&&(w-=(f-1)*c,c=0),w>=i&&g>0&&(m=!0,g*=.9,w=f*g);var y=(i-w)/2>>0,b={offset:y-c,size:0};d=s.reduce(function(k,A){var N={item:A.item,position:{offset:b.offset+b.size+c,size:m?g:A.barSize}},C=[].concat(sk(k),[N]);return b=C[C.length-1].position,A.stackList&&A.stackList.length&&A.stackList.forEach(function(T){C.push({item:T,position:b})}),C},p)}else{var _=pr(n,i,0,!0);i-2*_-(f-1)*c<=0&&(c=0);var j=(i-2*_-(f-1)*c)/f;j>1&&(j>>=0);var P=u===+u?Math.min(j,u):j;d=s.reduce(function(k,A,N){var C=[].concat(sk(k),[{item:A.item,position:{offset:_+(j+c)*N+(j-P)/2,size:P}}]);return A.stackList&&A.stackList.length&&A.stackList.forEach(function(T){C.push({item:T,position:C[C.length-1].position})}),C},p)}return d},jee=function(t,r,n,i){var a=n.children,s=n.width,u=n.margin,f=s-(u.left||0)-(u.right||0),c=R3({children:a,legendWidth:f});if(c){var d=i||{},p=d.width,m=d.height,g=c.align,w=c.verticalAlign,y=c.layout;if((y==="vertical"||y==="horizontal"&&w==="middle")&&g!=="center"&&ye(t[g]))return Pt(Pt({},t),{},ls({},g,t[g]+(p||0)));if((y==="horizontal"||y==="vertical"&&g==="center")&&w!=="middle"&&ye(t[w]))return Pt(Pt({},t),{},ls({},w,t[w]+(m||0)))}return t},Oee=function(t,r,n){return He(r)?!0:t==="horizontal"?r==="yAxis":t==="vertical"||n==="x"?r==="xAxis":n==="y"?r==="yAxis":!0},M3=function(t,r,n,i,a){var s=r.props.children,u=Wr(s,du).filter(function(c){return Oee(i,a,c.props.direction)});if(u&&u.length){var f=u.map(function(c){return c.props.dataKey});return t.reduce(function(c,d){var p=Bt(d,n);if(He(p))return c;var m=Array.isArray(p)?[Lp(p),Dp(p)]:[p,p],g=f.reduce(function(w,y){var b=Bt(d,y,0),_=m[0]-Math.abs(Array.isArray(b)?b[0]:b),j=m[1]+Math.abs(Array.isArray(b)?b[1]:b);return[Math.min(_,w[0]),Math.max(j,w[1])]},[1/0,-1/0]);return[Math.min(g[0],c[0]),Math.max(g[1],c[1])]},[1/0,-1/0])}return null},Eee=function(t,r,n,i,a){var s=r.map(function(u){return M3(t,u,n,a,i)}).filter(function(u){return!He(u)});return s&&s.length?s.reduce(function(u,f){return[Math.min(u[0],f[0]),Math.max(u[1],f[1])]},[1/0,-1/0]):null},I3=function(t,r,n,i,a){var s=r.map(function(f){var c=f.props.dataKey;return n==="number"&&c&&M3(t,f,c,i)||lc(t,c,n,a)});if(n==="number")return s.reduce(function(f,c){return[Math.min(f[0],c[0]),Math.max(f[1],c[1])]},[1/0,-1/0]);var u={};return s.reduce(function(f,c){for(var d=0,p=c.length;d=2?hr(u[0]-u[1])*2*c:c,r&&(t.ticks||t.niceTicks)){var d=(t.ticks||t.niceTicks).map(function(p){var m=a?a.indexOf(p):p;return{coordinate:i(m)+c,value:p,offset:c}});return d.filter(function(p){return!au(p.coordinate)})}return t.isCategorical&&t.categoricalDomain?t.categoricalDomain.map(function(p,m){return{coordinate:i(p)+c,value:p,index:m,offset:c}}):i.ticks&&!n?i.ticks(t.tickCount).map(function(p){return{coordinate:i(p)+c,value:p,offset:c}}):i.domain().map(function(p,m){return{coordinate:i(p)+c,value:a?a[p]:p,index:m,offset:c}})},Mx=new WeakMap,wd=function(t,r){if(typeof r!="function")return t;Mx.has(t)||Mx.set(t,new WeakMap);var n=Mx.get(t);if(n.has(r))return n.get(r);var i=function(){t.apply(void 0,arguments),r.apply(void 0,arguments)};return n.set(r,i),i},$3=function(t,r,n){var i=t.scale,a=t.type,s=t.layout,u=t.axisType;if(i==="auto")return s==="radial"&&u==="radiusAxis"?{scale:_c(),realScaleType:"band"}:s==="radial"&&u==="angleAxis"?{scale:hh(),realScaleType:"linear"}:a==="category"&&r&&(r.indexOf("LineChart")>=0||r.indexOf("AreaChart")>=0||r.indexOf("ComposedChart")>=0&&!n)?{scale:sc(),realScaleType:"point"}:a==="category"?{scale:_c(),realScaleType:"band"}:{scale:hh(),realScaleType:"linear"};if(Qa(i)){var f="scale".concat(wp(i));return{scale:(GC[f]||sc)(),realScaleType:GC[f]?f:"point"}}return $e(i)?{scale:i}:{scale:sc(),realScaleType:"point"}},ck=1e-4,B3=function(t){var r=t.domain();if(!(!r||r.length<=2)){var n=r.length,i=t.range(),a=Math.min(i[0],i[1])-ck,s=Math.max(i[0],i[1])+ck,u=t(r[0]),f=t(r[n-1]);(us||fs)&&t.domain([r[0],r[n-1]])}},Pee=function(t,r){if(!t)return null;for(var n=0,i=t.length;ni)&&(a[1]=i),a[0]>i&&(a[0]=i),a[1]=0?(t[u][n][0]=a,t[u][n][1]=a+f,a=t[u][n][1]):(t[u][n][0]=s,t[u][n][1]=s+f,s=t[u][n][1])}},Cee=function(t){var r=t.length;if(!(r<=0))for(var n=0,i=t[0].length;n=0?(t[s][n][0]=a,t[s][n][1]=a+u,a=t[s][n][1]):(t[s][n][0]=0,t[s][n][1]=0)}},kee={sign:Nee,expand:yG,none:ds,silhouette:xG,wiggle:bG,positive:Cee},Tee=function(t,r,n){var i=r.map(function(u){return u.props.dataKey}),a=kee[n],s=gG().keys(i).value(function(u,f){return+Bt(u,f,0)}).order(Ub).offset(a);return s(t)},Ree=function(t,r,n,i,a,s){if(!t)return null;var u=s?r.reverse():r,f={},c=u.reduce(function(p,m){var g,w=(g=m.type)!==null&&g!==void 0&&g.defaultProps?Pt(Pt({},m.type.defaultProps),m.props):m.props,y=w.stackId,b=w.hide;if(b)return p;var _=w[n],j=p[_]||{hasStack:!1,stackGroups:{}};if(Ft(y)){var P=j.stackGroups[y]||{numericAxisId:n,cateAxisId:i,items:[]};P.items.push(m),j.hasStack=!0,j.stackGroups[y]=P}else j.stackGroups[Vs("_stackId_")]={numericAxisId:n,cateAxisId:i,items:[m]};return Pt(Pt({},p),{},ls({},_,j))},f),d={};return Object.keys(c).reduce(function(p,m){var g=c[m];if(g.hasStack){var w={};g.stackGroups=Object.keys(g.stackGroups).reduce(function(y,b){var _=g.stackGroups[b];return Pt(Pt({},y),{},ls({},b,{numericAxisId:n,cateAxisId:i,items:_.items,stackedData:Tee(t,_.items,a)}))},w)}return Pt(Pt({},p),{},ls({},m,g))},d)},F3=function(t,r){var n=r.realScaleType,i=r.type,a=r.tickCount,s=r.originalDomain,u=r.allowDecimals,f=n||r.scale;if(f!=="auto"&&f!=="linear")return null;if(a&&i==="number"&&s&&(s[0]==="auto"||s[1]==="auto")){var c=t.domain();if(!c.length)return null;var d=GJ(c,a,u);return t.domain([Lp(d),Dp(d)]),{niceTicks:d}}if(a&&i==="number"){var p=t.domain(),m=XJ(p,a,u);return{niceTicks:m}}return null};function uk(e){var t=e.axis,r=e.ticks,n=e.bandSize,i=e.entry,a=e.index,s=e.dataKey;if(t.type==="category"){if(!t.allowDuplicatedCategory&&t.dataKey&&!He(i[t.dataKey])){var u=Gd(r,"value",i[t.dataKey]);if(u)return u.coordinate+n/2}return r[a]?r[a].coordinate+n/2:null}var f=Bt(i,He(s)?t.dataKey:s);return He(f)?null:t.scale(f)}var fk=function(t){var r=t.axis,n=t.ticks,i=t.offset,a=t.bandSize,s=t.entry,u=t.index;if(r.type==="category")return n[u]?n[u].coordinate+i:null;var f=Bt(s,r.dataKey,r.domain[u]);return He(f)?null:r.scale(f)-a/2+i},Mee=function(t){var r=t.numericAxis,n=r.scale.domain();if(r.type==="number"){var i=Math.min(n[0],n[1]),a=Math.max(n[0],n[1]);return i<=0&&a>=0?0:a<0?a:i}return n[0]},Iee=function(t,r){var n,i=(n=t.type)!==null&&n!==void 0&&n.defaultProps?Pt(Pt({},t.type.defaultProps),t.props):t.props,a=i.stackId;if(Ft(a)){var s=r[a];if(s){var u=s.items.indexOf(t);return u>=0?s.stackedData[u]:null}}return null},Dee=function(t){return t.reduce(function(r,n){return[Lp(n.concat([r[0]]).filter(ye)),Dp(n.concat([r[1]]).filter(ye))]},[1/0,-1/0])},z3=function(t,r,n){return Object.keys(t).reduce(function(i,a){var s=t[a],u=s.stackedData,f=u.reduce(function(c,d){var p=Dee(d.slice(r,n+1));return[Math.min(c[0],p[0]),Math.max(c[1],p[1])]},[1/0,-1/0]);return[Math.min(f[0],i[0]),Math.max(f[1],i[1])]},[1/0,-1/0]).map(function(i){return i===1/0||i===-1/0?0:i})},dk=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,hk=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,p1=function(t,r,n){if($e(t))return t(r,n);if(!Array.isArray(t))return r;var i=[];if(ye(t[0]))i[0]=n?t[0]:Math.min(t[0],r[0]);else if(dk.test(t[0])){var a=+dk.exec(t[0])[1];i[0]=r[0]-a}else $e(t[0])?i[0]=t[0](r[0]):i[0]=r[0];if(ye(t[1]))i[1]=n?t[1]:Math.max(t[1],r[1]);else if(hk.test(t[1])){var s=+hk.exec(t[1])[1];i[1]=r[1]+s}else $e(t[1])?i[1]=t[1](r[1]):i[1]=r[1];return i},bh=function(t,r,n){if(t&&t.scale&&t.scale.bandwidth){var i=t.scale.bandwidth();if(!n||i>0)return i}if(t&&r&&r.length>=2){for(var a=Zw(r,function(p){return p.coordinate}),s=1/0,u=1,f=a.length;ue.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&arguments[2]!==void 0?arguments[2]:{top:0,right:0,bottom:0,left:0};return Math.min(Math.abs(t-(n.left||0)-(n.right||0)),Math.abs(r-(n.top||0)-(n.bottom||0)))/2},Hee=function(t,r,n,i,a){var s=t.width,u=t.height,f=t.startAngle,c=t.endAngle,d=pr(t.cx,s,s/2),p=pr(t.cy,u,u/2),m=W3(s,u,n),g=pr(t.innerRadius,m,0),w=pr(t.outerRadius,m,m*.8),y=Object.keys(r);return y.reduce(function(b,_){var j=r[_],P=j.domain,k=j.reversed,A;if(He(j.range))i==="angleAxis"?A=[f,c]:i==="radiusAxis"&&(A=[g,w]),k&&(A=[A[1],A[0]]);else{A=j.range;var N=A,C=Bee(N,2);f=C[0],c=C[1]}var T=$3(j,a),M=T.realScaleType,F=T.scale;F.domain(P).range(A),B3(F);var I=F3(F,ui(ui({},j),{},{realScaleType:M})),D=ui(ui(ui({},j),I),{},{range:A,radius:w,realScaleType:M,scale:F,cx:d,cy:p,innerRadius:g,outerRadius:w,startAngle:f,endAngle:c});return ui(ui({},b),{},U3({},_,D))},{})},Vee=function(t,r){var n=t.x,i=t.y,a=r.x,s=r.y;return Math.sqrt(Math.pow(n-a,2)+Math.pow(i-s,2))},Gee=function(t,r){var n=t.x,i=t.y,a=r.cx,s=r.cy,u=Vee({x:n,y:i},{x:a,y:s});if(u<=0)return{radius:u};var f=(n-a)/u,c=Math.acos(f);return i>s&&(c=2*Math.PI-c),{radius:u,angle:Wee(c),angleInRadian:c}},Xee=function(t){var r=t.startAngle,n=t.endAngle,i=Math.floor(r/360),a=Math.floor(n/360),s=Math.min(i,a);return{startAngle:r-s*360,endAngle:n-s*360}},Kee=function(t,r){var n=r.startAngle,i=r.endAngle,a=Math.floor(n/360),s=Math.floor(i/360),u=Math.min(a,s);return t+u*360},gk=function(t,r){var n=t.x,i=t.y,a=Gee({x:n,y:i},r),s=a.radius,u=a.angle,f=r.innerRadius,c=r.outerRadius;if(sc)return!1;if(s===0)return!0;var d=Xee(r),p=d.startAngle,m=d.endAngle,g=u,w;if(p<=m){for(;g>m;)g-=360;for(;g=p&&g<=m}else{for(;g>p;)g-=360;for(;g=m&&g<=p}return w?ui(ui({},r),{},{radius:s,angle:Kee(g,r)}):null},H3=function(t){return!E.isValidElement(t)&&!$e(t)&&typeof t!="boolean"?t.className:""};function Rc(e){"@babel/helpers - typeof";return Rc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Rc(e)}var Yee=["offset"];function Qee(e){return tte(e)||ete(e)||Jee(e)||Zee()}function Zee(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Jee(e,t){if(e){if(typeof e=="string")return m1(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return m1(e,t)}}function ete(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function tte(e){if(Array.isArray(e))return m1(e)}function m1(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function nte(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function yk(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function $t(e){for(var t=1;t=0?1:-1,P,k;i==="insideStart"?(P=g+j*s,k=y):i==="insideEnd"?(P=w-j*s,k=!y):i==="end"&&(P=w+j*s,k=y),k=_<=0?k:!k;var A=vt(c,d,b,P),N=vt(c,d,b,P+(k?1:-1)*359),C="M".concat(A.x,",").concat(A.y,` + A`).concat(b,",").concat(b,",0,1,").concat(k?0:1,`, + `).concat(N.x,",").concat(N.y),T=He(t.id)?Vs("recharts-radial-line-"):t.id;return L.createElement("text",Mc({},n,{dominantBaseline:"central",className:Ge("recharts-radial-bar-label",u)}),L.createElement("defs",null,L.createElement("path",{id:T,d:C})),L.createElement("textPath",{xlinkHref:"#".concat(T)},r))},ute=function(t){var r=t.viewBox,n=t.offset,i=t.position,a=r,s=a.cx,u=a.cy,f=a.innerRadius,c=a.outerRadius,d=a.startAngle,p=a.endAngle,m=(d+p)/2;if(i==="outside"){var g=vt(s,u,c+n,m),w=g.x,y=g.y;return{x:w,y,textAnchor:w>=s?"start":"end",verticalAnchor:"middle"}}if(i==="center")return{x:s,y:u,textAnchor:"middle",verticalAnchor:"middle"};if(i==="centerTop")return{x:s,y:u,textAnchor:"middle",verticalAnchor:"start"};if(i==="centerBottom")return{x:s,y:u,textAnchor:"middle",verticalAnchor:"end"};var b=(f+c)/2,_=vt(s,u,b,m),j=_.x,P=_.y;return{x:j,y:P,textAnchor:"middle",verticalAnchor:"middle"}},fte=function(t){var r=t.viewBox,n=t.parentViewBox,i=t.offset,a=t.position,s=r,u=s.x,f=s.y,c=s.width,d=s.height,p=d>=0?1:-1,m=p*i,g=p>0?"end":"start",w=p>0?"start":"end",y=c>=0?1:-1,b=y*i,_=y>0?"end":"start",j=y>0?"start":"end";if(a==="top"){var P={x:u+c/2,y:f-p*i,textAnchor:"middle",verticalAnchor:g};return $t($t({},P),n?{height:Math.max(f-n.y,0),width:c}:{})}if(a==="bottom"){var k={x:u+c/2,y:f+d+m,textAnchor:"middle",verticalAnchor:w};return $t($t({},k),n?{height:Math.max(n.y+n.height-(f+d),0),width:c}:{})}if(a==="left"){var A={x:u-b,y:f+d/2,textAnchor:_,verticalAnchor:"middle"};return $t($t({},A),n?{width:Math.max(A.x-n.x,0),height:d}:{})}if(a==="right"){var N={x:u+c+b,y:f+d/2,textAnchor:j,verticalAnchor:"middle"};return $t($t({},N),n?{width:Math.max(n.x+n.width-N.x,0),height:d}:{})}var C=n?{width:c,height:d}:{};return a==="insideLeft"?$t({x:u+b,y:f+d/2,textAnchor:j,verticalAnchor:"middle"},C):a==="insideRight"?$t({x:u+c-b,y:f+d/2,textAnchor:_,verticalAnchor:"middle"},C):a==="insideTop"?$t({x:u+c/2,y:f+m,textAnchor:"middle",verticalAnchor:w},C):a==="insideBottom"?$t({x:u+c/2,y:f+d-m,textAnchor:"middle",verticalAnchor:g},C):a==="insideTopLeft"?$t({x:u+b,y:f+m,textAnchor:j,verticalAnchor:w},C):a==="insideTopRight"?$t({x:u+c-b,y:f+m,textAnchor:_,verticalAnchor:w},C):a==="insideBottomLeft"?$t({x:u+b,y:f+d-m,textAnchor:j,verticalAnchor:g},C):a==="insideBottomRight"?$t({x:u+c-b,y:f+d-m,textAnchor:_,verticalAnchor:g},C):Hs(a)&&(ye(a.x)||La(a.x))&&(ye(a.y)||La(a.y))?$t({x:u+pr(a.x,c),y:f+pr(a.y,d),textAnchor:"end",verticalAnchor:"end"},C):$t({x:u+c/2,y:f+d/2,textAnchor:"middle",verticalAnchor:"middle"},C)},dte=function(t){return"cx"in t&&ye(t.cx)};function Xt(e){var t=e.offset,r=t===void 0?5:t,n=rte(e,Yee),i=$t({offset:r},n),a=i.viewBox,s=i.position,u=i.value,f=i.children,c=i.content,d=i.className,p=d===void 0?"":d,m=i.textBreakAll;if(!a||He(u)&&He(f)&&!E.isValidElement(c)&&!$e(c))return null;if(E.isValidElement(c))return E.cloneElement(c,i);var g;if($e(c)){if(g=E.createElement(c,i),E.isValidElement(g))return g}else g=ste(i);var w=dte(a),y=Me(i,!0);if(w&&(s==="insideStart"||s==="insideEnd"||s==="end"))return cte(i,g,y);var b=w?ute(i):fte(i);return L.createElement(Ja,Mc({className:Ge("recharts-label",p)},y,b,{breakAll:m}),g)}Xt.displayName="Label";var V3=function(t){var r=t.cx,n=t.cy,i=t.angle,a=t.startAngle,s=t.endAngle,u=t.r,f=t.radius,c=t.innerRadius,d=t.outerRadius,p=t.x,m=t.y,g=t.top,w=t.left,y=t.width,b=t.height,_=t.clockWise,j=t.labelViewBox;if(j)return j;if(ye(y)&&ye(b)){if(ye(p)&&ye(m))return{x:p,y:m,width:y,height:b};if(ye(g)&&ye(w))return{x:g,y:w,width:y,height:b}}return ye(p)&&ye(m)?{x:p,y:m,width:0,height:0}:ye(r)&&ye(n)?{cx:r,cy:n,startAngle:a||i||0,endAngle:s||i||0,innerRadius:c||0,outerRadius:d||f||u||0,clockWise:_}:t.viewBox?t.viewBox:{}},hte=function(t,r){return t?t===!0?L.createElement(Xt,{key:"label-implicit",viewBox:r}):Ft(t)?L.createElement(Xt,{key:"label-implicit",viewBox:r,value:t}):E.isValidElement(t)?t.type===Xt?E.cloneElement(t,{key:"label-implicit",viewBox:r}):L.createElement(Xt,{key:"label-implicit",content:t,viewBox:r}):$e(t)?L.createElement(Xt,{key:"label-implicit",content:t,viewBox:r}):Hs(t)?L.createElement(Xt,Mc({viewBox:r},t,{key:"label-implicit"})):null:null},pte=function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(!t||!t.children&&n&&!t.label)return null;var i=t.children,a=V3(t),s=Wr(i,Xt).map(function(f,c){return E.cloneElement(f,{viewBox:r||a,key:"label-".concat(c)})});if(!n)return s;var u=hte(t.label,r||a);return[u].concat(Qee(s))};Xt.parseViewBox=V3;Xt.renderCallByParent=pte;var Ix,xk;function mte(){if(xk)return Ix;xk=1;function e(t){var r=t==null?0:t.length;return r?t[r-1]:void 0}return Ix=e,Ix}var vte=mte();const gte=at(vte);function Ic(e){"@babel/helpers - typeof";return Ic=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ic(e)}var yte=["valueAccessor"],xte=["data","dataKey","clockWise","id","textBreakAll"];function bte(e){return jte(e)||_te(e)||Ste(e)||wte()}function wte(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ste(e,t){if(e){if(typeof e=="string")return v1(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return v1(e,t)}}function _te(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function jte(e){if(Array.isArray(e))return v1(e)}function v1(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Ate(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var Nte=function(t){return Array.isArray(t.value)?gte(t.value):t.value};function vi(e){var t=e.valueAccessor,r=t===void 0?Nte:t,n=Sk(e,yte),i=n.data,a=n.dataKey,s=n.clockWise,u=n.id,f=n.textBreakAll,c=Sk(n,xte);return!i||!i.length?null:L.createElement(rt,{className:"recharts-label-list"},i.map(function(d,p){var m=He(a)?r(d,p):Bt(d&&d.payload,a),g=He(u)?{}:{id:"".concat(u,"-").concat(p)};return L.createElement(Xt,Sh({},Me(d,!0),c,g,{parentViewBox:d.parentViewBox,value:m,textBreakAll:f,viewBox:Xt.parseViewBox(He(s)?d:wk(wk({},d),{},{clockWise:s})),key:"label-".concat(p),index:p}))}))}vi.displayName="LabelList";function Cte(e,t){return e?e===!0?L.createElement(vi,{key:"labelList-implicit",data:t}):L.isValidElement(e)||$e(e)?L.createElement(vi,{key:"labelList-implicit",data:t,content:e}):Hs(e)?L.createElement(vi,Sh({data:t},e,{key:"labelList-implicit"})):null:null}function kte(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(!e||!e.children&&r&&!e.label)return null;var n=e.children,i=Wr(n,vi).map(function(s,u){return E.cloneElement(s,{data:t,key:"labelList-".concat(u)})});if(!r)return i;var a=Cte(e.label,t);return[a].concat(bte(i))}vi.renderCallByParent=kte;function Dc(e){"@babel/helpers - typeof";return Dc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Dc(e)}function g1(){return g1=Object.assign?Object.assign.bind():function(e){for(var t=1;t180),",").concat(+(s>c),`, + `).concat(p.x,",").concat(p.y,` + `);if(i>0){var g=vt(r,n,i,s),w=vt(r,n,i,c);m+="L ".concat(w.x,",").concat(w.y,` + A `).concat(i,",").concat(i,`,0, + `).concat(+(Math.abs(f)>180),",").concat(+(s<=c),`, + `).concat(g.x,",").concat(g.y," Z")}else m+="L ".concat(r,",").concat(n," Z");return m},Dte=function(t){var r=t.cx,n=t.cy,i=t.innerRadius,a=t.outerRadius,s=t.cornerRadius,u=t.forceCornerRadius,f=t.cornerIsExternal,c=t.startAngle,d=t.endAngle,p=hr(d-c),m=Sd({cx:r,cy:n,radius:a,angle:c,sign:p,cornerRadius:s,cornerIsExternal:f}),g=m.circleTangency,w=m.lineTangency,y=m.theta,b=Sd({cx:r,cy:n,radius:a,angle:d,sign:-p,cornerRadius:s,cornerIsExternal:f}),_=b.circleTangency,j=b.lineTangency,P=b.theta,k=f?Math.abs(c-d):Math.abs(c-d)-y-P;if(k<0)return u?"M ".concat(w.x,",").concat(w.y,` + a`).concat(s,",").concat(s,",0,0,1,").concat(s*2,`,0 + a`).concat(s,",").concat(s,",0,0,1,").concat(-s*2,`,0 + `):G3({cx:r,cy:n,innerRadius:i,outerRadius:a,startAngle:c,endAngle:d});var A="M ".concat(w.x,",").concat(w.y,` + A`).concat(s,",").concat(s,",0,0,").concat(+(p<0),",").concat(g.x,",").concat(g.y,` + A`).concat(a,",").concat(a,",0,").concat(+(k>180),",").concat(+(p<0),",").concat(_.x,",").concat(_.y,` + A`).concat(s,",").concat(s,",0,0,").concat(+(p<0),",").concat(j.x,",").concat(j.y,` + `);if(i>0){var N=Sd({cx:r,cy:n,radius:i,angle:c,sign:p,isExternal:!0,cornerRadius:s,cornerIsExternal:f}),C=N.circleTangency,T=N.lineTangency,M=N.theta,F=Sd({cx:r,cy:n,radius:i,angle:d,sign:-p,isExternal:!0,cornerRadius:s,cornerIsExternal:f}),I=F.circleTangency,D=F.lineTangency,q=F.theta,U=f?Math.abs(c-d):Math.abs(c-d)-M-q;if(U<0&&s===0)return"".concat(A,"L").concat(r,",").concat(n,"Z");A+="L".concat(D.x,",").concat(D.y,` + A`).concat(s,",").concat(s,",0,0,").concat(+(p<0),",").concat(I.x,",").concat(I.y,` + A`).concat(i,",").concat(i,",0,").concat(+(U>180),",").concat(+(p>0),",").concat(C.x,",").concat(C.y,` + A`).concat(s,",").concat(s,",0,0,").concat(+(p<0),",").concat(T.x,",").concat(T.y,"Z")}else A+="L".concat(r,",").concat(n,"Z");return A},Lte={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},X3=function(t){var r=jk(jk({},Lte),t),n=r.cx,i=r.cy,a=r.innerRadius,s=r.outerRadius,u=r.cornerRadius,f=r.forceCornerRadius,c=r.cornerIsExternal,d=r.startAngle,p=r.endAngle,m=r.className;if(s0&&Math.abs(d-p)<360?b=Dte({cx:n,cy:i,innerRadius:a,outerRadius:s,cornerRadius:Math.min(y,w/2),forceCornerRadius:f,cornerIsExternal:c,startAngle:d,endAngle:p}):b=G3({cx:n,cy:i,innerRadius:a,outerRadius:s,startAngle:d,endAngle:p}),L.createElement("path",g1({},Me(r,!0),{className:g,d:b,role:"img"}))};function Lc(e){"@babel/helpers - typeof";return Lc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Lc(e)}function y1(){return y1=Object.assign?Object.assign.bind():function(e){for(var t=1;tKte.call(e,t));function co(e,t){return e===t||!e&&!t&&e!==e&&t!==t}const Zte="__v",Jte="__o",ere="_owner",{getOwnPropertyDescriptor:Tk,keys:Rk}=Object;function tre(e,t){return e.byteLength===t.byteLength&&jh(new Uint8Array(e),new Uint8Array(t))}function rre(e,t,r){let n=e.length;if(t.length!==n)return!1;for(;n-- >0;)if(!r.equals(e[n],t[n],n,n,e,t,r))return!1;return!0}function nre(e,t){return e.byteLength===t.byteLength&&jh(new Uint8Array(e.buffer,e.byteOffset,e.byteLength),new Uint8Array(t.buffer,t.byteOffset,t.byteLength))}function ire(e,t){return co(e.getTime(),t.getTime())}function are(e,t){return e.name===t.name&&e.message===t.message&&e.cause===t.cause&&e.stack===t.stack}function ore(e,t){return e===t}function Mk(e,t,r){const n=e.size;if(n!==t.size)return!1;if(!n)return!0;const i=new Array(n),a=e.entries();let s,u,f=0;for(;(s=a.next())&&!s.done;){const c=t.entries();let d=!1,p=0;for(;(u=c.next())&&!u.done;){if(i[p]){p++;continue}const m=s.value,g=u.value;if(r.equals(m[0],g[0],f,p,e,t,r)&&r.equals(m[1],g[1],m[0],g[0],e,t,r)){d=i[p]=!0;break}p++}if(!d)return!1;f++}return!0}const sre=co;function lre(e,t,r){const n=Rk(e);let i=n.length;if(Rk(t).length!==i)return!1;for(;i-- >0;)if(!K3(e,t,r,n[i]))return!1;return!0}function Zl(e,t,r){const n=kk(e);let i=n.length;if(kk(t).length!==i)return!1;let a,s,u;for(;i-- >0;)if(a=n[i],!K3(e,t,r,a)||(s=Tk(e,a),u=Tk(t,a),(s||u)&&(!s||!u||s.configurable!==u.configurable||s.enumerable!==u.enumerable||s.writable!==u.writable)))return!1;return!0}function cre(e,t){return co(e.valueOf(),t.valueOf())}function ure(e,t){return e.source===t.source&&e.flags===t.flags}function Ik(e,t,r){const n=e.size;if(n!==t.size)return!1;if(!n)return!0;const i=new Array(n),a=e.values();let s,u;for(;(s=a.next())&&!s.done;){const f=t.values();let c=!1,d=0;for(;(u=f.next())&&!u.done;){if(!i[d]&&r.equals(s.value,u.value,s.value,u.value,e,t,r)){c=i[d]=!0;break}d++}if(!c)return!1}return!0}function jh(e,t){let r=e.byteLength;if(t.byteLength!==r||e.byteOffset!==t.byteOffset)return!1;for(;r-- >0;)if(e[r]!==t[r])return!1;return!0}function fre(e,t){return e.hostname===t.hostname&&e.pathname===t.pathname&&e.protocol===t.protocol&&e.port===t.port&&e.hash===t.hash&&e.username===t.username&&e.password===t.password}function K3(e,t,r,n){return(n===ere||n===Jte||n===Zte)&&(e.$$typeof||t.$$typeof)?!0:Qte(t,n)&&r.equals(e[n],t[n],n,n,e,t,r)}const dre="[object ArrayBuffer]",hre="[object Arguments]",pre="[object Boolean]",mre="[object DataView]",vre="[object Date]",gre="[object Error]",yre="[object Map]",xre="[object Number]",bre="[object Object]",wre="[object RegExp]",Sre="[object Set]",_re="[object String]",jre={"[object Int8Array]":!0,"[object Uint8Array]":!0,"[object Uint8ClampedArray]":!0,"[object Int16Array]":!0,"[object Uint16Array]":!0,"[object Int32Array]":!0,"[object Uint32Array]":!0,"[object Float16Array]":!0,"[object Float32Array]":!0,"[object Float64Array]":!0,"[object BigInt64Array]":!0,"[object BigUint64Array]":!0},Ore="[object URL]",Ere=Object.prototype.toString;function Pre({areArrayBuffersEqual:e,areArraysEqual:t,areDataViewsEqual:r,areDatesEqual:n,areErrorsEqual:i,areFunctionsEqual:a,areMapsEqual:s,areNumbersEqual:u,areObjectsEqual:f,arePrimitiveWrappersEqual:c,areRegExpsEqual:d,areSetsEqual:p,areTypedArraysEqual:m,areUrlsEqual:g,unknownTagComparators:w}){return function(b,_,j){if(b===_)return!0;if(b==null||_==null)return!1;const P=typeof b;if(P!==typeof _)return!1;if(P!=="object")return P==="number"?u(b,_,j):P==="function"?a(b,_,j):!1;const k=b.constructor;if(k!==_.constructor)return!1;if(k===Object)return f(b,_,j);if(Array.isArray(b))return t(b,_,j);if(k===Date)return n(b,_,j);if(k===RegExp)return d(b,_,j);if(k===Map)return s(b,_,j);if(k===Set)return p(b,_,j);const A=Ere.call(b);if(A===vre)return n(b,_,j);if(A===wre)return d(b,_,j);if(A===yre)return s(b,_,j);if(A===Sre)return p(b,_,j);if(A===bre)return typeof b.then!="function"&&typeof _.then!="function"&&f(b,_,j);if(A===Ore)return g(b,_,j);if(A===gre)return i(b,_,j);if(A===hre)return f(b,_,j);if(jre[A])return m(b,_,j);if(A===dre)return e(b,_,j);if(A===mre)return r(b,_,j);if(A===pre||A===xre||A===_re)return c(b,_,j);if(w){let N=w[A];if(!N){const C=Yte(b);C&&(N=w[C])}if(N)return N(b,_,j)}return!1}}function Are({circular:e,createCustomConfig:t,strict:r}){let n={areArrayBuffersEqual:tre,areArraysEqual:r?Zl:rre,areDataViewsEqual:nre,areDatesEqual:ire,areErrorsEqual:are,areFunctionsEqual:ore,areMapsEqual:r?Bx(Mk,Zl):Mk,areNumbersEqual:sre,areObjectsEqual:r?Zl:lre,arePrimitiveWrappersEqual:cre,areRegExpsEqual:ure,areSetsEqual:r?Bx(Ik,Zl):Ik,areTypedArraysEqual:r?Bx(jh,Zl):jh,areUrlsEqual:fre,unknownTagComparators:void 0};if(t&&(n=Object.assign({},n,t(n))),e){const i=jd(n.areArraysEqual),a=jd(n.areMapsEqual),s=jd(n.areObjectsEqual),u=jd(n.areSetsEqual);n=Object.assign({},n,{areArraysEqual:i,areMapsEqual:a,areObjectsEqual:s,areSetsEqual:u})}return n}function Nre(e){return function(t,r,n,i,a,s,u){return e(t,r,u)}}function Cre({circular:e,comparator:t,createState:r,equals:n,strict:i}){if(r)return function(u,f){const{cache:c=e?new WeakMap:void 0,meta:d}=r();return t(u,f,{cache:c,equals:n,meta:d,strict:i})};if(e)return function(u,f){return t(u,f,{cache:new WeakMap,equals:n,meta:void 0,strict:i})};const a={cache:void 0,equals:n,meta:void 0,strict:i};return function(u,f){return t(u,f,a)}}const kre=da();da({strict:!0});da({circular:!0});da({circular:!0,strict:!0});da({createInternalComparator:()=>co});da({strict:!0,createInternalComparator:()=>co});da({circular:!0,createInternalComparator:()=>co});da({circular:!0,createInternalComparator:()=>co,strict:!0});function da(e={}){const{circular:t=!1,createInternalComparator:r,createState:n,strict:i=!1}=e,a=Are(e),s=Pre(a),u=r?r(s):Nre(s);return Cre({circular:t,comparator:s,createState:n,equals:u,strict:i})}function Tre(e){typeof requestAnimationFrame<"u"&&requestAnimationFrame(e)}function Dk(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,r=-1,n=function i(a){r<0&&(r=a),a-r>t?(e(a),r=-1):Tre(i)};requestAnimationFrame(n)}function x1(e){"@babel/helpers - typeof";return x1=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},x1(e)}function Rre(e){return Lre(e)||Dre(e)||Ire(e)||Mre()}function Mre(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ire(e,t){if(e){if(typeof e=="string")return Lk(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Lk(e,t)}}function Lk(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r1?1:_<0?0:_},y=function(_){for(var j=_>1?1:_,P=j,k=0;k<8;++k){var A=p(P)-j,N=g(P);if(Math.abs(A-j)0&&arguments[0]!==void 0?arguments[0]:{},r=t.stiff,n=r===void 0?100:r,i=t.damping,a=i===void 0?8:i,s=t.dt,u=s===void 0?17:s,f=function(d,p,m){var g=-(d-p)*n,w=m*a,y=m+(g-w)*u/1e3,b=m*u/1e3+d;return Math.abs(b-p)e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function pne(e,t){if(e==null)return{};var r={},n=Object.keys(e),i,a;for(a=0;a=0)&&(r[i]=e[i]);return r}function Fx(e){return yne(e)||gne(e)||vne(e)||mne()}function mne(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function vne(e,t){if(e){if(typeof e=="string")return j1(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return j1(e,t)}}function gne(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function yne(e){if(Array.isArray(e))return j1(e)}function j1(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Ph(e){return Ph=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},Ph(e)}var Vn=(function(e){_ne(r,e);var t=jne(r);function r(n,i){var a;xne(this,r),a=t.call(this,n,i);var s=a.props,u=s.isActive,f=s.attributeName,c=s.from,d=s.to,p=s.steps,m=s.children,g=s.duration;if(a.handleStyleChange=a.handleStyleChange.bind(P1(a)),a.changeStyle=a.changeStyle.bind(P1(a)),!u||g<=0)return a.state={style:{}},typeof m=="function"&&(a.state={style:d}),E1(a);if(p&&p.length)a.state={style:p[0].style};else if(c){if(typeof m=="function")return a.state={style:c},E1(a);a.state={style:f?ic({},f,c):c}}else a.state={style:{}};return a}return wne(r,[{key:"componentDidMount",value:function(){var i=this.props,a=i.isActive,s=i.canBegin;this.mounted=!0,!(!a||!s)&&this.runAnimation(this.props)}},{key:"componentDidUpdate",value:function(i){var a=this.props,s=a.isActive,u=a.canBegin,f=a.attributeName,c=a.shouldReAnimate,d=a.to,p=a.from,m=this.state.style;if(u){if(!s){var g={style:f?ic({},f,d):d};this.state&&m&&(f&&m[f]!==d||!f&&m!==d)&&this.setState(g);return}if(!(kre(i.to,d)&&i.canBegin&&i.isActive)){var w=!i.canBegin||!i.isActive;this.manager&&this.manager.stop(),this.stopJSAnimation&&this.stopJSAnimation();var y=w||c?p:i.to;if(this.state&&m){var b={style:f?ic({},f,y):y};(f&&m[f]!==y||!f&&m!==y)&&this.setState(b)}this.runAnimation(yn(yn({},this.props),{},{from:y,begin:0}))}}}},{key:"componentWillUnmount",value:function(){this.mounted=!1;var i=this.props.onAnimationEnd;this.unSubscribe&&this.unSubscribe(),this.manager&&(this.manager.stop(),this.manager=null),this.stopJSAnimation&&this.stopJSAnimation(),i&&i()}},{key:"handleStyleChange",value:function(i){this.changeStyle(i)}},{key:"changeStyle",value:function(i){this.mounted&&this.setState({style:i})}},{key:"runJSAnimation",value:function(i){var a=this,s=i.from,u=i.to,f=i.duration,c=i.easing,d=i.begin,p=i.onAnimationEnd,m=i.onAnimationStart,g=fne(s,u,ene(c),f,this.changeStyle),w=function(){a.stopJSAnimation=g()};this.manager.start([m,d,w,f,p])}},{key:"runStepAnimation",value:function(i){var a=this,s=i.steps,u=i.begin,f=i.onAnimationStart,c=s[0],d=c.style,p=c.duration,m=p===void 0?0:p,g=function(y,b,_){if(_===0)return y;var j=b.duration,P=b.easing,k=P===void 0?"ease":P,A=b.style,N=b.properties,C=b.onAnimationEnd,T=_>0?s[_-1]:b,M=N||Object.keys(A);if(typeof k=="function"||k==="spring")return[].concat(Fx(y),[a.runJSAnimation.bind(a,{from:T.style,to:A,duration:j,easing:k}),j]);var F=Fk(M,j,k),I=yn(yn(yn({},T.style),A),{},{transition:F});return[].concat(Fx(y),[I,j,C]).filter(qre)};return this.manager.start([f].concat(Fx(s.reduce(g,[d,Math.max(m,u)])),[i.onAnimationEnd]))}},{key:"runAnimation",value:function(i){this.manager||(this.manager=$re());var a=i.begin,s=i.duration,u=i.attributeName,f=i.to,c=i.easing,d=i.onAnimationStart,p=i.onAnimationEnd,m=i.steps,g=i.children,w=this.manager;if(this.unSubscribe=w.subscribe(this.handleStyleChange),typeof c=="function"||typeof g=="function"||c==="spring"){this.runJSAnimation(i);return}if(m.length>1){this.runStepAnimation(i);return}var y=u?ic({},u,f):f,b=Fk(Object.keys(y),s,c);w.start([d,a,yn(yn({},y),{},{transition:b}),s,p])}},{key:"render",value:function(){var i=this.props,a=i.children;i.begin;var s=i.duration;i.attributeName,i.easing;var u=i.isActive;i.steps,i.from,i.to,i.canBegin,i.onAnimationEnd,i.shouldReAnimate,i.onAnimationReStart;var f=hne(i,dne),c=E.Children.count(a),d=this.state.style;if(typeof a=="function")return a(d);if(!u||c===0||s<=0)return a;var p=function(g){var w=g.props,y=w.style,b=y===void 0?{}:y,_=w.className,j=E.cloneElement(g,yn(yn({},f),{},{style:yn(yn({},b),d),className:_}));return j};return c===1?p(E.Children.only(a)):L.createElement("div",null,E.Children.map(a,function(m){return p(m)}))}}]),r})(E.PureComponent);Vn.displayName="Animate";Vn.defaultProps={begin:0,duration:1e3,from:"",to:"",attributeName:"",easing:"ease",isActive:!0,canBegin:!0,steps:[],onAnimationEnd:function(){},onAnimationStart:function(){}};Vn.propTypes={from:lt.oneOfType([lt.object,lt.string]),to:lt.oneOfType([lt.object,lt.string]),attributeName:lt.string,duration:lt.number,begin:lt.number,easing:lt.oneOfType([lt.string,lt.func]),steps:lt.arrayOf(lt.shape({duration:lt.number.isRequired,style:lt.object.isRequired,easing:lt.oneOfType([lt.oneOf(["ease","ease-in","ease-out","ease-in-out","linear"]),lt.func]),properties:lt.arrayOf("string"),onAnimationEnd:lt.func})),children:lt.oneOfType([lt.node,lt.func]),isActive:lt.bool,canBegin:lt.bool,onAnimationEnd:lt.func,shouldReAnimate:lt.bool,onAnimationStart:lt.func,onAnimationReStart:lt.func};function Fc(e){"@babel/helpers - typeof";return Fc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Fc(e)}function Ah(){return Ah=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0?1:-1,f=n>=0?1:-1,c=i>=0&&n>=0||i<0&&n<0?1:0,d;if(s>0&&a instanceof Array){for(var p=[0,0,0,0],m=0,g=4;ms?s:a[m];d="M".concat(t,",").concat(r+u*p[0]),p[0]>0&&(d+="A ".concat(p[0],",").concat(p[0],",0,0,").concat(c,",").concat(t+f*p[0],",").concat(r)),d+="L ".concat(t+n-f*p[1],",").concat(r),p[1]>0&&(d+="A ".concat(p[1],",").concat(p[1],",0,0,").concat(c,`, + `).concat(t+n,",").concat(r+u*p[1])),d+="L ".concat(t+n,",").concat(r+i-u*p[2]),p[2]>0&&(d+="A ".concat(p[2],",").concat(p[2],",0,0,").concat(c,`, + `).concat(t+n-f*p[2],",").concat(r+i)),d+="L ".concat(t+f*p[3],",").concat(r+i),p[3]>0&&(d+="A ".concat(p[3],",").concat(p[3],",0,0,").concat(c,`, + `).concat(t,",").concat(r+i-u*p[3])),d+="Z"}else if(s>0&&a===+a&&a>0){var w=Math.min(s,a);d="M ".concat(t,",").concat(r+u*w,` + A `).concat(w,",").concat(w,",0,0,").concat(c,",").concat(t+f*w,",").concat(r,` + L `).concat(t+n-f*w,",").concat(r,` + A `).concat(w,",").concat(w,",0,0,").concat(c,",").concat(t+n,",").concat(r+u*w,` + L `).concat(t+n,",").concat(r+i-u*w,` + A `).concat(w,",").concat(w,",0,0,").concat(c,",").concat(t+n-f*w,",").concat(r+i,` + L `).concat(t+f*w,",").concat(r+i,` + A `).concat(w,",").concat(w,",0,0,").concat(c,",").concat(t,",").concat(r+i-u*w," Z")}else d="M ".concat(t,",").concat(r," h ").concat(n," v ").concat(i," h ").concat(-n," Z");return d},Mne=function(t,r){if(!t||!r)return!1;var n=t.x,i=t.y,a=r.x,s=r.y,u=r.width,f=r.height;if(Math.abs(u)>0&&Math.abs(f)>0){var c=Math.min(a,a+u),d=Math.max(a,a+u),p=Math.min(s,s+f),m=Math.max(s,s+f);return n>=c&&n<=d&&i>=p&&i<=m}return!1},Ine={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},OS=function(t){var r=Xk(Xk({},Ine),t),n=E.useRef(),i=E.useState(-1),a=Ene(i,2),s=a[0],u=a[1];E.useEffect(function(){if(n.current&&n.current.getTotalLength)try{var k=n.current.getTotalLength();k&&u(k)}catch{}},[]);var f=r.x,c=r.y,d=r.width,p=r.height,m=r.radius,g=r.className,w=r.animationEasing,y=r.animationDuration,b=r.animationBegin,_=r.isAnimationActive,j=r.isUpdateAnimationActive;if(f!==+f||c!==+c||d!==+d||p!==+p||d===0||p===0)return null;var P=Ge("recharts-rectangle",g);return j?L.createElement(Vn,{canBegin:s>0,from:{width:d,height:p,x:f,y:c},to:{width:d,height:p,x:f,y:c},duration:y,animationEasing:w,isActive:j},function(k){var A=k.width,N=k.height,C=k.x,T=k.y;return L.createElement(Vn,{canBegin:s>0,from:"0px ".concat(s===-1?1:s,"px"),to:"".concat(s,"px 0px"),attributeName:"strokeDasharray",begin:b,duration:y,isActive:_,easing:w},L.createElement("path",Ah({},Me(r,!0),{className:P,d:Kk(C,T,A,N,m),ref:n})))}):L.createElement("path",Ah({},Me(r,!0),{className:P,d:Kk(f,c,d,p,m)}))},Dne=["points","className","baseLinePoints","connectNulls"];function Qo(){return Qo=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function $ne(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function Yk(e){return qne(e)||zne(e)||Fne(e)||Bne()}function Bne(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Fne(e,t){if(e){if(typeof e=="string")return A1(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return A1(e,t)}}function zne(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function qne(e){if(Array.isArray(e))return A1(e)}function A1(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&arguments[0]!==void 0?arguments[0]:[],r=[[]];return t.forEach(function(n){Qk(n)?r[r.length-1].push(n):r[r.length-1].length>0&&r.push([])}),Qk(t[0])&&r[r.length-1].push(t[0]),r[r.length-1].length<=0&&(r=r.slice(0,-1)),r},uc=function(t,r){var n=Une(t);r&&(n=[n.reduce(function(a,s){return[].concat(Yk(a),Yk(s))},[])]);var i=n.map(function(a){return a.reduce(function(s,u,f){return"".concat(s).concat(f===0?"M":"L").concat(u.x,",").concat(u.y)},"")}).join("");return n.length===1?"".concat(i,"Z"):i},Wne=function(t,r,n){var i=uc(t,n);return"".concat(i.slice(-1)==="Z"?i.slice(0,-1):i,"L").concat(uc(r.reverse(),n).slice(1))},Hne=function(t){var r=t.points,n=t.className,i=t.baseLinePoints,a=t.connectNulls,s=Lne(t,Dne);if(!r||!r.length)return null;var u=Ge("recharts-polygon",n);if(i&&i.length){var f=s.stroke&&s.stroke!=="none",c=Wne(r,i,a);return L.createElement("g",{className:u},L.createElement("path",Qo({},Me(s,!0),{fill:c.slice(-1)==="Z"?s.fill:"none",stroke:"none",d:c})),f?L.createElement("path",Qo({},Me(s,!0),{fill:"none",d:uc(r,a)})):null,f?L.createElement("path",Qo({},Me(s,!0),{fill:"none",d:uc(i,a)})):null)}var d=uc(r,a);return L.createElement("path",Qo({},Me(s,!0),{fill:d.slice(-1)==="Z"?s.fill:"none",className:u,d}))};function N1(){return N1=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Zne(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var Jne=function(t,r,n,i,a,s){return"M".concat(t,",").concat(a,"v").concat(i,"M").concat(s,",").concat(r,"h").concat(n)},eie=function(t){var r=t.x,n=r===void 0?0:r,i=t.y,a=i===void 0?0:i,s=t.top,u=s===void 0?0:s,f=t.left,c=f===void 0?0:f,d=t.width,p=d===void 0?0:d,m=t.height,g=m===void 0?0:m,w=t.className,y=Qne(t,Vne),b=Gne({x:n,y:a,top:u,left:c,width:p,height:g},y);return!ye(n)||!ye(a)||!ye(p)||!ye(g)||!ye(u)||!ye(c)?null:L.createElement("path",C1({},Me(b,!0),{className:Ge("recharts-cross",w),d:Jne(n,a,p,g,u,c)}))},zx,Jk;function tie(){if(Jk)return zx;Jk=1;var e=Ip(),t=v3(),r=Qn();function n(i,a){return i&&i.length?e(i,r(a,2),t):void 0}return zx=n,zx}var rie=tie();const nie=at(rie);var qx,eT;function iie(){if(eT)return qx;eT=1;var e=Ip(),t=Qn(),r=g3();function n(i,a){return i&&i.length?e(i,t(a,2),r):void 0}return qx=n,qx}var aie=iie();const oie=at(aie);var sie=["cx","cy","angle","ticks","axisLine"],lie=["ticks","tick","angle","tickFormatter","stroke"];function Ss(e){"@babel/helpers - typeof";return Ss=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ss(e)}function fc(){return fc=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function cie(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function uie(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function nT(e,t){for(var r=0;roT?s=i==="outer"?"start":"end":a<-oT?s=i==="outer"?"end":"start":s="middle",s}},{key:"renderAxisLine",value:function(){var n=this.props,i=n.cx,a=n.cy,s=n.radius,u=n.axisLine,f=n.axisLineType,c=ka(ka({},Me(this.props,!1)),{},{fill:"none"},Me(u,!1));if(f==="circle")return L.createElement(Fp,Ia({className:"recharts-polar-angle-axis-line"},c,{cx:i,cy:a,r:s}));var d=this.props.ticks,p=d.map(function(m){return vt(i,a,s,m.coordinate)});return L.createElement(Hne,Ia({className:"recharts-polar-angle-axis-line"},c,{points:p}))}},{key:"renderTicks",value:function(){var n=this,i=this.props,a=i.ticks,s=i.tick,u=i.tickLine,f=i.tickFormatter,c=i.stroke,d=Me(this.props,!1),p=Me(s,!1),m=ka(ka({},d),{},{fill:"none"},Me(u,!1)),g=a.map(function(w,y){var b=n.getTickLineCoord(w),_=n.getTickTextAnchor(w),j=ka(ka(ka({textAnchor:_},d),{},{stroke:"none",fill:c},p),{},{index:y,payload:w,x:b.x2,y:b.y2});return L.createElement(rt,Ia({className:Ge("recharts-polar-angle-axis-tick",H3(s)),key:"tick-".concat(w.coordinate)},Za(n.props,w,y)),u&&L.createElement("line",Ia({className:"recharts-polar-angle-axis-tick-line"},m,b)),s&&t.renderTickItem(s,j,f?f(w.value,y):w.value))});return L.createElement(rt,{className:"recharts-polar-angle-axis-ticks"},g)}},{key:"render",value:function(){var n=this.props,i=n.ticks,a=n.radius,s=n.axisLine;return a<=0||!i||!i.length?null:L.createElement(rt,{className:Ge("recharts-polar-angle-axis",this.props.className)},s&&this.renderAxisLine(),this.renderTicks())}}],[{key:"renderTickItem",value:function(n,i,a){var s;return L.isValidElement(n)?s=L.cloneElement(n,i):$e(n)?s=n(i):s=L.createElement(Ja,Ia({},i,{className:"recharts-polar-angle-axis-tick-value"}),a),s}}])})(E.PureComponent);Up(Wp,"displayName","PolarAngleAxis");Up(Wp,"axisType","angleAxis");Up(Wp,"defaultProps",{type:"category",angleAxisId:0,scale:"auto",cx:0,cy:0,orientation:"outer",axisLine:!0,tickLine:!0,tickSize:8,tick:!0,hide:!1,allowDuplicatedCategory:!0});var Ux,sT;function Oie(){if(sT)return Ux;sT=1;var e=vL(),t=e(Object.getPrototypeOf,Object);return Ux=t,Ux}var Wx,lT;function Eie(){if(lT)return Wx;lT=1;var e=ji(),t=Oie(),r=Oi(),n="[object Object]",i=Function.prototype,a=Object.prototype,s=i.toString,u=a.hasOwnProperty,f=s.call(Object);function c(d){if(!r(d)||e(d)!=n)return!1;var p=t(d);if(p===null)return!0;var m=u.call(p,"constructor")&&p.constructor;return typeof m=="function"&&m instanceof m&&s.call(m)==f}return Wx=c,Wx}var Pie=Eie();const Aie=at(Pie);var Hx,cT;function Nie(){if(cT)return Hx;cT=1;var e=ji(),t=Oi(),r="[object Boolean]";function n(i){return i===!0||i===!1||t(i)&&e(i)==r}return Hx=n,Hx}var Cie=Nie();const kie=at(Cie);function qc(e){"@babel/helpers - typeof";return qc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},qc(e)}function kh(){return kh=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r0,from:{upperWidth:0,lowerWidth:0,height:m,x:f,y:c},to:{upperWidth:d,lowerWidth:p,height:m,x:f,y:c},duration:y,animationEasing:w,isActive:_},function(P){var k=P.upperWidth,A=P.lowerWidth,N=P.height,C=P.x,T=P.y;return L.createElement(Vn,{canBegin:s>0,from:"0px ".concat(s===-1?1:s,"px"),to:"".concat(s,"px 0px"),attributeName:"strokeDasharray",begin:b,duration:y,easing:w},L.createElement("path",kh({},Me(r,!0),{className:j,d:hT(C,T,k,A,N),ref:n})))}):L.createElement("g",null,L.createElement("path",kh({},Me(r,!0),{className:j,d:hT(f,c,d,p,m)})))},qie=["option","shapeType","propTransformer","activeClassName","isActive"];function Uc(e){"@babel/helpers - typeof";return Uc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Uc(e)}function Uie(e,t){if(e==null)return{};var r=Wie(e,t),n,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Wie(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function pT(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function Th(e){for(var t=1;t0?Ur(P,"paddingAngle",0):0;if(A){var C=Fr(A.endAngle-A.startAngle,P.endAngle-P.startAngle),T=pt(pt({},P),{},{startAngle:j+N,endAngle:j+C(y)+N});b.push(T),j=T.endAngle}else{var M=P.endAngle,F=P.startAngle,I=Fr(0,M-F),D=I(y),q=pt(pt({},P),{},{startAngle:j+N,endAngle:j+D+N});b.push(q),j=q.endAngle}}),L.createElement(rt,null,n.renderSectorsStatically(b))})}},{key:"attachKeyboardHandlers",value:function(n){var i=this;n.onkeydown=function(a){if(!a.altKey)switch(a.key){case"ArrowLeft":{var s=++i.state.sectorToFocus%i.sectorRefs.length;i.sectorRefs[s].focus(),i.setState({sectorToFocus:s});break}case"ArrowRight":{var u=--i.state.sectorToFocus<0?i.sectorRefs.length-1:i.state.sectorToFocus%i.sectorRefs.length;i.sectorRefs[u].focus(),i.setState({sectorToFocus:u});break}case"Escape":{i.sectorRefs[i.state.sectorToFocus].blur(),i.setState({sectorToFocus:0});break}}}}},{key:"renderSectors",value:function(){var n=this.props,i=n.sectors,a=n.isAnimationActive,s=this.state.prevSectors;return a&&i&&i.length&&(!s||!fu(s,i))?this.renderSectorsWithAnimation():this.renderSectorsStatically(i)}},{key:"componentDidMount",value:function(){this.pieRef&&this.attachKeyboardHandlers(this.pieRef)}},{key:"render",value:function(){var n=this,i=this.props,a=i.hide,s=i.sectors,u=i.className,f=i.label,c=i.cx,d=i.cy,p=i.innerRadius,m=i.outerRadius,g=i.isAnimationActive,w=this.state.isAnimationFinished;if(a||!s||!s.length||!ye(c)||!ye(d)||!ye(p)||!ye(m))return null;var y=Ge("recharts-pie",u);return L.createElement(rt,{tabIndex:this.props.rootTabIndex,className:y,ref:function(_){n.pieRef=_}},this.renderSectors(),f&&this.renderLabels(s),Xt.renderCallByParent(this.props,null,!1),(!g||w)&&vi.renderCallByParent(this.props,s,!1))}}],[{key:"getDerivedStateFromProps",value:function(n,i){return i.prevIsAnimationActive!==n.isAnimationActive?{prevIsAnimationActive:n.isAnimationActive,prevAnimationId:n.animationId,curSectors:n.sectors,prevSectors:[],isAnimationFinished:!0}:n.isAnimationActive&&n.animationId!==i.prevAnimationId?{prevAnimationId:n.animationId,curSectors:n.sectors,prevSectors:i.curSectors,isAnimationFinished:!0}:n.sectors!==i.curSectors?{curSectors:n.sectors,isAnimationFinished:!0}:null}},{key:"getTextAnchor",value:function(n,i){return n>i?"start":n=360?j:j-1)*f,k=b-j*g-P,A=i.reduce(function(T,M){var F=Bt(M,_,0);return T+(ye(F)?F:0)},0),N;if(A>0){var C;N=i.map(function(T,M){var F=Bt(T,_,0),I=Bt(T,d,M),D=(ye(F)?F:0)/A,q;M?q=C.endAngle+hr(y)*f*(F!==0?1:0):q=s;var U=q+hr(y)*((F!==0?g:0)+D*k),H=(q+U)/2,X=(w.innerRadius+w.outerRadius)/2,Y=[{name:I,value:F,payload:T,dataKey:_,type:m}],$=vt(w.cx,w.cy,X,H);return C=pt(pt(pt({percent:D,cornerRadius:a,name:I,tooltipPayload:Y,midAngle:H,middleRadius:X,tooltipPosition:$},T),w),{},{value:Bt(T,_),startAngle:q,endAngle:U,payload:T,paddingAngle:hr(y)*f}),C})}return pt(pt({},w),{},{sectors:N,data:i})});var Vx,yT;function fae(){if(yT)return Vx;yT=1;var e=Math.ceil,t=Math.max;function r(n,i,a,s){for(var u=-1,f=t(e((i-n)/(a||1)),0),c=Array(f);f--;)c[s?f:++u]=n,n+=a;return c}return Vx=r,Vx}var Gx,xT;function c4(){if(xT)return Gx;xT=1;var e=TL(),t=1/0,r=17976931348623157e292;function n(i){if(!i)return i===0?i:0;if(i=e(i),i===t||i===-t){var a=i<0?-1:1;return a*r}return i===i?i:0}return Gx=n,Gx}var Xx,bT;function dae(){if(bT)return Xx;bT=1;var e=fae(),t=Pp(),r=c4();function n(i){return function(a,s,u){return u&&typeof u!="number"&&t(a,s,u)&&(s=u=void 0),a=r(a),s===void 0?(s=a,a=0):s=r(s),u=u===void 0?a0&&n.handleDrag(i.changedTouches[0])}),Ir(n,"handleDragEnd",function(){n.setState({isTravellerMoving:!1,isSlideMoving:!1},function(){var i=n.props,a=i.endIndex,s=i.onDragEnd,u=i.startIndex;s?.({endIndex:a,startIndex:u})}),n.detachDragEndListener()}),Ir(n,"handleLeaveWrapper",function(){(n.state.isTravellerMoving||n.state.isSlideMoving)&&(n.leaveTimer=window.setTimeout(n.handleDragEnd,n.props.leaveTimeOut))}),Ir(n,"handleEnterSlideOrTraveller",function(){n.setState({isTextActive:!0})}),Ir(n,"handleLeaveSlideOrTraveller",function(){n.setState({isTextActive:!1})}),Ir(n,"handleSlideDragStart",function(i){var a=ET(i)?i.changedTouches[0]:i;n.setState({isTravellerMoving:!1,isSlideMoving:!0,slideMoveStartX:a.pageX}),n.attachDragEndListener()}),n.travellerDragStartHandlers={startX:n.handleTravellerDragStart.bind(n,"startX"),endX:n.handleTravellerDragStart.bind(n,"endX")},n.state={},n}return jae(t,e),bae(t,[{key:"componentWillUnmount",value:function(){this.leaveTimer&&(clearTimeout(this.leaveTimer),this.leaveTimer=null),this.detachDragEndListener()}},{key:"getIndex",value:function(n){var i=n.startX,a=n.endX,s=this.state.scaleValues,u=this.props,f=u.gap,c=u.data,d=c.length-1,p=Math.min(i,a),m=Math.max(i,a),g=t.getIndexInRange(s,p),w=t.getIndexInRange(s,m);return{startIndex:g-g%f,endIndex:w===d?d:w-w%f}}},{key:"getTextOfTick",value:function(n){var i=this.props,a=i.data,s=i.tickFormatter,u=i.dataKey,f=Bt(a[n],u,n);return $e(s)?s(f,n):f}},{key:"attachDragEndListener",value:function(){window.addEventListener("mouseup",this.handleDragEnd,!0),window.addEventListener("touchend",this.handleDragEnd,!0),window.addEventListener("mousemove",this.handleDrag,!0)}},{key:"detachDragEndListener",value:function(){window.removeEventListener("mouseup",this.handleDragEnd,!0),window.removeEventListener("touchend",this.handleDragEnd,!0),window.removeEventListener("mousemove",this.handleDrag,!0)}},{key:"handleSlideDrag",value:function(n){var i=this.state,a=i.slideMoveStartX,s=i.startX,u=i.endX,f=this.props,c=f.x,d=f.width,p=f.travellerWidth,m=f.startIndex,g=f.endIndex,w=f.onChange,y=n.pageX-a;y>0?y=Math.min(y,c+d-p-u,c+d-p-s):y<0&&(y=Math.max(y,c-s,c-u));var b=this.getIndex({startX:s+y,endX:u+y});(b.startIndex!==m||b.endIndex!==g)&&w&&w(b),this.setState({startX:s+y,endX:u+y,slideMoveStartX:n.pageX})}},{key:"handleTravellerDragStart",value:function(n,i){var a=ET(i)?i.changedTouches[0]:i;this.setState({isSlideMoving:!1,isTravellerMoving:!0,movingTravellerId:n,brushMoveStartX:a.pageX}),this.attachDragEndListener()}},{key:"handleTravellerMove",value:function(n){var i=this.state,a=i.brushMoveStartX,s=i.movingTravellerId,u=i.endX,f=i.startX,c=this.state[s],d=this.props,p=d.x,m=d.width,g=d.travellerWidth,w=d.onChange,y=d.gap,b=d.data,_={startX:this.state.startX,endX:this.state.endX},j=n.pageX-a;j>0?j=Math.min(j,p+m-g-c):j<0&&(j=Math.max(j,p-c)),_[s]=c+j;var P=this.getIndex(_),k=P.startIndex,A=P.endIndex,N=function(){var T=b.length-1;return s==="startX"&&(u>f?k%y===0:A%y===0)||uf?A%y===0:k%y===0)||u>f&&A===T};this.setState(Ir(Ir({},s,c+j),"brushMoveStartX",n.pageX),function(){w&&N()&&w(P)})}},{key:"handleTravellerMoveKeyboard",value:function(n,i){var a=this,s=this.state,u=s.scaleValues,f=s.startX,c=s.endX,d=this.state[i],p=u.indexOf(d);if(p!==-1){var m=p+n;if(!(m===-1||m>=u.length)){var g=u[m];i==="startX"&&g>=c||i==="endX"&&g<=f||this.setState(Ir({},i,g),function(){a.props.onChange(a.getIndex({startX:a.state.startX,endX:a.state.endX}))})}}}},{key:"renderBackground",value:function(){var n=this.props,i=n.x,a=n.y,s=n.width,u=n.height,f=n.fill,c=n.stroke;return L.createElement("rect",{stroke:c,fill:f,x:i,y:a,width:s,height:u})}},{key:"renderPanorama",value:function(){var n=this.props,i=n.x,a=n.y,s=n.width,u=n.height,f=n.data,c=n.children,d=n.padding,p=E.Children.only(c);return p?L.cloneElement(p,{x:i,y:a,width:s,height:u,margin:d,compact:!0,data:f}):null}},{key:"renderTravellerLayer",value:function(n,i){var a,s,u=this,f=this.props,c=f.y,d=f.travellerWidth,p=f.height,m=f.traveller,g=f.ariaLabel,w=f.data,y=f.startIndex,b=f.endIndex,_=Math.max(n,this.props.x),j=Yx(Yx({},Me(this.props,!1)),{},{x:_,y:c,width:d,height:p}),P=g||"Min value: ".concat((a=w[y])===null||a===void 0?void 0:a.name,", Max value: ").concat((s=w[b])===null||s===void 0?void 0:s.name);return L.createElement(rt,{tabIndex:0,role:"slider","aria-label":P,"aria-valuenow":n,className:"recharts-brush-traveller",onMouseEnter:this.handleEnterSlideOrTraveller,onMouseLeave:this.handleLeaveSlideOrTraveller,onMouseDown:this.travellerDragStartHandlers[i],onTouchStart:this.travellerDragStartHandlers[i],onKeyDown:function(A){["ArrowLeft","ArrowRight"].includes(A.key)&&(A.preventDefault(),A.stopPropagation(),u.handleTravellerMoveKeyboard(A.key==="ArrowRight"?1:-1,i))},onFocus:function(){u.setState({isTravellerFocused:!0})},onBlur:function(){u.setState({isTravellerFocused:!1})},style:{cursor:"col-resize"}},t.renderTraveller(m,j))}},{key:"renderSlide",value:function(n,i){var a=this.props,s=a.y,u=a.height,f=a.stroke,c=a.travellerWidth,d=Math.min(n,i)+c,p=Math.max(Math.abs(i-n)-c,0);return L.createElement("rect",{className:"recharts-brush-slide",onMouseEnter:this.handleEnterSlideOrTraveller,onMouseLeave:this.handleLeaveSlideOrTraveller,onMouseDown:this.handleSlideDragStart,onTouchStart:this.handleSlideDragStart,style:{cursor:"move"},stroke:"none",fill:f,fillOpacity:.2,x:d,y:s,width:p,height:u})}},{key:"renderText",value:function(){var n=this.props,i=n.startIndex,a=n.endIndex,s=n.y,u=n.height,f=n.travellerWidth,c=n.stroke,d=this.state,p=d.startX,m=d.endX,g=5,w={pointerEvents:"none",fill:c};return L.createElement(rt,{className:"recharts-brush-texts"},L.createElement(Ja,Ih({textAnchor:"end",verticalAnchor:"middle",x:Math.min(p,m)-g,y:s+u/2},w),this.getTextOfTick(i)),L.createElement(Ja,Ih({textAnchor:"start",verticalAnchor:"middle",x:Math.max(p,m)+f+g,y:s+u/2},w),this.getTextOfTick(a)))}},{key:"render",value:function(){var n=this.props,i=n.data,a=n.className,s=n.children,u=n.x,f=n.y,c=n.width,d=n.height,p=n.alwaysShowText,m=this.state,g=m.startX,w=m.endX,y=m.isTextActive,b=m.isSlideMoving,_=m.isTravellerMoving,j=m.isTravellerFocused;if(!i||!i.length||!ye(u)||!ye(f)||!ye(c)||!ye(d)||c<=0||d<=0)return null;var P=Ge("recharts-brush",a),k=L.Children.count(s)===1,A=yae("userSelect","none");return L.createElement(rt,{className:P,onMouseLeave:this.handleLeaveWrapper,onTouchMove:this.handleTouchMove,style:A},this.renderBackground(),k&&this.renderPanorama(),this.renderSlide(g,w),this.renderTravellerLayer(g,"startX"),this.renderTravellerLayer(w,"endX"),(y||b||_||j||p)&&this.renderText())}}],[{key:"renderDefaultTraveller",value:function(n){var i=n.x,a=n.y,s=n.width,u=n.height,f=n.stroke,c=Math.floor(a+u/2)-1;return L.createElement(L.Fragment,null,L.createElement("rect",{x:i,y:a,width:s,height:u,fill:f,stroke:"none"}),L.createElement("line",{x1:i+1,y1:c,x2:i+s-1,y2:c,fill:"none",stroke:"#fff"}),L.createElement("line",{x1:i+1,y1:c+2,x2:i+s-1,y2:c+2,fill:"none",stroke:"#fff"}))}},{key:"renderTraveller",value:function(n,i){var a;return L.isValidElement(n)?a=L.cloneElement(n,i):$e(n)?a=n(i):a=t.renderDefaultTraveller(i),a}},{key:"getDerivedStateFromProps",value:function(n,i){var a=n.data,s=n.width,u=n.x,f=n.travellerWidth,c=n.updateId,d=n.startIndex,p=n.endIndex;if(a!==i.prevData||c!==i.prevUpdateId)return Yx({prevData:a,prevTravellerWidth:f,prevUpdateId:c,prevX:u,prevWidth:s},a&&a.length?Eae({data:a,width:s,x:u,travellerWidth:f,startIndex:d,endIndex:p}):{scale:null,scaleValues:null});if(i.scale&&(s!==i.prevWidth||u!==i.prevX||f!==i.prevTravellerWidth)){i.scale.range([u,u+s-f]);var m=i.scale.domain().map(function(g){return i.scale(g)});return{prevData:a,prevTravellerWidth:f,prevUpdateId:c,prevX:u,prevWidth:s,startX:i.scale(n.startIndex),endX:i.scale(n.endIndex),scaleValues:m}}return null}},{key:"getIndexInRange",value:function(n,i){for(var a=n.length,s=0,u=a-1;u-s>1;){var f=Math.floor((s+u)/2);n[f]>i?u=f:s=f}return i>=n[u]?u:s}}])})(E.PureComponent);Ir(Es,"displayName","Brush");Ir(Es,"defaultProps",{height:40,travellerWidth:5,gap:1,fill:"#fff",stroke:"#666",padding:{top:1,right:1,bottom:1,left:1},leaveTimeOut:1e3,alwaysShowText:!1});var Qx,PT;function Pae(){if(PT)return Qx;PT=1;var e=Qw();function t(r,n){var i;return e(r,function(a,s,u){return i=n(a,s,u),!i}),!!i}return Qx=t,Qx}var Zx,AT;function Aae(){if(AT)return Zx;AT=1;var e=cL(),t=Qn(),r=Pae(),n=Er(),i=Pp();function a(s,u,f){var c=n(s)?e:r;return f&&i(s,u,f)&&(u=void 0),c(s,t(u,3))}return Zx=a,Zx}var Nae=Aae();const Cae=at(Nae);var Bn=function(t,r){var n=t.alwaysShow,i=t.ifOverflow;return n&&(i="extendDomain"),i===r},Jx,NT;function kae(){if(NT)return Jx;NT=1;var e=PL();function t(r,n,i){n=="__proto__"&&e?e(r,n,{configurable:!0,enumerable:!0,value:i,writable:!0}):r[n]=i}return Jx=t,Jx}var eb,CT;function Tae(){if(CT)return eb;CT=1;var e=kae(),t=OL(),r=Qn();function n(i,a){var s={};return a=r(a,3),t(i,function(u,f,c){e(s,f,a(u,f,c))}),s}return eb=n,eb}var Rae=Tae();const Mae=at(Rae);var tb,kT;function Iae(){if(kT)return tb;kT=1;function e(t,r){for(var n=-1,i=t==null?0:t.length;++n=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Wae(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function Hae(e,t){var r=e.x,n=e.y,i=Uae(e,Bae),a="".concat(r),s=parseInt(a,10),u="".concat(n),f=parseInt(u,10),c="".concat(t.height||i.height),d=parseInt(c,10),p="".concat(t.width||i.width),m=parseInt(p,10);return Jl(Jl(Jl(Jl(Jl({},t),i),s?{x:s}:{}),f?{y:f}:{}),{},{height:d,width:m,name:t.name,radius:t.radius})}function IT(e){return L.createElement(o4,I1({shapeType:"rectangle",propTransformer:Hae,activeClassName:"recharts-active-bar"},e))}var Vae=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return function(n,i){if(typeof t=="number")return t;var a=ye(n)||dV(n);return a?t(n,i):(a||to(),r)}},Gae=["value","background"],p4;function Ps(e){"@babel/helpers - typeof";return Ps=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ps(e)}function Xae(e,t){if(e==null)return{};var r=Kae(e,t),n,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Kae(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function Lh(){return Lh=Object.assign?Object.assign.bind():function(e){for(var t=1;t0&&Math.abs(H)0&&Math.abs(U)0&&(q=Math.min((pe||0)-(U[G-1]||0),q))}),Number.isFinite(q)){var H=q/D,X=y.layout==="vertical"?n.height:n.width;if(y.padding==="gap"&&(C=H*X/2),y.padding==="no-gap"){var Y=pr(t.barCategoryGap,H*X),$=H*X/2;C=$-Y-($-Y)/X*Y}}}i==="xAxis"?T=[n.left+(P.left||0)+(C||0),n.left+n.width-(P.right||0)-(C||0)]:i==="yAxis"?T=f==="horizontal"?[n.top+n.height-(P.bottom||0),n.top+(P.top||0)]:[n.top+(P.top||0)+(C||0),n.top+n.height-(P.bottom||0)-(C||0)]:T=y.range,A&&(T=[T[1],T[0]]);var ee=$3(y,a,m),re=ee.scale,z=ee.realScaleType;re.domain(_).range(T),B3(re);var K=F3(re,bn(bn({},y),{},{realScaleType:z}));i==="xAxis"?(I=b==="top"&&!k||b==="bottom"&&k,M=n.left,F=p[N]-I*y.height):i==="yAxis"&&(I=b==="left"&&!k||b==="right"&&k,M=p[N]-I*y.width,F=n.top);var se=bn(bn(bn({},y),K),{},{realScaleType:z,x:M,y:F,scale:re,width:i==="xAxis"?n.width:y.width,height:i==="yAxis"?n.height:y.height});return se.bandSize=bh(se,K),!y.hide&&i==="xAxis"?p[N]+=(I?-1:1)*se.height:y.hide||(p[N]+=(I?-1:1)*se.width),bn(bn({},g),{},Gp({},w,se))},{})},x4=function(t,r){var n=t.x,i=t.y,a=r.x,s=r.y;return{x:Math.min(n,a),y:Math.min(i,s),width:Math.abs(a-n),height:Math.abs(s-i)}},ooe=function(t){var r=t.x1,n=t.y1,i=t.x2,a=t.y2;return x4({x:r,y:n},{x:i,y:a})},b4=(function(){function e(t){noe(this,e),this.scale=t}return ioe(e,[{key:"domain",get:function(){return this.scale.domain}},{key:"range",get:function(){return this.scale.range}},{key:"rangeMin",get:function(){return this.range()[0]}},{key:"rangeMax",get:function(){return this.range()[1]}},{key:"bandwidth",get:function(){return this.scale.bandwidth}},{key:"apply",value:function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=n.bandAware,a=n.position;if(r!==void 0){if(a)switch(a){case"start":return this.scale(r);case"middle":{var s=this.bandwidth?this.bandwidth()/2:0;return this.scale(r)+s}case"end":{var u=this.bandwidth?this.bandwidth():0;return this.scale(r)+u}default:return this.scale(r)}if(i){var f=this.bandwidth?this.bandwidth()/2:0;return this.scale(r)+f}return this.scale(r)}}},{key:"isInRange",value:function(r){var n=this.range(),i=n[0],a=n[n.length-1];return i<=a?r>=i&&r<=a:r>=a&&r<=i}}],[{key:"create",value:function(r){return new e(r)}}])})();Gp(b4,"EPS",1e-4);var ES=function(t){var r=Object.keys(t).reduce(function(n,i){return bn(bn({},n),{},Gp({},i,b4.create(t[i])))},{});return bn(bn({},r),{},{apply:function(i){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=a.bandAware,u=a.position;return Mae(i,function(f,c){return r[c].apply(f,{bandAware:s,position:u})})},isInRange:function(i){return h4(i,function(a,s){return r[s].isInRange(a)})}})};function soe(e){return(e%180+180)%180}var loe=function(t){var r=t.width,n=t.height,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=soe(i),s=a*Math.PI/180,u=Math.atan(n/r),f=s>u&&s-1?f[c?a[d]:d]:void 0}}return ib=n,ib}var ab,zT;function uoe(){if(zT)return ab;zT=1;var e=c4();function t(r){var n=e(r),i=n%1;return n===n?i?n-i:n:0}return ab=t,ab}var ob,qT;function foe(){if(qT)return ob;qT=1;var e=bL(),t=Qn(),r=uoe(),n=Math.max;function i(a,s,u){var f=a==null?0:a.length;if(!f)return-1;var c=u==null?0:r(u);return c<0&&(c=n(f+c,0)),e(a,t(s,3),c)}return ob=i,ob}var sb,UT;function doe(){if(UT)return sb;UT=1;var e=coe(),t=foe(),r=e(t);return sb=r,sb}var hoe=doe();const poe=at(hoe);var moe=DD();const voe=at(moe);var goe=voe(function(e){return{x:e.left,y:e.top,width:e.width,height:e.height}},function(e){return["l",e.left,"t",e.top,"w",e.width,"h",e.height].join("")}),PS=E.createContext(void 0),AS=E.createContext(void 0),w4=E.createContext(void 0),S4=E.createContext({}),_4=E.createContext(void 0),j4=E.createContext(0),O4=E.createContext(0),WT=function(t){var r=t.state,n=r.xAxisMap,i=r.yAxisMap,a=r.offset,s=t.clipPathId,u=t.children,f=t.width,c=t.height,d=goe(a);return L.createElement(PS.Provider,{value:n},L.createElement(AS.Provider,{value:i},L.createElement(S4.Provider,{value:a},L.createElement(w4.Provider,{value:d},L.createElement(_4.Provider,{value:s},L.createElement(j4.Provider,{value:c},L.createElement(O4.Provider,{value:f},u)))))))},yoe=function(){return E.useContext(_4)},E4=function(t){var r=E.useContext(PS);r==null&&to();var n=r[t];return n==null&&to(),n},xoe=function(){var t=E.useContext(PS);return Ji(t)},boe=function(){var t=E.useContext(AS),r=poe(t,function(n){return h4(n.domain,Number.isFinite)});return r||Ji(t)},P4=function(t){var r=E.useContext(AS);r==null&&to();var n=r[t];return n==null&&to(),n},woe=function(){var t=E.useContext(w4);return t},Soe=function(){return E.useContext(S4)},NS=function(){return E.useContext(O4)},CS=function(){return E.useContext(j4)};function As(e){"@babel/helpers - typeof";return As=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},As(e)}function _oe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function joe(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);re*i)return!1;var a=r();return e*(t-e*a/2-n)>=0&&e*(t+e*a/2-i)<=0}function ase(e,t){return M4(e,t+1)}function ose(e,t,r,n,i){for(var a=(n||[]).slice(),s=t.start,u=t.end,f=0,c=1,d=s,p=function(){var w=n?.[f];if(w===void 0)return{v:M4(n,c)};var y=f,b,_=function(){return b===void 0&&(b=r(w,y)),b},j=w.coordinate,P=f===0||qh(e,j,_,d,u);P||(f=0,d=s,c+=1),P&&(d=j+e*(_()/2+i),f+=c)},m;c<=a.length;)if(m=p(),m)return m.v;return[]}function Xc(e){"@babel/helpers - typeof";return Xc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Xc(e)}function ZT(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function sr(e){for(var t=1;t0?g.coordinate-b*e:g.coordinate})}else a[m]=g=sr(sr({},g),{},{tickCoord:g.coordinate});var _=qh(e,g.tickCoord,y,u,f);_&&(f=g.tickCoord-e*(y()/2+i),a[m]=sr(sr({},g),{},{isShow:!0}))},d=s-1;d>=0;d--)c(d);return a}function fse(e,t,r,n,i,a){var s=(n||[]).slice(),u=s.length,f=t.start,c=t.end;if(a){var d=n[u-1],p=r(d,u-1),m=e*(d.coordinate+e*p/2-c);s[u-1]=d=sr(sr({},d),{},{tickCoord:m>0?d.coordinate-m*e:d.coordinate});var g=qh(e,d.tickCoord,function(){return p},f,c);g&&(c=d.tickCoord-e*(p/2+i),s[u-1]=sr(sr({},d),{},{isShow:!0}))}for(var w=a?u-1:u,y=function(j){var P=s[j],k,A=function(){return k===void 0&&(k=r(P,j)),k};if(j===0){var N=e*(P.coordinate-e*A()/2-f);s[j]=P=sr(sr({},P),{},{tickCoord:N<0?P.coordinate-N*e:P.coordinate})}else s[j]=P=sr(sr({},P),{},{tickCoord:P.coordinate});var C=qh(e,P.tickCoord,A,f,c);C&&(f=P.tickCoord+e*(A()/2+i),s[j]=sr(sr({},P),{},{isShow:!0}))},b=0;b=2?hr(i[1].coordinate-i[0].coordinate):1,_=ise(a,b,g);return f==="equidistantPreserveStart"?ose(b,_,y,i,s):(f==="preserveStart"||f==="preserveStartEnd"?m=fse(b,_,y,i,s,f==="preserveStartEnd"):m=use(b,_,y,i,s),m.filter(function(j){return j.isShow}))}var dse=["viewBox"],hse=["viewBox"],pse=["ticks"];function ks(e){"@babel/helpers - typeof";return ks=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ks(e)}function Jo(){return Jo=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function mse(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function vse(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function eR(e,t){for(var r=0;r0?f(this.props):f(g)),s<=0||u<=0||!w||!w.length?null:L.createElement(rt,{className:Ge("recharts-cartesian-axis",c),ref:function(b){n.layerReference=b}},a&&this.renderAxisLine(),this.renderTicks(w,this.state.fontSize,this.state.letterSpacing),Xt.renderCallByParent(this.props))}}],[{key:"renderTickItem",value:function(n,i,a){var s,u=Ge(i.className,"recharts-cartesian-axis-tick-value");return L.isValidElement(n)?s=L.cloneElement(n,Lt(Lt({},i),{},{className:u})):$e(n)?s=n(Lt(Lt({},i),{},{className:u})):s=L.createElement(Ja,Jo({},i,{className:"recharts-cartesian-axis-tick-value"}),a),s}}])})(E.Component);MS(Qs,"displayName","CartesianAxis");MS(Qs,"defaultProps",{x:0,y:0,width:0,height:0,viewBox:{x:0,y:0,width:0,height:0},orientation:"bottom",ticks:[],stroke:"#666",tickLine:!0,axisLine:!0,tick:!0,mirror:!1,minTickGap:5,tickSize:6,tickMargin:2,interval:"preserveEnd"});var _se=["x1","y1","x2","y2","key"],jse=["offset"];function ro(e){"@babel/helpers - typeof";return ro=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ro(e)}function tR(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function lr(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Ase(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var Nse=function(t){var r=t.fill;if(!r||r==="none")return null;var n=t.fillOpacity,i=t.x,a=t.y,s=t.width,u=t.height,f=t.ry;return L.createElement("rect",{x:i,y:a,ry:f,width:s,height:u,stroke:"none",fill:r,fillOpacity:n,className:"recharts-cartesian-grid-bg"})};function L4(e,t){var r;if(L.isValidElement(e))r=L.cloneElement(e,t);else if($e(e))r=e(t);else{var n=t.x1,i=t.y1,a=t.x2,s=t.y2,u=t.key,f=rR(t,_se),c=Me(f,!1);c.offset;var d=rR(c,jse);r=L.createElement("line",Fa({},d,{x1:n,y1:i,x2:a,y2:s,fill:"none",key:u}))}return r}function Cse(e){var t=e.x,r=e.width,n=e.horizontal,i=n===void 0?!0:n,a=e.horizontalPoints;if(!i||!a||!a.length)return null;var s=a.map(function(u,f){var c=lr(lr({},e),{},{x1:t,y1:u,x2:t+r,y2:u,key:"line-".concat(f),index:f});return L4(i,c)});return L.createElement("g",{className:"recharts-cartesian-grid-horizontal"},s)}function kse(e){var t=e.y,r=e.height,n=e.vertical,i=n===void 0?!0:n,a=e.verticalPoints;if(!i||!a||!a.length)return null;var s=a.map(function(u,f){var c=lr(lr({},e),{},{x1:u,y1:t,x2:u,y2:t+r,key:"line-".concat(f),index:f});return L4(i,c)});return L.createElement("g",{className:"recharts-cartesian-grid-vertical"},s)}function Tse(e){var t=e.horizontalFill,r=e.fillOpacity,n=e.x,i=e.y,a=e.width,s=e.height,u=e.horizontalPoints,f=e.horizontal,c=f===void 0?!0:f;if(!c||!t||!t.length)return null;var d=u.map(function(m){return Math.round(m+i-i)}).sort(function(m,g){return m-g});i!==d[0]&&d.unshift(0);var p=d.map(function(m,g){var w=!d[g+1],y=w?i+s-m:d[g+1]-m;if(y<=0)return null;var b=g%t.length;return L.createElement("rect",{key:"react-".concat(g),y:m,x:n,height:y,width:a,stroke:"none",fill:t[b],fillOpacity:r,className:"recharts-cartesian-grid-bg"})});return L.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},p)}function Rse(e){var t=e.vertical,r=t===void 0?!0:t,n=e.verticalFill,i=e.fillOpacity,a=e.x,s=e.y,u=e.width,f=e.height,c=e.verticalPoints;if(!r||!n||!n.length)return null;var d=c.map(function(m){return Math.round(m+a-a)}).sort(function(m,g){return m-g});a!==d[0]&&d.unshift(0);var p=d.map(function(m,g){var w=!d[g+1],y=w?a+u-m:d[g+1]-m;if(y<=0)return null;var b=g%n.length;return L.createElement("rect",{key:"react-".concat(g),x:m,y:s,width:y,height:f,stroke:"none",fill:n[b],fillOpacity:i,className:"recharts-cartesian-grid-bg"})});return L.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},p)}var Mse=function(t,r){var n=t.xAxis,i=t.width,a=t.height,s=t.offset;return L3(RS(lr(lr(lr({},Qs.defaultProps),n),{},{ticks:hi(n,!0),viewBox:{x:0,y:0,width:i,height:a}})),s.left,s.left+s.width,r)},Ise=function(t,r){var n=t.yAxis,i=t.width,a=t.height,s=t.offset;return L3(RS(lr(lr(lr({},Qs.defaultProps),n),{},{ticks:hi(n,!0),viewBox:{x:0,y:0,width:i,height:a}})),s.top,s.top+s.height,r)},Vo={horizontal:!0,vertical:!0,stroke:"#ccc",fill:"none",verticalFill:[],horizontalFill:[]};function Wh(e){var t,r,n,i,a,s,u=NS(),f=CS(),c=Soe(),d=lr(lr({},e),{},{stroke:(t=e.stroke)!==null&&t!==void 0?t:Vo.stroke,fill:(r=e.fill)!==null&&r!==void 0?r:Vo.fill,horizontal:(n=e.horizontal)!==null&&n!==void 0?n:Vo.horizontal,horizontalFill:(i=e.horizontalFill)!==null&&i!==void 0?i:Vo.horizontalFill,vertical:(a=e.vertical)!==null&&a!==void 0?a:Vo.vertical,verticalFill:(s=e.verticalFill)!==null&&s!==void 0?s:Vo.verticalFill,x:ye(e.x)?e.x:c.left,y:ye(e.y)?e.y:c.top,width:ye(e.width)?e.width:c.width,height:ye(e.height)?e.height:c.height}),p=d.x,m=d.y,g=d.width,w=d.height,y=d.syncWithTicks,b=d.horizontalValues,_=d.verticalValues,j=xoe(),P=boe();if(!ye(g)||g<=0||!ye(w)||w<=0||!ye(p)||p!==+p||!ye(m)||m!==+m)return null;var k=d.verticalCoordinatesGenerator||Mse,A=d.horizontalCoordinatesGenerator||Ise,N=d.horizontalPoints,C=d.verticalPoints;if((!N||!N.length)&&$e(A)){var T=b&&b.length,M=A({yAxis:P?lr(lr({},P),{},{ticks:T?b:P.ticks}):void 0,width:u,height:f,offset:c},T?!0:y);_n(Array.isArray(M),"horizontalCoordinatesGenerator should return Array but instead it returned [".concat(ro(M),"]")),Array.isArray(M)&&(N=M)}if((!C||!C.length)&&$e(k)){var F=_&&_.length,I=k({xAxis:j?lr(lr({},j),{},{ticks:F?_:j.ticks}):void 0,width:u,height:f,offset:c},F?!0:y);_n(Array.isArray(I),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(ro(I),"]")),Array.isArray(I)&&(C=I)}return L.createElement("g",{className:"recharts-cartesian-grid"},L.createElement(Nse,{fill:d.fill,fillOpacity:d.fillOpacity,x:d.x,y:d.y,width:d.width,height:d.height,ry:d.ry}),L.createElement(Cse,Fa({},d,{offset:c,horizontalPoints:N,xAxis:j,yAxis:P})),L.createElement(kse,Fa({},d,{offset:c,verticalPoints:C,xAxis:j,yAxis:P})),L.createElement(Tse,Fa({},d,{horizontalPoints:N})),L.createElement(Rse,Fa({},d,{verticalPoints:C})))}Wh.displayName="CartesianGrid";var Dse=["type","layout","connectNulls","ref"],Lse=["key"];function Ts(e){"@babel/helpers - typeof";return Ts=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ts(e)}function nR(e,t){if(e==null)return{};var r=$se(e,t),n,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function $se(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function dc(){return dc=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);rp){g=[].concat(Go(f.slice(0,w)),[p-y]);break}var b=g.length%2===0?[0,m]:[m];return[].concat(Go(t.repeat(f,d)),Go(g),b).map(function(_){return"".concat(_,"px")}).join(", ")}),wn(r,"id",Vs("recharts-line-")),wn(r,"pathRef",function(s){r.mainCurve=s}),wn(r,"handleAnimationEnd",function(){r.setState({isAnimationFinished:!0}),r.props.onAnimationEnd&&r.props.onAnimationEnd()}),wn(r,"handleAnimationStart",function(){r.setState({isAnimationFinished:!1}),r.props.onAnimationStart&&r.props.onAnimationStart()}),r}return Xse(t,e),Wse(t,[{key:"componentDidMount",value:function(){if(this.props.isAnimationActive){var n=this.getTotalLength();this.setState({totalLength:n})}}},{key:"componentDidUpdate",value:function(){if(this.props.isAnimationActive){var n=this.getTotalLength();n!==this.state.totalLength&&this.setState({totalLength:n})}}},{key:"getTotalLength",value:function(){var n=this.mainCurve;try{return n&&n.getTotalLength&&n.getTotalLength()||0}catch{return 0}}},{key:"renderErrorBar",value:function(n,i){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var a=this.props,s=a.points,u=a.xAxis,f=a.yAxis,c=a.layout,d=a.children,p=Wr(d,du);if(!p)return null;var m=function(y,b){return{x:y.x,y:y.y,value:y.value,errorVal:Bt(y.payload,b)}},g={clipPath:n?"url(#clipPath-".concat(i,")"):null};return L.createElement(rt,g,p.map(function(w){return L.cloneElement(w,{key:"bar-".concat(w.props.dataKey),data:s,xAxis:u,yAxis:f,layout:c,dataPointFormatter:m})}))}},{key:"renderDots",value:function(n,i,a){var s=this.props.isAnimationActive;if(s&&!this.state.isAnimationFinished)return null;var u=this.props,f=u.dot,c=u.points,d=u.dataKey,p=Me(this.props,!1),m=Me(f,!0),g=c.map(function(y,b){var _=Mr(Mr(Mr({key:"dot-".concat(b),r:3},p),m),{},{index:b,cx:y.x,cy:y.y,value:y.value,dataKey:d,payload:y.payload,points:c});return t.renderDotItem(f,_)}),w={clipPath:n?"url(#clipPath-".concat(i?"":"dots-").concat(a,")"):null};return L.createElement(rt,dc({className:"recharts-line-dots",key:"dots"},w),g)}},{key:"renderCurveStatically",value:function(n,i,a,s){var u=this.props,f=u.type,c=u.layout,d=u.connectNulls;u.ref;var p=nR(u,Dse),m=Mr(Mr(Mr({},Me(p,!0)),{},{fill:"none",className:"recharts-line-curve",clipPath:i?"url(#clipPath-".concat(a,")"):null,points:n},s),{},{type:f,layout:c,connectNulls:d});return L.createElement(_h,dc({},m,{pathRef:this.pathRef}))}},{key:"renderCurveWithAnimation",value:function(n,i){var a=this,s=this.props,u=s.points,f=s.strokeDasharray,c=s.isAnimationActive,d=s.animationBegin,p=s.animationDuration,m=s.animationEasing,g=s.animationId,w=s.animateNewValues,y=s.width,b=s.height,_=this.state,j=_.prevPoints,P=_.totalLength;return L.createElement(Vn,{begin:d,duration:p,isActive:c,easing:m,from:{t:0},to:{t:1},key:"line-".concat(g),onAnimationEnd:this.handleAnimationEnd,onAnimationStart:this.handleAnimationStart},function(k){var A=k.t;if(j){var N=j.length/u.length,C=u.map(function(D,q){var U=Math.floor(q*N);if(j[U]){var H=j[U],X=Fr(H.x,D.x),Y=Fr(H.y,D.y);return Mr(Mr({},D),{},{x:X(A),y:Y(A)})}if(w){var $=Fr(y*2,D.x),ee=Fr(b/2,D.y);return Mr(Mr({},D),{},{x:$(A),y:ee(A)})}return Mr(Mr({},D),{},{x:D.x,y:D.y})});return a.renderCurveStatically(C,n,i)}var T=Fr(0,P),M=T(A),F;if(f){var I="".concat(f).split(/[,\s]+/gim).map(function(D){return parseFloat(D)});F=a.getStrokeDasharray(M,P,I)}else F=a.generateSimpleStrokeDasharray(P,M);return a.renderCurveStatically(u,n,i,{strokeDasharray:F})})}},{key:"renderCurve",value:function(n,i){var a=this.props,s=a.points,u=a.isAnimationActive,f=this.state,c=f.prevPoints,d=f.totalLength;return u&&s&&s.length&&(!c&&d>0||!fu(c,s))?this.renderCurveWithAnimation(n,i):this.renderCurveStatically(s,n,i)}},{key:"render",value:function(){var n,i=this.props,a=i.hide,s=i.dot,u=i.points,f=i.className,c=i.xAxis,d=i.yAxis,p=i.top,m=i.left,g=i.width,w=i.height,y=i.isAnimationActive,b=i.id;if(a||!u||!u.length)return null;var _=this.state.isAnimationFinished,j=u.length===1,P=Ge("recharts-line",f),k=c&&c.allowDataOverflow,A=d&&d.allowDataOverflow,N=k||A,C=He(b)?this.id:b,T=(n=Me(s,!1))!==null&&n!==void 0?n:{r:3,strokeWidth:2},M=T.r,F=M===void 0?3:M,I=T.strokeWidth,D=I===void 0?2:I,q=jV(s)?s:{},U=q.clipDot,H=U===void 0?!0:U,X=F*2+D;return L.createElement(rt,{className:P},k||A?L.createElement("defs",null,L.createElement("clipPath",{id:"clipPath-".concat(C)},L.createElement("rect",{x:k?m:m-g/2,y:A?p:p-w/2,width:k?g:g*2,height:A?w:w*2})),!H&&L.createElement("clipPath",{id:"clipPath-dots-".concat(C)},L.createElement("rect",{x:m-X/2,y:p-X/2,width:g+X,height:w+X}))):null,!j&&this.renderCurve(N,C),this.renderErrorBar(N,C),(j||s)&&this.renderDots(N,H,C),(!y||_)&&vi.renderCallByParent(this.props,u))}}],[{key:"getDerivedStateFromProps",value:function(n,i){return n.animationId!==i.prevAnimationId?{prevAnimationId:n.animationId,curPoints:n.points,prevPoints:i.curPoints}:n.points!==i.curPoints?{curPoints:n.points}:null}},{key:"repeat",value:function(n,i){for(var a=n.length%2!==0?[].concat(Go(n),[0]):n,s=[],u=0;ue.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function $le(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function Ble(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Fle(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r0?s:t&&t.length&&ye(i)&&ye(a)?t.slice(i,a+1):[]};function Z4(e){return e==="number"?[0,"auto"]:void 0}var ew=function(t,r,n,i){var a=t.graphicalItems,s=t.tooltipAxis,u=Zp(r,t);return n<0||!a||!a.length||n>=u.length?null:a.reduce(function(f,c){var d,p=(d=c.props.data)!==null&&d!==void 0?d:r;p&&t.dataStartIndex+t.dataEndIndex!==0&&t.dataEndIndex-t.dataStartIndex>=n&&(p=p.slice(t.dataStartIndex,t.dataEndIndex+1));var m;if(s.dataKey&&!s.allowDuplicatedCategory){var g=p===void 0?u:p;m=Gd(g,s.dataKey,i)}else m=p&&p[n]||u[n];return m?[].concat(Ds(f),[q3(c,m)]):f},[])},dR=function(t,r,n,i){var a=i||{x:t.chartX,y:t.chartY},s=Zle(a,n),u=t.orderedTooltipTicks,f=t.tooltipAxis,c=t.tooltipTicks,d=wee(s,u,c,f);if(d>=0&&c){var p=c[d]&&c[d].value,m=ew(t,r,d,p),g=Jle(n,u,d,a);return{activeTooltipIndex:d,activeLabel:p,activePayload:m,activeCoordinate:g}}return null},ece=function(t,r){var n=r.axes,i=r.graphicalItems,a=r.axisType,s=r.axisIdKey,u=r.stackGroups,f=r.dataStartIndex,c=r.dataEndIndex,d=t.layout,p=t.children,m=t.stackOffset,g=D3(d,a);return n.reduce(function(w,y){var b,_=y.type.defaultProps!==void 0?oe(oe({},y.type.defaultProps),y.props):y.props,j=_.type,P=_.dataKey,k=_.allowDataOverflow,A=_.allowDuplicatedCategory,N=_.scale,C=_.ticks,T=_.includeHidden,M=_[s];if(w[M])return w;var F=Zp(t.data,{graphicalItems:i.filter(function(K){var se,pe=s in K.props?K.props[s]:(se=K.type.defaultProps)===null||se===void 0?void 0:se[s];return pe===M}),dataStartIndex:f,dataEndIndex:c}),I=F.length,D,q,U;Ele(_.domain,k,j)&&(D=p1(_.domain,null,k),g&&(j==="number"||N!=="auto")&&(U=lc(F,P,"category")));var H=Z4(j);if(!D||D.length===0){var X,Y=(X=_.domain)!==null&&X!==void 0?X:H;if(P){if(D=lc(F,P,j),j==="category"&&g){var $=pV(D);A&&$?(q=D,D=Mh(0,I)):A||(D=pk(Y,D,y).reduce(function(K,se){return K.indexOf(se)>=0?K:[].concat(Ds(K),[se])},[]))}else if(j==="category")A?D=D.filter(function(K){return K!==""&&!He(K)}):D=pk(Y,D,y).reduce(function(K,se){return K.indexOf(se)>=0||se===""||He(se)?K:[].concat(Ds(K),[se])},[]);else if(j==="number"){var ee=Eee(F,i.filter(function(K){var se,pe,G=s in K.props?K.props[s]:(se=K.type.defaultProps)===null||se===void 0?void 0:se[s],Q="hide"in K.props?K.props.hide:(pe=K.type.defaultProps)===null||pe===void 0?void 0:pe.hide;return G===M&&(T||!Q)}),P,a,d);ee&&(D=ee)}g&&(j==="number"||N!=="auto")&&(U=lc(F,P,"category"))}else g?D=Mh(0,I):u&&u[M]&&u[M].hasStack&&j==="number"?D=m==="expand"?[0,1]:z3(u[M].stackGroups,f,c):D=I3(F,i.filter(function(K){var se=s in K.props?K.props[s]:K.type.defaultProps[s],pe="hide"in K.props?K.props.hide:K.type.defaultProps.hide;return se===M&&(T||!pe)}),j,d,!0);if(j==="number")D=Q1(p,D,M,a,C),Y&&(D=p1(Y,D,k));else if(j==="category"&&Y){var re=Y,z=D.every(function(K){return re.indexOf(K)>=0});z&&(D=re)}}return oe(oe({},w),{},Ie({},M,oe(oe({},_),{},{axisType:a,domain:D,categoricalDomain:U,duplicateDomain:q,originalDomain:(b=_.domain)!==null&&b!==void 0?b:H,isCategorical:g,layout:d})))},{})},tce=function(t,r){var n=r.graphicalItems,i=r.Axis,a=r.axisType,s=r.axisIdKey,u=r.stackGroups,f=r.dataStartIndex,c=r.dataEndIndex,d=t.layout,p=t.children,m=Zp(t.data,{graphicalItems:n,dataStartIndex:f,dataEndIndex:c}),g=m.length,w=D3(d,a),y=-1;return n.reduce(function(b,_){var j=_.type.defaultProps!==void 0?oe(oe({},_.type.defaultProps),_.props):_.props,P=j[s],k=Z4("number");if(!b[P]){y++;var A;return w?A=Mh(0,g):u&&u[P]&&u[P].hasStack?(A=z3(u[P].stackGroups,f,c),A=Q1(p,A,P,a)):(A=p1(k,I3(m,n.filter(function(N){var C,T,M=s in N.props?N.props[s]:(C=N.type.defaultProps)===null||C===void 0?void 0:C[s],F="hide"in N.props?N.props.hide:(T=N.type.defaultProps)===null||T===void 0?void 0:T.hide;return M===P&&!F}),"number",d),i.defaultProps.allowDataOverflow),A=Q1(p,A,P,a)),oe(oe({},b),{},Ie({},P,oe(oe({axisType:a},i.defaultProps),{},{hide:!0,orientation:Ur(Yle,"".concat(a,".").concat(y%2),null),domain:A,originalDomain:k,isCategorical:w,layout:d})))}return b},{})},rce=function(t,r){var n=r.axisType,i=n===void 0?"xAxis":n,a=r.AxisComp,s=r.graphicalItems,u=r.stackGroups,f=r.dataStartIndex,c=r.dataEndIndex,d=t.children,p="".concat(i,"Id"),m=Wr(d,a),g={};return m&&m.length?g=ece(t,{axes:m,graphicalItems:s,axisType:i,axisIdKey:p,stackGroups:u,dataStartIndex:f,dataEndIndex:c}):s&&s.length&&(g=tce(t,{Axis:a,graphicalItems:s,axisType:i,axisIdKey:p,stackGroups:u,dataStartIndex:f,dataEndIndex:c})),g},nce=function(t){var r=Ji(t),n=hi(r,!1,!0);return{tooltipTicks:n,orderedTooltipTicks:Zw(n,function(i){return i.coordinate}),tooltipAxis:r,tooltipAxisBandSize:bh(r,n)}},hR=function(t){var r=t.children,n=t.defaultShowTooltip,i=Dr(r,Es),a=0,s=0;return t.data&&t.data.length!==0&&(s=t.data.length-1),i&&i.props&&(i.props.startIndex>=0&&(a=i.props.startIndex),i.props.endIndex>=0&&(s=i.props.endIndex)),{chartX:0,chartY:0,dataStartIndex:a,dataEndIndex:s,activeTooltipIndex:-1,isTooltipActive:!!n}},ice=function(t){return!t||!t.length?!1:t.some(function(r){var n=pi(r&&r.type);return n&&n.indexOf("Bar")>=0})},pR=function(t){return t==="horizontal"?{numericAxisName:"yAxis",cateAxisName:"xAxis"}:t==="vertical"?{numericAxisName:"xAxis",cateAxisName:"yAxis"}:t==="centric"?{numericAxisName:"radiusAxis",cateAxisName:"angleAxis"}:{numericAxisName:"angleAxis",cateAxisName:"radiusAxis"}},ace=function(t,r){var n=t.props,i=t.graphicalItems,a=t.xAxisMap,s=a===void 0?{}:a,u=t.yAxisMap,f=u===void 0?{}:u,c=n.width,d=n.height,p=n.children,m=n.margin||{},g=Dr(p,Es),w=Dr(p,os),y=Object.keys(f).reduce(function(A,N){var C=f[N],T=C.orientation;return!C.mirror&&!C.hide?oe(oe({},A),{},Ie({},T,A[T]+C.width)):A},{left:m.left||0,right:m.right||0}),b=Object.keys(s).reduce(function(A,N){var C=s[N],T=C.orientation;return!C.mirror&&!C.hide?oe(oe({},A),{},Ie({},T,Ur(A,"".concat(T))+C.height)):A},{top:m.top||0,bottom:m.bottom||0}),_=oe(oe({},b),y),j=_.bottom;g&&(_.bottom+=g.props.height||Es.defaultProps.height),w&&r&&(_=jee(_,i,n,r));var P=c-_.left-_.right,k=d-_.top-_.bottom;return oe(oe({brushBottom:j},_),{},{width:Math.max(P,0),height:Math.max(k,0)})},oce=function(t,r){if(r==="xAxis")return t[r].width;if(r==="yAxis")return t[r].height},IS=function(t){var r=t.chartName,n=t.GraphicalChild,i=t.defaultTooltipEventType,a=i===void 0?"axis":i,s=t.validateTooltipEventTypes,u=s===void 0?["axis"]:s,f=t.axisComponents,c=t.legendContent,d=t.formatAxisMap,p=t.defaultProps,m=function(_,j){var P=j.graphicalItems,k=j.stackGroups,A=j.offset,N=j.updateId,C=j.dataStartIndex,T=j.dataEndIndex,M=_.barSize,F=_.layout,I=_.barGap,D=_.barCategoryGap,q=_.maxBarSize,U=pR(F),H=U.numericAxisName,X=U.cateAxisName,Y=ice(P),$=[];return P.forEach(function(ee,re){var z=Zp(_.data,{graphicalItems:[ee],dataStartIndex:C,dataEndIndex:T}),K=ee.type.defaultProps!==void 0?oe(oe({},ee.type.defaultProps),ee.props):ee.props,se=K.dataKey,pe=K.maxBarSize,G=K["".concat(H,"Id")],Q=K["".concat(X,"Id")],J={},ce=f.reduce(function(Jt,gr){var Zn=j["".concat(gr.axisType,"Map")],Ai=K["".concat(gr.axisType,"Id")];Zn&&Zn[Ai]||gr.axisType==="zAxis"||to();var Ni=Zn[Ai];return oe(oe({},Jt),{},Ie(Ie({},gr.axisType,Ni),"".concat(gr.axisType,"Ticks"),hi(Ni)))},J),ie=ce[X],fe=ce["".concat(X,"Ticks")],xe=k&&k[G]&&k[G].hasStack&&Iee(ee,k[G].stackGroups),ae=pi(ee.type).indexOf("Bar")>=0,Be=bh(ie,fe),De=[],ot=Y&&See({barSize:M,stackGroups:k,totalSize:oce(ce,X)});if(ae){var et,ct,qt=He(pe)?q:pe,Ut=(et=(ct=bh(ie,fe,!0))!==null&&ct!==void 0?ct:qt)!==null&&et!==void 0?et:0;De=_ee({barGap:I,barCategoryGap:D,bandSize:Ut!==Be?Ut:Be,sizeList:ot[Q],maxBarSize:qt}),Ut!==Be&&(De=De.map(function(Jt){return oe(oe({},Jt),{},{position:oe(oe({},Jt.position),{},{offset:Jt.position.offset-Ut/2})})}))}var Pr=ee&&ee.type&&ee.type.getComposedData;Pr&&$.push({props:oe(oe({},Pr(oe(oe({},ce),{},{displayedData:z,props:_,dataKey:se,item:ee,bandSize:Be,barPosition:De,offset:A,stackedData:xe,layout:F,dataStartIndex:C,dataEndIndex:T}))),{},Ie(Ie(Ie({key:ee.key||"item-".concat(re)},H,ce[H]),X,ce[X]),"animationId",N)),childIndex:PV(ee,_.children),item:ee})}),$},g=function(_,j){var P=_.props,k=_.dataStartIndex,A=_.dataEndIndex,N=_.updateId;if(!AP({props:P}))return null;var C=P.children,T=P.layout,M=P.stackOffset,F=P.data,I=P.reverseStackOrder,D=pR(T),q=D.numericAxisName,U=D.cateAxisName,H=Wr(C,n),X=Ree(F,H,"".concat(q,"Id"),"".concat(U,"Id"),M,I),Y=f.reduce(function(K,se){var pe="".concat(se.axisType,"Map");return oe(oe({},K),{},Ie({},pe,rce(P,oe(oe({},se),{},{graphicalItems:H,stackGroups:se.axisType===q&&X,dataStartIndex:k,dataEndIndex:A}))))},{}),$=ace(oe(oe({},Y),{},{props:P,graphicalItems:H}),j?.legendBBox);Object.keys(Y).forEach(function(K){Y[K]=d(P,Y[K],$,K.replace("Map",""),r)});var ee=Y["".concat(U,"Map")],re=nce(ee),z=m(P,oe(oe({},Y),{},{dataStartIndex:k,dataEndIndex:A,updateId:N,graphicalItems:H,stackGroups:X,offset:$}));return oe(oe({formattedGraphicalItems:z,graphicalItems:H,offset:$,stackGroups:X},re),Y)},w=(function(b){function _(j){var P,k,A;return Ble(this,_),A=qle(this,_,[j]),Ie(A,"eventEmitterSymbol",Symbol("rechartsEventEmitter")),Ie(A,"accessibilityManager",new Ole),Ie(A,"handleLegendBBoxUpdate",function(N){if(N){var C=A.state,T=C.dataStartIndex,M=C.dataEndIndex,F=C.updateId;A.setState(oe({legendBBox:N},g({props:A.props,dataStartIndex:T,dataEndIndex:M,updateId:F},oe(oe({},A.state),{},{legendBBox:N}))))}}),Ie(A,"handleReceiveSyncEvent",function(N,C,T){if(A.props.syncId===N){if(T===A.eventEmitterSymbol&&typeof A.props.syncMethod!="function")return;A.applySyncEvent(C)}}),Ie(A,"handleBrushChange",function(N){var C=N.startIndex,T=N.endIndex;if(C!==A.state.dataStartIndex||T!==A.state.dataEndIndex){var M=A.state.updateId;A.setState(function(){return oe({dataStartIndex:C,dataEndIndex:T},g({props:A.props,dataStartIndex:C,dataEndIndex:T,updateId:M},A.state))}),A.triggerSyncEvent({dataStartIndex:C,dataEndIndex:T})}}),Ie(A,"handleMouseEnter",function(N){var C=A.getMouseInfo(N);if(C){var T=oe(oe({},C),{},{isTooltipActive:!0});A.setState(T),A.triggerSyncEvent(T);var M=A.props.onMouseEnter;$e(M)&&M(T,N)}}),Ie(A,"triggeredAfterMouseMove",function(N){var C=A.getMouseInfo(N),T=C?oe(oe({},C),{},{isTooltipActive:!0}):{isTooltipActive:!1};A.setState(T),A.triggerSyncEvent(T);var M=A.props.onMouseMove;$e(M)&&M(T,N)}),Ie(A,"handleItemMouseEnter",function(N){A.setState(function(){return{isTooltipActive:!0,activeItem:N,activePayload:N.tooltipPayload,activeCoordinate:N.tooltipPosition||{x:N.cx,y:N.cy}}})}),Ie(A,"handleItemMouseLeave",function(){A.setState(function(){return{isTooltipActive:!1}})}),Ie(A,"handleMouseMove",function(N){N.persist(),A.throttleTriggeredAfterMouseMove(N)}),Ie(A,"handleMouseLeave",function(N){A.throttleTriggeredAfterMouseMove.cancel();var C={isTooltipActive:!1};A.setState(C),A.triggerSyncEvent(C);var T=A.props.onMouseLeave;$e(T)&&T(C,N)}),Ie(A,"handleOuterEvent",function(N){var C=EV(N),T=Ur(A.props,"".concat(C));if(C&&$e(T)){var M,F;/.*touch.*/i.test(C)?F=A.getMouseInfo(N.changedTouches[0]):F=A.getMouseInfo(N),T((M=F)!==null&&M!==void 0?M:{},N)}}),Ie(A,"handleClick",function(N){var C=A.getMouseInfo(N);if(C){var T=oe(oe({},C),{},{isTooltipActive:!0});A.setState(T),A.triggerSyncEvent(T);var M=A.props.onClick;$e(M)&&M(T,N)}}),Ie(A,"handleMouseDown",function(N){var C=A.props.onMouseDown;if($e(C)){var T=A.getMouseInfo(N);C(T,N)}}),Ie(A,"handleMouseUp",function(N){var C=A.props.onMouseUp;if($e(C)){var T=A.getMouseInfo(N);C(T,N)}}),Ie(A,"handleTouchMove",function(N){N.changedTouches!=null&&N.changedTouches.length>0&&A.throttleTriggeredAfterMouseMove(N.changedTouches[0])}),Ie(A,"handleTouchStart",function(N){N.changedTouches!=null&&N.changedTouches.length>0&&A.handleMouseDown(N.changedTouches[0])}),Ie(A,"handleTouchEnd",function(N){N.changedTouches!=null&&N.changedTouches.length>0&&A.handleMouseUp(N.changedTouches[0])}),Ie(A,"handleDoubleClick",function(N){var C=A.props.onDoubleClick;if($e(C)){var T=A.getMouseInfo(N);C(T,N)}}),Ie(A,"handleContextMenu",function(N){var C=A.props.onContextMenu;if($e(C)){var T=A.getMouseInfo(N);C(T,N)}}),Ie(A,"triggerSyncEvent",function(N){A.props.syncId!==void 0&&ub.emit(fb,A.props.syncId,N,A.eventEmitterSymbol)}),Ie(A,"applySyncEvent",function(N){var C=A.props,T=C.layout,M=C.syncMethod,F=A.state.updateId,I=N.dataStartIndex,D=N.dataEndIndex;if(N.dataStartIndex!==void 0||N.dataEndIndex!==void 0)A.setState(oe({dataStartIndex:I,dataEndIndex:D},g({props:A.props,dataStartIndex:I,dataEndIndex:D,updateId:F},A.state)));else if(N.activeTooltipIndex!==void 0){var q=N.chartX,U=N.chartY,H=N.activeTooltipIndex,X=A.state,Y=X.offset,$=X.tooltipTicks;if(!Y)return;if(typeof M=="function")H=M($,N);else if(M==="value"){H=-1;for(var ee=0;ee<$.length;ee++)if($[ee].value===N.activeLabel){H=ee;break}}var re=oe(oe({},Y),{},{x:Y.left,y:Y.top}),z=Math.min(q,re.x+re.width),K=Math.min(U,re.y+re.height),se=$[H]&&$[H].value,pe=ew(A.state,A.props.data,H),G=$[H]?{x:T==="horizontal"?$[H].coordinate:z,y:T==="horizontal"?K:$[H].coordinate}:Q4;A.setState(oe(oe({},N),{},{activeLabel:se,activeCoordinate:G,activePayload:pe,activeTooltipIndex:H}))}else A.setState(N)}),Ie(A,"renderCursor",function(N){var C,T=A.state,M=T.isTooltipActive,F=T.activeCoordinate,I=T.activePayload,D=T.offset,q=T.activeTooltipIndex,U=T.tooltipAxisBandSize,H=A.getTooltipEventType(),X=(C=N.props.active)!==null&&C!==void 0?C:M,Y=A.props.layout,$=N.key||"_recharts-cursor";return L.createElement(Tle,{key:$,activeCoordinate:F,activePayload:I,activeTooltipIndex:q,chartName:r,element:N,isActive:X,layout:Y,offset:D,tooltipAxisBandSize:U,tooltipEventType:H})}),Ie(A,"renderPolarAxis",function(N,C,T){var M=Ur(N,"type.axisType"),F=Ur(A.state,"".concat(M,"Map")),I=N.type.defaultProps,D=I!==void 0?oe(oe({},I),N.props):N.props,q=F&&F[D["".concat(M,"Id")]];return E.cloneElement(N,oe(oe({},q),{},{className:Ge(M,q.className),key:N.key||"".concat(C,"-").concat(T),ticks:hi(q,!0)}))}),Ie(A,"renderPolarGrid",function(N){var C=N.props,T=C.radialLines,M=C.polarAngles,F=C.polarRadius,I=A.state,D=I.radiusAxisMap,q=I.angleAxisMap,U=Ji(D),H=Ji(q),X=H.cx,Y=H.cy,$=H.innerRadius,ee=H.outerRadius;return E.cloneElement(N,{polarAngles:Array.isArray(M)?M:hi(H,!0).map(function(re){return re.coordinate}),polarRadius:Array.isArray(F)?F:hi(U,!0).map(function(re){return re.coordinate}),cx:X,cy:Y,innerRadius:$,outerRadius:ee,key:N.key||"polar-grid",radialLines:T})}),Ie(A,"renderLegend",function(){var N=A.state.formattedGraphicalItems,C=A.props,T=C.children,M=C.width,F=C.height,I=A.props.margin||{},D=M-(I.left||0)-(I.right||0),q=R3({children:T,formattedGraphicalItems:N,legendWidth:D,legendContent:c});if(!q)return null;var U=q.item,H=uR(q,Rle);return E.cloneElement(U,oe(oe({},H),{},{chartWidth:M,chartHeight:F,margin:I,onBBoxUpdate:A.handleLegendBBoxUpdate}))}),Ie(A,"renderTooltip",function(){var N,C=A.props,T=C.children,M=C.accessibilityLayer,F=Dr(T,$r);if(!F)return null;var I=A.state,D=I.isTooltipActive,q=I.activeCoordinate,U=I.activePayload,H=I.activeLabel,X=I.offset,Y=(N=F.props.active)!==null&&N!==void 0?N:D;return E.cloneElement(F,{viewBox:oe(oe({},X),{},{x:X.left,y:X.top}),active:Y,label:H,payload:Y?U:[],coordinate:q,accessibilityLayer:M})}),Ie(A,"renderBrush",function(N){var C=A.props,T=C.margin,M=C.data,F=A.state,I=F.offset,D=F.dataStartIndex,q=F.dataEndIndex,U=F.updateId;return E.cloneElement(N,{key:N.key||"_recharts-brush",onChange:wd(A.handleBrushChange,N.props.onChange),data:M,x:ye(N.props.x)?N.props.x:I.left,y:ye(N.props.y)?N.props.y:I.top+I.height+I.brushBottom-(T.bottom||0),width:ye(N.props.width)?N.props.width:I.width,startIndex:D,endIndex:q,updateId:"brush-".concat(U)})}),Ie(A,"renderReferenceElement",function(N,C,T){if(!N)return null;var M=A,F=M.clipPathId,I=A.state,D=I.xAxisMap,q=I.yAxisMap,U=I.offset,H=N.type.defaultProps||{},X=N.props,Y=X.xAxisId,$=Y===void 0?H.xAxisId:Y,ee=X.yAxisId,re=ee===void 0?H.yAxisId:ee;return E.cloneElement(N,{key:N.key||"".concat(C,"-").concat(T),xAxis:D[$],yAxis:q[re],viewBox:{x:U.left,y:U.top,width:U.width,height:U.height},clipPathId:F})}),Ie(A,"renderActivePoints",function(N){var C=N.item,T=N.activePoint,M=N.basePoint,F=N.childIndex,I=N.isRange,D=[],q=C.props.key,U=C.item.type.defaultProps!==void 0?oe(oe({},C.item.type.defaultProps),C.item.props):C.item.props,H=U.activeDot,X=U.dataKey,Y=oe(oe({index:F,dataKey:X,cx:T.x,cy:T.y,r:4,fill:jS(C.item),strokeWidth:2,stroke:"#fff",payload:T.payload,value:T.value},Me(H,!1)),Xd(H));return D.push(_.renderActiveDot(H,Y,"".concat(q,"-activePoint-").concat(F))),M?D.push(_.renderActiveDot(H,oe(oe({},Y),{},{cx:M.x,cy:M.y}),"".concat(q,"-basePoint-").concat(F))):I&&D.push(null),D}),Ie(A,"renderGraphicChild",function(N,C,T){var M=A.filterFormatItem(N,C,T);if(!M)return null;var F=A.getTooltipEventType(),I=A.state,D=I.isTooltipActive,q=I.tooltipAxis,U=I.activeTooltipIndex,H=I.activeLabel,X=A.props.children,Y=Dr(X,$r),$=M.props,ee=$.points,re=$.isRange,z=$.baseLine,K=M.item.type.defaultProps!==void 0?oe(oe({},M.item.type.defaultProps),M.item.props):M.item.props,se=K.activeDot,pe=K.hide,G=K.activeBar,Q=K.activeShape,J=!!(!pe&&D&&Y&&(se||G||Q)),ce={};F!=="axis"&&Y&&Y.props.trigger==="click"?ce={onClick:wd(A.handleItemMouseEnter,N.props.onClick)}:F!=="axis"&&(ce={onMouseLeave:wd(A.handleItemMouseLeave,N.props.onMouseLeave),onMouseEnter:wd(A.handleItemMouseEnter,N.props.onMouseEnter)});var ie=E.cloneElement(N,oe(oe({},M.props),ce));function fe(gr){return typeof q.dataKey=="function"?q.dataKey(gr.payload):null}if(J)if(U>=0){var xe,ae;if(q.dataKey&&!q.allowDuplicatedCategory){var Be=typeof q.dataKey=="function"?fe:"payload.".concat(q.dataKey.toString());xe=Gd(ee,Be,H),ae=re&&z&&Gd(z,Be,H)}else xe=ee?.[U],ae=re&&z&&z[U];if(Q||G){var De=N.props.activeIndex!==void 0?N.props.activeIndex:U;return[E.cloneElement(N,oe(oe(oe({},M.props),ce),{},{activeIndex:De})),null,null]}if(!He(xe))return[ie].concat(Ds(A.renderActivePoints({item:M,activePoint:xe,basePoint:ae,childIndex:U,isRange:re})))}else{var ot,et=(ot=A.getItemByXY(A.state.activeCoordinate))!==null&&ot!==void 0?ot:{graphicalItem:ie},ct=et.graphicalItem,qt=ct.item,Ut=qt===void 0?N:qt,Pr=ct.childIndex,Jt=oe(oe(oe({},M.props),ce),{},{activeIndex:Pr});return[E.cloneElement(Ut,Jt),null,null]}return re?[ie,null,null]:[ie,null]}),Ie(A,"renderCustomized",function(N,C,T){return E.cloneElement(N,oe(oe({key:"recharts-customized-".concat(T)},A.props),A.state))}),Ie(A,"renderMap",{CartesianGrid:{handler:Ed,once:!0},ReferenceArea:{handler:A.renderReferenceElement},ReferenceLine:{handler:Ed},ReferenceDot:{handler:A.renderReferenceElement},XAxis:{handler:Ed},YAxis:{handler:Ed},Brush:{handler:A.renderBrush,once:!0},Bar:{handler:A.renderGraphicChild},Line:{handler:A.renderGraphicChild},Area:{handler:A.renderGraphicChild},Radar:{handler:A.renderGraphicChild},RadialBar:{handler:A.renderGraphicChild},Scatter:{handler:A.renderGraphicChild},Pie:{handler:A.renderGraphicChild},Funnel:{handler:A.renderGraphicChild},Tooltip:{handler:A.renderCursor,once:!0},PolarGrid:{handler:A.renderPolarGrid,once:!0},PolarAngleAxis:{handler:A.renderPolarAxis},PolarRadiusAxis:{handler:A.renderPolarAxis},Customized:{handler:A.renderCustomized}}),A.clipPathId="".concat((P=j.id)!==null&&P!==void 0?P:Vs("recharts"),"-clip"),A.throttleTriggeredAfterMouseMove=RL(A.triggeredAfterMouseMove,(k=j.throttleDelay)!==null&&k!==void 0?k:1e3/60),A.state={},A}return Hle(_,b),zle(_,[{key:"componentDidMount",value:function(){var P,k;this.addListener(),this.accessibilityManager.setDetails({container:this.container,offset:{left:(P=this.props.margin.left)!==null&&P!==void 0?P:0,top:(k=this.props.margin.top)!==null&&k!==void 0?k:0},coordinateList:this.state.tooltipTicks,mouseHandlerCallback:this.triggeredAfterMouseMove,layout:this.props.layout}),this.displayDefaultTooltip()}},{key:"displayDefaultTooltip",value:function(){var P=this.props,k=P.children,A=P.data,N=P.height,C=P.layout,T=Dr(k,$r);if(T){var M=T.props.defaultIndex;if(!(typeof M!="number"||M<0||M>this.state.tooltipTicks.length-1)){var F=this.state.tooltipTicks[M]&&this.state.tooltipTicks[M].value,I=ew(this.state,A,M,F),D=this.state.tooltipTicks[M].coordinate,q=(this.state.offset.top+N)/2,U=C==="horizontal",H=U?{x:D,y:q}:{y:D,x:q},X=this.state.formattedGraphicalItems.find(function($){var ee=$.item;return ee.type.name==="Scatter"});X&&(H=oe(oe({},H),X.props.points[M].tooltipPosition),I=X.props.points[M].tooltipPayload);var Y={activeTooltipIndex:M,isTooltipActive:!0,activeLabel:F,activePayload:I,activeCoordinate:H};this.setState(Y),this.renderCursor(T),this.accessibilityManager.setIndex(M)}}}},{key:"getSnapshotBeforeUpdate",value:function(P,k){if(!this.props.accessibilityLayer)return null;if(this.state.tooltipTicks!==k.tooltipTicks&&this.accessibilityManager.setDetails({coordinateList:this.state.tooltipTicks}),this.props.layout!==P.layout&&this.accessibilityManager.setDetails({layout:this.props.layout}),this.props.margin!==P.margin){var A,N;this.accessibilityManager.setDetails({offset:{left:(A=this.props.margin.left)!==null&&A!==void 0?A:0,top:(N=this.props.margin.top)!==null&&N!==void 0?N:0}})}return null}},{key:"componentDidUpdate",value:function(P){Db([Dr(P.children,$r)],[Dr(this.props.children,$r)])||this.displayDefaultTooltip()}},{key:"componentWillUnmount",value:function(){this.removeListener(),this.throttleTriggeredAfterMouseMove.cancel()}},{key:"getTooltipEventType",value:function(){var P=Dr(this.props.children,$r);if(P&&typeof P.props.shared=="boolean"){var k=P.props.shared?"axis":"item";return u.indexOf(k)>=0?k:a}return a}},{key:"getMouseInfo",value:function(P){if(!this.container)return null;var k=this.container,A=k.getBoundingClientRect(),N=hY(A),C={chartX:Math.round(P.pageX-N.left),chartY:Math.round(P.pageY-N.top)},T=A.width/k.offsetWidth||1,M=this.inRange(C.chartX,C.chartY,T);if(!M)return null;var F=this.state,I=F.xAxisMap,D=F.yAxisMap,q=this.getTooltipEventType(),U=dR(this.state,this.props.data,this.props.layout,M);if(q!=="axis"&&I&&D){var H=Ji(I).scale,X=Ji(D).scale,Y=H&&H.invert?H.invert(C.chartX):null,$=X&&X.invert?X.invert(C.chartY):null;return oe(oe({},C),{},{xValue:Y,yValue:$},U)}return U?oe(oe({},C),U):null}},{key:"inRange",value:function(P,k){var A=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,N=this.props.layout,C=P/A,T=k/A;if(N==="horizontal"||N==="vertical"){var M=this.state.offset,F=C>=M.left&&C<=M.left+M.width&&T>=M.top&&T<=M.top+M.height;return F?{x:C,y:T}:null}var I=this.state,D=I.angleAxisMap,q=I.radiusAxisMap;if(D&&q){var U=Ji(D);return gk({x:C,y:T},U)}return null}},{key:"parseEventsOfWrapper",value:function(){var P=this.props.children,k=this.getTooltipEventType(),A=Dr(P,$r),N={};A&&k==="axis"&&(A.props.trigger==="click"?N={onClick:this.handleClick}:N={onMouseEnter:this.handleMouseEnter,onDoubleClick:this.handleDoubleClick,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,onTouchEnd:this.handleTouchEnd,onContextMenu:this.handleContextMenu});var C=Xd(this.props,this.handleOuterEvent);return oe(oe({},C),N)}},{key:"addListener",value:function(){ub.on(fb,this.handleReceiveSyncEvent)}},{key:"removeListener",value:function(){ub.removeListener(fb,this.handleReceiveSyncEvent)}},{key:"filterFormatItem",value:function(P,k,A){for(var N=this.state.formattedGraphicalItems,C=0,T=N.length;C"u")return;let t=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css",t.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}Array(12).fill(0);let tw=1;class uce{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{const r=this.subscribers.indexOf(t);this.subscribers.splice(r,1)}),this.publish=t=>{this.subscribers.forEach(r=>r(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var r;const{message:n,...i}=t,a=typeof t?.id=="number"||((r=t.id)==null?void 0:r.length)>0?t.id:tw++,s=this.toasts.find(f=>f.id===a),u=t.dismissible===void 0?!0:t.dismissible;return this.dismissedToasts.has(a)&&this.dismissedToasts.delete(a),s?this.toasts=this.toasts.map(f=>f.id===a?(this.publish({...f,...t,id:a,title:n}),{...f,...t,id:a,dismissible:u,title:n}):f):this.addToast({title:n,...i,dismissible:u,id:a}),a},this.dismiss=t=>(t?(this.dismissedToasts.add(t),requestAnimationFrame(()=>this.subscribers.forEach(r=>r({id:t,dismiss:!0})))):this.toasts.forEach(r=>{this.subscribers.forEach(n=>n({id:r.id,dismiss:!0}))}),t),this.message=(t,r)=>this.create({...r,message:t}),this.error=(t,r)=>this.create({...r,message:t,type:"error"}),this.success=(t,r)=>this.create({...r,type:"success",message:t}),this.info=(t,r)=>this.create({...r,type:"info",message:t}),this.warning=(t,r)=>this.create({...r,type:"warning",message:t}),this.loading=(t,r)=>this.create({...r,type:"loading",message:t}),this.promise=(t,r)=>{if(!r)return;let n;r.loading!==void 0&&(n=this.create({...r,promise:t,type:"loading",message:r.loading,description:typeof r.description!="function"?r.description:void 0}));const i=Promise.resolve(t instanceof Function?t():t);let a=n!==void 0,s;const u=i.then(async c=>{if(s=["resolve",c],L.isValidElement(c))a=!1,this.create({id:n,type:"default",message:c});else if(dce(c)&&!c.ok){a=!1;const p=typeof r.error=="function"?await r.error(`HTTP error! status: ${c.status}`):r.error,m=typeof r.description=="function"?await r.description(`HTTP error! status: ${c.status}`):r.description,w=typeof p=="object"&&!L.isValidElement(p)?p:{message:p};this.create({id:n,type:"error",description:m,...w})}else if(c instanceof Error){a=!1;const p=typeof r.error=="function"?await r.error(c):r.error,m=typeof r.description=="function"?await r.description(c):r.description,w=typeof p=="object"&&!L.isValidElement(p)?p:{message:p};this.create({id:n,type:"error",description:m,...w})}else if(r.success!==void 0){a=!1;const p=typeof r.success=="function"?await r.success(c):r.success,m=typeof r.description=="function"?await r.description(c):r.description,w=typeof p=="object"&&!L.isValidElement(p)?p:{message:p};this.create({id:n,type:"success",description:m,...w})}}).catch(async c=>{if(s=["reject",c],r.error!==void 0){a=!1;const d=typeof r.error=="function"?await r.error(c):r.error,p=typeof r.description=="function"?await r.description(c):r.description,g=typeof d=="object"&&!L.isValidElement(d)?d:{message:d};this.create({id:n,type:"error",description:p,...g})}}).finally(()=>{a&&(this.dismiss(n),n=void 0),r.finally==null||r.finally.call(r)}),f=()=>new Promise((c,d)=>u.then(()=>s[0]==="reject"?d(s[1]):c(s[1])).catch(d));return typeof n!="string"&&typeof n!="number"?{unwrap:f}:Object.assign(n,{unwrap:f})},this.custom=(t,r)=>{const n=r?.id||tw++;return this.create({jsx:t(n),id:n,...r}),n},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const tn=new uce,fce=(e,t)=>{const r=t?.id||tw++;return tn.addToast({title:e,...t,id:r}),r},dce=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",hce=fce,pce=()=>tn.toasts,mce=()=>tn.getActiveToasts(),vce=Object.assign(hce,{success:tn.success,info:tn.info,warning:tn.warning,error:tn.error,custom:tn.custom,message:tn.message,promise:tn.promise,dismiss:tn.dismiss,loading:tn.loading},{getHistory:pce,getToasts:mce});cce("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");const gce=[{id:"1-251201",productName:"Whole Milk",category:"Dairy",printedAt:"2024-03-20 09:30 AM",printedBy:"Alice Johnson",location:"Downtown Store (101)",expiryDate:"2024-03-27",status:"Valid"},{id:"2-251201",productName:"Ground Beef",category:"Meat",printedAt:"2024-03-20 10:15 AM",printedBy:"Bob Smith",location:"Uptown Store (102)",expiryDate:"2024-03-23",status:"Valid"},{id:"3-251201",productName:"Croissant",category:"Bakery",printedAt:"2024-03-19 14:00 PM",printedBy:"Charlie Brown",location:"Downtown Store (101)",expiryDate:"2024-03-20",status:"Expired"},{id:"4-251201",productName:"Caesar Salad",category:"Deli",printedAt:"2024-03-18 11:45 AM",printedBy:"Alice Johnson",location:"Downtown Store (101)",expiryDate:"2024-03-21",status:"Expiring Soon"},{id:"5-251201",productName:"Orange Juice",category:"Beverage",printedAt:"2024-03-18 08:20 AM",printedBy:"Bob Smith",location:"Airport Kiosk (201)",expiryDate:"2024-03-25",status:"Valid"}],yce=[{name:"Dairy",count:450},{name:"Meat",count:320},{name:"Bakery",count:280},{name:"Deli",count:190},{name:"Produce",count:150},{name:"Beverage",count:120}],xce=[{date:"Mon",count:120},{date:"Tue",count:132},{date:"Wed",count:101},{date:"Thu",count:134},{date:"Fri",count:190},{date:"Sat",count:230},{date:"Sun",count:210}];function bce(){const[e,t]=E.useState("print-log"),r=n=>{vce.success(`Reprinting label ${n}`,{description:"Watermark 'RePrint' applied."})};return h.jsxs("div",{className:"h-full flex flex-col bg-white",children:[h.jsx("div",{className:"border-b border-gray-200 py-4 bg-gray-50",children:h.jsxs("div",{className:"flex flex-nowrap items-center gap-2 overflow-x-auto min-w-0",children:[h.jsxs("div",{className:"relative w-32 shrink-0",children:[h.jsx(Qh,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-400"}),h.jsx(ze,{placeholder:"Search Product or Category...",className:"pl-9 h-9 rounded-lg border border-black bg-white text-black"})]}),h.jsxs(qe,{defaultValue:"partner-a",children:[h.jsx(We,{className:"w-[140px] h-9 rounded-lg border border-black font-medium text-black bg-white shrink-0",children:h.jsx(Ue,{placeholder:"Partner"})}),h.jsx(Ve,{children:h.jsx(ge,{value:"partner-a",children:"Partner A"})})]}),h.jsxs(qe,{defaultValue:"group-b",children:[h.jsx(We,{className:"w-[140px] h-9 rounded-lg border border-black font-medium text-black bg-white shrink-0",children:h.jsx(Ue,{placeholder:"Group"})}),h.jsx(Ve,{children:h.jsx(ge,{value:"group-b",children:"Group B"})})]}),h.jsxs(qe,{defaultValue:"loc-12345",children:[h.jsx(We,{className:"w-[160px] h-9 rounded-lg border border-black font-medium text-black bg-white shrink-0",children:h.jsx(Ue,{placeholder:"Location"})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"loc-12345",children:"Downtown Store"}),h.jsx(ge,{value:"all",children:"All Locations"})]})]}),h.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[h.jsx("span",{className:"text-sm font-medium text-gray-700 whitespace-nowrap",children:"Period Search:"}),h.jsxs("div",{className:"flex items-center bg-white border border-black rounded-lg h-9 px-2 shrink-0",children:[h.jsx(P8,{className:"w-4 h-4 text-gray-500 mr-2 shrink-0"}),h.jsx("input",{type:"date",className:"text-sm outline-none w-28 bg-transparent"}),h.jsx("span",{className:"mx-1 text-gray-400",children:"-"}),h.jsx("input",{type:"date",className:"text-sm outline-none w-28 bg-transparent"})]})]}),h.jsx("div",{className:"flex-1 min-w-0"}),h.jsxs(be,{variant:"outline",className:"h-9 rounded-lg border border-black text-black gap-2 bg-white hover:bg-gray-50 shrink-0",children:[h.jsx(Ls,{className:"w-4 h-4"})," Export Report"]})]})}),h.jsx("div",{className:"flex overflow-x-auto border-b border-gray-200 bg-gray-50",children:["print-log","label-report"].map(n=>h.jsx("button",{type:"button",onClick:()=>t(n),className:Ne("px-6 py-3 text-sm font-medium whitespace-nowrap cursor-pointer transition-colors",e===n?"border-b-2":"text-gray-500 hover:text-gray-700"),style:e===n?{color:"#1b46c7",borderBottomColor:"#1b46c7"}:void 0,children:n==="print-log"?"Print Log":"Label Report"},n))}),h.jsxs("div",{className:"flex-1 overflow-auto bg-gray-50",children:[e==="print-log"&&h.jsx("div",{className:"bg-white border border-gray-200 shadow-sm rounded-sm overflow-hidden",children:h.jsxs(Kt,{children:[h.jsx(Yt,{children:h.jsxs(Ke,{className:"bg-gray-100 hover:bg-gray-100",children:[h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Label ID"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Product Name"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Category"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Printed At"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Printed By"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Location"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Expiry Date"}),h.jsx(me,{className:"text-gray-900 font-bold text-center",children:"Action"})]})}),h.jsx(Qt,{children:gce.map(n=>h.jsxs(Ke,{children:[h.jsx(le,{className:"border-r font-mono text-gray-600",children:n.id}),h.jsx(le,{className:"border-r font-medium",children:n.productName}),h.jsx(le,{className:"border-r",children:h.jsx(Rn,{variant:"secondary",className:"bg-blue-50 text-blue-700 hover:bg-blue-50 border-blue-200",children:n.category})}),h.jsx(le,{className:"border-r text-gray-600 text-sm",children:n.printedAt}),h.jsx(le,{className:"border-r text-gray-600 text-sm",children:n.printedBy}),h.jsx(le,{className:"border-r text-gray-600 text-sm",children:n.location}),h.jsx(le,{className:"border-r",children:h.jsx("span",{className:Ne("text-sm font-medium",n.status==="Expired"?"text-red-600":n.status==="Expiring Soon"?"text-orange-500":"text-green-600"),children:n.expiryDate})}),h.jsx(le,{className:"text-center",children:h.jsxs(be,{size:"sm",variant:"outline",className:"h-8 gap-1 hover:bg-gray-100 border-gray-300",onClick:()=>r(n.id),children:[h.jsx(_R,{className:"w-3 h-3"})," Reprint"]})})]},n.id))})]})}),e==="label-report"&&h.jsxs("div",{className:"space-y-6",children:[h.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[h.jsxs(jr,{children:[h.jsxs(rn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[h.jsx(nn,{className:"text-sm font-medium",children:"Total Labels Printed"}),h.jsx(pc,{className:"h-4 w-4 text-muted-foreground"})]}),h.jsxs(Lr,{children:[h.jsx("div",{className:"text-2xl font-bold",children:"2,543"}),h.jsx("p",{className:"text-xs text-muted-foreground",children:"+20.1% from last month"})]})]}),h.jsxs(jr,{children:[h.jsxs(rn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[h.jsx(nn,{className:"text-sm font-medium",children:"Most Printed Category"}),h.jsx(N8,{className:"h-4 w-4 text-muted-foreground"})]}),h.jsxs(Lr,{children:[h.jsx("div",{className:"text-2xl font-bold",children:"Dairy"}),h.jsx("p",{className:"text-xs text-muted-foreground",children:"450 labels generated"})]})]}),h.jsxs(jr,{children:[h.jsxs(rn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[h.jsx(nn,{className:"text-sm font-medium",children:"Top Product"}),h.jsx(xR,{className:"h-4 w-4 text-muted-foreground"})]}),h.jsxs(Lr,{children:[h.jsx("div",{className:"text-2xl font-bold",children:"Whole Milk"}),h.jsx("p",{className:"text-xs text-muted-foreground",children:"182 labels generated"})]})]}),h.jsxs(jr,{children:[h.jsxs(rn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[h.jsx(nn,{className:"text-sm font-medium",children:"Avg. Daily Prints"}),h.jsx(CB,{className:"h-4 w-4 text-muted-foreground"})]}),h.jsxs(Lr,{children:[h.jsx("div",{className:"text-2xl font-bold",children:"85"}),h.jsx("p",{className:"text-xs text-muted-foreground",children:"+12% from last week"})]})]})]}),h.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[h.jsxs(jr,{className:"col-span-1",children:[h.jsxs(rn,{children:[h.jsx(nn,{children:"Labels by Category"}),h.jsx(Id,{children:"Distribution of printed labels across product categories."})]}),h.jsx(Lr,{className:"h-[300px]",children:h.jsx(ih,{width:"100%",height:"100%",children:h.jsxs(sce,{data:yce,children:[h.jsx(Wh,{strokeDasharray:"3 3",vertical:!1}),h.jsx(no,{dataKey:"name",fontSize:12,tickLine:!1,axisLine:!1}),h.jsx(io,{fontSize:12,tickLine:!1,axisLine:!1,tickFormatter:n=>`${n}`}),h.jsx($r,{}),h.jsx(uo,{dataKey:"count",fill:"#facc15",radius:[4,4,0,0]})]})})})]}),h.jsxs(jr,{className:"col-span-1",children:[h.jsxs(rn,{children:[h.jsx(nn,{children:"Print Volume Trends"}),h.jsx(Id,{children:"Daily label printing volume for the last 7 days."})]}),h.jsx(Lr,{className:"h-[300px]",children:h.jsx(ih,{width:"100%",height:"100%",children:h.jsxs(J4,{data:xce,children:[h.jsx(Wh,{strokeDasharray:"3 3",vertical:!1}),h.jsx(no,{dataKey:"date",fontSize:12,tickLine:!1,axisLine:!1}),h.jsx(io,{fontSize:12,tickLine:!1,axisLine:!1}),h.jsx($r,{}),h.jsx(Zs,{type:"monotone",dataKey:"count",stroke:"#dc2626",strokeWidth:2,dot:{r:4},activeDot:{r:6}})]})})})]})]}),h.jsxs(jr,{children:[h.jsx(rn,{children:h.jsx(nn,{children:"Most Used Products"})}),h.jsx(Lr,{children:h.jsxs(Kt,{children:[h.jsx(Yt,{children:h.jsxs(Ke,{children:[h.jsx(me,{children:"Product Name"}),h.jsx(me,{children:"Category"}),h.jsx(me,{className:"text-right",children:"Total Printed"}),h.jsx(me,{className:"text-right",children:"Usage %"})]})}),h.jsxs(Qt,{children:[h.jsxs(Ke,{children:[h.jsx(le,{className:"font-medium",children:"Whole Milk"}),h.jsx(le,{children:"Dairy"}),h.jsx(le,{className:"text-right",children:"182"}),h.jsx(le,{className:"text-right",children:"7.2%"})]}),h.jsxs(Ke,{children:[h.jsx(le,{className:"font-medium",children:"Ground Beef 80/20"}),h.jsx(le,{children:"Meat"}),h.jsx(le,{className:"text-right",children:"145"}),h.jsx(le,{className:"text-right",children:"5.7%"})]}),h.jsxs(Ke,{children:[h.jsx(le,{className:"font-medium",children:"Chicken Breast"}),h.jsx(le,{children:"Meat"}),h.jsx(le,{className:"text-right",children:"132"}),h.jsx(le,{className:"text-right",children:"5.2%"})]}),h.jsxs(Ke,{children:[h.jsx(le,{className:"font-medium",children:"Sliced Ham"}),h.jsx(le,{children:"Deli"}),h.jsx(le,{className:"text-right",children:"98"}),h.jsx(le,{className:"text-right",children:"3.8%"})]})]})]})})]})]})]})]})}const wce=[{id:"12345",name:"Downtown Store",address:"123 Main St, New York, NY",phone:"+1 (555) 123-4567",email:"downtown@example.com",gps:"40.7128° N, 74.0060° W",status:"active"},{id:"12335",name:"Uptown Market",address:"456 High St, New York, NY",phone:"+1 (555) 987-6543",email:"uptown@example.com",gps:"40.7580° N, 73.9855° W",status:"active"},{id:"12445",name:"Airport Kiosk",address:"Terminal 4, JFK Airport",phone:"+1 (555) 555-5555",email:"jfk@example.com",gps:"40.6413° N, 73.7781° W",status:"active"},{id:"12555",name:"Suburban Outlet",address:"789 Country Rd, Long Island",phone:"+1 (555) 111-2222",email:"suburb@example.com",gps:"40.8500° N, 73.2000° W",status:"inactive"}];function Sce(){const[e,t]=E.useState(!1),[r,n]=E.useState(wce);return h.jsxs("div",{className:"h-full flex flex-col bg-white",children:[h.jsx("div",{className:"border-b border-gray-200 py-4 bg-gray-50",children:h.jsxs("div",{className:"flex flex-nowrap items-center gap-2 overflow-x-auto min-w-0",children:[h.jsx(ze,{placeholder:"Search",className:"border border-black rounded-lg h-9 w-32 shrink-0 bg-white text-black"}),h.jsxs(qe,{defaultValue:"partner-a",children:[h.jsx(We,{className:"w-[140px] h-9 rounded-lg border border-black bg-white font-medium text-black shrink-0",children:h.jsx(Ue,{placeholder:"Partner"})}),h.jsx(Ve,{children:h.jsx(ge,{value:"partner-a",children:"Partner A"})})]}),h.jsxs(qe,{defaultValue:"group-b",children:[h.jsx(We,{className:"w-[140px] h-9 rounded-lg border border-black bg-white font-medium text-black shrink-0",children:h.jsx(Ue,{placeholder:"Group"})}),h.jsx(Ve,{children:h.jsx(ge,{value:"group-b",children:"Group B"})})]}),h.jsxs(qe,{defaultValue:"all",children:[h.jsx(We,{className:"w-[140px] h-9 rounded-lg border border-black bg-white font-medium text-black shrink-0",children:h.jsx(Ue,{placeholder:"Location"})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"all",children:"All Locations"}),h.jsx(ge,{value:"loc-1",children:"Location 1"})]})]}),h.jsx("div",{className:"flex-1 min-w-0"}),h.jsx(be,{variant:"outline",className:"h-9 border border-black rounded-lg text-black px-4 bg-white hover:bg-gray-50 shrink-0",children:"Bulk Import"}),h.jsx(be,{variant:"outline",className:"h-9 border border-black rounded-lg text-black px-4 bg-white hover:bg-gray-50 shrink-0",children:"Bulk Export"}),h.jsx(be,{variant:"outline",className:"h-9 border border-black rounded-lg text-black px-4 bg-white hover:bg-gray-50 shrink-0",children:"Bulk Edit"}),h.jsx(be,{className:"h-9 bg-blue-600 hover:bg-blue-700 text-white rounded-lg px-6 font-medium border-0 shrink-0",onClick:()=>t(!0),children:"New+"})]})}),h.jsx("div",{className:"flex-1 overflow-auto bg-gray-50",children:h.jsx("div",{className:"bg-white border border-gray-200 shadow-sm rounded-sm overflow-hidden",children:h.jsxs(Kt,{children:[h.jsx(Yt,{children:h.jsxs(Ke,{className:"bg-gray-100 hover:bg-gray-100",children:[h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Location ID"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Location Name"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Address"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Phone"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"Email"}),h.jsx(me,{className:"text-gray-900 font-bold border-r",children:"GPS"}),h.jsx(me,{className:"text-gray-900 font-bold text-center",children:"Actions"})]})}),h.jsx(Qt,{children:r.map(i=>h.jsxs(Ke,{children:[h.jsx(le,{className:"border-r font-mono text-gray-600",children:i.id}),h.jsx(le,{className:"border-r font-medium text-black",children:i.name}),h.jsx(le,{className:"border-r text-gray-600 truncate max-w-[200px]",children:i.address}),h.jsx(le,{className:"border-r text-gray-600 whitespace-nowrap",children:i.phone}),h.jsx(le,{className:"border-r text-gray-600 text-sm",children:i.email}),h.jsx(le,{className:"border-r text-gray-500 font-mono text-xs",children:i.gps}),h.jsx(le,{className:"text-center",children:h.jsx(be,{variant:"ghost",size:"icon",className:"h-8 w-8",children:h.jsx(wR,{className:"h-4 w-4 text-gray-500"})})})]},i.id))})]})})}),h.jsx(_ce,{open:e,onOpenChange:t})]})}function _ce({open:e,onOpenChange:t}){return h.jsx(zn,{open:e,onOpenChange:t,children:h.jsxs(qn,{className:"sm:max-w-[600px]",children:[h.jsxs(Un,{children:[h.jsx(Wn,{children:"Add New Location"}),h.jsx(Ka,{children:"Enter the details for the new store location."})]}),h.jsxs("div",{className:"grid gap-4 py-4",children:[h.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Partner"}),h.jsxs(qe,{defaultValue:"partner-a",children:[h.jsx(We,{children:h.jsx(Ue,{})}),h.jsx(Ve,{children:h.jsx(ge,{value:"partner-a",children:"Partner A"})})]})]}),h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Group"}),h.jsxs(qe,{defaultValue:"group-b",children:[h.jsx(We,{children:h.jsx(Ue,{})}),h.jsx(Ve,{children:h.jsx(ge,{value:"group-b",children:"Group B"})})]})]})]}),h.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[h.jsxs("div",{className:"space-y-2 col-span-1",children:[h.jsx(Oe,{children:"Location ID"}),h.jsx(ze,{placeholder:"e.g. 12345"})]}),h.jsxs("div",{className:"space-y-2 col-span-2",children:[h.jsx(Oe,{children:"Location Name"}),h.jsx(ze,{placeholder:"e.g. Downtown Store"})]})]}),h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Address"}),h.jsx(ze,{placeholder:"Full street address"})]}),h.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Phone Number"}),h.jsx(ze,{placeholder:"+1 (555) 000-0000"})]}),h.jsxs("div",{className:"space-y-2",children:[h.jsx(Oe,{children:"Email"}),h.jsx(ze,{placeholder:"store@example.com"})]})]}),h.jsxs("div",{className:"space-y-2",children:[h.jsxs(Oe,{className:"flex items-center gap-2",children:[h.jsx(Yh,{className:"w-4 h-4"})," GPS Coordinates"]}),h.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[h.jsx(ze,{placeholder:"Latitude (e.g. 40.7128)"}),h.jsx(ze,{placeholder:"Longitude (e.g. -74.0060)"})]})]}),h.jsxs("div",{className:"flex items-center gap-2 pt-2",children:[h.jsx(la,{id:"loc-status",defaultChecked:!0}),h.jsx(Oe,{htmlFor:"loc-status",children:"Active Location"})]})]}),h.jsxs(xi,{children:[h.jsx(be,{variant:"outline",onClick:()=>t(!1),children:"Cancel"}),h.jsx(be,{onClick:()=>t(!1),className:"bg-blue-600 text-white hover:bg-blue-700",children:"Create Location"})]})]})})}const mR=[{id:"12345",name:"Location 12345 - Downtown"},{id:"67890",name:"Location 67890 - Uptown"}],hb={Printer:"Printer",Sensor:"Sensor (Temp. & Humidity)",Scale:"Scale","E-label":"E-label (Electronic Label)"},jce=[{id:"1",locationId:"12345",category:"Printer",device:"printer 1",deviceId:"123456789",balance:"51 meters",status:"Online",active:!0,rechargeRecords:[{id:"r1",date:"2025-01-15",amount:"200 meters",note:"Initial"},{id:"r2",date:"2025-02-01",amount:"100 meters"}]},{id:"2",locationId:"12345",category:"Printer",device:"printer2",deviceId:"113456789",balance:"155 meters",status:"Online",active:!0,rechargeRecords:[{id:"r3",date:"2025-01-20",amount:"300 meters"}]},{id:"3",locationId:"12345",category:"Sensor",device:"sensor 1",deviceId:"103456789",balance:"",status:"Online",active:!0},{id:"4",locationId:"12345",category:"Sensor",device:"sensor 2",deviceId:"093456789",balance:"",status:"Online",active:!0},{id:"5",locationId:"12345",category:"Sensor",device:"sensor 3",deviceId:"083456789",balance:"",status:"Online",active:!1},{id:"6",locationId:"12345",category:"Scale",device:"Scale 1",deviceId:"073456789",balance:"",status:"Online",active:!0},{id:"7",locationId:"12345",category:"E-label",device:"e-label 1",deviceId:"063456789",balance:"",status:"Online",active:!0},{id:"8",locationId:"12345",category:"E-label",device:"e-label 2",deviceId:"053456789",balance:"",status:"Online",active:!0},{id:"9",locationId:"12345",category:"E-label",device:"e-label 3",deviceId:"043456789",balance:"",status:"Offline",active:!0},{id:"10",locationId:"12345",category:"E-label",device:"e-label 4",deviceId:"033456789",balance:"",status:"Offline",active:!1},{id:"11",locationId:"12345",category:"E-label",device:"e-label 5",deviceId:"023456789",balance:"",status:"Online",active:!0},{id:"12",locationId:"12345",category:"E-label",device:"e-label 6",deviceId:"013456789",balance:"",status:"Online",active:!0},{id:"13",locationId:"12345",category:"E-label",device:"e-label 7",deviceId:"003456789",balance:"",status:"Online",active:!0}];function Oce(){const[e,t]=E.useState(""),[r,n]=E.useState(jce),[i,a]=E.useState("all"),[s,u]=E.useState(!1),[f,c]=E.useState(null),[d,p]=E.useState(""),[m,g]=E.useState("Printer"),[w,y]=E.useState(""),[b,_]=E.useState(""),j=r.filter(C=>{const T=!e||C.device.toLowerCase().includes(e.toLowerCase())||C.deviceId.includes(e),M=i==="all"||C.category===i;return T&&M}),P=()=>{d.trim()&&(mR.find(C=>C.id===d),n(C=>[...C,{id:String(C.length+1),locationId:d,category:m,device:w||`${m} ${C.filter(T=>T.category===m).length+1}`,deviceId:b||String(1e8+C.length),balance:m==="Printer"?"0 meters":"",status:"Online",active:!0,rechargeRecords:m==="Printer"?[]:void 0}]),p(""),g("Printer"),y(""),_(""),u(!1))},k=C=>{n(T=>T.map(M=>M.id===C?{...M,active:!M.active}:M))},A=i==="Sensor"||i==="E-label",N=["Printer","Scale","Sensor","E-label"].includes(i)||i==="all";return h.jsxs("div",{className:"h-full flex flex-col bg-white",children:[h.jsx("div",{className:"border-b border-gray-200 py-4 bg-gray-50",children:h.jsxs("div",{className:"flex flex-nowrap items-center gap-2 overflow-x-auto min-w-0",children:[h.jsxs("div",{className:"relative w-32 shrink-0",children:[h.jsx(Qh,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-gray-400"}),h.jsx(ze,{placeholder:"Search",value:e,onChange:C=>t(C.target.value),className:"pl-9 h-9 rounded-lg border border-black bg-white text-black"})]}),h.jsxs(qe,{defaultValue:"partner-a",children:[h.jsx(We,{className:"w-[140px] h-9 rounded-lg border border-black font-medium text-black bg-white shrink-0",children:h.jsx(Ue,{placeholder:"Partner"})}),h.jsx(Ve,{children:h.jsx(ge,{value:"partner-a",children:"Partner A"})})]}),h.jsxs(qe,{defaultValue:"group-b",children:[h.jsx(We,{className:"w-[140px] h-9 rounded-lg border border-black font-medium text-black bg-white shrink-0",children:h.jsx(Ue,{placeholder:"Group"})}),h.jsx(Ve,{children:h.jsx(ge,{value:"group-b",children:"Group B"})})]}),h.jsxs(qe,{defaultValue:"loc-12345",children:[h.jsx(We,{className:"w-[160px] h-9 rounded-lg border border-black font-medium text-black bg-white shrink-0",children:h.jsx(Ue,{placeholder:"Location"})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"loc-12345",children:"Location 12345"}),h.jsx(ge,{value:"67890",children:"Location 67890 - Uptown"})]})]}),h.jsxs(qe,{value:i,onValueChange:a,children:[h.jsx(We,{className:"w-[180px] h-9 rounded-lg border border-black font-medium text-black bg-white shrink-0",children:h.jsx(Ue,{placeholder:"Device Category"})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"all",children:"Device Category (All)"}),h.jsx(ge,{value:"Printer",children:"Printer"}),h.jsx(ge,{value:"Sensor",children:"Sensor (Temp. & Humidity)"}),h.jsx(ge,{value:"Scale",children:"Scale"}),h.jsx(ge,{value:"E-label",children:"E-label (Electronic Label)"})]})]}),h.jsx("div",{className:"flex-1 min-w-0"}),A&&h.jsxs(be,{variant:"outline",className:"h-9 rounded-lg border border-black text-black gap-2 bg-white hover:bg-gray-50 shrink-0",children:[h.jsx(cB,{className:"w-4 h-4"})," Bulk Bind"]}),N&&h.jsxs(h.Fragment,{children:[h.jsxs(be,{variant:"outline",className:"h-9 rounded-lg border border-black text-black gap-2 bg-white hover:bg-gray-50 shrink-0",children:[h.jsx(OR,{className:"w-4 h-4"})," Bulk Import"]}),h.jsxs(be,{variant:"outline",className:"h-9 rounded-lg border border-black text-black gap-2 bg-white hover:bg-gray-50 shrink-0",children:[h.jsx(Ls,{className:"w-4 h-4"})," Bulk Export"]}),h.jsxs(be,{variant:"outline",className:"h-9 rounded-lg border border-black text-black gap-2 bg-white hover:bg-gray-50 shrink-0",children:[h.jsx(Da,{className:"w-4 h-4"})," Bulk Edit"]})]}),h.jsxs(be,{className:"h-9 rounded-lg bg-blue-600 text-white hover:bg-blue-700 font-medium gap-1 border-0 shrink-0",onClick:()=>u(!0),children:["New+ ",h.jsx(vr,{className:"w-4 h-4"})]})]})}),h.jsx("div",{className:"flex-1 overflow-auto bg-gray-50",children:h.jsx("div",{className:"bg-white border border-gray-200 shadow-sm rounded-sm overflow-hidden",children:h.jsxs(Kt,{children:[h.jsx(Yt,{children:h.jsxs(Ke,{className:"bg-gray-100 hover:bg-gray-100",children:[h.jsx(me,{className:"font-bold text-gray-900 border-r",children:"Location ID"}),h.jsx(me,{className:"font-bold text-gray-900 border-r",children:"Device Category"}),h.jsx(me,{className:"font-bold text-gray-900 border-r",children:"Device"}),h.jsx(me,{className:"font-bold text-gray-900 border-r",children:"Device ID"}),h.jsx(me,{className:"font-bold text-gray-900 border-r",children:"Balance"}),h.jsx(me,{className:"font-bold text-gray-900 border-r",children:"Recharge"}),h.jsx(me,{className:"font-bold text-gray-900 border-r",children:"Running Status"}),h.jsx(me,{className:"font-bold text-gray-900 text-center",children:"Active"})]})}),h.jsx(Qt,{children:j.map(C=>h.jsxs(Ke,{className:"hover:bg-gray-50",children:[h.jsx(le,{className:"text-gray-700",children:C.locationId}),h.jsx(le,{children:h.jsx("span",{className:C.category==="Printer"?"text-red-600":"text-gray-700",children:hb[C.category]})}),h.jsx(le,{children:h.jsx("span",{className:C.category==="Printer"?"text-red-600":"text-gray-700",children:C.device})}),h.jsx(le,{className:"text-gray-700",children:C.deviceId}),h.jsx(le,{className:"text-gray-700",children:C.balance||"—"}),h.jsx(le,{children:C.category==="Printer"?h.jsxs(be,{variant:"ghost",size:"sm",className:"h-8 text-blue-600 hover:text-blue-800",onClick:()=>c(C),children:[h.jsx(rB,{className:"w-4 h-4 mr-1"}),"View"]}):"—"}),h.jsx(le,{children:h.jsx("span",{className:C.status==="Offline"?"text-red-600":"text-green-600",children:C.status})}),h.jsx(le,{children:h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx(la,{checked:C.active,onCheckedChange:()=>k(C.id)}),h.jsx("span",{className:"text-sm text-gray-600",children:C.active?"Active":"Inactive"})]})})]},C.id))})]})})}),h.jsx(zn,{open:s,onOpenChange:u,children:h.jsxs(qn,{className:"sm:max-w-md",children:[h.jsxs(Un,{children:[h.jsx(Wn,{children:"Add New Device"}),h.jsx(Ka,{children:"New devices must be bound to a location. Select a location first, then fill in device details."})]}),h.jsxs("div",{className:"grid gap-4 py-4",children:[h.jsxs("div",{className:"grid gap-2",children:[h.jsx(Oe,{children:"Location *"}),h.jsxs(qe,{value:d,onValueChange:p,required:!0,children:[h.jsx(We,{children:h.jsx(Ue,{placeholder:"Select location (required)"})}),h.jsx(Ve,{children:mR.map(C=>h.jsx(ge,{value:C.id,children:C.name},C.id))})]})]}),h.jsxs("div",{className:"grid gap-2",children:[h.jsx(Oe,{children:"Device Category"}),h.jsxs(qe,{value:m,onValueChange:C=>g(C),children:[h.jsx(We,{children:h.jsx(Ue,{})}),h.jsx(Ve,{children:Object.keys(hb).map(C=>h.jsx(ge,{value:C,children:hb[C]},C))})]})]}),h.jsxs("div",{className:"grid gap-2",children:[h.jsx(Oe,{children:"Device Name"}),h.jsx(ze,{placeholder:"e.g. printer 1",value:w,onChange:C=>y(C.target.value)})]}),h.jsxs("div",{className:"grid gap-2",children:[h.jsx(Oe,{children:"Device ID"}),h.jsx(ze,{placeholder:"e.g. 123456789",value:b,onChange:C=>_(C.target.value)})]})]}),h.jsxs(xi,{children:[h.jsx(be,{variant:"outline",onClick:()=>u(!1),children:"Cancel"}),h.jsx(be,{onClick:P,disabled:!d,children:"Add Device"})]})]})}),h.jsx(zn,{open:!!f,onOpenChange:C=>!C&&c(null),children:h.jsxs(qn,{className:"sm:max-w-md",children:[h.jsxs(Un,{children:[h.jsxs(Wn,{children:["Recharge Records — ",f?.device]}),h.jsxs(Ka,{children:["Balance: ",f?.balance??"—"]})]}),h.jsx("div",{className:"py-2 max-h-64 overflow-y-auto",children:f?.rechargeRecords?.length?h.jsxs(Kt,{children:[h.jsx(Yt,{children:h.jsxs(Ke,{children:[h.jsx(me,{children:"Date"}),h.jsx(me,{children:"Amount"}),h.jsx(me,{children:"Note"})]})}),h.jsx(Qt,{children:f.rechargeRecords.map(C=>h.jsxs(Ke,{children:[h.jsx(le,{children:C.date}),h.jsx(le,{children:C.amount}),h.jsx(le,{children:C.note??"—"})]},C.id))})]}):h.jsx("p",{className:"text-sm text-gray-500",children:"No recharge records yet."})}),h.jsx(xi,{children:h.jsx(be,{variant:"outline",onClick:()=>c(null),children:"Close"})})]})})]})}const Ece=[{id:"1",locationId:"12345",subscription:"Labeling",ratePerMonth:"9.99",discountRate:"1",totalAmount:"$9.99",period:"October",status:"Paid"},{id:"2",locationId:"12345",subscription:"Tasks",ratePerMonth:"20",discountRate:"0.5",totalAmount:"10",period:"October",status:"Paid"},{id:"3",locationId:"12345",subscription:"Sensor",ratePerMonth:"30",discountRate:"1",totalAmount:"30",period:"October",status:"Paid"},{id:"4",locationId:"12345",subscription:"e-label",ratePerMonth:"25",discountRate:"1",totalAmount:"50",period:"October",status:"Overdue",isOverdue:!0},{id:"5",locationId:"12345",subscription:"Food Waste",ratePerMonth:"35",discountRate:"1",totalAmount:"35",period:"October",status:"Paid"}];function Pce(){const[e]=E.useState(Ece),[t,r]=E.useState("October"),[n,i]=E.useState("all"),a=e.filter(u=>{const f=!t||u.period===t,c=n==="all"||u.subscription===n;return f&&c}),s=()=>{const u=[["Location ID","Subscription","Rate/month","Discount Rate","Total Amount","Period","Status"].join(","),...a.map(d=>[d.locationId,d.subscription,d.ratePerMonth,d.discountRate,d.totalAmount,d.period,d.status].join(","))].join(` +`),f=new Blob([u],{type:"text/csv;charset=utf-8;"}),c=document.createElement("a");c.href=URL.createObjectURL(f),c.download=`invoices-${t||"all"}.csv`,c.click(),URL.revokeObjectURL(c.href)};return h.jsxs("div",{className:"h-full flex flex-col bg-white",children:[h.jsx("div",{className:"border-b border-gray-200 py-4 bg-gray-50",children:h.jsxs("div",{className:"flex flex-nowrap items-center gap-2 overflow-x-auto min-w-0",children:[h.jsxs(qe,{defaultValue:"partner-a",children:[h.jsx(We,{className:"w-[140px] h-9 rounded-lg border border-black font-medium text-black bg-white shrink-0",children:h.jsx(Ue,{placeholder:"Partner"})}),h.jsx(Ve,{children:h.jsx(ge,{value:"partner-a",children:"Partner A"})})]}),h.jsxs(qe,{defaultValue:"group-b",children:[h.jsx(We,{className:"w-[140px] h-9 rounded-lg border border-black font-medium text-black bg-white shrink-0",children:h.jsx(Ue,{placeholder:"Group"})}),h.jsx(Ve,{children:h.jsx(ge,{value:"group-b",children:"Group B"})})]}),h.jsxs(qe,{defaultValue:"loc-12",children:[h.jsx(We,{className:"w-[160px] h-9 rounded-lg border border-black font-medium text-black bg-white shrink-0",children:h.jsx(Ue,{placeholder:"Location"})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"loc-12",children:"Location 12"}),h.jsx(ge,{value:"all",children:"All Locations"})]})]}),h.jsxs(qe,{value:n,onValueChange:i,children:[h.jsx(We,{className:"w-[140px] h-9 rounded-lg border border-black font-medium text-black bg-white shrink-0",children:h.jsx(Ue,{placeholder:"Subscription"})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"all",children:"Subscription (All)"}),h.jsx(ge,{value:"Labeling",children:"Labeling"}),h.jsx(ge,{value:"Tasks",children:"Tasks"}),h.jsx(ge,{value:"Sensor",children:"Sensor"}),h.jsx(ge,{value:"e-label",children:"e-label"}),h.jsx(ge,{value:"Food Waste",children:"Food Waste"})]})]}),h.jsxs(qe,{value:t,onValueChange:r,children:[h.jsx(We,{className:"w-[120px] h-9 rounded-lg border border-black font-medium text-black bg-white shrink-0",children:h.jsx(Ue,{placeholder:"Period"})}),h.jsxs(Ve,{children:[h.jsx(ge,{value:"October",children:"October"}),h.jsx(ge,{value:"September",children:"September"}),h.jsx(ge,{value:"August",children:"August"})]})]}),h.jsx("div",{className:"flex-1 min-w-0"}),h.jsxs(be,{variant:"outline",className:"h-9 rounded-lg border border-black text-black gap-2 bg-white hover:bg-gray-50 shrink-0",onClick:s,children:[h.jsx(Ls,{className:"w-4 h-4"})," Export Bills"]})]})}),h.jsx("div",{className:"flex-1 overflow-auto bg-gray-50",children:h.jsx("div",{className:"bg-white border border-gray-200 shadow-sm rounded-sm overflow-hidden",children:h.jsxs(Kt,{children:[h.jsx(Yt,{children:h.jsxs(Ke,{className:"bg-gray-100 hover:bg-gray-100",children:[h.jsx(me,{className:"font-bold text-gray-900 border-r",children:"Location ID"}),h.jsx(me,{className:"font-bold text-gray-900 border-r",children:"Subscription"}),h.jsx(me,{className:"font-bold text-gray-900 border-r",children:"Rate/month"}),h.jsx(me,{className:"font-bold text-gray-900 border-r",children:"Discount Rate"}),h.jsx(me,{className:"font-bold text-gray-900 border-r",children:"Total Amount"}),h.jsx(me,{className:"font-bold text-gray-900 border-r",children:"Period"}),h.jsx(me,{className:"font-bold text-gray-900 text-center",children:"Status"})]})}),h.jsx(Qt,{children:a.map(u=>h.jsxs(Ke,{className:"hover:bg-gray-50",children:[h.jsx(le,{className:"text-gray-700",children:u.locationId}),h.jsx(le,{className:"text-gray-700",children:u.subscription}),h.jsx(le,{children:h.jsx("span",{className:u.isOverdue?"text-red-600":"text-gray-700",children:u.ratePerMonth})}),h.jsx(le,{className:"text-gray-700",children:u.discountRate}),h.jsx(le,{children:h.jsx("span",{className:u.isOverdue?"text-red-600":"text-gray-700",children:u.totalAmount})}),h.jsx(le,{className:"text-gray-700",children:u.period}),h.jsx(le,{children:h.jsx("span",{className:u.status==="Overdue"?"text-red-600 font-medium":"text-green-600",children:u.status})})]},u.id))})]})})})]})}const vR=[{value:"small",label:"Small (80px)",pixels:80},{value:"medium",label:"Medium (120px)",pixels:120},{value:"large",label:"Large (160px)",pixels:160}],Ace="QR";let Nce=100001;function Cce(){return String(Nce++)}function kce(){const[e,t]=E.useState(10),[r,n]=E.useState("medium"),[i,a]=E.useState([]),[s,u]=E.useState("generate"),f=vR.find(b=>b.value===r)?.pixels??120,c=E.useCallback(()=>{const b=Math.min(Math.max(1,Math.floor(e)||0),500),_=[];for(let j=0;j[...j,..._])},[e]),[d,p]=E.useState(!1),m=E.useCallback(()=>{i.length!==0&&p(!0)},[i.length]),g=E.useCallback(()=>{window.print()},[]),w=E.useCallback(()=>{p(!1)},[]),y=E.useCallback((b,_)=>{a(j=>j.map(P=>P.id===b?{...P,usageStatus:_}:P))},[]);return h.jsxs("div",{className:"h-full flex flex-col bg-white",children:[d&&h.jsxs("div",{className:"fixed inset-0 z-50 bg-white p-6 overflow-auto print:block",children:[h.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-4 mb-4 no-print",children:[h.jsx("h2",{className:"text-lg font-semibold",children:"QR Codes – Batch Print"}),h.jsxs("div",{className:"flex gap-2",children:[h.jsx(be,{onClick:g,children:"Print"}),h.jsx(be,{variant:"outline",onClick:w,children:"Close"})]})]}),h.jsx("div",{className:"grid grid-cols-4 gap-6 print:grid-cols-4",style:{breakInside:"avoid"},children:i.map(b=>h.jsxs("div",{className:"text-center break-inside-avoid p-2 border border-gray-200 rounded",children:[h.jsx(Vd,{value:b.value,size:f,level:"M",includeMargin:!1,className:"mx-auto"}),h.jsxs("div",{className:"mt-2 text-sm font-semibold",children:["ID: ",b.numericId]})]},b.id))})]}),h.jsx("div",{className:"flex overflow-x-auto border-b border-gray-200 bg-gray-50 print:hidden",children:["generate","report"].map(b=>h.jsx("button",{type:"button",onClick:()=>u(b),className:Ne("px-6 py-3 text-sm font-medium whitespace-nowrap cursor-pointer transition-colors",s===b?"border-b-2":"text-gray-500 hover:text-gray-700"),style:s===b?{color:"#1b46c7",borderBottomColor:"#1b46c7"}:void 0,children:b==="generate"?"Generate & Export":"QR Report"},b))}),h.jsxs("div",{className:"flex-1 overflow-auto bg-gray-50 print:hidden",children:[s==="generate"&&h.jsxs("div",{children:[h.jsxs("div",{className:"flex flex-wrap items-end gap-4 mt-4 mb-6 p-4 bg-white border border-gray-200 rounded-lg shadow-sm",children:[h.jsxs("div",{className:"grid gap-2",children:[h.jsx(Oe,{children:"Quantity"}),h.jsx(ze,{type:"number",min:1,max:500,value:e,onChange:b=>t(Number(b.target.value)||0),className:"w-32 rounded-lg border border-black h-9"})]}),h.jsxs("div",{className:"grid gap-2",children:[h.jsx(Oe,{children:"QR Code Size"}),h.jsxs(qe,{value:r,onValueChange:b=>n(b),children:[h.jsx(We,{className:"w-[180px] h-9 rounded-lg border border-black",children:h.jsx(Ue,{})}),h.jsx(Ve,{children:vR.map(b=>h.jsx(ge,{value:b.value,children:b.label},b.value))})]})]}),h.jsxs(be,{onClick:c,className:"h-9 rounded-lg bg-green-600 hover:bg-green-700 border-0",children:[h.jsx(vr,{className:"w-4 h-4 mr-1"}),"Generate"]})]}),h.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-4 mb-4",children:[h.jsxs("span",{className:"text-sm text-gray-600",children:[i.length," QR code(s) generated. Each has a numeric ID for manual entry when scanning is not available."]}),i.length>0&&h.jsxs(be,{variant:"outline",className:"h-9 rounded-lg border border-black text-black gap-2 bg-white hover:bg-gray-50",onClick:m,children:[h.jsx(Ls,{className:"w-4 h-4"})," Bulk Export for Print"]})]}),i.length>0&&h.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-4 md:grid-cols-6 gap-4",children:i.map(b=>h.jsxs("div",{className:"border rounded-lg p-3 bg-white shadow-sm text-center",children:[h.jsx(Vd,{value:b.value,size:f,level:"M",includeMargin:!1,className:"mx-auto"}),h.jsxs("div",{className:"mt-2 text-sm font-semibold text-gray-700",children:["ID: ",b.numericId]}),h.jsx("div",{className:"text-xs text-gray-500",children:b.usageStatus})]},b.id))})]}),s==="report"&&h.jsxs("div",{children:[h.jsx("p",{className:"text-sm text-gray-600 mb-4",children:"QR code generation and usage status. Use this report to see which codes have been used (e.g. after recharge or scan)."}),h.jsx("div",{className:"bg-white border border-gray-200 shadow-sm rounded-sm overflow-hidden",children:h.jsxs(Kt,{children:[h.jsx(Yt,{children:h.jsxs(Ke,{className:"bg-gray-100 hover:bg-gray-100",children:[h.jsx(me,{className:"font-bold text-gray-900 border-r",children:"QR ID"}),h.jsx(me,{className:"font-bold text-gray-900 border-r",children:"Generation Status"}),h.jsx(me,{className:"font-bold text-gray-900 border-r",children:"Usage Status"}),h.jsx(me,{className:"font-bold text-gray-900 text-center",children:"Date Generated"})]})}),h.jsx(Qt,{children:i.length===0?h.jsx(Ke,{children:h.jsx(le,{colSpan:4,className:"text-center text-gray-500 py-8",children:"No QR codes generated yet. Go to Generate & Export and enter a quantity, then click Generate."})}):i.map(b=>h.jsxs(Ke,{className:"hover:bg-gray-50",children:[h.jsx(le,{className:"font-mono border-r",children:b.numericId}),h.jsx(le,{className:"border-r",children:"Generated"}),h.jsxs(le,{className:"border-r",children:[h.jsx("span",{className:b.usageStatus==="Used"?"text-green-600":"text-gray-600",children:b.usageStatus}),h.jsx(be,{variant:"ghost",size:"sm",className:"ml-2 h-7 text-xs rounded-lg",onClick:()=>y(b.id,b.usageStatus==="Used"?"Unused":"Used"),children:b.usageStatus==="Used"?"Mark Unused":"Mark Used"})]}),h.jsx(le,{children:b.createdAt})]},b.id))})]})})]})]})]})}const Tce=[{day:"Mon",labels:145},{day:"Tue",labels:230},{day:"Wed",labels:185},{day:"Thu",labels:278},{day:"Fri",labels:190},{day:"Sat",labels:120},{day:"Sun",labels:85}],pb=[{name:"Prep",value:450,color:"#3b82f6"},{name:"Grab & Go",value:320,color:"#10b981"},{name:"Catering",value:150,color:"#f59e0b"},{name:"Delivery",value:80,color:"#6366f1"}],Rce=[{id:"1-251201",product:"Chicken Breast",template:'2" Prep',user:"Alice J.",time:"10 mins ago",status:"active"},{id:"1-251202",product:"Caesar Salad",template:`3" Grab'n'Go`,user:"Bob S.",time:"25 mins ago",status:"active"},{id:"1-251203",product:"Tomato Soup",template:'2" Prep',user:"Charlie B.",time:"40 mins ago",status:"expired"},{id:"1-251204",product:"Roast Beef",template:'2" x 2" Prep',user:"Alice J.",time:"1 hour ago",status:"active"},{id:"1-251205",product:"Iced Tea",template:"Beverage Label",user:"David W.",time:"1 hour ago",status:"active"}],Mce=[{title:"Coffee Station",time:"12:45",status:"running"},{title:"Sanitizer Bucket",time:"04:20",status:"warning"},{title:"Hot Hold Unit 1",time:"00:00",status:"expired"}];function Ice(){return h.jsxs("div",{className:"space-y-6",children:[h.jsxs("div",{className:"bg-white border border-gray-200 p-4 rounded-xl shadow-sm flex flex-col md:flex-row justify-between items-center gap-4",children:[h.jsxs("div",{children:[h.jsx("h1",{className:"text-xl font-bold",style:{color:"#2b328f"},children:"Dashboard Overview"}),h.jsx("p",{className:"text-sm text-gray-500",children:"Welcome back, Admin. Here's what's happening today."})]}),h.jsxs("div",{className:"flex items-center gap-3",children:[h.jsxs(be,{className:"bg-blue-600 text-white hover:bg-blue-700 font-medium",children:[h.jsx(vr,{className:"w-4 h-4 mr-2"})," New Label"]}),h.jsx(be,{variant:"outline",children:"View Reports"})]})]}),h.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:[h.jsx(Xo,{title:"Labels Printed Today",value:"342",trend:"+12%",trendUp:!0,icon:_R,color:"text-blue-600",bgColor:"bg-blue-50"}),h.jsx(Xo,{title:"Active Templates",value:"24",trend:"+2 New",trendUp:!0,icon:pc,color:"text-indigo-600",bgColor:"bg-indigo-50"}),h.jsx(Xo,{title:"Active Users",value:"8",trend:"Online Now",trendUp:!0,icon:ER,color:"text-emerald-600",bgColor:"bg-emerald-50"}),h.jsx(Xo,{title:"Locations",value:"12",trend:"+1 New",trendUp:!0,icon:Yh,color:"text-sky-600",bgColor:"bg-sky-50"}),h.jsx(Xo,{title:"People",value:"48",trend:"+3 New",trendUp:!0,icon:B8,color:"text-violet-600",bgColor:"bg-violet-50"}),h.jsx(Xo,{title:"Menu Products",value:"156",trend:"+8 New",trendUp:!0,icon:vb,color:"text-amber-600",bgColor:"bg-amber-50"})]}),h.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[h.jsxs("div",{className:"lg:col-span-2 space-y-6",children:[h.jsxs(jr,{className:"shadow-sm border-gray-200",children:[h.jsxs(rn,{children:[h.jsxs(nn,{className:"text-base font-bold text-gray-800 flex items-center gap-2",children:[h.jsx(YB,{className:"w-5 h-5 text-gray-500"}),"Weekly Print Volume"]}),h.jsx(Id,{children:"Number of labels printed over the last 7 days"})]}),h.jsx(Lr,{children:h.jsx("div",{className:"h-[300px] w-full",children:h.jsx(ih,{width:"100%",height:"100%",children:h.jsxs(J4,{data:Tce,children:[h.jsx(Wh,{strokeDasharray:"3 3",vertical:!1,stroke:"#e5e7eb"}),h.jsx(no,{dataKey:"day",axisLine:!1,tickLine:!1,tick:{fill:"#6b7280",fontSize:12},dy:10}),h.jsx(io,{axisLine:!1,tickLine:!1,tick:{fill:"#6b7280",fontSize:12}}),h.jsx($r,{contentStyle:{borderRadius:"8px",border:"none",boxShadow:"0 4px 6px -1px rgb(0 0 0 / 0.1)"},cursor:{stroke:"#d1d5db",strokeWidth:1}}),h.jsx(Zs,{type:"monotone",dataKey:"labels",stroke:"#2563eb",strokeWidth:3,dot:{r:4,fill:"#2563eb",strokeWidth:2,stroke:"#fff"},activeDot:{r:6}})]})})})})]}),h.jsxs(jr,{className:"shadow-sm border-gray-200",children:[h.jsxs(rn,{className:"flex flex-row items-center justify-between",children:[h.jsxs("div",{children:[h.jsxs(nn,{className:"text-base font-bold text-gray-800 flex items-center gap-2",children:[h.jsx(gb,{className:"w-5 h-5 text-gray-500"}),"Recent Labels"]}),h.jsx(Id,{children:"Latest printed labels across all locations"})]}),h.jsx(be,{variant:"ghost",size:"sm",className:"text-blue-600",children:"View All"})]}),h.jsx(Lr,{children:h.jsx("div",{className:"space-y-4",children:Rce.map(e=>h.jsxs("div",{className:"flex items-center justify-between p-3 bg-gray-50 rounded-lg border border-gray-100 hover:bg-gray-100 transition-colors",children:[h.jsxs("div",{className:"flex items-center gap-3",children:[h.jsx("div",{className:"w-10 h-10 rounded-full bg-blue-100 flex items-center justify-center text-blue-600 font-bold text-xs",children:e.template.substring(0,2)}),h.jsxs("div",{children:[h.jsx("p",{className:"text-sm font-semibold text-gray-900",children:e.product}),h.jsxs("p",{className:"text-xs text-gray-500",children:[e.id," • ",e.user]})]})]}),h.jsxs("div",{className:"flex items-center gap-4",children:[h.jsx("span",{className:"text-xs text-gray-500 font-medium",children:e.time}),h.jsx(Rn,{variant:"secondary",className:e.status==="expired"?"bg-red-100 text-red-700":"bg-green-100 text-green-700",children:e.status})]})]},e.id))})})]})]}),h.jsxs("div",{className:"space-y-6",children:[h.jsxs(jr,{className:"shadow-sm border-gray-200",children:[h.jsx(rn,{children:h.jsxs(nn,{className:"text-base font-bold text-gray-800 flex items-center gap-2",children:[h.jsx(vb,{className:"w-5 h-5 text-gray-500"}),"By Category"]})}),h.jsxs(Lr,{children:[h.jsxs("div",{className:"h-[200px] relative",children:[h.jsx(ih,{width:"100%",height:"100%",children:h.jsxs(lce,{children:[h.jsx(Pi,{data:pb,cx:"50%",cy:"50%",innerRadius:60,outerRadius:80,paddingAngle:5,dataKey:"value",children:pb.map((e,t)=>h.jsx(Ap,{fill:e.color},`cell-${t}`))}),h.jsx($r,{})]})}),h.jsxs("div",{className:"absolute inset-0 flex items-center justify-center flex-col pointer-events-none",children:[h.jsx("span",{className:"text-2xl font-bold text-gray-900",children:"1000"}),h.jsx("span",{className:"text-xs text-gray-500",children:"Total"})]})]}),h.jsx("div",{className:"mt-4 space-y-2",children:pb.map(e=>h.jsxs("div",{className:"flex items-center justify-between text-sm",children:[h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx("div",{className:"w-3 h-3 rounded-full",style:{backgroundColor:e.color}}),h.jsx("span",{className:"text-gray-600",children:e.name})]}),h.jsx("span",{className:"font-medium text-gray-900",children:e.value})]},e.name))})]})]}),h.jsxs(jr,{className:"shadow-sm border-gray-200 bg-gray-900 text-white",children:[h.jsx(rn,{children:h.jsxs(nn,{className:"text-base font-bold flex items-center gap-2 text-white",children:[h.jsx(z8,{className:"w-5 h-5 text-blue-400"}),"Active Timers"]})}),h.jsxs(Lr,{children:[h.jsx("div",{className:"space-y-3",children:Mce.map((e,t)=>h.jsxs("div",{className:"flex items-center justify-between border-b border-gray-800 last:border-0 pb-3 last:pb-0",children:[h.jsx("span",{className:"text-sm font-medium text-gray-300",children:e.title}),h.jsxs("div",{className:"flex items-center gap-2",children:[h.jsx("span",{className:`font-mono font-bold ${e.status==="expired"?"text-red-500 animate-pulse":"text-white"}`,children:e.time}),e.status==="running"&&h.jsx("div",{className:"w-2 h-2 rounded-full bg-green-500"}),e.status==="warning"&&h.jsx("div",{className:"w-2 h-2 rounded-full bg-yellow-500"}),e.status==="expired"&&h.jsx("div",{className:"w-2 h-2 rounded-full bg-red-500"})]})]},t))}),h.jsx(be,{className:"w-full mt-4 bg-blue-600 hover:bg-blue-700 text-white",children:"Manage Alerts"})]})]})]})]})]})}function Xo({title:e,value:t,trend:r,trendUp:n,icon:i,color:a,bgColor:s}){return h.jsx(jr,{className:"border-gray-200 shadow-sm hover:shadow-md transition-shadow",children:h.jsxs(Lr,{className:"p-6",children:[h.jsxs("div",{className:"flex justify-between items-start",children:[h.jsxs("div",{children:[h.jsx("p",{className:"text-sm font-medium text-gray-500 mb-1",children:e}),h.jsx("h3",{className:"text-2xl font-bold text-gray-900",children:t})]}),h.jsx("div",{className:`p-2 rounded-lg ${s}`,children:h.jsx(i,{className:`w-5 h-5 ${a}`})})]}),h.jsxs("div",{className:"mt-4 flex items-center text-sm",children:[n?h.jsx(xR,{className:"w-4 h-4 text-green-500 mr-1"}):h.jsx(v8,{className:"w-4 h-4 text-red-500 mr-1"}),h.jsx("span",{className:n?"text-green-600 font-medium":"text-red-600 font-medium",children:r}),h.jsx("span",{className:"text-gray-400 ml-1",children:"vs last period"})]})]})})}const Dce=["Tasks","Sensors","Food Waste","E-Label","API"];function Lce(){const[e,t]=E.useState("Dashboard"),r=()=>{if(Dce.includes(e))return h.jsx("div",{className:"min-h-[200px]"});switch(e){case"Dashboard":return h.jsx(Ice,{});case"Training":return h.jsx(BW,{});case"Alerts":return h.jsx(qW,{});case"Menu Manager":return h.jsx(uH,{});case"Account Management":return h.jsx(wH,{});case"Reports":return h.jsx(bce,{});case"Location Manager":return h.jsx(Sce,{});case"Devices":return h.jsx(Oce,{});case"Invoices":return h.jsx(Pce,{});case"QR Codes":return h.jsx(kce,{});case"Labels":case"Label Categories":case"Label Types":case"Label Templates":case"Multiple Options":return h.jsx($W,{currentView:e,onViewChange:t});default:return h.jsx(RF,{title:e})}};return h.jsx(TF,{currentView:e,setCurrentView:t,children:r()})}i8.createRoot(document.getElementById("root")).render(h.jsx(Lce,{})); diff --git a/泰额版/Food Labeling Management Platform/build/assets/index-j-TrTQbz.css b/泰额版/Food Labeling Management Platform/build/assets/index-j-TrTQbz.css new file mode 100644 index 0000000..7d57070 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/build/assets/index-j-TrTQbz.css @@ -0,0 +1 @@ +/*! tailwindcss v4.1.3 | MIT License | https://tailwindcss.com */@font-face{font-family:FreightSans Bold;src:url(./FreightSans%20Bold-CftzBXfG.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap;unicode-range:U+0000-002F,U+003A-10FFFF}@layer properties{@supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-rotate-x: rotateX(0);--tw-rotate-y: rotateY(0);--tw-rotate-z: rotateZ(0);--tw-skew-x: skewX(0);--tw-skew-y: skewY(0);--tw-space-y-reverse: 0;--tw-space-x-reverse: 0;--tw-border-style: solid;--tw-gradient-position: initial;--tw-gradient-from: #0000;--tw-gradient-via: #0000;--tw-gradient-to: #0000;--tw-gradient-stops: initial;--tw-gradient-via-stops: initial;--tw-gradient-from-position: 0%;--tw-gradient-via-position: 50%;--tw-gradient-to-position: 100%;--tw-leading: initial;--tw-font-weight: initial;--tw-tracking: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-outline-style: solid;--tw-backdrop-blur: initial;--tw-backdrop-brightness: initial;--tw-backdrop-contrast: initial;--tw-backdrop-grayscale: initial;--tw-backdrop-hue-rotate: initial;--tw-backdrop-invert: initial;--tw-backdrop-opacity: initial;--tw-backdrop-saturate: initial;--tw-backdrop-sepia: initial;--tw-duration: initial;--tw-ease: initial;--tw-scale-x: 1;--tw-scale-y: 1;--tw-scale-z: 1}}}@layer theme{:root,:host{--font-sans: "FreightSans Bold", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-100: oklch(.936 .032 17.717);--color-red-300: oklch(.808 .114 19.571);--color-red-400: oklch(.704 .191 22.216);--color-red-500: oklch(.637 .237 25.331);--color-red-600: oklch(.577 .245 27.325);--color-red-700: oklch(.505 .213 27.518);--color-red-900: oklch(.396 .141 25.723);--color-orange-50: oklch(.98 .016 73.684);--color-orange-200: oklch(.901 .076 70.697);--color-orange-500: oklch(.705 .213 47.604);--color-orange-700: oklch(.553 .195 38.402);--color-yellow-400: oklch(.852 .199 91.936);--color-yellow-500: oklch(.795 .184 86.047);--color-green-100: oklch(.962 .044 156.743);--color-green-500: oklch(.723 .219 149.579);--color-green-600: oklch(.627 .194 149.214);--color-green-700: oklch(.527 .154 150.069);--color-emerald-50: oklch(.979 .021 166.113);--color-emerald-600: oklch(.596 .145 163.225);--color-blue-50: oklch(.97 .014 254.604);--color-blue-100: oklch(.932 .032 255.585);--color-blue-200: oklch(.882 .059 254.128);--color-blue-300: oklch(.809 .105 251.813);--color-blue-400: oklch(.707 .165 254.624);--color-blue-500: oklch(.623 .214 259.815);--color-blue-600: oklch(.546 .245 262.881);--color-blue-700: oklch(.488 .243 264.376);--color-blue-800: oklch(.424 .199 265.638);--color-blue-900: oklch(.379 .146 265.522);--color-indigo-50: oklch(.962 .018 272.314);--color-indigo-600: oklch(.511 .262 276.966);--color-gray-50: oklch(.985 .002 247.839);--color-gray-100: oklch(.967 .003 264.542);--color-gray-200: oklch(.928 .006 264.531);--color-gray-300: oklch(.872 .01 258.338);--color-gray-400: oklch(.707 .022 261.325);--color-gray-500: oklch(.551 .027 264.364);--color-gray-600: oklch(.446 .03 256.802);--color-gray-700: oklch(.373 .034 259.733);--color-gray-800: oklch(.278 .033 256.848);--color-gray-900: oklch(.21 .034 264.665);--color-black: #000;--color-white: #fff;--spacing: .25rem;--container-xs: 20rem;--container-md: 28rem;--container-lg: 32rem;--text-xs: .75rem;--text-xs--line-height: calc(1 / .75);--text-sm: .875rem;--text-sm--line-height: calc(1.25 / .875);--text-base: 1rem;--text-base--line-height: 1.5 ;--text-lg: 1.125rem;--text-lg--line-height: calc(1.75 / 1.125);--text-xl: 1.25rem;--text-xl--line-height: calc(1.75 / 1.25);--text-2xl: 1.5rem;--text-2xl--line-height: calc(2 / 1.5);--text-3xl: 1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-light: 300;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--tracking-wide: .025em;--tracking-wider: .05em;--leading-tight: 1.25;--leading-relaxed: 1.625;--radius-xs: .125rem;--animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration: .15s;--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--default-font-family: var(--font-sans);--default-font-feature-settings: var(--font-sans--font-feature-settings);--default-font-variation-settings: var(--font-sans--font-variation-settings);--default-mono-font-family: var(--font-mono);--default-mono-font-feature-settings: var(--font-mono--font-feature-settings);--default-mono-font-variation-settings: var(--font-mono--font-variation-settings)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings, normal);font-variation-settings:var(--default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;--lightningcss-light: initial;--lightningcss-dark: ;color-scheme:light;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;--lightningcss-light: initial;--lightningcss-dark: ;color-scheme:light;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1;color:currentColor}@supports (color: color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentColor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}body{background-color:var(--background);color:var(--foreground)}*{border-color:var(--border);outline-color:var(--ring)}@supports (color: color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}body{background-color:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h1{font-size:var(--text-2xl);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h2{font-size:var(--text-xl);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h3{font-size:var(--text-lg);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) h4,:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) label,:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) button{font-size:var(--text-base);font-weight:var(--font-weight-medium);line-height:1.5}:where(:not(:has([class*=" text-"]),:not(:has([class^=text-])))) input{font-size:var(--text-base);font-weight:var(--font-weight-normal);line-height:1.5}}@layer utilities{.\@container\/card-header{container:card-header / inline-size}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.top-0{top:calc(var(--spacing) * 0)}.top-2\.5{top:calc(var(--spacing) * 2.5)}.top-4{top:calc(var(--spacing) * 4)}.top-\[1px\]{top:1px}.top-\[50\%\]{top:50%}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.bottom-12{bottom:calc(var(--spacing) * 12)}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-\[50\%\]{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-span-1{grid-column:span 1 / span 1}.col-span-2{grid-column:span 2 / span 2}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2 / span 2}.row-start-1{grid-row-start:1}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.my-1{margin-block:calc(var(--spacing) * 1)}.my-auto{margin-block:auto}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.mr-4{margin-right:calc(var(--spacing) * 4)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.aspect-square{aspect-ratio:1}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-full{width:100%;height:100%}.h-1{height:calc(var(--spacing) * 1)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-32{height:calc(var(--spacing) * 32)}.h-64{height:calc(var(--spacing) * 64)}.h-\[1\.15rem\]{height:1.15rem}.h-\[120px\]{height:120px}.h-\[200px\]{height:200px}.h-\[280px\]{height:280px}.h-\[300px\]{height:300px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-\[90vh\]{max-height:90vh}.min-h-\[400px\]{min-height:400px}.w-1{width:calc(var(--spacing) * 1)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-32{width:calc(var(--spacing) * 32)}.w-64{width:calc(var(--spacing) * 64)}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[140px\]{width:140px}.w-\[150px\]{width:150px}.w-\[160px\]{width:160px}.w-\[180px\]{width:180px}.w-\[200px\]{width:200px}.w-\[250px\]{width:250px}.w-\[600px\]{width:600px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-\[200px\]{max-width:200px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.translate-x-\[-50\%\]{--tw-translate-x: -50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y: -50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.transform{transform:var(--tw-rotate-x) var(--tw-rotate-y) var(--tw-rotate-z) var(--tw-skew-x) var(--tw-skew-y)}.animate-pulse{animation:var(--animate-pulse)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.scroll-my-1{scroll-margin-block:calc(var(--spacing) * 1)}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:calc(var(--spacing) * 0)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.-space-x-\[1px\]>:not(:last-child)){--tw-space-x-reverse: 0;margin-inline-start:calc(-1px * var(--tw-space-x-reverse));margin-inline-end:calc(-1px * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse: 0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[4px\]{border-radius:4px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style: dashed;border-style:dashed}.border-none{--tw-border-style: none;border-style:none}.border-black{border-color:var(--color-black)}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-400{border-color:var(--color-blue-400)}.border-blue-800{border-color:var(--color-blue-800)}.border-blue-800\/50{border-color:color-mix(in srgb,oklch(.424 .199 265.638) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.border-blue-800\/50{border-color:color-mix(in oklab,var(--color-blue-800) 50%,transparent)}}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-400{border-color:var(--color-gray-400)}.border-gray-800{border-color:var(--color-gray-800)}.border-input{border-color:var(--input)}.border-orange-200{border-color:var(--color-orange-200)}.border-red-600{border-color:var(--color-red-600)}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-\[\#1e3a8a\]{background-color:#1e3a8a}.bg-\[\#2c7bb6\]{background-color:#2c7bb6}.bg-\[\#4CAF50\]{background-color:#4caf50}.bg-background{background-color:var(--background)}.bg-black{background-color:var(--color-black)}.bg-black\/40{background-color:#0006}@supports (color: color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color: color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-blue-700{background-color:var(--color-blue-700)}.bg-blue-800{background-color:var(--color-blue-800)}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-current{background-color:currentColor}.bg-destructive{background-color:var(--destructive)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-50\/50{background-color:color-mix(in srgb,oklch(.985 .002 247.839) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-gray-50\/50{background-color:color-mix(in oklab,var(--color-gray-50) 50%,transparent)}}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-200\/50{background-color:color-mix(in srgb,oklch(.928 .006 264.531) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-gray-200\/50{background-color:color-mix(in oklab,var(--color-gray-200) 50%,transparent)}}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-700{background-color:var(--color-gray-700)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-600{background-color:var(--color-green-600)}.bg-indigo-50{background-color:var(--color-indigo-50)}.bg-input-background{background-color:var(--input-background)}.bg-muted,.bg-muted\/50{background-color:var(--muted)}@supports (color: color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-orange-50{background-color:var(--color-orange-50)}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-yellow-400{background-color:var(--color-yellow-400)}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-gradient-to-b{--tw-gradient-position: to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-gray-50{--tw-gradient-from: var(--color-gray-50);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-gray-100{--tw-gradient-to: var(--color-gray-100);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.fill-current{fill:currentColor}.object-contain{object-fit:contain}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading, var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading, var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading, var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading, var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading, var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.leading-none{--tw-leading: 1;line-height:1}.leading-relaxed{--tw-leading: var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading: var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight: var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-light{--tw-font-weight: var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight: var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking: var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking: var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.text-\[\#2c7bb6\]{color:#2c7bb6}.text-black{color:var(--color-black)}.text-blue-100{color:var(--color-blue-100)}.text-blue-200{color:var(--color-blue-200)}.text-blue-300{color:var(--color-blue-300)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-blue-900{color:var(--color-blue-900)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-emerald-600{color:var(--color-emerald-600)}.text-foreground{color:var(--foreground)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-indigo-600{color:var(--color-indigo-600)}.text-muted-foreground{color:var(--muted-foreground)}.text-orange-500{color:var(--color-orange-500)}.text-orange-700{color:var(--color-orange-700)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, )}.underline-offset-4{text-underline-offset:4px}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow-2xl{--tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, #00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, #0000001a), 0 4px 6px -4px var(--tw-shadow-color, #0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, #0000001a), 0 2px 4px -2px var(--tw-shadow-color, #0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px var(--tw-shadow-color, #0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, #0000001a), 0 8px 10px -6px var(--tw-shadow-color, #0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, #0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-blue-900\/20{--tw-shadow-color: color-mix(in srgb, oklch(.379 .146 265.522) 20%, transparent)}@supports (color: color-mix(in lab,red,red)){.shadow-blue-900\/20{--tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-blue-900) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-offset-background{--tw-ring-offset-color: var(--background)}.outline-hidden{--tw-outline-style: none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.backdrop-blur-\[1px\]{--tw-backdrop-blur: blur(1px);-webkit-backdrop-filter:var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );backdrop-filter:var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, )}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-none{transition-property:none}.duration-200{--tw-duration: .2s;transition-duration:.2s}.duration-1000{--tw-duration: 1s;transition-duration:1s}.ease-linear{--tw-ease: linear;transition-timing-function:linear}.outline-none{--tw-outline-style: none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.running{animation-play-state:running}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.selection\:bg-primary ::selection,.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection,.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing) * 7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:pb-0:last-child{padding-bottom:calc(var(--spacing) * 0)}@media(hover:hover){.hover\:scale-110:hover{--tw-scale-x: 110%;--tw-scale-y: 110%;--tw-scale-z: 110%;scale:var(--tw-scale-x) var(--tw-scale-y)}}@media(hover:hover){.hover\:bg-\[\#43a047\]:hover{background-color:#43a047}}@media(hover:hover){.hover\:bg-\[\#256b9e\]:hover{background-color:#256b9e}}@media(hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}}@media(hover:hover){.hover\:bg-blue-50:hover{background-color:var(--color-blue-50)}}@media(hover:hover){.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}}@media(hover:hover){.hover\:bg-blue-500:hover{background-color:var(--color-blue-500)}}@media(hover:hover){.hover\:bg-blue-600:hover{background-color:var(--color-blue-600)}}@media(hover:hover){.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}}@media(hover:hover){.hover\:bg-blue-800:hover{background-color:var(--color-blue-800)}}@media(hover:hover){.hover\:bg-blue-800\/30:hover{background-color:color-mix(in srgb,oklch(.424 .199 265.638) 30%,transparent)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-blue-800\/30:hover{background-color:color-mix(in oklab,var(--color-blue-800) 30%,transparent)}}}@media(hover:hover){.hover\:bg-blue-800\/50:hover{background-color:color-mix(in srgb,oklch(.424 .199 265.638) 50%,transparent)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-blue-800\/50:hover{background-color:color-mix(in oklab,var(--color-blue-800) 50%,transparent)}}}@media(hover:hover){.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}}@media(hover:hover){.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}}@media(hover:hover){.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}}@media(hover:hover){.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}}@media(hover:hover){.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}}@media(hover:hover){.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}}@media(hover:hover){.hover\:bg-red-900\/20:hover{background-color:color-mix(in srgb,oklch(.396 .141 25.723) 20%,transparent)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-red-900\/20:hover{background-color:color-mix(in oklab,var(--color-red-900) 20%,transparent)}}}@media(hover:hover){.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color: color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}}@media(hover:hover){.hover\:bg-yellow-500:hover{background-color:var(--color-yellow-500)}}@media(hover:hover){.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}@media(hover:hover){.hover\:text-gray-600:hover{color:var(--color-gray-600)}}@media(hover:hover){.hover\:text-gray-700:hover{color:var(--color-gray-700)}}@media(hover:hover){.hover\:text-red-600:hover{color:var(--color-red-600)}}@media(hover:hover){.hover\:text-white:hover{color:var(--color-white)}}@media(hover:hover){.hover\:underline:hover{text-decoration-line:underline}}@media(hover:hover){.hover\:opacity-100:hover{opacity:1}}@media(hover:hover){.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, #0000001a), 0 2px 4px -2px var(--tw-shadow-color, #0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:bg-white:focus{background-color:var(--color-white)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:ring-2:focus{--tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color: var(--color-blue-500)}.focus\:ring-ring:focus{--tw-ring-color: var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style: none;outline-style:none}@media(forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color: var(--ring)}@supports (color: color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color: color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing) * 4)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color: color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y: calc(2 * var(--spacing) * -1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x: calc(2 * var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x: calc(2 * var(--spacing) * -1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y: calc(2 * var(--spacing))}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing) * 9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing) * 8)}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing) * 2)}.data-\[state\=active\]\:bg-card[data-state=active]{background-color:var(--card)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x: calc(100% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-duration, .15s) var(--tw-ease, ease)}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-duration, .15s) var(--tw-ease, ease)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x: calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-switch-background[data-state=unchecked]{background-color:var(--switch-background)}@media(width>=40rem){.sm\:ml-0{margin-left:calc(var(--spacing) * 0)}}@media(width>=40rem){.sm\:w-auto{width:auto}}@media(width>=40rem){.sm\:max-w-\[500px\]{max-width:500px}}@media(width>=40rem){.sm\:max-w-\[600px\]{max-width:600px}}@media(width>=40rem){.sm\:max-w-lg{max-width:var(--container-lg)}}@media(width>=40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(width>=40rem){.sm\:flex-row{flex-direction:row}}@media(width>=40rem){.sm\:items-center{align-items:center}}@media(width>=40rem){.sm\:justify-end{justify-content:flex-end}}@media(width>=40rem){.sm\:text-left{text-align:left}}@media(width>=48rem){.md\:block{display:block}}@media(width>=48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(width>=48rem){.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(width>=48rem){.md\:flex-row{flex-direction:row}}@media(width>=48rem){.md\:text-base{font-size:var(--text-base);line-height:var(--tw-leading, var(--text-base--line-height))}}@media(width>=48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}}@media(width>=64rem){.lg\:col-span-2{grid-column:span 2 / span 2}}@media(width>=64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(width>=64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(width>=64rem){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(width>=80rem){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 60%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color: color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}@media(hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color: color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent) 50%,transparent)}}}@media(hover:hover){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color: color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color: var(--destructive)}@supports (color: color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color: color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[state\=active\]\:border-input:is(.dark *)[data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:var(--input)}@supports (color: color-mix(in lab,red,red)){.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\:data-\[state\=checked\]\:bg-primary:is(.dark *)[data-state=checked]{background-color:var(--primary)}.dark\:data-\[state\=checked\]\:bg-primary-foreground:is(.dark *)[data-state=checked]{background-color:var(--primary-foreground)}.dark\:data-\[state\=unchecked\]\:bg-card-foreground:is(.dark *)[data-state=unchecked]{background-color:var(--card-foreground)}.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:var(--input)}@supports (color: color-mix(in lab,red,red)){.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing) * 0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing) * 6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing) * 6)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing) * 2)}.\[\&\:last-child\]\:pb-6:last-child{padding-bottom:calc(var(--spacing) * 6)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media(hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}}@media(hover:hover){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color: color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}}@media(hover:hover){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color: color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}}@media(hover:hover){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color: color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary) 90%,transparent)}}}@media(hover:hover){a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}}:root{--font-size: 16px;--background: #fff;--foreground: oklch(.145 0 0);--card: #fff;--card-foreground: oklch(.145 0 0);--popover: oklch(1 0 0);--popover-foreground: oklch(.145 0 0);--primary: #030213;--primary-foreground: oklch(1 0 0);--secondary: oklch(.95 .0058 264.53);--secondary-foreground: #030213;--muted: #ececf0;--muted-foreground: #717182;--accent: #e9ebef;--accent-foreground: #030213;--destructive: #d4183d;--destructive-foreground: #fff;--border: #0000001a;--input: transparent;--input-background: #f3f3f5;--switch-background: #cbced4;--font-weight-medium: 500;--font-weight-normal: 400;--ring: oklch(.708 0 0);--chart-1: oklch(.646 .222 41.116);--chart-2: oklch(.6 .118 184.704);--chart-3: oklch(.398 .07 227.392);--chart-4: oklch(.828 .189 84.429);--chart-5: oklch(.769 .188 70.08);--radius: .625rem;--sidebar: oklch(.985 0 0);--sidebar-foreground: oklch(.145 0 0);--sidebar-primary: #030213;--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.97 0 0);--sidebar-accent-foreground: oklch(.205 0 0);--sidebar-border: oklch(.922 0 0);--sidebar-ring: oklch(.708 0 0)}.dark{--background: oklch(.145 0 0);--foreground: oklch(.985 0 0);--card: oklch(.145 0 0);--card-foreground: oklch(.985 0 0);--popover: oklch(.145 0 0);--popover-foreground: oklch(.985 0 0);--primary: oklch(.985 0 0);--primary-foreground: oklch(.205 0 0);--secondary: oklch(.269 0 0);--secondary-foreground: oklch(.985 0 0);--muted: oklch(.269 0 0);--muted-foreground: oklch(.708 0 0);--accent: oklch(.269 0 0);--accent-foreground: oklch(.985 0 0);--destructive: oklch(.396 .141 25.723);--destructive-foreground: oklch(.637 .237 25.331);--border: oklch(.269 0 0);--input: oklch(.269 0 0);--ring: oklch(.439 0 0);--font-weight-medium: 500;--font-weight-normal: 400;--chart-1: oklch(.488 .243 264.376);--chart-2: oklch(.696 .17 162.48);--chart-3: oklch(.769 .188 70.08);--chart-4: oklch(.627 .265 303.9);--chart-5: oklch(.645 .246 16.439);--sidebar: oklch(.205 0 0);--sidebar-foreground: oklch(.985 0 0);--sidebar-primary: oklch(.488 .243 264.376);--sidebar-primary-foreground: oklch(.985 0 0);--sidebar-accent: oklch(.269 0 0);--sidebar-accent-foreground: oklch(.985 0 0);--sidebar-border: oklch(.269 0 0);--sidebar-ring: oklch(.439 0 0)}html{font-size:var(--font-size)}@property --tw-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-rotate-x{syntax: "*"; inherits: false; initial-value: rotateX(0);}@property --tw-rotate-y{syntax: "*"; inherits: false; initial-value: rotateY(0);}@property --tw-rotate-z{syntax: "*"; inherits: false; initial-value: rotateZ(0);}@property --tw-skew-x{syntax: "*"; inherits: false; initial-value: skewX(0);}@property --tw-skew-y{syntax: "*"; inherits: false; initial-value: skewY(0);}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-space-x-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-gradient-position{syntax: "*"; inherits: false}@property --tw-gradient-from{syntax: ""; inherits: false; initial-value: #0000;}@property --tw-gradient-via{syntax: ""; inherits: false; initial-value: #0000;}@property --tw-gradient-to{syntax: ""; inherits: false; initial-value: #0000;}@property --tw-gradient-stops{syntax: "*"; inherits: false}@property --tw-gradient-via-stops{syntax: "*"; inherits: false}@property --tw-gradient-from-position{syntax: ""; inherits: false; initial-value: 0%;}@property --tw-gradient-via-position{syntax: ""; inherits: false; initial-value: 50%;}@property --tw-gradient-to-position{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-leading{syntax: "*"; inherits: false}@property --tw-font-weight{syntax: "*"; inherits: false}@property --tw-tracking{syntax: "*"; inherits: false}@property --tw-ordinal{syntax: "*"; inherits: false}@property --tw-slashed-zero{syntax: "*"; inherits: false}@property --tw-numeric-figure{syntax: "*"; inherits: false}@property --tw-numeric-spacing{syntax: "*"; inherits: false}@property --tw-numeric-fraction{syntax: "*"; inherits: false}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false}@property --tw-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false}@property --tw-inset-shadow-alpha{syntax: ""; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false}@property --tw-ring-offset-width{syntax: ""; inherits: false; initial-value: 0;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-outline-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-backdrop-blur{syntax: "*"; inherits: false}@property --tw-backdrop-brightness{syntax: "*"; inherits: false}@property --tw-backdrop-contrast{syntax: "*"; inherits: false}@property --tw-backdrop-grayscale{syntax: "*"; inherits: false}@property --tw-backdrop-hue-rotate{syntax: "*"; inherits: false}@property --tw-backdrop-invert{syntax: "*"; inherits: false}@property --tw-backdrop-opacity{syntax: "*"; inherits: false}@property --tw-backdrop-saturate{syntax: "*"; inherits: false}@property --tw-backdrop-sepia{syntax: "*"; inherits: false}@property --tw-duration{syntax: "*"; inherits: false}@property --tw-ease{syntax: "*"; inherits: false}@property --tw-scale-x{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-scale-y{syntax: "*"; inherits: false; initial-value: 1;}@property --tw-scale-z{syntax: "*"; inherits: false; initial-value: 1;}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}} diff --git a/泰额版/Food Labeling Management Platform/build/index.html b/泰额版/Food Labeling Management Platform/build/index.html new file mode 100644 index 0000000..69bcd5b --- /dev/null +++ b/泰额版/Food Labeling Management Platform/build/index.html @@ -0,0 +1,16 @@ + + + + + + + Food Labeling Management Platform + + + + + +
+ + + \ No newline at end of file diff --git a/泰额版/Food Labeling Management Platform/index.html b/泰额版/Food Labeling Management Platform/index.html new file mode 100755 index 0000000..ddf737b --- /dev/null +++ b/泰额版/Food Labeling Management Platform/index.html @@ -0,0 +1,15 @@ + + + + + + + Food Labeling Management Platform + + + +
+ + + + \ No newline at end of file diff --git a/泰额版/Food Labeling Management Platform/package-lock.json b/泰额版/Food Labeling Management Platform/package-lock.json new file mode 100644 index 0000000..f064229 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/package-lock.json @@ -0,0 +1,4495 @@ +{ + "name": "Food Labeling Management Platform", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "Food Labeling Management Platform", + "version": "0.1.0", + "dependencies": { + "@jsr/supabase__supabase-js": "^2.49.8", + "@radix-ui/react-accordion": "^1.2.3", + "@radix-ui/react-alert-dialog": "^1.1.6", + "@radix-ui/react-aspect-ratio": "^1.1.2", + "@radix-ui/react-avatar": "^1.1.3", + "@radix-ui/react-checkbox": "^1.1.4", + "@radix-ui/react-collapsible": "^1.1.3", + "@radix-ui/react-context-menu": "^2.2.6", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-dropdown-menu": "^2.1.6", + "@radix-ui/react-hover-card": "^1.1.6", + "@radix-ui/react-label": "^2.1.2", + "@radix-ui/react-menubar": "^1.1.6", + "@radix-ui/react-navigation-menu": "^1.2.5", + "@radix-ui/react-popover": "^1.1.6", + "@radix-ui/react-progress": "^1.1.2", + "@radix-ui/react-radio-group": "^1.2.3", + "@radix-ui/react-scroll-area": "^1.2.3", + "@radix-ui/react-select": "^2.1.6", + "@radix-ui/react-separator": "^1.1.2", + "@radix-ui/react-slider": "^1.2.3", + "@radix-ui/react-slot": "^1.1.2", + "@radix-ui/react-switch": "^1.1.3", + "@radix-ui/react-tabs": "^1.1.3", + "@radix-ui/react-toggle": "^1.1.2", + "@radix-ui/react-toggle-group": "^1.1.2", + "@radix-ui/react-tooltip": "^1.1.8", + "@supabase/supabase-js": "*", + "class-variance-authority": "^0.7.1", + "clsx": "*", + "cmdk": "^1.1.1", + "embla-carousel-react": "^8.6.0", + "hono": "*", + "input-otp": "^1.4.2", + "jsbarcode": "^3.12.3", + "lucide-react": "^0.487.0", + "next-themes": "^0.4.6", + "qrcode.react": "^4.2.0", + "react": "^18.3.1", + "react-day-picker": "^8.10.1", + "react-dom": "^18.3.1", + "react-hook-form": "^7.55.0", + "react-resizable-panels": "^2.1.7", + "recharts": "^2.15.2", + "sonner": "^2.0.3", + "tailwind-merge": "*", + "vaul": "^1.1.2" + }, + "devDependencies": { + "@types/node": "^20.10.0", + "@types/react": "^19.2.10", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react-swc": "^3.10.2", + "vite": "6.3.5" + }, + "optionalDependencies": { + "@rollup/rollup-darwin-arm64": "^4.57.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.6", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.4", + "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.7.4.tgz", + "integrity": "sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.5", + "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.7.5.tgz", + "integrity": "sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.4", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.7", + "resolved": "https://registry.npmmirror.com/@floating-ui/react-dom/-/react-dom-2.1.7.tgz", + "integrity": "sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.5" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT" + }, + "node_modules/@jsr/supabase__functions-js": { + "version": "0.0.0-jsr-test.1", + "resolved": "https://npm.jsr.io/~/11/@jsr/supabase__functions-js/0.0.0-jsr-test.1.tgz", + "integrity": "sha512-BW7Zmo8c0l/+yUl8//5G5LOgvRaUSHesTTAF+aGsYmSNdM8E5FNVl+SH6vLbBazra601FjnaETh7+UZ5x7cXpw==", + "dependencies": { + "openai": "^4.52.5" + } + }, + "node_modules/@jsr/supabase__supabase-js": { + "version": "2.93.3", + "resolved": "https://npm.jsr.io/~/11/@jsr/supabase__supabase-js/2.93.3.tgz", + "integrity": "sha512-xPYovw9NQaweLqnS1PRLcuRxqSsKW4aGJ1tHvgUhkYAwBKiwU6IQctqcxOuryaWqcHemwNYSMGZPlUpo6i9Uhw==", + "dependencies": { + "@jsr/supabase__functions-js": "^0.0.0-automated", + "@supabase/auth-js": "2.93.3", + "@supabase/postgrest-js": "2.93.3", + "@supabase/realtime-js": "2.93.3", + "@supabase/storage-js": "2.93.3" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-accordion": { + "version": "1.2.12", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-accordion/-/react-accordion-1.2.12.tgz", + "integrity": "sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collapsible": "1.1.12", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-alert-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.15.tgz", + "integrity": "sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dialog": "1.1.15", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-alert-dialog/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-aspect-ratio": { + "version": "1.1.8", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.8.tgz", + "integrity": "sha512-5nZrJTF7gH+e0nZS7/QxFz6tJV4VimhQb1avEgtsJxvvIp5JilL+c58HICsKzPxghdwaDt48hEfPM1au4zGy+w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-aspect-ratio/node_modules/@radix-ui/react-primitive": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", + "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-avatar": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-avatar/-/react-avatar-1.1.11.tgz", + "integrity": "sha512-0Qk603AHGV28BOBO34p7IgD5m+V5Sg/YovfayABkoDDBM5d3NCx0Mp4gGrjzLGes1jV5eNOE1r3itqOR33VC6Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.3", + "@radix-ui/react-primitive": "2.1.4", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-is-hydrated": "0.1.0", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-context": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.3.tgz", + "integrity": "sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-primitive": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", + "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz", + "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible": { + "version": "1.1.12", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-collapsible/-/react-collapsible-1.1.12.tgz", + "integrity": "sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu": { + "version": "2.2.16", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context-menu/-/react-context-menu-2.2.16.tgz", + "integrity": "sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", + "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.16", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.16.tgz", + "integrity": "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-hover-card": { + "version": "1.1.15", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-hover-card/-/react-hover-card-1.1.15.tgz", + "integrity": "sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.8", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-label/-/react-label-2.1.8.tgz", + "integrity": "sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", + "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.16", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-menu/-/react-menu-2.1.16.tgz", + "integrity": "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar": { + "version": "1.1.16", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-menubar/-/react-menubar-1.1.16.tgz", + "integrity": "sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.2.14", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.14.tgz", + "integrity": "sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.15", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-popover/-/react-popover-1.1.15.tgz", + "integrity": "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress": { + "version": "1.1.8", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-progress/-/react-progress-1.1.8.tgz", + "integrity": "sha512-+gISHcSPUJ7ktBy9RnTqbdKW78bcGke3t6taawyZ71pio1JewwGSJizycs7rLhGTvMJYCQB1DBK4KQsxs7U8dA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.3", + "@radix-ui/react-primitive": "2.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-context/-/react-context-1.1.3.tgz", + "integrity": "sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-primitive": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", + "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group": { + "version": "1.3.8", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-radio-group/-/react-radio-group-1.3.8.tgz", + "integrity": "sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.10", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.10.tgz", + "integrity": "sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.2.6", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-select/-/react-select-2.2.6.tgz", + "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator": { + "version": "1.1.8", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-separator/-/react-separator-1.1.8.tgz", + "integrity": "sha512-sDvqVY4itsKwwSMEe0jtKgfTh+72Sy3gPmQpjqcQneqQ4PFmr/1I0YA+2/puilhggCe2gJcx5EBAYFkWkdpa5g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive": { + "version": "2.1.4", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", + "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slider": { + "version": "1.3.6", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-slider/-/react-slider-1.3.6.tgz", + "integrity": "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", + "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.2.6", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-switch/-/react-switch-1.2.6.tgz", + "integrity": "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.13", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", + "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle": { + "version": "1.1.10", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz", + "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz", + "integrity": "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-toggle": "1.1.10", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz", + "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-is-hydrated": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.0.tgz", + "integrity": "sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "license": "MIT" + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmmirror.com/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.0.tgz", + "integrity": "sha512-tPgXB6cDTndIe1ah7u6amCI1T0SsnlOuKgg10Xh3uizJk4e5M1JGaUMk7J4ciuAUcFpbOiNhm2XIjP9ON0dUqA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.0.tgz", + "integrity": "sha512-sa4LyseLLXr1onr97StkU1Nb7fWcg6niokTwEVNOO7awaKaoRObQ54+V/hrF/BP1noMEaaAW6Fg2d/CfLiq3Mg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.0.tgz", + "integrity": "sha512-/NNIj9A7yLjKdmkx5dC2XQ9DmjIECpGpwHoGmA5E1AhU0fuICSqSWScPhN1yLCkEdkCwJIDu2xIeLPs60MNIVg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.0.tgz", + "integrity": "sha512-xoh8abqgPrPYPr7pTYipqnUi1V3em56JzE/HgDgitTqZBZ3yKCWI+7KUkceM6tNweyUKYru1UMi7FC060RyKwA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.0.tgz", + "integrity": "sha512-PCkMh7fNahWSbA0OTUQ2OpYHpjZZr0hPr8lId8twD7a7SeWrvT3xJVyza+dQwXSSq4yEQTMoXgNOfMCsn8584g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.0.tgz", + "integrity": "sha512-1j3stGx+qbhXql4OCDZhnK7b01s6rBKNybfsX+TNrEe9JNq4DLi1yGiR1xW+nL+FNVvI4D02PUnl6gJ/2y6WJA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.0.tgz", + "integrity": "sha512-eyrr5W08Ms9uM0mLcKfM/Uzx7hjhz2bcjv8P2uynfj0yU8GGPdz8iYrBPhiLOZqahoAMB8ZiolRZPbbU2MAi6Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.0.tgz", + "integrity": "sha512-Xds90ITXJCNyX9pDhqf85MKWUI4lqjiPAipJ8OLp8xqI2Ehk+TCVhF9rvOoN8xTbcafow3QOThkNnrM33uCFQA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.0.tgz", + "integrity": "sha512-Xws2KA4CLvZmXjy46SQaXSejuKPhwVdaNinldoYfqruZBaJHqVo6hnRa8SDo9z7PBW5x84SH64+izmldCgbezw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.0.tgz", + "integrity": "sha512-hrKXKbX5FdaRJj7lTMusmvKbhMJSGWJ+w++4KmjiDhpTgNlhYobMvKfDoIWecy4O60K6yA4SnztGuNTQF+Lplw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.0.tgz", + "integrity": "sha512-6A+nccfSDGKsPm00d3xKcrsBcbqzCTAukjwWK6rbuAnB2bHaL3r9720HBVZ/no7+FhZLz/U3GwwZZEh6tOSI8Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.0.tgz", + "integrity": "sha512-4P1VyYUe6XAJtQH1Hh99THxr0GKMMwIXsRNOceLrJnaHTDgk1FTcTimDgneRJPvB3LqDQxUmroBclQ1S0cIJwQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.0.tgz", + "integrity": "sha512-8Vv6pLuIZCMcgXre6c3nOPhE0gjz1+nZP6T+hwWjr7sVH8k0jRkH+XnfjjOTglyMBdSKBPPz54/y1gToSKwrSQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.0.tgz", + "integrity": "sha512-r1te1M0Sm2TBVD/RxBPC6RZVwNqUTwJTA7w+C/IW5v9Ssu6xmxWEi+iJQlpBhtUiT1raJ5b48pI8tBvEjEFnFA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.0.tgz", + "integrity": "sha512-say0uMU/RaPm3CDQLxUUTF2oNWL8ysvHkAjcCzV2znxBr23kFfaxocS9qJm+NdkRhF8wtdEEAJuYcLPhSPbjuQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.0.tgz", + "integrity": "sha512-/MU7/HizQGsnBREtRpcSbSV1zfkoxSTR7wLsRmBPQ8FwUj5sykrP1MyJTvsxP5KBq9SyE6kH8UQQQwa0ASeoQQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.0.tgz", + "integrity": "sha512-Q9eh+gUGILIHEaJf66aF6a414jQbDnn29zeu0eX3dHMuysnhTvsUvZTCAyZ6tJhUjnvzBKE4FtuaYxutxRZpOg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.0.tgz", + "integrity": "sha512-OR5p5yG5OKSxHReWmwvM0P+VTPMwoBS45PXTMYaskKQqybkS3Kmugq1W+YbNWArF8/s7jQScgzXUhArzEQ7x0A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.0.tgz", + "integrity": "sha512-XeatKzo4lHDsVEbm1XDHZlhYZZSQYym6dg2X/Ko0kSFgio+KXLsxwJQprnR48GvdIKDOpqWqssC3iBCjoMcMpw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.0.tgz", + "integrity": "sha512-Lu71y78F5qOfYmubYLHPcJm74GZLU6UJ4THkf/a1K7Tz2ycwC2VUbsqbJAXaR6Bx70SRdlVrt2+n5l7F0agTUw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.0.tgz", + "integrity": "sha512-v5xwKDWcu7qhAEcsUubiav7r+48Uk/ENWdr82MBZZRIm7zThSxCIVDfb3ZeRRq9yqk+oIzMdDo6fCcA5DHfMyA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.0.tgz", + "integrity": "sha512-XnaaaSMGSI6Wk8F4KK3QP7GfuuhjGchElsVerCplUuxRIzdvZ7hRBpLR0omCmw+kI2RFJB80nenhOoGXlJ5TfQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.0.tgz", + "integrity": "sha512-3K1lP+3BXY4t4VihLw5MEg6IZD3ojSYzqzBG571W3kNQe4G4CcFpSUQVgurYgib5d+YaCjeFow8QivWp8vuSvA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.0.tgz", + "integrity": "sha512-MDk610P/vJGc5L5ImE4k5s+GZT3en0KoK1MKPXCRgzmksAMk79j4h3k1IerxTNqwDLxsGxStEZVBqG0gIqZqoA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.0.tgz", + "integrity": "sha512-Zv7v6q6aV+VslnpwzqKAmrk5JdVkLUzok2208ZXGipjb+msxBr/fJPZyeEXiFgH7k62Ak0SLIfxQRZQvTuf7rQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@supabase/auth-js": { + "version": "2.93.3", + "resolved": "https://registry.npmmirror.com/@supabase/auth-js/-/auth-js-2.93.3.tgz", + "integrity": "sha512-JdnkHZPKexVGSNONtu89RHU4bxz3X9kxx+f5ZnR5osoCIX+vs/MckwWRPZEybAEvlJXt5xjomDb3IB876QCxWQ==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/functions-js": { + "version": "2.78.0", + "resolved": "https://registry.npmmirror.com/@supabase/functions-js/-/functions-js-2.78.0.tgz", + "integrity": "sha512-t1jOvArBsOINyqaRee1xJ3gryXLvkBzqnKfi6q3YRzzhJbGS6eXz0pXR5fqmJeB01fLC+1njpf3YhMszdPEF7g==", + "license": "MIT", + "dependencies": { + "@supabase/node-fetch": "2.6.15", + "tslib": "2.8.1" + } + }, + "node_modules/@supabase/node-fetch": { + "version": "2.6.15", + "resolved": "https://registry.npmmirror.com/@supabase/node-fetch/-/node-fetch-2.6.15.tgz", + "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/@supabase/postgrest-js": { + "version": "2.93.3", + "resolved": "https://registry.npmmirror.com/@supabase/postgrest-js/-/postgrest-js-2.93.3.tgz", + "integrity": "sha512-+iJ96g94skO2e4clsRSmEXg22NUOjh9BziapsJSAvnB1grOBf/BA8vGtCHjNOA+Z6lvKXL1jwBqcL9+fS1W/Lg==", + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/realtime-js": { + "version": "2.93.3", + "resolved": "https://registry.npmmirror.com/@supabase/realtime-js/-/realtime-js-2.93.3.tgz", + "integrity": "sha512-gnYpcFzwy8IkezRP4CDbT5I8jOsiOjrWrqTY1B+7jIriXsnpifmlM6RRjLBm9oD7OwPG0/WksniGPdKW67sXOA==", + "license": "MIT", + "dependencies": { + "@types/phoenix": "^1.6.6", + "@types/ws": "^8.18.1", + "tslib": "2.8.1", + "ws": "^8.18.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/storage-js": { + "version": "2.93.3", + "resolved": "https://registry.npmmirror.com/@supabase/storage-js/-/storage-js-2.93.3.tgz", + "integrity": "sha512-cw4qXiLrx3apglDM02Tx/w/stvFlrkKocC6vCvuFAz3JtVEl1zH8MUfDQDTH59kJAQVaVdbewrMWSoBob7REnA==", + "license": "MIT", + "dependencies": { + "iceberg-js": "^0.8.1", + "tslib": "2.8.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@supabase/supabase-js": { + "version": "2.78.0", + "resolved": "https://registry.npmmirror.com/@supabase/supabase-js/-/supabase-js-2.78.0.tgz", + "integrity": "sha512-xYMRNBFmKp2m1gMuwcp/gr/HlfZKqjye1Ib8kJe29XJNsgwsfO/f8skxnWiscFKTlkOKLuBexNgl5L8dzGt6vA==", + "license": "MIT", + "dependencies": { + "@supabase/auth-js": "2.78.0", + "@supabase/functions-js": "2.78.0", + "@supabase/node-fetch": "2.6.15", + "@supabase/postgrest-js": "2.78.0", + "@supabase/realtime-js": "2.78.0", + "@supabase/storage-js": "2.78.0" + } + }, + "node_modules/@supabase/supabase-js/node_modules/@supabase/auth-js": { + "version": "2.78.0", + "resolved": "https://registry.npmmirror.com/@supabase/auth-js/-/auth-js-2.78.0.tgz", + "integrity": "sha512-cXDtu1U0LeZj/xfnFoV7yCze37TcbNo8FCxy1FpqhMbB9u9QxxDSW6pA5gm/07Ei7m260Lof4CZx67Cu6DPeig==", + "license": "MIT", + "dependencies": { + "@supabase/node-fetch": "2.6.15", + "tslib": "2.8.1" + } + }, + "node_modules/@supabase/supabase-js/node_modules/@supabase/postgrest-js": { + "version": "2.78.0", + "resolved": "https://registry.npmmirror.com/@supabase/postgrest-js/-/postgrest-js-2.78.0.tgz", + "integrity": "sha512-AwhpYlSvJ+PSnPmIK8sHj7NGDyDENYfQGKrMtpVIEzQA2ApUjgpUGxzXWN4Z0wEtLQsvv7g4y9HVad9Hzo1TNA==", + "license": "MIT", + "dependencies": { + "@supabase/node-fetch": "2.6.15", + "tslib": "2.8.1" + } + }, + "node_modules/@supabase/supabase-js/node_modules/@supabase/realtime-js": { + "version": "2.78.0", + "resolved": "https://registry.npmmirror.com/@supabase/realtime-js/-/realtime-js-2.78.0.tgz", + "integrity": "sha512-rCs1zmLe7of7hj4s7G9z8rTqzWuNVtmwDr3FiCRCJFawEoa+RQO1xpZGbdeuVvVmKDyVN6b542Okci+117y/LQ==", + "license": "MIT", + "dependencies": { + "@supabase/node-fetch": "2.6.15", + "@types/phoenix": "^1.6.6", + "@types/ws": "^8.18.1", + "tslib": "2.8.1", + "ws": "^8.18.2" + } + }, + "node_modules/@supabase/supabase-js/node_modules/@supabase/storage-js": { + "version": "2.78.0", + "resolved": "https://registry.npmmirror.com/@supabase/storage-js/-/storage-js-2.78.0.tgz", + "integrity": "sha512-n17P0JbjHOlxqJpkaGFOn97i3EusEKPEbWOpuk1r4t00Wg06B8Z4GUiq0O0n1vUpjiMgJUkLIMuBVp+bEgunzQ==", + "license": "MIT", + "dependencies": { + "@supabase/node-fetch": "2.6.15", + "tslib": "2.8.1" + } + }, + "node_modules/@swc/core": { + "version": "1.15.11", + "resolved": "https://registry.npmmirror.com/@swc/core/-/core-1.15.11.tgz", + "integrity": "sha512-iLmLTodbYxU39HhMPaMUooPwO/zqJWvsqkrXv1ZI38rMb048p6N7qtAtTp37sw9NzSrvH6oli8EdDygo09IZ/w==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.25" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.15.11", + "@swc/core-darwin-x64": "1.15.11", + "@swc/core-linux-arm-gnueabihf": "1.15.11", + "@swc/core-linux-arm64-gnu": "1.15.11", + "@swc/core-linux-arm64-musl": "1.15.11", + "@swc/core-linux-x64-gnu": "1.15.11", + "@swc/core-linux-x64-musl": "1.15.11", + "@swc/core-win32-arm64-msvc": "1.15.11", + "@swc/core-win32-ia32-msvc": "1.15.11", + "@swc/core-win32-x64-msvc": "1.15.11" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.17" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.15.11", + "resolved": "https://registry.npmmirror.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.11.tgz", + "integrity": "sha512-QoIupRWVH8AF1TgxYyeA5nS18dtqMuxNwchjBIwJo3RdwLEFiJq6onOx9JAxHtuPwUkIVuU2Xbp+jCJ7Vzmgtg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.15.11", + "resolved": "https://registry.npmmirror.com/@swc/core-darwin-x64/-/core-darwin-x64-1.15.11.tgz", + "integrity": "sha512-S52Gu1QtPSfBYDiejlcfp9GlN+NjTZBRRNsz8PNwBgSE626/FUf2PcllVUix7jqkoMC+t0rS8t+2/aSWlMuQtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.15.11", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.11.tgz", + "integrity": "sha512-lXJs8oXo6Z4yCpimpQ8vPeCjkgoHu5NoMvmJZ8qxDyU99KVdg6KwU9H79vzrmB+HfH+dCZ7JGMqMF//f8Cfvdg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.15.11", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.11.tgz", + "integrity": "sha512-chRsz1K52/vj8Mfq/QOugVphlKPWlMh10V99qfH41hbGvwAU6xSPd681upO4bKiOr9+mRIZZW+EfJqY42ZzRyA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.15.11", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.11.tgz", + "integrity": "sha512-PYftgsTaGnfDK4m6/dty9ryK1FbLk+LosDJ/RJR2nkXGc8rd+WenXIlvHjWULiBVnS1RsjHHOXmTS4nDhe0v0w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.15.11", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.11.tgz", + "integrity": "sha512-DKtnJKIHiZdARyTKiX7zdRjiDS1KihkQWatQiCHMv+zc2sfwb4Glrodx2VLOX4rsa92NLR0Sw8WLcPEMFY1szQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.15.11", + "resolved": "https://registry.npmmirror.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.11.tgz", + "integrity": "sha512-mUjjntHj4+8WBaiDe5UwRNHuEzLjIWBTSGTw0JT9+C9/Yyuh4KQqlcEQ3ro6GkHmBGXBFpGIj/o5VMyRWfVfWw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.15.11", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.11.tgz", + "integrity": "sha512-ZkNNG5zL49YpaFzfl6fskNOSxtcZ5uOYmWBkY4wVAvgbSAQzLRVBp+xArGWh2oXlY/WgL99zQSGTv7RI5E6nzA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.15.11", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.11.tgz", + "integrity": "sha512-6XnzORkZCQzvTQ6cPrU7iaT9+i145oLwnin8JrfsLG41wl26+5cNQ2XV3zcbrnFEV6esjOceom9YO1w9mGJByw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.15.11", + "resolved": "https://registry.npmmirror.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.11.tgz", + "integrity": "sha512-IQ2n6af7XKLL6P1gIeZACskSxK8jWtoKpJWLZmdXTDj1MGzktUy4i+FvpdtxFmJWNavRWH1VmTr6kAubRDHeKw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@swc/types": { + "version": "0.1.25", + "resolved": "https://registry.npmmirror.com/@swc/types/-/types-0.1.25.tgz", + "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmmirror.com/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.8", + "resolved": "https://registry.npmmirror.com/@types/d3-shape/-/d3-shape-3.1.8.tgz", + "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.19.30", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.19.30.tgz", + "integrity": "sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/node-fetch": { + "version": "2.6.13", + "resolved": "https://registry.npmmirror.com/@types/node-fetch/-/node-fetch-2.6.13.tgz", + "integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.4" + } + }, + "node_modules/@types/phoenix": { + "version": "1.6.7", + "resolved": "https://registry.npmmirror.com/@types/phoenix/-/phoenix-1.6.7.tgz", + "integrity": "sha512-oN9ive//QSBkf19rfDv45M7eZPi0eEXylht2OLEXicu5b4KoQ1OzXIw+xDSGWxSxe1JmepRR/ZH283vsu518/Q==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.10", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.10.tgz", + "integrity": "sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "devOptional": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vitejs/plugin-react-swc": { + "version": "3.11.0", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-react-swc/-/plugin-react-swc-3.11.0.tgz", + "integrity": "sha512-YTJCGFdNMHCMfjODYtxRNVAYmTWQ1Lb8PulP/2/f/oEEtglw8oKxKIZmmRkyXrVrHfsKOaVkAc3NT9/dMutO5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "1.0.0-beta.27", + "@swc/core": "^1.12.11" + }, + "peerDependencies": { + "vite": "^4 || ^5 || ^6 || ^7" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/agentkeepalive": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", + "license": "MIT", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmmirror.com/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmmirror.com/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cmdk": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/cmdk/-/cmdk-1.1.1.tgz", + "integrity": "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-id": "^1.1.0", + "@radix-ui/react-primitive": "^2.0.2" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "react-dom": "^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/d3-format/-/d3-format-3.1.2.tgz", + "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/embla-carousel": { + "version": "8.6.0", + "resolved": "https://registry.npmmirror.com/embla-carousel/-/embla-carousel-8.6.0.tgz", + "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", + "license": "MIT" + }, + "node_modules/embla-carousel-react": { + "version": "8.6.0", + "resolved": "https://registry.npmmirror.com/embla-carousel-react/-/embla-carousel-react-8.6.0.tgz", + "integrity": "sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==", + "license": "MIT", + "dependencies": { + "embla-carousel": "8.6.0", + "embla-carousel-reactive-utils": "8.6.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/embla-carousel-reactive-utils": { + "version": "8.6.0", + "resolved": "https://registry.npmmirror.com/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.6.0.tgz", + "integrity": "sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==", + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/fast-equals": { + "version": "5.4.0", + "resolved": "https://registry.npmmirror.com/fast-equals/-/fast-equals-5.4.0.tgz", + "integrity": "sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmmirror.com/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", + "license": "MIT" + }, + "node_modules/formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", + "license": "MIT", + "dependencies": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + }, + "engines": { + "node": ">= 12.20" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hono": { + "version": "4.11.7", + "resolved": "https://registry.npmmirror.com/hono/-/hono-4.11.7.tgz", + "integrity": "sha512-l7qMiNee7t82bH3SeyUCt9UF15EVmaBvsppY2zQtrbIhl/yzBTny+YUxsVjSjQ6gaqaeVtZmGocom8TzBlA4Yw==", + "license": "MIT", + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iceberg-js": { + "version": "0.8.1", + "resolved": "https://registry.npmmirror.com/iceberg-js/-/iceberg-js-0.8.1.tgz", + "integrity": "sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==", + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/input-otp": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/input-otp/-/input-otp-1.4.2.tgz", + "integrity": "sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/jsbarcode": { + "version": "3.12.3", + "resolved": "https://registry.npmjs.org/jsbarcode/-/jsbarcode-3.12.3.tgz", + "integrity": "sha512-CuHU9hC6dPsHF5oVFMo8NW76uQVjH4L22CsP4hW+dNnGywJHC/B0ThA1CTDVLnxKLrrpYdicBLnd2xsgTfRnvg==", + "license": "MIT" + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lucide-react": { + "version": "0.487.0", + "resolved": "https://registry.npmmirror.com/lucide-react/-/lucide-react-0.487.0.tgz", + "integrity": "sha512-aKqhOQ+YmFnwq8dWgGjOuLc8V1R9/c/yOd+zDY4+ohsR2Jo05lSGc3WsstYPIzcTpeosN7LoCkLReUUITvaIvw==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/next-themes": { + "version": "0.4.6", + "resolved": "https://registry.npmmirror.com/next-themes/-/next-themes-0.4.6.tgz", + "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/openai": { + "version": "4.104.0", + "resolved": "https://registry.npmmirror.com/openai/-/openai-4.104.0.tgz", + "integrity": "sha512-p99EFNsA/yX6UhVO93f5kJsDRLAg+CTA2RBqdHK4RtK8u5IJw32Hyb2dTGKbnnFmnuoBv5r7Z2CURI9sGZpSuA==", + "license": "Apache-2.0", + "dependencies": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7" + }, + "bin": { + "openai": "bin/cli" + }, + "peerDependencies": { + "ws": "^8.18.0", + "zod": "^3.23.8" + }, + "peerDependenciesMeta": { + "ws": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/openai/node_modules/@types/node": { + "version": "18.19.130", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.19.130.tgz", + "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==", + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/openai/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmmirror.com/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/qrcode.react": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-4.2.0.tgz", + "integrity": "sha512-QpgqWi8rD9DsS9EP3z7BT+5lY5SFhsqGjpgW5DY/i3mK4M9DTBNz3ErMi8BWYEfI3L0d8GIbGmcdFAS1uIRGjA==", + "license": "ISC", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmmirror.com/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-day-picker": { + "version": "8.10.1", + "resolved": "https://registry.npmmirror.com/react-day-picker/-/react-day-picker-8.10.1.tgz", + "integrity": "sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA==", + "license": "MIT", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/gpbl" + }, + "peerDependencies": { + "date-fns": "^2.28.0 || ^3.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmmirror.com/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-hook-form": { + "version": "7.71.1", + "resolved": "https://registry.npmmirror.com/react-hook-form/-/react-hook-form-7.71.1.tgz", + "integrity": "sha512-9SUJKCGKo8HUSsCO+y0CtqkqI5nNuaDqTxyqPsZPqIwudpj4rCrAz/jZV+jn57bx5gtZKOh3neQu94DXMc+w5w==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmmirror.com/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/react-remove-scroll": { + "version": "2.7.2", + "resolved": "https://registry.npmmirror.com/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", + "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-resizable-panels": { + "version": "2.1.9", + "resolved": "https://registry.npmmirror.com/react-resizable-panels/-/react-resizable-panels-2.1.9.tgz", + "integrity": "sha512-z77+X08YDIrgAes4jl8xhnUu1LNIRp4+E7cv4xHmLOxxUPO/ML7PSrE813b90vj7xvQ1lcf7g2uA9GeMZonjhQ==", + "license": "MIT", + "peerDependencies": { + "react": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/react-smooth": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/react-smooth/-/react-smooth-4.0.4.tgz", + "integrity": "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==", + "license": "MIT", + "dependencies": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmmirror.com/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/recharts": { + "version": "2.15.4", + "resolved": "https://registry.npmmirror.com/recharts/-/recharts-2.15.4.tgz", + "integrity": "sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==", + "license": "MIT", + "dependencies": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^18.3.1", + "react-smooth": "^4.0.4", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmmirror.com/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "license": "MIT", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, + "node_modules/rollup": { + "version": "4.57.0", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.57.0.tgz", + "integrity": "sha512-e5lPJi/aui4TO1LpAXIRLySmwXSE8k3b9zoGfd42p67wzxog4WHjiZF3M2uheQih4DGyc25QEV4yRBbpueNiUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.57.0", + "@rollup/rollup-android-arm64": "4.57.0", + "@rollup/rollup-darwin-arm64": "4.57.0", + "@rollup/rollup-darwin-x64": "4.57.0", + "@rollup/rollup-freebsd-arm64": "4.57.0", + "@rollup/rollup-freebsd-x64": "4.57.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.57.0", + "@rollup/rollup-linux-arm-musleabihf": "4.57.0", + "@rollup/rollup-linux-arm64-gnu": "4.57.0", + "@rollup/rollup-linux-arm64-musl": "4.57.0", + "@rollup/rollup-linux-loong64-gnu": "4.57.0", + "@rollup/rollup-linux-loong64-musl": "4.57.0", + "@rollup/rollup-linux-ppc64-gnu": "4.57.0", + "@rollup/rollup-linux-ppc64-musl": "4.57.0", + "@rollup/rollup-linux-riscv64-gnu": "4.57.0", + "@rollup/rollup-linux-riscv64-musl": "4.57.0", + "@rollup/rollup-linux-s390x-gnu": "4.57.0", + "@rollup/rollup-linux-x64-gnu": "4.57.0", + "@rollup/rollup-linux-x64-musl": "4.57.0", + "@rollup/rollup-openbsd-x64": "4.57.0", + "@rollup/rollup-openharmony-arm64": "4.57.0", + "@rollup/rollup-win32-arm64-msvc": "4.57.0", + "@rollup/rollup-win32-ia32-msvc": "4.57.0", + "@rollup/rollup-win32-x64-gnu": "4.57.0", + "@rollup/rollup-win32-x64-msvc": "4.57.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmmirror.com/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/sonner": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/sonner/-/sonner-2.0.7.tgz", + "integrity": "sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==", + "license": "MIT", + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tailwind-merge": { + "version": "3.4.0", + "resolved": "https://registry.npmmirror.com/tailwind-merge/-/tailwind-merge-3.4.0.tgz", + "integrity": "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/vaul": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/vaul/-/vaul-1.1.2.tgz", + "integrity": "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-dialog": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmmirror.com/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmmirror.com/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmmirror.com/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + } + } +} diff --git a/泰额版/Food Labeling Management Platform/package.json b/泰额版/Food Labeling Management Platform/package.json new file mode 100755 index 0000000..889788c --- /dev/null +++ b/泰额版/Food Labeling Management Platform/package.json @@ -0,0 +1,68 @@ +{ + "name": "Food Labeling Management Platform", + "version": "0.1.0", + "private": true, + "dependencies": { + "@jsr/supabase__supabase-js": "^2.49.8", + "@radix-ui/react-accordion": "^1.2.3", + "@radix-ui/react-alert-dialog": "^1.1.6", + "@radix-ui/react-aspect-ratio": "^1.1.2", + "@radix-ui/react-avatar": "^1.1.3", + "@radix-ui/react-checkbox": "^1.1.4", + "@radix-ui/react-collapsible": "^1.1.3", + "@radix-ui/react-context-menu": "^2.2.6", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-dropdown-menu": "^2.1.6", + "@radix-ui/react-hover-card": "^1.1.6", + "@radix-ui/react-label": "^2.1.2", + "@radix-ui/react-menubar": "^1.1.6", + "@radix-ui/react-navigation-menu": "^1.2.5", + "@radix-ui/react-popover": "^1.1.6", + "@radix-ui/react-progress": "^1.1.2", + "@radix-ui/react-radio-group": "^1.2.3", + "@radix-ui/react-scroll-area": "^1.2.3", + "@radix-ui/react-select": "^2.1.6", + "@radix-ui/react-separator": "^1.1.2", + "@radix-ui/react-slider": "^1.2.3", + "@radix-ui/react-slot": "^1.1.2", + "@radix-ui/react-switch": "^1.1.3", + "@radix-ui/react-tabs": "^1.1.3", + "@radix-ui/react-toggle": "^1.1.2", + "@radix-ui/react-toggle-group": "^1.1.2", + "@radix-ui/react-tooltip": "^1.1.8", + "@supabase/supabase-js": "*", + "class-variance-authority": "^0.7.1", + "clsx": "*", + "cmdk": "^1.1.1", + "embla-carousel-react": "^8.6.0", + "hono": "*", + "input-otp": "^1.4.2", + "jsbarcode": "^3.12.3", + "lucide-react": "^0.487.0", + "next-themes": "^0.4.6", + "qrcode.react": "^4.2.0", + "react": "^18.3.1", + "react-day-picker": "^8.10.1", + "react-dom": "^18.3.1", + "react-hook-form": "^7.55.0", + "react-resizable-panels": "^2.1.7", + "recharts": "^2.15.2", + "sonner": "^2.0.3", + "tailwind-merge": "*", + "vaul": "^1.1.2" + }, + "devDependencies": { + "@types/node": "^20.10.0", + "@types/react": "^19.2.10", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react-swc": "^3.10.2", + "vite": "6.3.5" + }, + "scripts": { + "dev": "vite", + "build": "vite build" + }, + "optionalDependencies": { + "@rollup/rollup-darwin-arm64": "^4.57.0" + } +} diff --git a/泰额版/Food Labeling Management Platform/src/App.tsx b/泰额版/Food Labeling Management Platform/src/App.tsx new file mode 100755 index 0000000..400675a --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/App.tsx @@ -0,0 +1,63 @@ +import { useState } from 'react'; +import { Layout } from './components/layout/Layout'; +import { PlaceholderView } from './components/PlaceholderView'; + +import { LabelsView } from './components/labels/LabelsView'; +import { TrainingView } from './components/training/TrainingView'; +import { AlertsView } from './components/alerts/AlertsView'; +import { ProductsView } from './components/products/ProductsView'; +import { PeopleView } from './components/people/PeopleView'; +import { ReportsView } from './components/reports/ReportsView'; +import { LocationsView } from './components/locations/LocationsView'; +import { DevicesView } from './components/devices/DevicesView'; +import { InvoicesView } from './components/invoices/InvoicesView'; +import { QRCodesView } from './components/qrcodes/QRCodesView'; +import { Dashboard } from './components/dashboard/Dashboard'; + +const blankViews = ['Tasks', 'Sensors', 'Food Waste', 'E-Label', 'API']; + +export default function App() { + const [currentView, setCurrentView] = useState('Dashboard'); + + const renderView = () => { + if (blankViews.includes(currentView)) { + return
; + } + switch (currentView) { + case 'Dashboard': + return ; + case 'Training': + return ; + case 'Alerts': + return ; + case 'Menu Manager': + return ; + case 'Account Management': + return ; + case 'Reports': + return ; + case 'Location Manager': + return ; + case 'Devices': + return ; + case 'Invoices': + return ; + case 'QR Codes': + return ; + case 'Labels': + case 'Label Categories': + case 'Label Types': + case 'Label Templates': + case 'Multiple Options': + return ; + default: + return ; + } + }; + + return ( + + {renderView()} + + ); +} diff --git a/泰额版/Food Labeling Management Platform/src/Attributions.md b/泰额版/Food Labeling Management Platform/src/Attributions.md new file mode 100755 index 0000000..9b7cd4e --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/Attributions.md @@ -0,0 +1,3 @@ +This Figma Make file includes components from [shadcn/ui](https://ui.shadcn.com/) used under [MIT license](https://github.com/shadcn-ui/ui/blob/main/LICENSE.md). + +This Figma Make file includes photos from [Unsplash](https://unsplash.com) used under [license](https://unsplash.com/license). \ No newline at end of file diff --git a/泰额版/Food Labeling Management Platform/src/assets/773f0c39e1986271e9144596caac519f934a6ae6.png b/泰额版/Food Labeling Management Platform/src/assets/773f0c39e1986271e9144596caac519f934a6ae6.png new file mode 100644 index 0000000..d7942ea Binary files /dev/null and b/泰额版/Food Labeling Management Platform/src/assets/773f0c39e1986271e9144596caac519f934a6ae6.png differ diff --git a/泰额版/Food Labeling Management Platform/src/assets/FreightSans Bold.ttf b/泰额版/Food Labeling Management Platform/src/assets/FreightSans Bold.ttf new file mode 100755 index 0000000..3fa144b Binary files /dev/null and b/泰额版/Food Labeling Management Platform/src/assets/FreightSans Bold.ttf differ diff --git a/泰额版/Food Labeling Management Platform/src/components/PlaceholderView.tsx b/泰额版/Food Labeling Management Platform/src/components/PlaceholderView.tsx new file mode 100755 index 0000000..599d46c --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/PlaceholderView.tsx @@ -0,0 +1,29 @@ +import React from 'react'; +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from './ui/card'; + +export function PlaceholderView({ title }: { title: string }) { + return ( +
+
+ {[1, 2, 3, 4].map((i) => ( + + + Metric {i} + + +
000
+

+0.0% from last month

+
+
+ ))} +
+ + +
+

{title} Module

+

This module is currently under development.

+
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/alerts/AlertsView.tsx b/泰额版/Food Labeling Management Platform/src/components/alerts/AlertsView.tsx new file mode 100755 index 0000000..a3df3f5 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/alerts/AlertsView.tsx @@ -0,0 +1,290 @@ +import React, { useState } from 'react'; +import { + ChevronLeft, + Menu, + User, + Plus, + Grid, + List, + ArrowDownAZ, + Pin, + X, + Coffee, + Tablet, + Trash2, + Utensils, + Syringe, + Timer +} from 'lucide-react'; +import { Button } from "../ui/button"; +import { cn } from "../ui/utils"; + +// Mock Data for Timers +const timersData = [ + { + id: 1, + title: 'Coffee - 2 hrs', + subtitle: '1 min - Completes at 12:05 PM', + totalTime: 7200, // seconds + remainingTime: 0, + status: 'expired', + icon: Coffee, + }, + { + id: 2, + title: 'Clean Tablet', + subtitle: '1 hrs - Completes at 12:37 PM', + totalTime: 3600, + remainingTime: 237, // 3:57 + status: 'running', + icon: Tablet, + }, + { + id: 3, + title: 'Replace Sanitizer Towels', + subtitle: '1 hrs - Completes at 12:37 PM', + totalTime: 3600, + remainingTime: 238, // 3:58 + status: 'running', + icon: Trash2, + }, + { + id: 4, + title: 'Take Out Trash', + subtitle: '1 hrs - Completes at 01:03 PM', + totalTime: 3600, + remainingTime: 58, // 00:58 + status: 'running', + icon: Trash2, + }, + { + id: 5, + title: 'Change Utensils', + subtitle: '1 hrs - Completes at 01:03 PM', + totalTime: 3600, + remainingTime: 58, + status: 'running', + icon: Utensils, + }, + { + id: 6, + title: 'Sanitize Surfaces', + subtitle: '1 hrs - Completes at 02:00 PM', + totalTime: 3600, + remainingTime: 2157, + status: 'running', + icon: Syringe, + }, + { + id: 7, + title: 'Check Temperatures', + subtitle: '1 hrs - Completes at 02:00 PM', + totalTime: 3600, + remainingTime: 2158, + status: 'running', + icon: Syringe, + }, + { + id: 8, + title: 'Ranch 4 hrs', + subtitle: '4 hrs - Completes at 04:04 PM', + totalTime: 14400, + remainingTime: 2158, + status: 'running', + icon: Syringe, + }, +]; + +function TimerCard({ timer }: { timer: typeof timersData[0] }) { + // Calculate progress percentage for circle + const progress = ((timer.totalTime - timer.remainingTime) / timer.totalTime) * 100; + const isExpired = timer.remainingTime === 0; + + // Format remaining time MM:SS or similar + const formatTime = (seconds: number) => { + if (seconds <= 0) return "0s"; + const m = Math.floor(seconds / 60); + const s = seconds % 60; + return `${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`; + }; + + return ( +
+
+

{timer.title}

+

{timer.subtitle}

+
+ + {/* Timer Circle */} +
+ {/* Background Circle */} + + + {/* Progress Circle */} + + +
+ + {isExpired ? "0s" : formatTime(timer.remainingTime)} + + + Remaining + +
+
+ + {/* Bottom Icons/Controls */} +
+ + +
+
+ +
+
+ +
+ EDIT +
+
+ + {/* Floating X Button */} + +
+ ); +} + +export function AlertsView() { + const [showModal, setShowModal] = useState(true); + + return ( +
+ {/* Top Header */} +
+
+ + +
+ +
+
+
+ +
+

Timers

+
+
+ 86016 +
+
+
+ +
+ + +
+
+ + {/* Sub Header */} +
+
{/* Spacer */} +
Today, December 15
+
+
+ + +
+ +
+
+ + {/* Grid Content */} +
+
+ {timersData.map(timer => ( + + ))} +
+
+ + {/* Alert Modal Overlay */} + {showModal && ( +
+
+
+

Coffee - 2 hrs

+ +
+

Timer expired at 12:05 PM

+

Please discard the coffee

+
+ + {/* TACT Image Tag Mockup */} +
+ + TACT_Img_Timer-Notification@2x + +
+ +
+ + + +
+
+
+
+ )} +
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/dashboard/AlertsWidget.tsx b/泰额版/Food Labeling Management Platform/src/components/dashboard/AlertsWidget.tsx new file mode 100755 index 0000000..187ff05 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/dashboard/AlertsWidget.tsx @@ -0,0 +1,39 @@ +import React from 'react'; +import { Card, CardContent, CardHeader, CardTitle } from '../ui/card'; +import { AlertTriangle, Bell } from 'lucide-react'; +import { Button } from '../ui/button'; + +export function AlertsWidget() { + return ( + + +
+ + Alerts +
+ +
+ +
Recent notifications and warnings
+
+
+
+
+
Critical temperature alert
+
Freezer #3 exceeded limit
+
+
+
+
+
+
Stock level warning
+
Ingredient A low inventory
+
+
+
+ + + ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/dashboard/Dashboard.tsx b/泰额版/Food Labeling Management Platform/src/components/dashboard/Dashboard.tsx new file mode 100755 index 0000000..5533d44 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/dashboard/Dashboard.tsx @@ -0,0 +1,351 @@ +import React from 'react'; +import { + Printer, + Tag, + AlertTriangle, + Clock, + TrendingUp, + Plus, + FileText, + Users, + UserCircle, + Package, + MapPin, + ArrowUpRight, + ArrowDownRight +} from 'lucide-react'; +import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "../ui/card"; +import { Button } from "../ui/button"; +import { Badge } from "../ui/badge"; +import { + BarChart, + Bar, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + ResponsiveContainer, + LineChart, + Line, + PieChart, + Pie, + Cell +} from 'recharts'; +import { ScrollArea } from "../ui/scroll-area"; + +// --- Mock Data --- + +const WEEKLY_PRINT_DATA = [ + { day: 'Mon', labels: 145 }, + { day: 'Tue', labels: 230 }, + { day: 'Wed', labels: 185 }, + { day: 'Thu', labels: 278 }, + { day: 'Fri', labels: 190 }, + { day: 'Sat', labels: 120 }, + { day: 'Sun', labels: 85 }, +]; + +const CATEGORY_DATA = [ + { name: 'Prep', value: 450, color: '#3b82f6' }, + { name: 'Grab & Go', value: 320, color: '#10b981' }, + { name: 'Catering', value: 150, color: '#f59e0b' }, + { name: 'Delivery', value: 80, color: '#6366f1' }, +]; + +const RECENT_LABELS = [ + { id: '1-251201', product: 'Chicken Breast', template: '2" Prep', user: 'Alice J.', time: '10 mins ago', status: 'active' }, + { id: '1-251202', product: 'Caesar Salad', template: '3" Grab\'n\'Go', user: 'Bob S.', time: '25 mins ago', status: 'active' }, + { id: '1-251203', product: 'Tomato Soup', template: '2" Prep', user: 'Charlie B.', time: '40 mins ago', status: 'expired' }, + { id: '1-251204', product: 'Roast Beef', template: '2" x 2" Prep', user: 'Alice J.', time: '1 hour ago', status: 'active' }, + { id: '1-251205', product: 'Iced Tea', template: 'Beverage Label', user: 'David W.', time: '1 hour ago', status: 'active' }, +]; + +const ACTIVE_TIMERS = [ + { title: 'Coffee Station', time: '12:45', status: 'running' }, + { title: 'Sanitizer Bucket', time: '04:20', status: 'warning' }, + { title: 'Hot Hold Unit 1', time: '00:00', status: 'expired' }, +]; + +export function Dashboard() { + return ( +
+ {/* Top Hierarchy / Welcome Bar */} +
+
+

Dashboard Overview

+

Welcome back, Admin. Here's what's happening today.

+
+
+ + +
+
+ + {/* KPI Cards */} +
+ + + + + + +
+ + {/* Main Content Grid */} +
+ + {/* Left Column (Charts) */} +
+ {/* Print Volume Chart */} + + + + + Weekly Print Volume + + Number of labels printed over the last 7 days + + +
+ + + + + + + + + +
+
+
+ + {/* Recent Labels Table */} + + +
+ + + Recent Labels + + Latest printed labels across all locations +
+ +
+ +
+ {RECENT_LABELS.map((label) => ( +
+
+
+ {label.template.substring(0, 2)} +
+
+

{label.product}

+

{label.id} • {label.user}

+
+
+
+ {label.time} + + {label.status} + +
+
+ ))} +
+
+
+
+ + {/* Right Column (Widgets) */} +
+ + {/* Category Distribution */} + + + + + By Category + + + +
+ + + + {CATEGORY_DATA.map((entry, index) => ( + + ))} + + + + +
+ 1000 + Total +
+
+
+ {CATEGORY_DATA.map((item) => ( +
+
+
+ {item.name} +
+ {item.value} +
+ ))} +
+ + + + {/* Active Timers Widget */} + + + + + Active Timers + + + +
+ {ACTIVE_TIMERS.map((timer, idx) => ( +
+ {timer.title} +
+ + {timer.time} + + {timer.status === 'running' &&
} + {timer.status === 'warning' &&
} + {timer.status === 'expired' &&
} +
+
+ ))} +
+ + + + +
+
+
+ ); +} + +// --- Sub Components --- + +function KPICard({ title, value, trend, trendUp, icon: Icon, color, bgColor }: any) { + return ( + + +
+
+

{title}

+

{value}

+
+
+ +
+
+
+ {trendUp ? ( + + ) : ( + + )} + + {trend} + + vs last period +
+
+
+ ); +} \ No newline at end of file diff --git a/泰额版/Food Labeling Management Platform/src/components/dashboard/FoodWasteChart.tsx b/泰额版/Food Labeling Management Platform/src/components/dashboard/FoodWasteChart.tsx new file mode 100755 index 0000000..2c0ab48 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/dashboard/FoodWasteChart.tsx @@ -0,0 +1,54 @@ +import React from 'react'; +import { PieChart, Pie, Cell, ResponsiveContainer, Tooltip } from 'recharts'; +import { Card, CardContent, CardHeader, CardTitle } from '../ui/card'; +import { Apple } from 'lucide-react'; + +const data = [ + { name: 'Expired', value: 30 }, + { name: 'Preparation', value: 45 }, + { name: 'Packaging', value: 25 }, +]; + +const COLORS = ['#ef4444', '#f97316', '#eab308']; + +export function FoodWasteChart() { + return ( + + +
+ + Food Waste +
+
+ +
Reduction metrics and analysis
+
+ + + + {data.map((entry, index) => ( + + ))} + + + + +
+
Expired
+
Prep
+
Pack
+
+
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/dashboard/InfoChart.tsx b/泰额版/Food Labeling Management Platform/src/components/dashboard/InfoChart.tsx new file mode 100755 index 0000000..50b8b32 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/dashboard/InfoChart.tsx @@ -0,0 +1,58 @@ +import React from 'react'; +import { Bar, BarChart, ResponsiveContainer, Tooltip, XAxis } from 'recharts'; +import { Card, CardContent, CardHeader, CardTitle } from '../ui/card'; +import { Info, Database } from 'lucide-react'; +import { Button } from '../ui/button'; + +const data = [ + { name: 'Mon', value: 30 }, + { name: 'Tue', value: 45 }, + { name: 'Wed', value: 15 }, + { name: 'Thu', value: 25 }, + { name: 'Fri', value: 10 }, + { name: 'Sat', value: 35 }, + { name: 'Sun', value: 20 }, +]; + +export function InfoChart() { + return ( + + +
+ + Information +
+ +
+ +
System data overview and metrics
+
+ + + + + + + +
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/dashboard/RightPanel.tsx b/泰额版/Food Labeling Management Platform/src/components/dashboard/RightPanel.tsx new file mode 100755 index 0000000..5f3506b --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/dashboard/RightPanel.tsx @@ -0,0 +1,91 @@ +import React from 'react'; +import { Calendar as CalendarIcon, Clock } from 'lucide-react'; +import { Progress } from '../ui/progress'; + +export function RightPanel() { + return ( +
+ {/* System Status */} +
+

System Status

+
+
+
+ Operations Status + ● Normal +
+
+
+
+ Storage Capacity + 73% +
+ +
+
+
+ System Load + 42% +
+ +
+
+
+ + {/* Upcoming Events */} +
+
+

Upcoming Events

+ +
+
+
+
+ +
+
+
Quarterly Review
+
Dec 5, 2025 | 10:00 AM
+
+
+
+
+ +
+
+
Supplier Meeting
+
Nov 30, 2025 | 2:30 PM
+
+
+
+
+ + {/* Recent Activities */} +
+

Recent Activities

+
+ {/* Vertical Line */} +
+ +
+
+
David Wilson updated sensor configuration
+
45 minutes ago
+
+ +
+
+
System generated monthly reports
+
2 hours ago
+
+ +
+
+
Sarah Chen added new products
+
3 hours ago
+
+
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/dashboard/SensorsNetwork.tsx b/泰额版/Food Labeling Management Platform/src/components/dashboard/SensorsNetwork.tsx new file mode 100755 index 0000000..da335ee --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/dashboard/SensorsNetwork.tsx @@ -0,0 +1,42 @@ +import React from 'react'; +import { Card, CardContent, CardHeader, CardTitle } from '../ui/card'; +import { Button } from '../ui/button'; +import { Plug, Thermometer, Weight, Activity, Database } from 'lucide-react'; +import { cn } from '../ui/utils'; + +export function SensorsNetwork() { + const sensors = [ + { name: 'Temp', icon: Thermometer, status: '97% online', color: 'bg-green-100 text-green-600' }, + { name: 'Weight', icon: Weight, status: '92% online', color: 'bg-green-100 text-green-600' }, + { name: 'Motion', icon: Activity, status: '85% online', color: 'bg-yellow-100 text-yellow-600' }, + { name: 'Quality', icon: Database, status: '63% online', color: 'bg-red-100 text-red-600' }, + ]; + + return ( + + +
+ + Sensors Network +
+ +
+ +
Device status monitoring
+
+ {sensors.map((sensor, index) => ( +
+
+ +
+
{sensor.name}
+
{sensor.status}
+
+ ))} +
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/dashboard/TasksWidget.tsx b/泰额版/Food Labeling Management Platform/src/components/dashboard/TasksWidget.tsx new file mode 100755 index 0000000..15c0c81 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/dashboard/TasksWidget.tsx @@ -0,0 +1,43 @@ +import React from 'react'; +import { Card, CardContent, CardHeader, CardTitle } from '../ui/card'; +import { CheckCircle2 } from 'lucide-react'; + +export function TasksWidget() { + return ( + + +
+ + Tasks +
+ 6 pending +
+ +
Pending and assigned tasks
+
+
+
+
Inventory check
+
Main warehouse
+
+ Today +
+
+
+
Supplier review
+
Quality assessment
+
+ Tomorrow +
+
+
+
Sensor calibration
+
Production line #2
+
+ Next week +
+
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/devices/DevicesView.tsx b/泰额版/Food Labeling Management Platform/src/components/devices/DevicesView.tsx new file mode 100644 index 0000000..7cd5b3a --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/devices/DevicesView.tsx @@ -0,0 +1,392 @@ +import React, { useState } from 'react'; +import { Search, Plus, Link2, History, Upload, Download, Edit } from 'lucide-react'; +import { Button } from '../ui/button'; +import { Input } from '../ui/input'; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from '../ui/table'; +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, +} from '../ui/dialog'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '../ui/select'; +import { Label } from '../ui/label'; +import { Switch } from '../ui/switch'; + +// --- Types & Rules --- +// 1. 新增设备必须与 Location 绑定 +// 2. Sensor(温度湿度传感器)可批量绑定/导入/导出/编辑 +// 3. E-label(电子标签)可批量绑定/导入/导出/编辑 +// 4. 后台可查看所有设备运行状况;打印机可查看剩余打印米数及充值记录 +// 5. Printer、Scale 可批量导入/导出/编辑 +// 6. 已创建捆绑的设备可编辑为 Active/Inactive + +export type DeviceCategory = 'Printer' | 'Sensor' | 'Scale' | 'E-label'; + +export interface RechargeRecord { + id: string; + date: string; + amount: string; // e.g. "100 meters" + note?: string; +} + +export interface Device { + id: string; + locationId: string; + category: DeviceCategory; + device: string; + deviceId: string; + balance: string; // 打印机剩余米数,其他类型为空 + status: 'Online' | 'Offline'; + active: boolean; // Active / Inactive + rechargeRecords?: RechargeRecord[]; // 打印机充值记录 +} + +const MOCK_LOCATIONS = [ + { id: '12345', name: 'Location 12345 - Downtown' }, + { id: '67890', name: 'Location 67890 - Uptown' }, +]; + +const CATEGORY_LABELS: Record = { + Printer: 'Printer', + Sensor: 'Sensor (Temp. & Humidity)', + Scale: 'Scale', + 'E-label': 'E-label (Electronic Label)', +}; + +const INITIAL_DEVICES: Device[] = [ + { id: '1', locationId: '12345', category: 'Printer', device: 'printer 1', deviceId: '123456789', balance: '51 meters', status: 'Online', active: true, rechargeRecords: [{ id: 'r1', date: '2025-01-15', amount: '200 meters', note: 'Initial' }, { id: 'r2', date: '2025-02-01', amount: '100 meters' }] }, + { id: '2', locationId: '12345', category: 'Printer', device: 'printer2', deviceId: '113456789', balance: '155 meters', status: 'Online', active: true, rechargeRecords: [{ id: 'r3', date: '2025-01-20', amount: '300 meters' }] }, + { id: '3', locationId: '12345', category: 'Sensor', device: 'sensor 1', deviceId: '103456789', balance: '', status: 'Online', active: true }, + { id: '4', locationId: '12345', category: 'Sensor', device: 'sensor 2', deviceId: '093456789', balance: '', status: 'Online', active: true }, + { id: '5', locationId: '12345', category: 'Sensor', device: 'sensor 3', deviceId: '083456789', balance: '', status: 'Online', active: false }, + { id: '6', locationId: '12345', category: 'Scale', device: 'Scale 1', deviceId: '073456789', balance: '', status: 'Online', active: true }, + { id: '7', locationId: '12345', category: 'E-label', device: 'e-label 1', deviceId: '063456789', balance: '', status: 'Online', active: true }, + { id: '8', locationId: '12345', category: 'E-label', device: 'e-label 2', deviceId: '053456789', balance: '', status: 'Online', active: true }, + { id: '9', locationId: '12345', category: 'E-label', device: 'e-label 3', deviceId: '043456789', balance: '', status: 'Offline', active: true }, + { id: '10', locationId: '12345', category: 'E-label', device: 'e-label 4', deviceId: '033456789', balance: '', status: 'Offline', active: false }, + { id: '11', locationId: '12345', category: 'E-label', device: 'e-label 5', deviceId: '023456789', balance: '', status: 'Online', active: true }, + { id: '12', locationId: '12345', category: 'E-label', device: 'e-label 6', deviceId: '013456789', balance: '', status: 'Online', active: true }, + { id: '13', locationId: '12345', category: 'E-label', device: 'e-label 7', deviceId: '003456789', balance: '', status: 'Online', active: true }, +]; + +export function DevicesView() { + const [search, setSearch] = useState(''); + const [devices, setDevices] = useState(INITIAL_DEVICES); + const [filterCategory, setFilterCategory] = useState('all'); + const [newDialogOpen, setNewDialogOpen] = useState(false); + const [rechargeDialogDevice, setRechargeDialogDevice] = useState(null); + + // 新增设备:必须与 Location 绑定 + const [newLocationId, setNewLocationId] = useState(''); + const [newCategory, setNewCategory] = useState('Printer'); + const [newDeviceName, setNewDeviceName] = useState(''); + const [newDeviceId, setNewDeviceId] = useState(''); + + const filteredDevices = devices.filter((d) => { + const matchSearch = !search || d.device.toLowerCase().includes(search.toLowerCase()) || d.deviceId.includes(search); + const matchCategory = filterCategory === 'all' || d.category === filterCategory; + return matchSearch && matchCategory; + }); + + const handleAddDevice = () => { + if (!newLocationId.trim()) return; // 规则1:必须选择 Location + const loc = MOCK_LOCATIONS.find((l) => l.id === newLocationId); + setDevices((prev) => [ + ...prev, + { + id: String(prev.length + 1), + locationId: newLocationId, + category: newCategory, + device: newDeviceName || `${newCategory} ${prev.filter((d) => d.category === newCategory).length + 1}`, + deviceId: newDeviceId || String(100000000 + prev.length), + balance: newCategory === 'Printer' ? '0 meters' : '', + status: 'Online', + active: true, + rechargeRecords: newCategory === 'Printer' ? [] : undefined, + }, + ]); + setNewLocationId(''); + setNewCategory('Printer'); + setNewDeviceName(''); + setNewDeviceId(''); + setNewDialogOpen(false); + }; + + const toggleActive = (id: string) => { + setDevices((prev) => prev.map((d) => (d.id === id ? { ...d, active: !d.active } : d))); + }; + + const canBulkBind = filterCategory === 'Sensor' || filterCategory === 'E-label'; + const canBulkImportExportEdit = ['Printer', 'Scale', 'Sensor', 'E-label'].includes(filterCategory) || filterCategory === 'all'; + + return ( +
+ {/* Toolbar:与 Products 一致样式 — Search 在前,Partner/Group/Location/Device Category 下拉,右侧 Bulk 与 New+ */} +
+
+
+ + setSearch(e.target.value)} + className="pl-9 h-9 rounded-lg border border-black bg-white text-black" + /> +
+ + + + +
+ {canBulkBind && ( + + )} + {canBulkImportExportEdit && ( + <> + + + + + )} + +
+
+ + {/* Content Area:与 Products 一致 — 无内边距、bg-gray-50,表格包在白色圆角框内 */} +
+
+ + + + Location ID + Device Category + Device + Device ID + Balance + Recharge + Running Status + Active + + + + {filteredDevices.map((row) => ( + + {row.locationId} + + + {CATEGORY_LABELS[row.category]} + + + + + {row.device} + + + {row.deviceId} + {row.balance || '—'} + + {row.category === 'Printer' ? ( + + ) : ( + '—' + )} + + + + {row.status} + + + +
+ toggleActive(row.id)} + /> + {row.active ? 'Active' : 'Inactive'} +
+
+
+ ))} +
+
+
+
+ + {/* New Device Dialog - 规则1:必须与 Location 绑定 */} + + + + Add New Device + + New devices must be bound to a location. Select a location first, then fill in device details. + + +
+
+ + +
+
+ + +
+
+ + setNewDeviceName(e.target.value)} + /> +
+
+ + setNewDeviceId(e.target.value)} + /> +
+
+ + + + +
+
+ + {/* Printer Recharge Records Dialog - 规则4 */} + !open && setRechargeDialogDevice(null)}> + + + Recharge Records — {rechargeDialogDevice?.device} + + Balance: {rechargeDialogDevice?.balance ?? '—'} + + +
+ {rechargeDialogDevice?.rechargeRecords?.length ? ( + + + + Date + Amount + Note + + + + {rechargeDialogDevice.rechargeRecords.map((r) => ( + + {r.date} + {r.amount} + {r.note ?? '—'} + + ))} + +
+ ) : ( +

No recharge records yet.

+ )} +
+ + + +
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/figma/ImageWithFallback.tsx b/泰额版/Food Labeling Management Platform/src/components/figma/ImageWithFallback.tsx new file mode 100755 index 0000000..0e26139 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/figma/ImageWithFallback.tsx @@ -0,0 +1,27 @@ +import React, { useState } from 'react' + +const ERROR_IMG_SRC = + 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODgiIGhlaWdodD0iODgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBvcGFjaXR5PSIuMyIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIzLjciPjxyZWN0IHg9IjE2IiB5PSIxNiIgd2lkdGg9IjU2IiBoZWlnaHQ9IjU2IiByeD0iNiIvPjxwYXRoIGQ9Im0xNiA1OCAxNi0xOCAzMiAzMiIvPjxjaXJjbGUgY3g9IjUzIiBjeT0iMzUiIHI9IjciLz48L3N2Zz4KCg==' + +export function ImageWithFallback(props: React.ImgHTMLAttributes) { + const [didError, setDidError] = useState(false) + + const handleError = () => { + setDidError(true) + } + + const { src, alt, style, className, ...rest } = props + + return didError ? ( +
+
+ Error loading image +
+
+ ) : ( + {alt} + ) +} diff --git a/泰额版/Food Labeling Management Platform/src/components/invoices/InvoicesView.tsx b/泰额版/Food Labeling Management Platform/src/components/invoices/InvoicesView.tsx new file mode 100644 index 0000000..2cbb877 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/invoices/InvoicesView.tsx @@ -0,0 +1,177 @@ +import React, { useState } from 'react'; +import { Download } from 'lucide-react'; +import { Button } from '../ui/button'; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from '../ui/table'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '../ui/select'; + +// Notes: +// 1. Query purchasing modules under Partner, Group and Location; fees and payment status +// 2. Invoice permission for finance: view and export bills after login +// 3. Report generation: historical bills, unpaid bills, rates, overdue situations + +export type InvoiceStatus = 'Paid' | 'Overdue'; + +export interface InvoiceRow { + id: string; + locationId: string; + subscription: string; + ratePerMonth: string; + discountRate: string; + totalAmount: string; + period: string; + status: InvoiceStatus; + isOverdue?: boolean; // highlight rate and total in red when overdue +} + +const MOCK_INVOICES: InvoiceRow[] = [ + { id: '1', locationId: '12345', subscription: 'Labeling', ratePerMonth: '9.99', discountRate: '1', totalAmount: '$9.99', period: 'October', status: 'Paid' }, + { id: '2', locationId: '12345', subscription: 'Tasks', ratePerMonth: '20', discountRate: '0.5', totalAmount: '10', period: 'October', status: 'Paid' }, + { id: '3', locationId: '12345', subscription: 'Sensor', ratePerMonth: '30', discountRate: '1', totalAmount: '30', period: 'October', status: 'Paid' }, + { id: '4', locationId: '12345', subscription: 'e-label', ratePerMonth: '25', discountRate: '1', totalAmount: '50', period: 'October', status: 'Overdue', isOverdue: true }, + { id: '5', locationId: '12345', subscription: 'Food Waste', ratePerMonth: '35', discountRate: '1', totalAmount: '35', period: 'October', status: 'Paid' }, +]; + +export function InvoicesView() { + const [invoices] = useState(MOCK_INVOICES); + const [periodFilter, setPeriodFilter] = useState('October'); + const [subscriptionFilter, setSubscriptionFilter] = useState('all'); + + const filteredInvoices = invoices.filter((row) => { + const matchPeriod = !periodFilter || row.period === periodFilter; + const matchSub = subscriptionFilter === 'all' || row.subscription === subscriptionFilter; + return matchPeriod && matchSub; + }); + + const handleExportBills = () => { + // Finance personnel: export bills (e.g. CSV or PDF) + const csv = [ + ['Location ID', 'Subscription', 'Rate/month', 'Discount Rate', 'Total Amount', 'Period', 'Status'].join(','), + ...filteredInvoices.map((r) => [r.locationId, r.subscription, r.ratePerMonth, r.discountRate, r.totalAmount, r.period, r.status].join(',')), + ].join('\n'); + const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' }); + const link = document.createElement('a'); + link.href = URL.createObjectURL(blob); + link.download = `invoices-${periodFilter || 'all'}.csv`; + link.click(); + URL.revokeObjectURL(link.href); + }; + + return ( +
+ {/* Toolbar:与 Products/Locations 一致 — 单行、圆角、细边框、bg-gray-50、无标题、框内文字黑色 */} +
+
+ + + + + +
+ +
+
+ + {/* Content Area:与 Products 一致,无内边距、表格包在白色圆角框内 */} +
+
+ + + + Location ID + Subscription + Rate/month + Discount Rate + Total Amount + Period + Status + + + + {filteredInvoices.map((row) => ( + + {row.locationId} + {row.subscription} + + + {row.ratePerMonth} + + + {row.discountRate} + + + {row.totalAmount} + + + {row.period} + + + {row.status} + + + + ))} + +
+
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/labels/LabelBatchesView.tsx b/泰额版/Food Labeling Management Platform/src/components/labels/LabelBatchesView.tsx new file mode 100755 index 0000000..523fb67 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/labels/LabelBatchesView.tsx @@ -0,0 +1,5 @@ +import React from 'react'; + +export function LabelBatchesView() { + return
Label Batches View
; +} diff --git a/泰额版/Food Labeling Management Platform/src/components/labels/LabelCategoriesView.tsx b/泰额版/Food Labeling Management Platform/src/components/labels/LabelCategoriesView.tsx new file mode 100755 index 0000000..4f016e6 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/labels/LabelCategoriesView.tsx @@ -0,0 +1,98 @@ +import React from 'react'; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "../ui/table"; +import { Input } from "../ui/input"; +import { Button } from "../ui/button"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "../ui/select"; +import { Plus } from "lucide-react"; + +export function LabelCategoriesView() { + const categories = [ + { + id: 1, + category: 'Prep', + count: 54, + photo: 'XXX', + lastEdited: '2025.12.03.11:45', + }, + { + id: 2, + category: 'Green', + count: 33, + photo: 'XXX', + lastEdited: '2025.12.03.11:45', + }, + { + id: 3, + category: 'Red', + count: 44, + photo: 'XXX', + lastEdited: '2025.12.03.11:45', + }, + ]; + + return ( +
+ {/* Controls: Search, Location, New Label Category — 单行 + 圆角 + 细边框 + 统一高度 40px,黄色按钮无边框 */} +
+ + + +
+ + {/* Table */} +
+ + + + Label Category + No. of Labels + Category Photo + Last Edited + + + + {categories.map((item) => ( + + {item.category} + {item.count} + {item.photo} + {item.lastEdited} + + ))} + +
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/ElementsPanel.tsx b/泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/ElementsPanel.tsx new file mode 100644 index 0000000..08fb998 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/ElementsPanel.tsx @@ -0,0 +1,117 @@ +import React from 'react'; +import { ScrollArea } from '../../ui/scroll-area'; +import type { ElementType } from '../../../types/labelTemplate'; + +/** Left element library: four categories; input-at-print items can have config for correct display */ +const ELEMENT_CATEGORIES: { + title: string; + subtitle?: string; + items: { label: string; type: ElementType; config?: Record }[]; +}[] = [ + { + title: 'Template Info', + items: [ + { label: 'Text', type: 'TEXT_STATIC' }, + { label: 'QR Code', type: 'QRCODE' }, + { label: 'Barcode', type: 'BARCODE' }, + { label: 'Blank Space', type: 'BLANK' }, + { label: 'Price', type: 'TEXT_PRICE' }, + { label: 'Image', type: 'IMAGE' }, + { label: 'Logo', type: 'IMAGE' }, + ], + }, + { + title: 'Label Info', + items: [ + { label: 'Label Name', type: 'TEXT_PRODUCT' }, + { label: 'Text', type: 'TEXT_STATIC' }, + { label: 'QR Code', type: 'QRCODE' }, + { label: 'Barcode', type: 'BARCODE' }, + { label: 'Nutrition Facts', type: 'NUTRITION' }, + { label: 'Price', type: 'TEXT_PRICE' }, + { label: 'Duration Date', type: 'DATE' }, + { label: 'Duration Time', type: 'TIME' }, + { label: 'Duration', type: 'DURATION' }, + { label: 'Image', type: 'IMAGE' }, + { label: 'Label Type', type: 'TEXT_STATIC' }, + { label: 'How-to', type: 'TEXT_STATIC' }, + { label: 'Expiration Alert', type: 'TEXT_STATIC' }, + ], + }, + { + title: 'Auto-generated', + items: [ + { label: 'Company', type: 'TEXT_STATIC' }, + { label: 'Employee', type: 'TEXT_STATIC' }, + { label: 'Current Date', type: 'DATE' }, + { label: 'Current Time', type: 'TIME' }, + { label: 'Label ID', type: 'TEXT_STATIC' }, + ], + }, + { + title: 'Input at Print', + subtitle: 'Click to add to canvas', + items: [ + { label: 'Text', type: 'TEXT_STATIC', config: { inputType: 'text' } }, + { label: 'Weight', type: 'WEIGHT' }, + { label: 'Number', type: 'TEXT_STATIC', config: { inputType: 'number', text: '0' } }, + { label: 'Date & Time', type: 'DATE', config: { inputType: 'datetime' } }, + { label: 'Multiple Options', type: 'TEXT_STATIC', config: { inputType: 'options' } }, + ], + }, +]; + +interface ElementsPanelProps { + onAddElement: (type: ElementType, configOverride?: Partial>) => void; +} + +const CATEGORY_STYLES = [ + { bg: 'bg-gray-50', border: 'border-gray-200', header: 'bg-gray-100' }, + { bg: 'bg-gray-50/80', border: 'border-gray-200', header: 'bg-gray-100/90' }, + { bg: 'bg-gray-50', border: 'border-gray-200', header: 'bg-gray-100' }, + { bg: 'bg-gray-50/80', border: 'border-gray-200', header: 'bg-gray-100/90' }, +]; + +export function ElementsPanel({ onAddElement }: ElementsPanelProps) { + return ( +
+
+ Elements +
+ +
+ {ELEMENT_CATEGORIES.map((cat, idx) => { + const style = CATEGORY_STYLES[idx % CATEGORY_STYLES.length]; + return ( +
+
+ {cat.title} +
+ {cat.subtitle && ( +
+ {cat.subtitle} +
+ )} +
+ {cat.items.map((item, i) => ( + + ))} +
+
+ ); + })} +
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/LabelCanvas.tsx b/泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/LabelCanvas.tsx new file mode 100644 index 0000000..43611b9 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/LabelCanvas.tsx @@ -0,0 +1,1246 @@ +import React, { useCallback, useRef, useEffect } from 'react'; +import JsBarcode from 'jsbarcode'; +import { QRCodeSVG } from 'qrcode.react'; +import type { LabelTemplate, LabelElement, ElementType } from '../../../types/labelTemplate'; +import { PRESET_LABEL_SIZES } from '../../../types/labelTemplate'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '../../ui/select'; +import { cn } from '../../ui/utils'; + +/** 真实条形码渲染(JsBarcode),支持水平/竖排 */ +function BarcodeBlock({ + data, + width, + height, + showText, + orientation = 'horizontal', +}: { + data: string; + width: number; + height: number; + showText?: boolean; + orientation?: 'horizontal' | 'vertical'; +}) { + const svgRef = useRef(null); + const isVertical = orientation === 'vertical'; + const barHeight = Math.max(20, (isVertical ? width : height) - (showText ? 14 : 4)); + useEffect(() => { + if (svgRef.current && data) { + try { + JsBarcode(svgRef.current, data, { + format: 'CODE128', + width: 1, + height: barHeight, + displayValue: showText !== false, + margin: 2, + fontOptions: '', + fontSize: 10, + }); + } catch { + // invalid data, ignore + } + } + }, [data, barHeight, showText]); + const svg = ; + if (isVertical) { + return ( +
+
+ {svg} +
+
+ ); + } + return svg; +} + +/** 画布网格步长(px),控件吸附到该步长 */ +const GRID_SIZE = 8; + +/** 将数值对齐到网格 */ +function snapToGrid(value: number): number { + return Math.round(value / GRID_SIZE) * GRID_SIZE; +} + +/** 1cm ≈ 37.8px (96 DPI); 1 inch = 96px */ +function unitToPx(value: number, unit: 'cm' | 'inch'): number { + return unit === 'cm' ? value * 37.8 : value * 96; +} + +/** px 转单位 */ +function pxToUnit(px: number, unit: 'cm' | 'inch'): number { + return unit === 'cm' ? px / 37.8 : px / 96; +} + +const RULER_H = 20; +const RULER_W = 20; + +/** Ruler at scroll container level - uses container dimensions for tick placement */ +function RulerTop({ unit, width }: { unit: 'cm' | 'inch'; width: number }) { + const minorStep = unit === 'cm' ? 0.5 : 0.5; + const majorStep = unit === 'cm' ? 1 : 1; + const widthInUnit = unit === 'cm' ? width / 37.8 : width / 96; + const ticks: { value: number; px: number; isMajor: boolean }[] = []; + for (let v = 0; v <= widthInUnit + 0.01; v += minorStep) { + const px = unitToPx(v, unit); + if (px <= width + 1) ticks.push({ value: v, px, isMajor: Math.abs(v % majorStep) < 0.01 }); + } + return ( +
+ {ticks.map((t) => ( +
+ ))} + {ticks.filter((t) => t.isMajor).map((t) => ( + {t.value} + ))} +
+ ); +} + +function RulerLeft({ unit, height }: { unit: 'cm' | 'inch'; height: number }) { + const minorStep = unit === 'cm' ? 0.5 : 0.5; + const majorStep = unit === 'cm' ? 1 : 1; + const heightInUnit = unit === 'cm' ? height / 37.8 : height / 96; + const ticks: { value: number; px: number; isMajor: boolean }[] = []; + for (let v = 0; v <= heightInUnit + 0.01; v += minorStep) { + const px = unitToPx(v, unit); + if (px <= height + 1) ticks.push({ value: v, px, isMajor: Math.abs(v % majorStep) < 0.01 }); + } + return ( +
+ {ticks.map((t) => ( +
+ ))} + {ticks.filter((t) => t.isMajor).map((t) => ( + {t.value} + ))} +
+ ); +} + +/** Ruler OUTSIDE canvas frame - variant: top (corner+top) or left. Unit = display unit for ruler. */ +function CanvasRulers({ + unit, + baseW, + baseH, + variant = 'top', +}: { + unit: 'cm' | 'inch'; + baseW: number; + baseH: number; + variant?: 'top' | 'left'; +}) { + const minorStep = unit === 'cm' ? 0.5 : 0.5; + const majorStep = unit === 'cm' ? 1 : 1; + // Convert canvas size to display unit for tick range (baseW/baseH are in px) + const widthInUnit = unit === 'cm' ? baseW / 37.8 : baseW / 96; + const heightInUnit = unit === 'cm' ? baseH / 37.8 : baseH / 96; + + const topTicks: { value: number; px: number; isMajor: boolean }[] = []; + for (let v = 0; v <= widthInUnit + 0.01; v += minorStep) { + const px = unitToPx(v, unit); + if (px <= baseW + 1) { + topTicks.push({ value: v, px, isMajor: Math.abs(v % majorStep) < 0.01 }); + } + } + + const leftTicks: { value: number; px: number; isMajor: boolean }[] = []; + for (let v = 0; v <= heightInUnit + 0.01; v += minorStep) { + const px = unitToPx(v, unit); + if (px <= baseH + 1) { + leftTicks.push({ value: v, px, isMajor: Math.abs(v % majorStep) < 0.01 }); + } + } + + const unitLabel = unit === 'cm' ? 'cm' : 'in'; + + if (variant === 'left') { + return ( +
+ {leftTicks.map((t) => ( +
+ ))} + {leftTicks.filter((t) => t.isMajor).map((t) => ( + + {t.value} + + ))} +
+ ); + } + + return ( + <> +
+ {unitLabel} +
+
+ {topTicks.map((t) => ( +
+ ))} + {topTicks.filter((t) => t.isMajor).map((t) => ( + + {t.value} + + ))} +
+ + ); +} + +/** 根据元素类型与 config 渲染画布上的默认内容 */ +function ElementContent({ el }: { el: LabelElement }) { + const cfg = el.config as Record; + const type = el.type as ElementType; + + // Common styles + const commonStyle: React.CSSProperties = { + fontSize: (cfg?.fontSize as number) ?? 14, + fontFamily: (cfg?.fontFamily as string) ?? 'Arial', + fontWeight: (cfg?.fontWeight as string) ?? 'normal', + textAlign: (cfg?.textAlign as any) ?? 'left', + color: (cfg?.color as string) ?? '#000', + }; + + // 文本类 + const inputType = cfg?.inputType as string | undefined; + if (type === 'TEXT_STATIC') { + const text = (cfg?.text as string) ?? '文本'; + if (inputType === 'number') { + return ( + + ); + } + if (inputType === 'options') { + return ( +
+ {text || 'Select...'} + +
+ ); + } + if (inputType === 'text') { + return ( + + ); + } + return ( +
+ {text} +
+ ); + } + if (type === 'TEXT_PRODUCT') { + const text = (cfg?.text as string) ?? '商品名'; + return ( +
+ {text} +
+ ); + } + if (type === 'TEXT_PRICE') { + const prefix = (cfg?.prefix as string) ?? '¥'; + const text = (cfg?.text as string) ?? '0.00'; + return ( +
+ {prefix} + {text} +
+ ); + } + + // 条码(支持水平/竖排) + if (type === 'BARCODE') { + const data = (cfg?.data as string) ?? '123456789'; + const showText = (cfg?.showText as boolean) !== false; + const orientation = ((cfg?.orientation as string) === 'vertical' ? 'vertical' : 'horizontal') as 'horizontal' | 'vertical'; + return ( +
+
+ +
+
+ ); + } + + // 二维码 + if (type === 'QRCODE') { + const data = (cfg?.data as string) ?? 'https://example.com'; + const size = Math.min(el.width, el.height) - 4; + return ( +
+ +
+ ); + } + + // 图片/Logo + if (type === 'IMAGE') { + const src = cfg?.src as string | undefined; + if (src) { + return ( + + ); + } + return ( +
+ Logo +
+ ); + } + + // 日期/时间 + if (type === 'DATE') { + const format = (cfg?.format as string) ?? 'YYYY-MM-DD'; + const example = format.replace('YYYY', '2025').replace('MM', '02').replace('DD', '01'); + const isInput = cfg?.inputType === 'datetime' || cfg?.inputType === 'date'; + if (isInput) { + return ( + + ); + } + return
{example}
; + } + + // (Simplified other types similarly for brevity, ensuring style prop is passed) + if (type === 'TIME') { + const format = (cfg?.format as string) ?? 'HH:mm'; + const example = format.replace('HH', '12').replace('mm', '30'); + return
{example}
; + } + + if (type === 'DURATION') { + return
保质期 2025-02-04
; + } + + if (type === 'WEIGHT') { + const value = (cfg?.value as number) ?? 500; + const unit = (cfg?.unit as string) ?? 'g'; + return
{value}{unit}
; + } + + if (type === 'WEIGHT_PRICE') { + const unitPrice = (cfg?.unitPrice as number) ?? 10; + const weight = (cfg?.weight as number) ?? 0.5; + const currency = (cfg?.currency as string) ?? '¥'; + return
{currency}{(unitPrice * weight).toFixed(2)}
; + } + + // 营养成分表 + if (type === 'NUTRITION') { + const calories = (cfg?.calories as number) ?? 120; + return ( +
+
Nutrition Facts
+
Calories {calories}
+
+ ); + } + + // 空白占位 + if (type === 'BLANK') { + return
; + } + + return ( +
+ {el.type.replace(/_/g, ' ')} +
+ ); +} + +interface LabelCanvasProps { + template: LabelTemplate; + selectedId: string | null; + onSelect: (id: string | null) => void; + onUpdateElement: (id: string, patch: Partial) => void; + onDeleteElement: (id: string) => void; + onTemplateChange?: (patch: Partial) => void; + scale?: number; + onZoomIn?: () => void; + onZoomOut?: () => void; + onPreview?: () => void; +} + +export function LabelCanvas({ + template, + selectedId, + onSelect, + onUpdateElement, + onDeleteElement, + onTemplateChange, + scale = 1, + onZoomIn, + onZoomOut, + onPreview, +}: LabelCanvasProps) { + const scrollContainerRef = useRef(null); + const canvasRef = useRef(null); + const dragRef = useRef<{ id: string; startX: number; startY: number; elX: number; elY: number } | null>(null); + const resizeRef = useRef<{ id: string; corner: string; startX: number; startY: number; w: number; h: number; elX: number; elY: number } | null>(null); + const lastUpdateRef = useRef<{ id: string; x?: number; y?: number; width?: number; height?: number } | null>(null); + + const nextFrameRef = useRef(null); + const [isSpacePressed, setIsSpacePressed] = React.useState(false); + const [isPanning, setIsPanning] = React.useState(false); + const [rulerUnit, setRulerUnit] = React.useState<'cm' | 'inch'>(template.unit); + const [containerSize, setContainerSize] = React.useState({ w: 400, h: 430 }); + const panStartRef = useRef<{ x: number; y: number; scrollLeft: number; scrollTop: number } | null>(null); + const [panOffset, setPanOffset] = React.useState({ x: 0, y: 0 }); + const panOffsetStartRef = useRef<{ x: number; y: number; startX: number; startY: number } | null>(null); + + const baseW = unitToPx(template.width, template.unit); + const baseH = unitToPx(template.height, template.unit); + const widthPx = baseW * scale; + const heightPx = baseH * scale; + const showGrid = template.showGrid !== false; + + // Sync ruler unit when template unit changes (e.g. preset applied) + React.useEffect(() => { + setRulerUnit(template.unit); + }, [template.unit]); + + // Measure scroll container for ruler dimensions + const measureContainer = React.useCallback(() => { + const el = scrollContainerRef.current; + if (el) setContainerSize({ w: el.clientWidth, h: el.clientHeight }); + }, []); + React.useEffect(() => { + measureContainer(); + const el = scrollContainerRef.current; + if (!el) return; + const ro = new ResizeObserver(measureContainer); + ro.observe(el); + return () => ro.disconnect(); + }, [measureContainer, template.showRuler]); + + const handlePointerDown = useCallback( + (e: React.PointerEvent, id: string) => { + // 如果按住了空格,直接返回,交给外层 panning 处理 + // 允许中键 (button 1) 拖动 + if (isSpacePressed || e.button === 1) return; + + e.stopPropagation(); + onSelect(id); + + // Focus canvas for keyboard events + canvasRef.current?.focus(); + + const el = template.elements.find((x) => x.id === id); + if (!el) return; + + const domEl = document.getElementById(`element-${id}`); + if (domEl) { + domEl.classList.add('z-50', 'opacity-90', 'shadow-xl', 'ring-2', 'ring-blue-400', 'ring-offset-2'); + domEl.style.cursor = 'grabbing'; + } + + dragRef.current = { id, startX: e.clientX, startY: e.clientY, elX: el.x, elY: el.y }; + lastUpdateRef.current = { id, x: el.x, y: el.y }; // 初始化 + (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId); + }, + [template.elements, onSelect, isSpacePressed] + ); + + const requestUpdate = useCallback((updateFn: () => void) => { + if (nextFrameRef.current !== null) { + cancelAnimationFrame(nextFrameRef.current); + } + nextFrameRef.current = requestAnimationFrame(() => { + updateFn(); + nextFrameRef.current = null; + }); + }, []); + + const handlePointerMove = useCallback( + (e: React.PointerEvent) => { + // 画布平移:优先处理(translate 方式,不依赖滚动) + if (isPanning && panOffsetStartRef.current) { + const dx = e.clientX - panOffsetStartRef.current.startX; + const dy = e.clientY - panOffsetStartRef.current.startY; + setPanOffset({ + x: panOffsetStartRef.current.x + dx, + y: panOffsetStartRef.current.y + dy, + }); + return; + } + if (isPanning && panStartRef.current && scrollContainerRef.current) { + const dx = e.clientX - panStartRef.current.x; + const dy = e.clientY - panStartRef.current.y; + scrollContainerRef.current.scrollLeft = panStartRef.current.scrollLeft - dx; + scrollContainerRef.current.scrollTop = panStartRef.current.scrollTop - dy; + return; + } + // Drag Element + if (dragRef.current) { + // e.persist(); // React 17+ doesn't strictly need this for properties access in rAF closure if we read them now + const { id, startX, startY, elX, elY } = dragRef.current; + const clientX = e.clientX; + const clientY = e.clientY; + + requestUpdate(() => { + const dx = (clientX - startX) / scale; + const dy = (clientY - startY) / scale; + const rawX = Math.max(0, elX + dx); + const rawY = Math.max(0, elY + dy); + const snappedX = snapToGrid(rawX); + const snappedY = snapToGrid(rawY); + + // 直接操作 DOM 避免频繁重渲染 + const domEl = document.getElementById(`element-${id}`); + if (domEl) { + domEl.style.left = `${snappedX}px`; + domEl.style.top = `${snappedY}px`; + } + lastUpdateRef.current = { id, x: snappedX, y: snappedY }; + // 注意:这里不再更新 dragRef.current,因为我们在闭包里计算 dx, dy 也是 Ok 的。 + // 只要我们始终基于 startX/elX 计算,就不会有精度积累误差。 + }); + } + + // Resize Element + if (resizeRef.current) { + const { id, corner, startX, startY, w, h, elX, elY } = resizeRef.current; + const clientX = e.clientX; + const clientY = e.clientY; + + requestUpdate(() => { + const dx = (clientX - startX) / scale; + const dy = (clientY - startY) / scale; + let nw = w; + let nh = h; + let nx = elX; + let ny = elY; + if (corner.includes('e')) nw = Math.max(20, w + dx); + if (corner.includes('w')) { + nw = Math.max(20, w - dx); + nx = elX + dx; + } + if (corner.includes('s')) nh = Math.max(12, h + dy); + if (corner.includes('n')) { + nh = Math.max(12, h - dy); + ny = elY + dy; + } + const snappedW = snapToGrid(nw); + const snappedH = snapToGrid(nh); + const snappedX = snapToGrid(nx); + const snappedY = snapToGrid(ny); + + // 直接操作 DOM + const domEl = document.getElementById(`element-${id}`); + if (domEl) { + domEl.style.width = `${snappedW}px`; + domEl.style.height = `${snappedH}px`; + domEl.style.left = `${snappedX}px`; + domEl.style.top = `${snappedY}px`; + } + + lastUpdateRef.current = { id, width: snappedW, height: snappedH, x: snappedX, y: snappedY }; + }); + } + + }, + [isPanning, onTemplateChange, scale, template.unit, requestUpdate] + ); + + const handlePointerUp = useCallback(() => { + // 结束画布平移 + if (isPanning) { + setIsPanning(false); + panStartRef.current = null; + panOffsetStartRef.current = null; + } + // Cancel pending animation frame + if (nextFrameRef.current !== null) { + cancelAnimationFrame(nextFrameRef.current); + nextFrameRef.current = null; + } + + const activeId = dragRef.current?.id || resizeRef.current?.id; + if (activeId) { + const domEl = document.getElementById(`element-${activeId}`); + if (domEl) { + domEl.classList.remove('z-50', 'opacity-90', 'shadow-xl', 'ring-2', 'ring-blue-400', 'ring-offset-2'); + domEl.style.cursor = ''; + } + } + + if (lastUpdateRef.current) { + const { id, ...patch } = lastUpdateRef.current; + onUpdateElement(id, patch); + lastUpdateRef.current = null; + } + dragRef.current = null; + resizeRef.current = null; + }, [onUpdateElement]); + + useEffect(() => { + const onKeyDown = (e: KeyboardEvent) => { + if (e.code === 'Space' && !e.repeat) { + setIsSpacePressed(true); + } + }; + const onKeyUp = (e: KeyboardEvent) => { + if (e.code === 'Space') { + setIsSpacePressed(false); + setIsPanning(false); + panStartRef.current = null; + panOffsetStartRef.current = null; + } + }; + window.addEventListener('keydown', onKeyDown); + window.addEventListener('keyup', onKeyUp); + return () => { + window.removeEventListener('keydown', onKeyDown); + window.removeEventListener('keyup', onKeyUp); + }; + }, []); + + // 画布初始居中:挂载或尺寸/缩放变化后让内容居中 + useEffect(() => { + const el = scrollContainerRef.current; + if (!el) return; + const center = () => { + el.scrollLeft = Math.max(0, (el.scrollWidth - el.clientWidth) / 2); + el.scrollTop = Math.max(0, (el.scrollHeight - el.clientHeight) / 2); + }; + const raf = requestAnimationFrame(center); + const t = setTimeout(center, 100); + return () => { + cancelAnimationFrame(raf); + clearTimeout(t); + }; + }, [scale, baseW, baseH]); + + // Keyboard navigation for elements + const handleKeyDown = useCallback((e: React.KeyboardEvent) => { + if (!selectedId) return; + if (e.key === 'Delete' || e.key === 'Backspace') { + // ... existing delete logic + e.preventDefault(); + const idx = template.elements.findIndex((x) => x.id === selectedId); + if (idx >= 0) { + const next = template.elements.filter((x) => x.id !== selectedId); + onDeleteElement(selectedId); + onSelect(next[idx]?.id ?? next[idx - 1]?.id ?? null); + } + return; + } + + const el = template.elements.find(x => x.id === selectedId); + if (!el) return; + + // allow typing in inputs without triggering move? + // Actually our elements are not inputs (unless we implement inline edit). + // But preventDefault is good. + + const step = e.shiftKey ? 1 : GRID_SIZE; + let dx = 0; + let dy = 0; + + switch (e.key) { + case 'ArrowLeft': dx = -step; break; + case 'ArrowRight': dx = step; break; + case 'ArrowUp': dy = -step; break; + case 'ArrowDown': dy = -step; break; // Wait, ArrowDown should be +step (y increases downwards) + default: return; + } + + // Fix: ArrowDown +step + if (e.key === 'ArrowDown') dy = step; + + e.preventDefault(); + onUpdateElement(el.id, { + x: Math.max(0, el.x + dx), + y: Math.max(0, el.y + dy) + }); + + }, [selectedId, template.elements, onUpdateElement, onDeleteElement, onSelect]); + + const canvasClick = () => onSelect(null); + + // 容器的 Pan 处理 + // 容器的 Pan 处理 + const handleContainerPointerDown = (e: React.PointerEvent) => { + if (isSpacePressed || e.button === 1) { + e.preventDefault(); + setIsPanning(true); + panStartRef.current = { + x: e.clientX, + y: e.clientY, + scrollLeft: scrollContainerRef.current?.scrollLeft || 0, + scrollTop: scrollContainerRef.current?.scrollTop || 0 + }; + (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId); + } + }; + + const handleContainerPointerMove = (e: React.PointerEvent) => { + if (isPanning && panStartRef.current && scrollContainerRef.current) { + const dx = e.clientX - panStartRef.current.x; + const dy = e.clientY - panStartRef.current.y; + scrollContainerRef.current.scrollLeft = panStartRef.current.scrollLeft - dx; + scrollContainerRef.current.scrollTop = panStartRef.current.scrollTop - dy; + } + }; + + const handleContainerPointerUp = (e: React.PointerEvent) => { + if (isPanning) { + setIsPanning(false); + panStartRef.current = null; + } + }; + + return ( +
+ {/* Label Preview header */} +
+ Label Preview +
+ {onPreview && ( + + )} + {onTemplateChange && ( + <> + + + + + )} +
+ + + {Math.round(scale * 100)}% + + +
+
+
+ + {/* Canvas area: ruler at this level + scroll container, fills remaining space */} +
+ {template.showRuler ? ( +
+ {/* Corner */} +
+ {rulerUnit === 'cm' ? 'cm' : 'in'} +
+ {/* Top ruler - spans scroll area width */} + + {/* Left ruler - spans scroll area height */} + + {/* Scroll container - canvas content inside */} +
+
+
{ + const target = e.target as HTMLElement; + const isOnElement = target.closest('[id^="element-"]'); + const isOnCanvasArea = canvasRef.current?.contains(target); + if (isOnCanvasArea && !isOnElement && !dragRef.current && !resizeRef.current) { + e.preventDefault(); + e.stopPropagation(); + setIsPanning(true); + panOffsetStartRef.current = { + x: panOffset.x, + y: panOffset.y, + startX: e.clientX, + startY: e.clientY, + }; + panStartRef.current = { + x: e.clientX, + y: e.clientY, + scrollLeft: scrollContainerRef.current?.scrollLeft ?? 0, + scrollTop: scrollContainerRef.current?.scrollTop ?? 0, + }; + (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId); + } + }} + onPointerMove={handlePointerMove} + onPointerUp={handlePointerUp} + onKeyDown={handleKeyDown} + > + {template.elements.map((el) => ( +
{ + e.stopPropagation(); + onSelect(el.id); + }} + onPointerDown={(e) => handlePointerDown(e, el.id)} + > + + {selectedId === el.id && ( + <> + {/* 4 Corners */} + {(['nw', 'ne', 'sw', 'se'] as const).map((corner) => ( +
{ + e.stopPropagation(); + const el0 = template.elements.find((x) => x.id === el.id)!; + resizeRef.current = { + id: el.id, + corner, + startX: e.clientX, + startY: e.clientY, + w: el0.width, + h: el0.height, + elX: el0.x, + elY: el0.y, + }; + (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId); + }} + /> + ))} + {/* 4 Edges */} + {(['n', 's', 'w', 'e'] as const).map((edge) => ( +
{ + e.stopPropagation(); + const el0 = template.elements.find((x) => x.id === el.id)!; + + const domEl = document.getElementById(`element-${el.id}`); + if (domEl) { + domEl.classList.add('z-50', 'opacity-90'); + } + + resizeRef.current = { + id: el.id, + corner: edge, + startX: e.clientX, + startY: e.clientY, + w: el0.width, + h: el0.height, + elX: el0.x, + elY: el0.y, + }; + (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId); + }} + /> + ))} + + )} +
+ ))} +
+
+
+
+ ) : ( +
+
+
{ + const target = e.target as HTMLElement; + const isOnElement = target.closest('[id^="element-"]'); + const isOnCanvasArea = canvasRef.current?.contains(target); + if (isOnCanvasArea && !isOnElement && !dragRef.current && !resizeRef.current) { + e.preventDefault(); + e.stopPropagation(); + setIsPanning(true); + panOffsetStartRef.current = { x: panOffset.x, y: panOffset.y, startX: e.clientX, startY: e.clientY }; + panStartRef.current = { + x: e.clientX, + y: e.clientY, + scrollLeft: scrollContainerRef.current?.scrollLeft ?? 0, + scrollTop: scrollContainerRef.current?.scrollTop ?? 0, + }; + (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId); + } + }} + onPointerMove={handlePointerMove} + onPointerUp={handlePointerUp} + onKeyDown={handleKeyDown} + > + {template.elements.map((el) => ( +
{ e.stopPropagation(); onSelect(el.id); }} + onPointerDown={(e) => handlePointerDown(e, el.id)} + > + + {selectedId === el.id && ( + <> + {(['nw', 'ne', 'sw', 'se'] as const).map((corner) => ( +
{ + e.stopPropagation(); + const el0 = template.elements.find((x) => x.id === el.id)!; + resizeRef.current = { + id: el.id, + corner, + startX: e.clientX, + startY: e.clientY, + w: el0.width, + h: el0.height, + elX: el0.x, + elY: el0.y, + }; + (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId); + }} + /> + ))} + {(['n', 's', 'w', 'e'] as const).map((edge) => ( +
{ + e.stopPropagation(); + const el0 = template.elements.find((x) => x.id === el.id)!; + const domEl = document.getElementById(`element-${el.id}`); + if (domEl) domEl.classList.add('z-50', 'opacity-90'); + resizeRef.current = { + id: el.id, + corner: edge, + startX: e.clientX, + startY: e.clientY, + w: el0.width, + h: el0.height, + elX: el0.x, + elY: el0.y, + }; + (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId); + }} + /> + ))} + + )} +
+ ))} +
+
+
+ )} +
+
+ ); +} + +/** 仅用于预览:无网格、无标尺、无拖拽,按比例缩放 */ +export function LabelPreviewOnly({ + template, + maxWidth = 480, +}: { + template: LabelTemplate; + maxWidth?: number; +}) { + const baseW = unitToPx(template.width, template.unit); + const baseH = unitToPx(template.height, template.unit); + const scaleToFit = maxWidth ? Math.min(maxWidth / baseW, maxWidth / baseH, 2) : 1; + const displayW = baseW * scaleToFit; + const displayH = baseH * scaleToFit; + // 与编辑区一致:内层 baseW×baseH,transformOrigin 0 0 缩放,保证位置/样式一致 + return ( +
+
+
+ {template.elements.map((el) => ( +
+ +
+ ))} +
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/PropertiesPanel.tsx b/泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/PropertiesPanel.tsx new file mode 100644 index 0000000..aee2ca3 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/PropertiesPanel.tsx @@ -0,0 +1,346 @@ +import React from 'react'; +import { ScrollArea } from '../../ui/scroll-area'; +import { Input } from '../../ui/input'; +import { Button } from '../../ui/button'; +import { Label } from '../../ui/label'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '../../ui/select'; +import { Switch } from '../../ui/switch'; +import type { + LabelTemplate, + LabelElement, + LabelType, + Rotation, + Border, +} from '../../../types/labelTemplate'; + +interface PropertiesPanelProps { + template: LabelTemplate; + selectedElement: LabelElement | null; + onTemplateChange: (patch: Partial) => void; + onElementChange: (id: string, patch: Partial) => void; + onDeleteElement?: (id: string) => void; +} + +export function PropertiesPanel({ + template, + selectedElement, + onTemplateChange, + onElementChange, + onDeleteElement, +}: PropertiesPanelProps) { + const panelStyle = { width: 288, minWidth: 288, maxWidth: 288 }; + const panelClass = "shrink-0 border-l border-gray-200 bg-white flex flex-col h-full"; + + if (selectedElement) { + return ( +
+
+ Properties (Element) +
+ +
+
+
+ + + onElementChange(selectedElement.id, { + x: Number(e.target.value) || 0, + }) + } + className="h-8 text-sm" + /> +
+
+ + + onElementChange(selectedElement.id, { + y: Number(e.target.value) || 0, + }) + } + className="h-8 text-sm" + /> +
+
+
+
+ + + onElementChange(selectedElement.id, { + width: Math.max(1, Number(e.target.value) || 0), + }) + } + className="h-8 text-sm" + /> +
+
+ + + onElementChange(selectedElement.id, { + height: Math.max(1, Number(e.target.value) || 0), + }) + } + className="h-8 text-sm" + /> +
+
+
+ + +
+
+ + +
+ + onElementChange(selectedElement.id, { config: { ...selectedElement.config, ...config } }) + } + /> + {onDeleteElement && ( +
+ +
+ )} +
+
+
+ ); + } + + return ( +
+
+ Properties (Template) +
+ +
+
+ + onTemplateChange({ name: e.target.value })} + className="h-8 text-sm mt-1" + /> +
+
+ + +
+
+ + +
+
+
+ +
+ {template.width} {template.unit} +
+
+
+ +
+ {template.height} {template.unit} +
+
+
+
+ onTemplateChange({ showRuler: v })} + /> + +
+
+
+
+ ); +} + +function ElementConfigFields({ + element, + onChange, +}: { + element: LabelElement; + onChange: (config: Record) => void; +}) { + const cfg = element.config as Record; + const update = (key: string, value: unknown) => + onChange({ [key]: value }); + + switch (element.type) { + case 'TEXT_STATIC': + case 'TEXT_PRODUCT': + case 'TEXT_PRICE': + return ( + <> +
+ + update('text', e.target.value)} + className="h-8 text-sm mt-1" + /> +
+
+ + update('fontSize', Number(e.target.value) || 14)} + className="h-8 text-sm mt-1" + /> +
+
+ + +
+ + ); + case 'BARCODE': + return ( + <> +
+ + update('data', e.target.value)} + className="h-8 text-sm mt-1" + /> +
+
+ + +
+ + ); + case 'QRCODE': + return ( +
+ + update('data', e.target.value)} + className="h-8 text-sm mt-1" + /> +
+ ); + case 'WEIGHT': + return ( +
+ + update('value', Number(e.target.value) || 0)} + className="h-8 text-sm mt-1" + /> +
+ ); + default: + return ( +
+ Config for {element.type} (edit in code if needed) +
+ ); + } +} diff --git a/泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/index.tsx b/泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/index.tsx new file mode 100644 index 0000000..fb2bd25 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplateEditor/index.tsx @@ -0,0 +1,198 @@ +import React, { useCallback, useState } from 'react'; +import { Button } from '../../ui/button'; +import { ArrowLeft, Save, Download } from 'lucide-react'; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, +} from '../../ui/dialog'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '../../ui/select'; +import type { LabelTemplate, LabelElement } from '../../../types/labelTemplate'; +import { createDefaultTemplate, createDefaultElement } from '../../../types/labelTemplate'; +import { ElementsPanel } from './ElementsPanel'; +import { LabelCanvas, LabelPreviewOnly } from './LabelCanvas'; +import { PropertiesPanel } from './PropertiesPanel'; +import { saveTemplate } from '../../../lib/labelTemplateStorage'; +import { PRESET_TEMPLATES, presetToTemplate } from '../../../lib/presetLabelTemplates'; + +const MIN_SCALE = 0.5; +const MAX_SCALE = 2; +const SCALE_STEP = 0.25; +const DEFAULT_SCALE = 1.0; + +interface LabelTemplateEditorProps { + /** null = 新建,string = 编辑该 id */ + templateId: string | null; + initialTemplate: LabelTemplate | null; + onClose: () => void; + onSaved: () => void; +} + +export function LabelTemplateEditor({ + templateId, + initialTemplate, + onClose, + onSaved, +}: LabelTemplateEditorProps) { + const [template, setTemplate] = useState(() => { + if (initialTemplate) return { ...initialTemplate }; + return createDefaultTemplate(templateId ?? undefined); + }); + const [selectedId, setSelectedId] = useState(null); + const [scale, setScale] = useState(DEFAULT_SCALE); + const [previewOpen, setPreviewOpen] = useState(false); + + const selectedElement = template.elements.find((el) => el.id === selectedId) ?? null; + + const addElement = useCallback(( + type: Parameters[0], + configOverride?: Partial> + ) => { + const el = createDefaultElement(type, 30, 30); + if (configOverride && Object.keys(configOverride).length > 0) { + el.config = { ...el.config, ...configOverride }; + } + setTemplate((prev) => ({ + ...prev, + elements: [...prev.elements, el], + })); + setSelectedId(el.id); + }, []); + + const updateElement = useCallback((id: string, patch: Partial) => { + setTemplate((prev) => ({ + ...prev, + elements: prev.elements.map((el) => + el.id === id ? { ...el, ...patch } : el + ), + })); + }, []); + + const deleteElement = useCallback((id: string) => { + setTemplate((prev) => ({ + ...prev, + elements: prev.elements.filter((el) => el.id !== id), + })); + setSelectedId(null); + }, []); + + const handleTemplateChange = useCallback((patch: Partial) => { + setTemplate((prev) => ({ ...prev, ...patch })); + }, []); + + const handleSave = useCallback(() => { + saveTemplate(template); + onSaved(); + onClose(); + }, [template, onSaved, onClose]); + + const handleExport = useCallback(() => { + const blob = new Blob([JSON.stringify(template, null, 2)], { + type: 'application/json', + }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + a.download = `label-template-${template.id}.json`; + a.click(); + URL.revokeObjectURL(url); + }, [template]); + + const [presetSelectValue, setPresetSelectValue] = useState('none'); + + const handleApplyPreset = useCallback((index: string) => { + if (index === 'none') return; + const idx = parseInt(index, 10); + if (isNaN(idx) || idx < 0 || idx >= PRESET_TEMPLATES.length) return; + const preset = PRESET_TEMPLATES[idx]; + const newTemplate = presetToTemplate(preset, template.id); + setTemplate(newTemplate); + setSelectedId(null); + setPresetSelectValue('none'); + }, [template.id]); + + return ( +
+ {/* Toolbar */} +
+ + + {template.name} + + + + +
+ + {/* Three columns - items-stretch ensures canvas bottom aligns with Elements bottom */} +
+
+ +
+
+ setScale((s) => Math.min(MAX_SCALE, s + SCALE_STEP))} + onZoomOut={() => setScale((s) => Math.max(MIN_SCALE, s - SCALE_STEP))} + onPreview={() => setPreviewOpen(true)} + /> +
+ + + + Label Preview + + + + +
+ +
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplatesView.tsx b/泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplatesView.tsx new file mode 100755 index 0000000..c761ac3 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/labels/LabelTemplatesView.tsx @@ -0,0 +1,178 @@ +import React, { useState, useCallback, useEffect } from 'react'; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from '../ui/table'; +import { Input } from '../ui/input'; +import { Button } from '../ui/button'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '../ui/select'; +import { Plus, Pencil } from 'lucide-react'; +import { getTemplateList, getTemplate } from '../../lib/labelTemplateStorage'; +import type { LabelTemplate } from '../../types/labelTemplate'; +import { LabelTemplateEditor } from './LabelTemplateEditor'; + +export function LabelTemplatesView() { + const [templates, setTemplates] = useState(() => getTemplateList()); + const [viewMode, setViewMode] = useState<'list' | 'editor'>('list'); + const [editingTemplateId, setEditingTemplateId] = useState(null); + const [search, setSearch] = useState(''); + const [locationFilter, setLocationFilter] = useState('all'); + + const refreshList = useCallback(() => { + setTemplates(getTemplateList()); + }, []); + + useEffect(() => { + if (viewMode === 'list') refreshList(); + }, [viewMode, refreshList]); + + const filtered = templates.filter((t) => { + const matchSearch = + !search || t.name.toLowerCase().includes(search.toLowerCase()); + const matchLoc = + locationFilter === 'all' || t.appliedLocation === locationFilter; + return matchSearch && matchLoc; + }); + + const handleNewTemplate = () => { + setEditingTemplateId(null); + setViewMode('editor'); + }; + + const handleEditTemplate = (id: string) => { + setEditingTemplateId(id); + setViewMode('editor'); + }; + + const handleCloseEditor = () => { + setViewMode('list'); + setEditingTemplateId(null); + }; + + if (viewMode === 'editor') { + const initialTemplate = + editingTemplateId ? getTemplate(editingTemplateId) : null; + return ( +
+ +
+ ); + } + + return ( +
+ {/* Controls: Search, Location, New Label Template — 单行 + 圆角 + 细边框 + 统一高度 40px,黄色按钮无边框、靠右 */} +
+ setSearch(e.target.value)} + /> + + +
+ + {/* Warning Banner */} +
+ ***One or more templates have incomplete labels attached to them. +
+ Go to Labels view to see which labels are missing fields. +
+ + {/* Table */} +
+ + + + + Label Template + + + Location + + Contents + + Size + + + Actions + + + + + {filtered.length === 0 ? ( + + + No templates yet. Click "New Label Template" to create one. + + + ) : ( + filtered.map((t) => ( + handleEditTemplate(t.id)} + > + {t.name} + {t.appliedLocation} + + {t.elements.length} element(s) + + + {t.width}×{t.height} {t.unit} + + e.stopPropagation()}> + + + + )) + )} + +
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/labels/LabelTypesView.tsx b/泰额版/Food Labeling Management Platform/src/components/labels/LabelTypesView.tsx new file mode 100755 index 0000000..d8e408c --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/labels/LabelTypesView.tsx @@ -0,0 +1,105 @@ +import React from 'react'; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "../ui/table"; +import { Input } from "../ui/input"; +import { Button } from "../ui/button"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "../ui/select"; +import { Plus } from "lucide-react"; + +export function LabelTypesView() { + const types = [ + { + id: 1, + type: 'Defrost', + count: 54, + lastEdited: '2025.12.03.11:45', + }, + { + id: 2, + type: 'Thawed', + count: 33, + lastEdited: '2025.12.03.11:45', + }, + { + id: 3, + type: 'Opened', + count: 44, + lastEdited: '2025.12.03.11:45', + }, + { + id: 4, + type: 'Preped', + count: 17, + lastEdited: '2025.12.03.11:45', + }, + { + id: 5, + type: 'Heated', + count: 67, + lastEdited: '2025.12.03.11:45', + }, + ]; + + return ( +
+ {/* Controls: Search, Location, New Label Type — 单行 + 圆角 + 细边框 + 统一高度 40px,黄色按钮无边框 */} +
+ + + +
+ + {/* Table */} +
+ + + + Label Types + No. of Labels + Last Edited + + + + {types.map((item) => ( + + {item.type} + {item.count} + {item.lastEdited} + + ))} + +
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/labels/LabelsList.tsx b/泰额版/Food Labeling Management Platform/src/components/labels/LabelsList.tsx new file mode 100755 index 0000000..7c4d217 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/labels/LabelsList.tsx @@ -0,0 +1,151 @@ +import React from 'react'; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "../ui/table"; +import { Input } from "../ui/input"; +import { Button } from "../ui/button"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "../ui/select"; +import { Plus } from "lucide-react"; + +export function LabelsList() { + const labels = [ + { + id: 1, + location: 'Location A', + labelCategory: 'Prep', + productCategory: 'Meat', + product: 'Chicken', + template: '2"x2" Basic', + labelType: 'Defrost', + lastEdited: '2025.12.03.11:45', + hasError: false + }, + { + id: 2, + location: 'Location A', + labelCategory: 'Prep', + productCategory: 'Meat', + product: 'Chicken', + template: '2"x2" Basic', + labelType: 'Opened/Preped', + lastEdited: '2025.12.03.11:45', + hasError: false + }, + { + id: 3, + location: 'Location A', + labelCategory: 'Prep', + productCategory: 'Meat', + product: 'Chicken', + template: '2"x2" Basic', + labelType: 'Heated', + lastEdited: '2025.12.03.11:45', + hasError: false + }, + { + id: 4, + location: 'Location A', + labelCategory: "Grab'n'Go", + productCategory: 'Sandwich', + product: 'Chicken Sandwich', + template: '2"x6" G\'n\'G', + labelType: '', + lastEdited: '2025.12.03.11:45', + hasError: true + }, + ]; + + return ( +
+ {/* Controls: Search, Location, Bulk Actions & New Label — 单行 + 圆角 + 细边框 + 统一高度 40px */} +
+ + +
+ + + +
+ +
+ + {/* Warning Text */} +
+ One or more of your labels are missing fields from their templates (! ! ! 1 in total). +
+ + {/* Table */} +
+ + + + Location + Label Category + Product Category + Product + Template + Label Type + Last Edited + + + + {labels.map((label) => ( + + {label.location} + {label.labelCategory} + {label.productCategory} + {label.product} + + {label.template} + {label.hasError && ( + ! ! ! + )} + + {label.labelType || '-'} + {label.lastEdited} + + ))} + +
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/labels/LabelsView.tsx b/泰额版/Food Labeling Management Platform/src/components/labels/LabelsView.tsx new file mode 100755 index 0000000..fdcecd1 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/labels/LabelsView.tsx @@ -0,0 +1,65 @@ +import React from 'react'; +import { LabelsList } from './LabelsList'; +import { LabelCategoriesView } from './LabelCategoriesView'; +import { LabelTypesView } from './LabelTypesView'; +import { LabelTemplatesView } from './LabelTemplatesView'; +import { MultipleOptionsView } from './MultipleOptionsView'; + +type Tab = 'Labels' | 'Label Categories' | 'Label Types' | 'Label Templates' | 'Multiple Options'; + +interface LabelsViewProps { + currentView?: string; + onViewChange?: (view: string) => void; +} + +export function LabelsView({ currentView = 'Labels', onViewChange }: LabelsViewProps) { + const tabs: Tab[] = [ + 'Labels', + 'Label Categories', + 'Label Types', + 'Label Templates', + 'Multiple Options' + ]; + + const handleTabClick = (tab: Tab) => { + if (onViewChange) { + onViewChange(tab); + } + }; + + return ( +
+ {/* Tabs / Navigation Simulation */} +
+ {tabs.map((tab) => ( +
handleTabClick(tab)} + className={`px-4 py-2 text-sm font-medium whitespace-nowrap cursor-pointer transition-colors ${ + currentView === tab + ? 'border-b-2' + : 'text-gray-500 hover:text-gray-700' + }`} + style={currentView === tab ? { color: '#1b46c7', borderBottomColor: '#1b46c7' } : undefined} + > + {tab} +
+ ))} +
+ + {/* Content */} +
+ {currentView === 'Labels' && } + {currentView === 'Label Categories' && } + {currentView === 'Label Types' && } + {currentView === 'Label Templates' && } + {currentView === 'Multiple Options' && } + {!['Labels', 'Label Categories', 'Label Types', 'Label Templates', 'Multiple Options'].includes(currentView) && ( +
+ {currentView} content coming soon... +
+ )} +
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/labels/MultipleOptionsView.tsx b/泰额版/Food Labeling Management Platform/src/components/labels/MultipleOptionsView.tsx new file mode 100755 index 0000000..867adfd --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/labels/MultipleOptionsView.tsx @@ -0,0 +1,93 @@ +import React from 'react'; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "../ui/table"; +import { Input } from "../ui/input"; +import { Button } from "../ui/button"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "../ui/select"; +import { Plus } from "lucide-react"; + +export function MultipleOptionsView() { + const options = [ + { + id: 1, + name: 'Prepped By', + contents: 'A. Smith; B. Doe; C. Borne', + lastEdited: '2025.12.03.11:45', + }, + { + id: 2, + name: 'Checked By', + contents: 'D. Manager; E. Supervisor', + lastEdited: '2025.12.04.09:30', + }, + { + id: 3, + name: 'Allergens', + contents: 'Peanuts; Dairy; Gluten; Soy', + lastEdited: '2025.12.05.14:15', + }, + ]; + + return ( +
+ {/* Controls: Search, Location, New Multiple Options — 单行 + 圆角 + 细边框 + 统一高度 40px,黄色按钮无边框、靠右 */} +
+ + + +
+ + {/* Table */} +
+ + + + Multiple Option Name + Contents + Last Edited + + + + {options.map((item) => ( + + {item.name} + {item.contents} + {item.lastEdited} + + ))} + +
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/layout/Header.tsx b/泰额版/Food Labeling Management Platform/src/components/layout/Header.tsx new file mode 100755 index 0000000..ab3436e --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/layout/Header.tsx @@ -0,0 +1,56 @@ +import React from 'react'; +import { Search, Settings, Calendar, Bell } from 'lucide-react'; +import { Input } from '../ui/input'; +import { Button } from '../ui/button'; +import { Avatar, AvatarFallback, AvatarImage } from '../ui/avatar'; + +interface HeaderProps { + title: string; +} + +export function Header({ title }: HeaderProps) { + const currentDate = new Date().toLocaleDateString('en-US', { + year: 'numeric', + month: 'long', + day: 'numeric' + }); + + return ( +
+
+

{title} Overview

+

+ {currentDate} | Last updated: Just now +

+
+ +
+
+ + +
+ + + +
+ +
+
+
Admin User
+
Administrator
+
+ + + AD + +
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/layout/Layout.tsx b/泰额版/Food Labeling Management Platform/src/components/layout/Layout.tsx new file mode 100755 index 0000000..c60f0e6 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/layout/Layout.tsx @@ -0,0 +1,75 @@ +import React from 'react'; +import { Sidebar } from './Sidebar'; +import { Header } from './Header'; +import { + Breadcrumb, + BreadcrumbItem, + BreadcrumbLink, + BreadcrumbList, + BreadcrumbPage, + BreadcrumbSeparator, +} from '../ui/breadcrumb'; + +interface LayoutProps { + children: React.ReactNode; + currentView: string; + setCurrentView: (view: string) => void; +} + +const LABELING_SUB_VIEWS = ['Label Categories', 'Label Types', 'Label Templates', 'Multiple Options']; + +function getBreadcrumbItems(title: string): { label: string; view: string }[] { + const items: { label: string; view: string }[] = [{ label: 'Home', view: 'Dashboard' }]; + if (title === 'Labels' || title === 'Label Categories' || title === 'Label Types' || title === 'Label Templates' || title === 'Multiple Options') { + if (LABELING_SUB_VIEWS.includes(title)) { + items.push({ label: 'Labeling', view: 'Labels' }); + } + items.push({ label: title, view: title }); + } else { + items.push({ label: title, view: title }); + } + return items; +} + +export function Layout({ children, currentView, setCurrentView }: LayoutProps) { + const breadcrumbItems = getBreadcrumbItems(currentView); + + return ( +
+ +
+
+
+
+ + + {breadcrumbItems.map((item, index) => ( + + {index > 0 && } + + {index === breadcrumbItems.length - 1 ? ( + {item.label} + ) : ( + + + + )} + + + ))} + + +
+ {children} +
+
+
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/layout/Sidebar.tsx b/泰额版/Food Labeling Management Platform/src/components/layout/Sidebar.tsx new file mode 100755 index 0000000..d29096c --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/layout/Sidebar.tsx @@ -0,0 +1,158 @@ +import React, { useState } from 'react'; +import { + Tag, + MapPin, + Users, + Package, + FileText, + HelpCircle, + LogOut, + ChevronDown, + ChevronRight, + Layers, + Type, + FileBox, + Settings, + AlertTriangle, + ListTodo, + Activity, + Apple, + FileDigit, + Smartphone, + Receipt, + QrCode, + Code, + LayoutDashboard +} from 'lucide-react'; +import { cn } from '../ui/utils'; +import logo from "figma:asset/773f0c39e1986271e9144596caac519f934a6ae6.png"; + +interface SidebarProps { + currentView: string; + setCurrentView: (view: string) => void; +} + +export function Sidebar({ currentView, setCurrentView }: SidebarProps) { + const [labelingOpen, setLabelingOpen] = useState(true); + + const menuItems = [ + { name: 'Dashboard', icon: LayoutDashboard, type: 'item' }, + { type: 'header', name: 'MODULES' }, + { + name: 'Labeling', + icon: Tag, + type: 'sub', + isOpen: labelingOpen, + toggle: () => setLabelingOpen(!labelingOpen), + children: [ + { name: 'Labels', icon: Tag }, + { name: 'Label Categories', icon: Layers }, + { name: 'Label Types', icon: Type }, + { name: 'Label Templates', icon: FileBox }, + { name: 'Multiple Options', icon: Settings }, + ] + }, + { name: 'Training', icon: ListTodo, type: 'item' }, + { name: 'Alerts', icon: AlertTriangle, type: 'item' }, + { name: 'Tasks', icon: ListTodo, type: 'item' }, + { name: 'Sensors', icon: Activity, type: 'item' }, + { name: 'Food Waste', icon: Apple, type: 'item' }, + { name: 'E-Label', icon: FileDigit, type: 'item' }, + { type: 'header', name: 'MANAGEMENT' }, + { name: 'Location Manager', icon: MapPin, type: 'item' }, + { name: 'Account Management', icon: Users, type: 'item' }, + { name: 'Menu Manager', icon: Package, type: 'item' }, + { name: 'Devices', icon: Smartphone, type: 'item', highlight: true }, + { name: 'Invoices', icon: Receipt, type: 'item' }, + { name: 'Reports', icon: FileText, type: 'item' }, + { name: 'QR Codes', icon: QrCode, type: 'item' }, + { name: 'API', icon: Code, type: 'item' }, + { name: 'Support', icon: HelpCircle, type: 'action' }, + { name: 'Log Out', icon: LogOut, type: 'action', isLogout: true }, + ]; + + return ( +
+
+ MedVantage +
+ +
+
+ {menuItems.map((item, index) => { + if (item.type === 'header') { + return ( +
+ {item.name} +
+ ); + } + + if (item.type === 'sub') { + return ( +
+ + + {item.isOpen && ( +
+ {item.children?.map((child, childIndex) => ( + + ))} +
+ )} +
+ ); + } + + const isAction = item.type === 'action'; + const isLogout = 'isLogout' in item && item.isLogout; + return ( + + ); + })} +
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/locations/LocationsView.tsx b/泰额版/Food Labeling Management Platform/src/components/locations/LocationsView.tsx new file mode 100755 index 0000000..d774bd8 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/locations/LocationsView.tsx @@ -0,0 +1,267 @@ +import React, { useState } from 'react'; +import { + Search, + Plus, + Download, + Upload, + Edit, + MapPin, + Phone, + Mail, + MoreHorizontal +} from 'lucide-react'; +import { Button } from "../ui/button"; +import { Input } from "../ui/input"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "../ui/table"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, +} from "../ui/dialog"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "../ui/select"; +import { Label } from "../ui/label"; +import { Badge } from "../ui/badge"; +import { Switch } from "../ui/switch"; + +// --- Mock Data --- + +const MOCK_LOCATIONS = [ + { + id: '12345', + name: 'Downtown Store', + address: '123 Main St, New York, NY', + phone: '+1 (555) 123-4567', + email: 'downtown@example.com', + gps: '40.7128° N, 74.0060° W', + status: 'active' + }, + { + id: '12335', + name: 'Uptown Market', + address: '456 High St, New York, NY', + phone: '+1 (555) 987-6543', + email: 'uptown@example.com', + gps: '40.7580° N, 73.9855° W', + status: 'active' + }, + { + id: '12445', + name: 'Airport Kiosk', + address: 'Terminal 4, JFK Airport', + phone: '+1 (555) 555-5555', + email: 'jfk@example.com', + gps: '40.6413° N, 73.7781° W', + status: 'active' + }, + { + id: '12555', + name: 'Suburban Outlet', + address: '789 Country Rd, Long Island', + phone: '+1 (555) 111-2222', + email: 'suburb@example.com', + gps: '40.8500° N, 73.2000° W', + status: 'inactive' + }, +]; + +export function LocationsView() { + const [isCreateDialogOpen, setIsCreateDialogOpen] = useState(false); + const [locations, setLocations] = useState(MOCK_LOCATIONS); + + return ( +
+ {/* Header / Top Bar:无白色背景,与 Labels 一致仅依赖 Layout p-8 外边距 */} +
+
+ + + + +
+ + + + +
+
+ + {/* Content Area:上下左右间距与 Labels 一致(由 Layout main p-8 控制) */} +
+
+ + + + Location ID + Location Name + Address + Phone + Email + GPS + Actions + + + + {locations.map((loc) => ( + + {loc.id} + {loc.name} + {loc.address} + {loc.phone} + {loc.email} + {loc.gps} + + + + + ))} + +
+
+
+ + +
+ ); +} + +// --- Sub-components --- + +function CreateLocationDialog({ open, onOpenChange }: { open: boolean; onOpenChange: (open: boolean) => void }) { + return ( + + + + Add New Location + + Enter the details for the new store location. + + + +
+
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ +
+ + +
+ +
+
+ + +
+
+ + +
+
+ +
+ +
+ + +
+
+ +
+ + +
+ +
+ + + + + +
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/people/PeopleView.tsx b/泰额版/Food Labeling Management Platform/src/components/people/PeopleView.tsx new file mode 100755 index 0000000..3735218 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/people/PeopleView.tsx @@ -0,0 +1,549 @@ +import React, { useState } from 'react'; +import { + Search, + Plus, + Download, + Upload, + Edit, + MoreHorizontal, + FileText, + MapPin, + Shield, + Bell, + Check, + X +} from 'lucide-react'; +import { Button } from "../ui/button"; +import { Input } from "../ui/input"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "../ui/table"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "../ui/dialog"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "../ui/select"; +import { Label } from "../ui/label"; +import { Switch } from "../ui/switch"; +import { Badge } from "../ui/badge"; +import { Checkbox } from "../ui/checkbox"; +import { ScrollArea } from "../ui/scroll-area"; +import { cn } from "../ui/utils"; + +// --- Mock Data --- + +const MOCK_LOCATIONS = [ + { id: '1', name: 'Downtown Store (101)' }, + { id: '2', name: 'Uptown Store (102)' }, + { id: '3', name: 'Airport Kiosk (201)' }, + { id: '4', name: 'Mall Outlet (305)' }, +]; + +const MOCK_ROLES = [ + { + id: 'r1', + name: 'Partner Admin', + permissions: ['all'], + notifications: ['system_updates', 'billing'] + }, + { + id: 'r2', + name: 'Group Admin', + permissions: ['manage_users', 'manage_products', 'view_reports'], + notifications: ['new_users'] + }, + { + id: 'r3', + name: 'Manager', + permissions: ['manage_store', 'view_reports', 'manage_inventory'], + notifications: ['label_expiry', 'low_stock'] + }, + { + id: 'r4', + name: 'Team Member', + permissions: ['view_tasks', 'print_labels'], + notifications: ['task_assignment'] + } +]; + +const MOCK_PARTNERS = [ + { id: 'p1', name: 'Global Foods Inc.', status: 'active', contact: 'admin@globalfoods.com' }, + { id: 'p2', name: 'Local Eateries Co.', status: 'active', contact: 'support@localeateries.com' }, +]; + +const MOCK_GROUPS = [ + { id: 'g1', name: 'West Coast Region', partner: 'Global Foods Inc.', status: 'active' }, + { id: 'g2', name: 'East Coast Region', partner: 'Global Foods Inc.', status: 'inactive' }, +]; + +const MOCK_MEMBERS = [ + { + id: 'm1', + name: 'Alice Johnson', + role: 'Manager', + locations: ['Downtown Store (101)', 'Uptown Store (102)'], + email: 'alice@example.com', + status: 'active' + }, + { + id: 'm2', + name: 'Bob Smith', + role: 'Team Member', + locations: ['Airport Kiosk (201)'], + email: 'bob@example.com', + status: 'active' + }, + { + id: 'm3', + name: 'Charlie Brown', + role: 'Team Member', + locations: ['Downtown Store (101)'], + email: 'charlie@example.com', + status: 'inactive' + }, +]; + +// --- Types --- +type ViewTab = 'Roles' | 'Partner' | 'Group' | 'Team Member'; + +export function PeopleView() { + const [activeTab, setActiveTab] = useState('Roles'); + + // Data States + const [roles, setRoles] = useState(MOCK_ROLES); + const [partners, setPartners] = useState(MOCK_PARTNERS); + const [groups, setGroups] = useState(MOCK_GROUPS); + const [members, setMembers] = useState(MOCK_MEMBERS); + + // Dialog States + const [isRoleDialogOpen, setIsRoleDialogOpen] = useState(false); + const [isPartnerDialogOpen, setIsPartnerDialogOpen] = useState(false); + const [isGroupDialogOpen, setIsGroupDialogOpen] = useState(false); + const [isMemberDialogOpen, setIsMemberDialogOpen] = useState(false); + + // Handlers + const handleExportPdf = () => { + alert(`Exporting ${activeTab} list to PDF...`); + }; + + const openCreateDialog = () => { + switch (activeTab) { + case 'Roles': setIsRoleDialogOpen(true); break; + case 'Partner': setIsPartnerDialogOpen(true); break; + case 'Group': setIsGroupDialogOpen(true); break; + case 'Team Member': setIsMemberDialogOpen(true); break; + } + }; + + const renderToolbar = () => { + const canBulkOps = activeTab === 'Team Member'; + return ( +
+ +
+ {canBulkOps && ( + <> + + + + )} + + +
+ ); + }; + + const renderContent = () => { + switch (activeTab) { + case 'Roles': + return ( + + + + Role Name + Access Permissions + Notifications + Actions + + + + {roles.map(role => ( + + {role.name} + +
+ {role.permissions.map(p => ( + {p} + ))} +
+
+ +
+ {role.notifications.map(n => ( + {n} + ))} +
+
+ + + +
+ ))} +
+
+ ); + + case 'Partner': + return ( + + + + Partner Name + Contact + Status + Actions + + + + {partners.map(p => ( + + {p.name} + {p.contact} + + + {p.status} + + + + + + + ))} + +
+ ); + + case 'Group': + return ( + + + + Group Name + Parent Partner + Status + Actions + + + + {groups.map(g => ( + + {g.name} + {g.partner} + + + {g.status} + + + + + + + ))} + +
+ ); + + case 'Team Member': + return ( + + + + Name + Email + Role + Assigned Locations + Status + Actions + + + + {members.map(m => ( + + {m.name} + {m.email} + + {m.role} + + +
+ {m.locations.map(loc => ( +
+ {loc} +
+ ))} +
+
+ + + {m.status} + + + + + +
+ ))} +
+
+ ); + } + }; + + return ( +
+ {renderToolbar()} + +
+ {/* 标签与表格融合在一个圆角框内 */} +
+
+ {['Roles', 'Partner', 'Group', 'Team Member'].map((tab) => ( + + ))} +
+
+ {renderContent()} +
+
+
+ + {/* --- Dialogs --- */} + + + + +
+ ); +} + +// --- Sub-Components (Dialogs) --- + +function CreateRoleDialog({ open, onOpenChange }: { open: boolean; onOpenChange: (open: boolean) => void }) { + return ( + + + + Create New Role + Define permissions and notification settings for this role. + +
+
+ + +
+ +
+ +
+ {['Manage Labels', 'Manage Products', 'Manage People', 'View Reports', 'Edit Settings', 'Approve Batches'].map(perm => ( +
+ + +
+ ))} +
+
+ +
+ +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + + + +
+
+ ); +} + +function CreatePartnerDialog({ open, onOpenChange }: { open: boolean; onOpenChange: (open: boolean) => void }) { + return ( + + + + Create New Partner + +
+
+ + +
+
+ + +
+
+ + +
+
+ + + + +
+
+ ); +} + +function CreateGroupDialog({ open, onOpenChange }: { open: boolean; onOpenChange: (open: boolean) => void }) { + return ( + + + + Create New Group + +
+
+ + +
+
+ + +
+
+ + +
+
+ + + + +
+
+ ); +} + +function CreateMemberDialog({ open, onOpenChange, roles }: { open: boolean; onOpenChange: (open: boolean) => void; roles: any[] }) { + return ( + + + + Add Team Member / Manager + Create a user account and assign them to locations. + +
+
+
+ + +
+
+ + +
+
+ +
+ + +
+ +
+ + +
+ {MOCK_LOCATIONS.map(loc => ( +
+ + +
+ ))} +
+
+

* Users must be assigned to at least one location.

+
+ +
+ + +
+
+ + + + +
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/products/ProductsView.tsx b/泰额版/Food Labeling Management Platform/src/components/products/ProductsView.tsx new file mode 100755 index 0000000..9c7d986 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/products/ProductsView.tsx @@ -0,0 +1,569 @@ +import React, { useState } from 'react'; +import { + Search, + Plus, + Download, + Upload, + Edit, + Filter, + MoreHorizontal, + Check, + X, + Image as ImageIcon, + Type, + Palette, + Store, + Globe, + Barcode +} from 'lucide-react'; +import { Button } from "../ui/button"; +import { Input } from "../ui/input"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "../ui/table"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "../ui/dialog"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "../ui/select"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "../ui/tabs"; +import { Label } from "../ui/label"; +import { Switch } from "../ui/switch"; +import { Badge } from "../ui/badge"; +import { Checkbox } from "../ui/checkbox"; +import { ScrollArea } from "../ui/scroll-area"; + +// --- Mock Data --- + +const MOCK_LOCATIONS = [ + { id: '12345', name: 'Location 12345 - Downtown' }, + { id: '67890', name: 'Location 67890 - Uptown' }, + { id: '11111', name: 'Location 11111 - Airport' }, +]; + +const MOCK_CATEGORIES = [ + { id: 'cat1', name: 'Dairy', type: 'color', value: '#bfdbfe', status: 'active' }, + { id: 'cat2', name: 'Meat', type: 'image', value: 'meat.png', status: 'active' }, + { id: 'cat3', name: 'Bakery', type: 'text', value: 'Bakery', status: 'active' }, +]; + +const MOCK_PRODUCTS = [ + { + id: 'prod1', + locationId: '12345', + categoryId: 'cat1', + categoryName: 'Dairy', + name: 'Whole Milk', + productId: '2222222', + barcode: '123456789', + barcodeType: 'EAN-13', + status: 'active', + appearance: { type: 'text', value: 'Whole Milk' } + }, + { + id: 'prod2', + locationId: '12345', + categoryId: 'cat2', + categoryName: 'Meat', + name: 'Ground Beef', + productId: '3333333', + barcode: '113456789', + barcodeType: 'UPC-A', + status: 'active', + appearance: { type: 'color', value: '#ef4444' } + }, + { + id: 'prod3', + locationId: '67890', + categoryId: 'cat3', + categoryName: 'Bakery', + name: 'Croissant', + productId: '4444444', + barcode: '998877665', + barcodeType: 'EAN-8', + status: 'inactive', + appearance: { type: 'image', value: 'croissant.jpg' } + }, +]; + +// --- Components --- + +export function ProductsView() { + const [activeTab, setActiveTab] = useState('products'); + const [products, setProducts] = useState(MOCK_PRODUCTS); + const [categories, setCategories] = useState(MOCK_CATEGORIES); + + // Dialog States + const [isProductDialogOpen, setIsProductDialogOpen] = useState(false); + const [isCategoryDialogOpen, setIsCategoryDialogOpen] = useState(false); + + return ( +
+ {/* Tabs:参考 Labels 的 tab 形式 */} +
+ {(['products', 'categories'] as const).map((tab) => ( + + ))} +
+ + {/* Toolbar:Search 放在 Partner A 前面,右侧 Bulk 与 New */} +
+
+
+
+ + +
+ + + + +
+ + + + {activeTab === 'products' ? ( + + ) : ( + + )} +
+
+
+ + {/* Content Area:上下左右间距与 Labels 一致 */} +
+ {activeTab === 'products' ? ( +
+ + + + Location ID + Product Category + Product + Product ID + Product Barcode + Status + Actions + + + + {products.map((product) => ( + + {product.locationId} + {product.categoryName} + +
+ {product.appearance.type === 'color' && ( +
+ )} + {product.appearance.type === 'image' && ( + + )} + {product.name} +
+ + {product.productId} + +
+ {product.barcodeType} + {product.barcode} +
+
+ + + {product.status} + + + + + + + ))} + +
+
+ ) : ( +
+ + + + Category Name + Display Type + Preview + Status + Actions + + + + {categories.map((category) => ( + + {category.name} + {category.type} + + {category.type === 'color' && ( +
+ )} + {category.type === 'image' && ( +
+ +
+ )} + {category.type === 'text' && ( +
+ {category.value} +
+ )} + + + + {category.status} + + + + + + + ))} + +
+
+ )} +
+ + {/* --- Modals --- */} + + + +
+ ); +} + +// --- Sub-components for Dialogs --- + +function CreateProductDialog({ open, onOpenChange, categories }: { open: boolean; onOpenChange: (open: boolean) => void; categories: any[] }) { + const [appearanceType, setAppearanceType] = useState('text'); + + return ( + + + + Add New Product + + Create a new product. Fill in the details below. + + + +
+ + {/* Basic Info */} +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ +
+ + Active +
+
+
+ + {/* Barcode Section */} +
+ +
+
+ +
+
+ +
+
+ +
+ + {/* Appearance Section */} +
+ + + + Text + Color + Image + + + + + + + + + +
+ {['#ef4444', '#f97316', '#f59e0b', '#84cc16', '#10b981', '#06b6d4', '#3b82f6', '#6366f1', '#a855f7', '#ec4899'].map(color => ( + +
+
+ + + +
+ + Click to upload or drag and drop +
+
+
+
+ + {/* Scope Assignment */} +
+ +
+
+ + +
+
+ + +
+
+ {/* Mock Location Selector if specific is chosen */} +
+ +
+
+ +
+ + + + + +
+
+ ); +} + +function CreateCategoryDialog({ open, onOpenChange }: { open: boolean; onOpenChange: (open: boolean) => void }) { + const [appearanceType, setAppearanceType] = useState('text'); + + return ( + + + + Add New Category + + Create a product category to organize your items. + + + +
+
+ + +
+ + {/* Appearance Section */} +
+ + + + Text + Color + Image + + + + + + + + + +
+ {['#bfdbfe', '#bbf7d0', '#fecaca', '#ddd6fe', '#fde68a'].map(color => ( + +
+
+ + + +
+ + Click to upload +
+
+
+
+ +
+
+ +
+ + Active +
+
+
+ + {/* Scope Assignment */} +
+ +
+
+ + +
+
+ + +
+
+
+ +
+ + + + + +
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/qrcodes/QRCodesView.tsx b/泰额版/Food Labeling Management Platform/src/components/qrcodes/QRCodesView.tsx new file mode 100644 index 0000000..c530872 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/qrcodes/QRCodesView.tsx @@ -0,0 +1,259 @@ +import React, { useState, useCallback } from 'react'; +import { QRCodeSVG } from 'qrcode.react'; +import { Download, Plus } from 'lucide-react'; +import { Button } from '../ui/button'; +import { Input } from '../ui/input'; +import { Label } from '../ui/label'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '../ui/select'; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from '../ui/table'; +import { cn } from '../ui/utils'; + +// Notes: +// 1. Enter quantity to generate the corresponding number of QR codes +// 2. QR code size can be selected +// 3. Each generated QR has a numeric ID for manual entry when scanning is not available (e.g. recharge) +// 4. Generated QR codes can be bulk exported for batch printing +// 5. QR report shows generation status and usage status + +export type QRSize = 'small' | 'medium' | 'large'; + +const SIZE_OPTIONS: { value: QRSize; label: string; pixels: number }[] = [ + { value: 'small', label: 'Small (80px)', pixels: 80 }, + { value: 'medium', label: 'Medium (120px)', pixels: 120 }, + { value: 'large', label: 'Large (160px)', pixels: 160 }, +]; + +export type QRUsageStatus = 'Unused' | 'Used'; + +export interface QRCodeItem { + id: string; + numericId: string; // For manual entry when scan doesn't work (e.g. recharge) + value: string; // Encoded in QR (same as numericId or extended code) + usageStatus: QRUsageStatus; + createdAt: string; +} + +const PREFIX = 'QR'; +let nextNumericId = 100001; + +function generateNumericId(): string { + return String(nextNumericId++); +} + +export function QRCodesView() { + const [quantity, setQuantity] = useState(10); + const [sizeOption, setSizeOption] = useState('medium'); + const [items, setItems] = useState([]); + const [activeTab, setActiveTab] = useState<'generate' | 'report'>('generate'); + + const pixels = SIZE_OPTIONS.find((s) => s.value === sizeOption)?.pixels ?? 120; + + const handleGenerate = useCallback(() => { + const count = Math.min(Math.max(1, Math.floor(quantity) || 0), 500); + const newItems: QRCodeItem[] = []; + for (let i = 0; i < count; i++) { + const numericId = generateNumericId(); + newItems.push({ + id: `${PREFIX}-${numericId}`, + numericId, + value: numericId, + usageStatus: 'Unused', + createdAt: new Date().toISOString().slice(0, 10), + }); + } + setItems((prev) => [...prev, ...newItems]); + }, [quantity]); + + const [showPrintView, setShowPrintView] = useState(false); + + const handleBulkExportPrint = useCallback(() => { + if (items.length === 0) return; + setShowPrintView(true); + }, [items.length]); + + const handlePrint = useCallback(() => { + window.print(); + }, []); + + const handleClosePrintView = useCallback(() => { + setShowPrintView(false); + }, []); + + const setUsageStatus = useCallback((id: string, status: QRUsageStatus) => { + setItems((prev) => prev.map((item) => (item.id === id ? { ...item, usageStatus: status } : item))); + }, []); + + return ( +
+ {/* Print-only view: full grid of QRs for batch printing */} + {showPrintView && ( +
+
+

QR Codes – Batch Print

+
+ + +
+
+
+ {items.map((item) => ( +
+ +
ID: {item.numericId}
+
+ ))} +
+
+ )} + + {/* Tabs:与 Labels/Reports 一致 */} +
+ {(['generate', 'report'] as const).map((tab) => ( + + ))} +
+ + {/* Content Area:上下左右间距与 Products/Locations 一致(由 Layout main p-8 控制) */} +
+ {activeTab === 'generate' && ( +
+ {/* 1. Quantity input and size selection — 圆角、细边框 */} +
+
+ + setQuantity(Number(e.target.value) || 0)} + className="w-32 rounded-lg border border-black h-9" + /> +
+
+ + +
+ +
+ + {/* 2 & 3. Generated QRs; 4. Bulk export */} +
+ + {items.length} QR code(s) generated. Each has a numeric ID for manual entry when scanning is not available. + + {items.length > 0 && ( + + )} +
+ + {items.length > 0 && ( +
+ {items.map((item) => ( +
+ +
ID: {item.numericId}
+
{item.usageStatus}
+
+ ))} +
+ )} +
+ )} + + {activeTab === 'report' && ( +
+

+ QR code generation and usage status. Use this report to see which codes have been used (e.g. after recharge or scan). +

+
+ + + + QR ID + Generation Status + Usage Status + Date Generated + + + + {items.length === 0 ? ( + + + No QR codes generated yet. Go to Generate & Export and enter a quantity, then click Generate. + + + ) : ( + items.map((row) => ( + + {row.numericId} + Generated + + + {row.usageStatus} + + + + {row.createdAt} + + )) + )} + +
+
+
+ )} +
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/reports/ReportsView.tsx b/泰额版/Food Labeling Management Platform/src/components/reports/ReportsView.tsx new file mode 100755 index 0000000..1c42fc5 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/reports/ReportsView.tsx @@ -0,0 +1,403 @@ +import React, { useState } from 'react'; +import { + Search, + Download, + Printer, + Calendar, + Filter, + BarChart3, + PieChart, + LineChart, + ArrowUpRight, + RefreshCw, + FileText +} from 'lucide-react'; +import { Button } from "../ui/button"; +import { Input } from "../ui/input"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "../ui/table"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "../ui/select"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "../ui/tabs"; +import { Card, CardContent, CardHeader, CardTitle, CardDescription } from "../ui/card"; +import { Badge } from "../ui/badge"; +import { + BarChart, + Bar, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + Legend, + ResponsiveContainer, + Line, + LineChart as RechartsLineChart +} from 'recharts'; +import { toast } from "sonner@2.0.3"; +import { cn } from "../ui/utils"; + +// --- Mock Data --- + +const MOCK_PRINT_LOG = [ + { + id: '1-251201', + productName: 'Whole Milk', + category: 'Dairy', + printedAt: '2024-03-20 09:30 AM', + printedBy: 'Alice Johnson', + location: 'Downtown Store (101)', + expiryDate: '2024-03-27', + status: 'Valid' + }, + { + id: '2-251201', + productName: 'Ground Beef', + category: 'Meat', + printedAt: '2024-03-20 10:15 AM', + printedBy: 'Bob Smith', + location: 'Uptown Store (102)', + expiryDate: '2024-03-23', + status: 'Valid' + }, + { + id: '3-251201', + productName: 'Croissant', + category: 'Bakery', + printedAt: '2024-03-19 14:00 PM', + printedBy: 'Charlie Brown', + location: 'Downtown Store (101)', + expiryDate: '2024-03-20', + status: 'Expired' + }, + { + id: '4-251201', + productName: 'Caesar Salad', + category: 'Deli', + printedAt: '2024-03-18 11:45 AM', + printedBy: 'Alice Johnson', + location: 'Downtown Store (101)', + expiryDate: '2024-03-21', + status: 'Expiring Soon' + }, + { + id: '5-251201', + productName: 'Orange Juice', + category: 'Beverage', + printedAt: '2024-03-18 08:20 AM', + printedBy: 'Bob Smith', + location: 'Airport Kiosk (201)', + expiryDate: '2024-03-25', + status: 'Valid' + }, +]; + +const MOCK_CATEGORY_STATS = [ + { name: 'Dairy', count: 450 }, + { name: 'Meat', count: 320 }, + { name: 'Bakery', count: 280 }, + { name: 'Deli', count: 190 }, + { name: 'Produce', count: 150 }, + { name: 'Beverage', count: 120 }, +]; + +const MOCK_USAGE_TRENDS = [ + { date: 'Mon', count: 120 }, + { date: 'Tue', count: 132 }, + { date: 'Wed', count: 101 }, + { date: 'Thu', count: 134 }, + { date: 'Fri', count: 190 }, + { date: 'Sat', count: 230 }, + { date: 'Sun', count: 210 }, +]; + +export function ReportsView() { + const [activeTab, setActiveTab] = useState('print-log'); + + const handleReprint = (labelId: string) => { + // Logic to reprint would go here + // For now, we simulate the action + toast.success(`Reprinting label ${labelId}`, { + description: "Watermark 'RePrint' applied.", + }); + }; + + return ( +
+ {/* Toolbar:与 Products/Locations 一致 — 单行、圆角、细边框、bg-gray-50、无标题、框内文字黑色 */} +
+
+
+ + +
+ + + +
+ Period Search: +
+ + + - + +
+
+
+ +
+
+ + {/* Tabs:参考 Labels 的 tab 形式 */} +
+ {(['print-log', 'label-report'] as const).map((tab) => ( + + ))} +
+ + {/* Content Area:与 Products 一致,无内边距 */} +
+ + {activeTab === 'print-log' && ( +
+ + + + Label ID + Product Name + Category + Printed At + Printed By + Location + Expiry Date + Action + + + + {MOCK_PRINT_LOG.map((log) => ( + + {log.id} + {log.productName} + + + {log.category} + + + {log.printedAt} + {log.printedBy} + {log.location} + + + {log.expiryDate} + + + + + + + ))} + +
+
+ )} + + {activeTab === 'label-report' && ( +
+ {/* Summary Cards */} +
+ + + Total Labels Printed + + + +
2,543
+

+20.1% from last month

+
+
+ + + Most Printed Category + + + +
Dairy
+

450 labels generated

+
+
+ + + Top Product + + + +
Whole Milk
+

182 labels generated

+
+
+ + + Avg. Daily Prints + + + +
85
+

+12% from last week

+
+
+
+ +
+ {/* Category Breakdown Chart */} + + + Labels by Category + + Distribution of printed labels across product categories. + + + + + + + + `${value}`} /> + + + + + + + + {/* Usage Trend Chart */} + + + Print Volume Trends + + Daily label printing volume for the last 7 days. + + + + + + + + + + + + + + +
+ + {/* Top Products Table */} + + + Most Used Products + + + + + + Product Name + Category + Total Printed + Usage % + + + + + Whole Milk + Dairy + 182 + 7.2% + + + Ground Beef 80/20 + Meat + 145 + 5.7% + + + Chicken Breast + Meat + 132 + 5.2% + + + Sliced Ham + Deli + 98 + 3.8% + + +
+
+
+ +
+ )} +
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/training/TrainingView.tsx b/泰额版/Food Labeling Management Platform/src/components/training/TrainingView.tsx new file mode 100755 index 0000000..d1b1455 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/training/TrainingView.tsx @@ -0,0 +1,273 @@ +import React, { useState } from 'react'; +import { + Plus, + Search, + MapPin, + Store, + Pencil, + X, + FileText, + Image as ImageIcon, + ChevronDown, + ChevronRight, + HelpCircle, + ArrowUpDown, + Lock +} from 'lucide-react'; +import { Input } from "../ui/input"; +import { Button } from "../ui/button"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "../ui/select"; +import { cn } from "../ui/utils"; + +// Mock Data Types +type FileItem = { + id: string; + name: string; + date: string; + type: 'image' | 'doc'; + url?: string; +}; + +type SubCategory = { + id: string; + name: string; + files: FileItem[]; + isOpen?: boolean; +}; + +type Category = { + id: string; + name: string; + subcategories: SubCategory[]; + isOpen?: boolean; +}; + +export function TrainingView() { + const [categories, setCategories] = useState([ + { + id: '1', + name: 'Pop', + isOpen: true, + subcategories: [ + { + id: '1-1', + name: '2024', + isOpen: true, + files: [ + { id: 'f1', name: 'uuuuu', date: '10/23/24, 12:21 AM', type: 'image' }, + { id: 'f2', name: '664EF167-DFCE-49C1-A417-DC09FEDF78D7.jpg', date: '11/24/25, 8:40 PM', type: 'image' } + ] + } + ] + }, + { + id: '2', + name: 'Training', + isOpen: true, + subcategories: [ + { + id: '2-1', + name: 'BOH', + isOpen: false, + files: [] + }, + { + id: '2-2', + name: 'FOH', + isOpen: true, + files: [] // Empty for demo to match screenshot structure which shows FILES section but maybe empty? + // Actually screenshot shows FOH expanded and FILES header but no files listed below it in the visible area, + // or maybe the FILES header is part of the subcategory content. + } + ] + }, + { + id: '3', + name: 'ww', + isOpen: false, + subcategories: [] + } + ]); + + const toggleCategory = (id: string) => { + setCategories(prev => prev.map(cat => + cat.id === id ? { ...cat, isOpen: !cat.isOpen } : cat + )); + }; + + const toggleSubcategory = (catId: string, subId: string) => { + setCategories(prev => prev.map(cat => { + if (cat.id !== catId) return cat; + return { + ...cat, + subcategories: cat.subcategories.map(sub => + sub.id === subId ? { ...sub, isOpen: !sub.isOpen } : sub + ) + }; + })); + }; + + return ( +
+ {/* Controls: Search, Location — 与 Labels 等页一致的框样式:单行、圆角、细边框、统一高度 40px */} +
+ + +
+ + {/* Header Bar */} +
+

Information

+
+
NEW
+ + 55789 +
+
+ + {/* Main Content Area */} +
+ + {/* New Category Button */} + + + {/* Categories List */} +
+ {categories.map(category => ( +
+ {/* Category Header */} +
+ +
+ + +
+
+ + {/* Category Content */} + {category.isOpen && ( +
+ {/* New Subcategory Button */} + + + {/* Subcategories List */} +
+ {category.subcategories.map(sub => ( +
+ {/* Subcategory Header */} +
+ +
+ + +
+
+ + {/* Subcategory Content (Files) */} + {sub.isOpen && ( +
+
Files
+ + {/* File Actions */} +
+ + + + +
+ + {/* Files List */} +
+ {sub.files.length > 0 ? ( + sub.files.map(file => ( +
+
+ {file.type === 'image' ? ( + + ) : ( + + )} +
+
+
{file.name}
+
+
{file.date}
+
+ + + +
+
+ )) + ) : ( +
+ No files in this subcategory +
+ )} +
+
+ )} +
+ ))} + {category.subcategories.length === 0 && ( +
No subcategories
+ )} +
+
+ )} +
+ ))} +
+
+
+ ); +} diff --git a/泰额版/Food Labeling Management Platform/src/components/ui/accordion.tsx b/泰额版/Food Labeling Management Platform/src/components/ui/accordion.tsx new file mode 100755 index 0000000..aa2c37b --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/ui/accordion.tsx @@ -0,0 +1,66 @@ +"use client"; + +import * as React from "react"; +import * as AccordionPrimitive from "@radix-ui/react-accordion@1.2.3"; +import { ChevronDownIcon } from "lucide-react@0.487.0"; + +import { cn } from "./utils"; + +function Accordion({ + ...props +}: React.ComponentProps) { + return ; +} + +function AccordionItem({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function AccordionTrigger({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + + svg]:rotate-180", + className, + )} + {...props} + > + {children} + + + + ); +} + +function AccordionContent({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + +
{children}
+
+ ); +} + +export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }; diff --git a/泰额版/Food Labeling Management Platform/src/components/ui/alert-dialog.tsx b/泰额版/Food Labeling Management Platform/src/components/ui/alert-dialog.tsx new file mode 100755 index 0000000..68f3605 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/ui/alert-dialog.tsx @@ -0,0 +1,157 @@ +"use client"; + +import * as React from "react"; +import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog@1.1.6"; + +import { cn } from "./utils"; +import { buttonVariants } from "./button"; + +function AlertDialog({ + ...props +}: React.ComponentProps) { + return ; +} + +function AlertDialogTrigger({ + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function AlertDialogPortal({ + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function AlertDialogOverlay({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function AlertDialogContent({ + className, + ...props +}: React.ComponentProps) { + return ( + + + + + ); +} + +function AlertDialogHeader({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ); +} + +function AlertDialogFooter({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ); +} + +function AlertDialogTitle({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function AlertDialogDescription({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function AlertDialogAction({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function AlertDialogCancel({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +export { + AlertDialog, + AlertDialogPortal, + AlertDialogOverlay, + AlertDialogTrigger, + AlertDialogContent, + AlertDialogHeader, + AlertDialogFooter, + AlertDialogTitle, + AlertDialogDescription, + AlertDialogAction, + AlertDialogCancel, +}; diff --git a/泰额版/Food Labeling Management Platform/src/components/ui/alert.tsx b/泰额版/Food Labeling Management Platform/src/components/ui/alert.tsx new file mode 100755 index 0000000..856b94d --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/ui/alert.tsx @@ -0,0 +1,66 @@ +import * as React from "react"; +import { cva, type VariantProps } from "class-variance-authority@0.7.1"; + +import { cn } from "./utils"; + +const alertVariants = cva( + "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", + { + variants: { + variant: { + default: "bg-card text-card-foreground", + destructive: + "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +); + +function Alert({ + className, + variant, + ...props +}: React.ComponentProps<"div"> & VariantProps) { + return ( +
+ ); +} + +function AlertTitle({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ); +} + +function AlertDescription({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ); +} + +export { Alert, AlertTitle, AlertDescription }; diff --git a/泰额版/Food Labeling Management Platform/src/components/ui/aspect-ratio.tsx b/泰额版/Food Labeling Management Platform/src/components/ui/aspect-ratio.tsx new file mode 100755 index 0000000..2a2f462 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/ui/aspect-ratio.tsx @@ -0,0 +1,11 @@ +"use client"; + +import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio@1.1.2"; + +function AspectRatio({ + ...props +}: React.ComponentProps) { + return ; +} + +export { AspectRatio }; diff --git a/泰额版/Food Labeling Management Platform/src/components/ui/avatar.tsx b/泰额版/Food Labeling Management Platform/src/components/ui/avatar.tsx new file mode 100755 index 0000000..589b166 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/ui/avatar.tsx @@ -0,0 +1,53 @@ +"use client"; + +import * as React from "react"; +import * as AvatarPrimitive from "@radix-ui/react-avatar@1.1.3"; + +import { cn } from "./utils"; + +function Avatar({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function AvatarImage({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function AvatarFallback({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +export { Avatar, AvatarImage, AvatarFallback }; diff --git a/泰额版/Food Labeling Management Platform/src/components/ui/badge.tsx b/泰额版/Food Labeling Management Platform/src/components/ui/badge.tsx new file mode 100755 index 0000000..3f8eff8 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/ui/badge.tsx @@ -0,0 +1,46 @@ +import * as React from "react"; +import { Slot } from "@radix-ui/react-slot@1.1.2"; +import { cva, type VariantProps } from "class-variance-authority@0.7.1"; + +import { cn } from "./utils"; + +const badgeVariants = cva( + "inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90", + secondary: + "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90", + destructive: + "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", + outline: + "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +); + +function Badge({ + className, + variant, + asChild = false, + ...props +}: React.ComponentProps<"span"> & + VariantProps & { asChild?: boolean }) { + const Comp = asChild ? Slot : "span"; + + return ( + + ); +} + +export { Badge, badgeVariants }; diff --git a/泰额版/Food Labeling Management Platform/src/components/ui/breadcrumb.tsx b/泰额版/Food Labeling Management Platform/src/components/ui/breadcrumb.tsx new file mode 100755 index 0000000..d2adf98 --- /dev/null +++ b/泰额版/Food Labeling Management Platform/src/components/ui/breadcrumb.tsx @@ -0,0 +1,109 @@ +import * as React from "react"; +import { Slot } from "@radix-ui/react-slot@1.1.2"; +import { ChevronRight, MoreHorizontal } from "lucide-react@0.487.0"; + +import { cn } from "./utils"; + +function Breadcrumb({ ...props }: React.ComponentProps<"nav">) { + return