poinqu-ui-kit 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../components/ui/icon-data.ts","../components/ui/Icon.tsx","../components/ui/Collapse.tsx","../components/ui/Accordion.tsx","../components/ui/Badge.tsx","../components/ui/Button.tsx","../components/ui/Modal.tsx","../components/ui/AccountModal.tsx","../components/ui/Alert.tsx","../components/ui/AlertDialog.tsx","../components/ui/Spinner.tsx","../components/ui/Attachment.tsx","../components/ui/Avatar.tsx","../node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs","../node_modules/next/dist/shared/lib/router/utils/querystring.js","../node_modules/next/dist/shared/lib/router/utils/format-url.js","../node_modules/next/dist/shared/lib/router/utils/omit.js","../node_modules/next/dist/shared/lib/utils.js","../node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js","../node_modules/next/dist/shared/lib/router/utils/parse-path.js","../node_modules/next/dist/client/normalize-trailing-slash.js","../node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js","../node_modules/next/dist/client/has-base-path.js","../node_modules/next/dist/shared/lib/router/utils/is-local-url.js","../node_modules/next/dist/shared/lib/router/utils/sorted-routes.js","../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../node_modules/next/dist/shared/lib/segment.js","../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../node_modules/next/dist/shared/lib/router/utils/interception-routes.js","../node_modules/next/dist/shared/lib/router/utils/is-dynamic.js","../node_modules/next/dist/shared/lib/router/utils/index.js","../node_modules/next/dist/compiled/path-to-regexp/index.js","../node_modules/next/dist/lib/route-pattern-normalizer.js","../node_modules/next/dist/shared/lib/router/utils/route-match-utils.js","../node_modules/next/dist/shared/lib/router/utils/route-matcher.js","../node_modules/next/dist/lib/constants.js","../node_modules/next/dist/shared/lib/escape-regexp.js","../node_modules/next/dist/shared/lib/invariant-error.js","../node_modules/next/dist/shared/lib/router/utils/parse-loader-tree.js","../node_modules/next/dist/shared/lib/router/utils/get-segment-param.js","../node_modules/next/dist/shared/lib/router/routes/app.js","../node_modules/next/dist/shared/lib/router/utils/interception-prefix-from-param-type.js","../node_modules/next/dist/shared/lib/router/utils/resolve-param-value.js","../node_modules/next/dist/shared/lib/router/utils/get-dynamic-param.js","../node_modules/next/dist/shared/lib/router/utils/route-regex.js","../node_modules/next/dist/shared/lib/router/utils/interpolate-as.js","../node_modules/next/dist/client/resolve-href.js","../node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js","../node_modules/next/dist/shared/lib/router/utils/add-locale.js","../node_modules/next/dist/client/add-locale.js","../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../node_modules/next/dist/shared/lib/router-context.shared-runtime.js","../node_modules/next/dist/client/request-idle-callback.js","../node_modules/next/dist/client/use-intersection.js","../node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js","../node_modules/next/dist/client/normalize-locale-path.js","../node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js","../node_modules/next/dist/client/detect-domain-locale.js","../node_modules/next/dist/client/get-domain-locale.js","../node_modules/next/dist/client/add-base-path.js","../node_modules/next/dist/client/use-merged-ref.js","../node_modules/next/dist/shared/lib/utils/error-once.js","../node_modules/next/dist/client/link.js","../node_modules/next/link.js","../components/ui/Breadcrumb.tsx","../components/ui/ButtonGroup.tsx","../components/ui/Card.tsx","../components/ui/Checkbox.tsx","../components/ui/CodeBlock.tsx","../components/ui/Combobox.tsx","../components/ui/Input.tsx","../components/ui/Pagination.tsx","../components/ui/Table.tsx","../components/ui/DataTable.tsx","../components/ui/Dropdown.tsx","../components/ui/EmptyState.tsx","../components/ui/FormField.tsx","../components/ui/Kbd.tsx","../components/ui/ListGroup.tsx","../components/ui/Marker.tsx","../components/ui/PageHeader.tsx","../components/ui/PasswordInput.tsx","../components/ui/Placeholder.tsx","../components/ui/Progress.tsx","../components/ui/RadioGroup.tsx","../lib/data.ts","../components/ui/RangeSelect.tsx","../components/ui/SearchField.tsx","../components/ui/Select.tsx","../components/ui/Slider.tsx","../components/ui/Stat.tsx","../components/ui/StatusBadge.tsx","../components/ui/Stepper.tsx","../components/ui/Switch.tsx","../components/ui/Tabs.tsx","../components/ui/Textarea.tsx","../components/ui/Toast.tsx","../components/ui/Tooltip.tsx","../components/ui/Trace.tsx","../components/ui/Typography.tsx","../components/theme/ThemeProvider.tsx","../components/theme/ThemeToggle.tsx","../components/theme/theme-script.ts","../components/theme/ThemeScript.tsx"],"sourcesContent":["// @generated by scripts/generate-icons.mjs — do not edit manually.\n// Source: lucide-static v1.61.0. Lucide icons are © Lucide Contributors,\n// licensed under the ISC license. See THIRD_PARTY_NOTICES.md.\n//\n// This map is used as an inline SVG fallback for the <iconify-icon> element so\n// icons render instantly (SSR included) without requiring the Iconify runtime.\n// Unknown icon names still fall through to the Iconify web component.\n\nexport const ICON_DATA: Record<string, string> = {\n \"accessibility\": \"<circle cx=\\\"16\\\" cy=\\\"4\\\" r=\\\"1\\\" /> <path d=\\\"m18 19 1-7-6 1\\\" /> <path d=\\\"m5 8 3-3 5.5 3-2.36 3.5\\\" /> <path d=\\\"M4.24 14.5a5 5 0 0 0 6.88 6\\\" /> <path d=\\\"M13.76 17.5a5 5 0 0 0-6.88-6\\\" />\",\n \"activity\": \"<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\\\" />\",\n \"alert-triangle\": \"<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\\\" /> <path d=\\\"M12 9v4\\\" /> <path d=\\\"M12 17h.01\\\" />\",\n \"align-center\": \"<path d=\\\"M21 5H3\\\" /> <path d=\\\"M17 12H7\\\" /> <path d=\\\"M19 19H5\\\" />\",\n \"align-left\": \"<path d=\\\"M21 5H3\\\" /> <path d=\\\"M15 12H3\\\" /> <path d=\\\"M17 19H3\\\" />\",\n \"align-right\": \"<path d=\\\"M21 5H3\\\" /> <path d=\\\"M21 12H9\\\" /> <path d=\\\"M21 19H7\\\" />\",\n \"app-window\": \"<rect x=\\\"2\\\" y=\\\"4\\\" width=\\\"20\\\" height=\\\"16\\\" rx=\\\"2\\\" /> <path d=\\\"M10 4v4\\\" /> <path d=\\\"M2 8h20\\\" /> <path d=\\\"M6 4v4\\\" />\",\n \"archive\": \"<rect width=\\\"20\\\" height=\\\"5\\\" x=\\\"2\\\" y=\\\"3\\\" rx=\\\"1\\\" /> <path d=\\\"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8\\\" /> <path d=\\\"M10 12h4\\\" />\",\n \"arrow-down\": \"<path d=\\\"M12 5v14\\\" /> <path d=\\\"m19 12-7 7-7-7\\\" />\",\n \"arrow-down-up\": \"<path d=\\\"m3 16 4 4 4-4\\\" /> <path d=\\\"M7 20V4\\\" /> <path d=\\\"m21 8-4-4-4 4\\\" /> <path d=\\\"M17 4v16\\\" />\",\n \"arrow-left\": \"<path d=\\\"m12 19-7-7 7-7\\\" /> <path d=\\\"M19 12H5\\\" />\",\n \"arrow-right\": \"<path d=\\\"M5 12h14\\\" /> <path d=\\\"m12 5 7 7-7 7\\\" />\",\n \"arrow-up\": \"<path d=\\\"m5 12 7-7 7 7\\\" /> <path d=\\\"M12 19V5\\\" />\",\n \"arrow-up-right\": \"<path d=\\\"M7 7h10v10\\\" /> <path d=\\\"M7 17 17 7\\\" />\",\n \"atom\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\" /> <path d=\\\"M20.2 20.2c2.04-2.03.02-7.36-4.5-11.9-4.54-4.52-9.87-6.54-11.9-4.5-2.04 2.03-.02 7.36 4.5 11.9 4.54 4.52 9.87 6.54 11.9 4.5Z\\\" /> <path d=\\\"M15.7 15.7c4.52-4.54 6.54-9.87 4.5-11.9-2.03-2.04-7.36-.02-11.9 4.5-4.52 4.54-6.54 9.87-4.5 11.9 2.03 2.04 7.36.02 11.9-4.5Z\\\" />\",\n \"badge\": \"<path d=\\\"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z\\\" />\",\n \"bell\": \"<path d=\\\"M10.268 21a2 2 0 0 0 3.464 0\\\" /> <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\\\" />\",\n \"bell-ring\": \"<path d=\\\"M10.268 21a2 2 0 0 0 3.464 0\\\" /> <path d=\\\"M22 8c0-2.3-.8-4.3-2-6\\\" /> <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\\\" /> <path d=\\\"M4 2C2.8 3.7 2 5.7 2 8\\\" />\",\n \"blocks\": \"<path d=\\\"M10 22V7a1 1 0 0 0-1-1H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5a1 1 0 0 0-1-1H2\\\" /> <rect x=\\\"14\\\" y=\\\"2\\\" width=\\\"8\\\" height=\\\"8\\\" rx=\\\"1\\\" />\",\n \"book-open\": \"<path d=\\\"M12 5v16\\\" /> <path d=\\\"M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z\\\" />\",\n \"box\": \"<path d=\\\"M21 8a2 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.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z\\\" /> <path d=\\\"m3.3 7 8.7 5 8.7-5\\\" /> <path d=\\\"M12 22V12\\\" />\",\n \"brain\": \"<path d=\\\"M12 18V5\\\" /> <path d=\\\"M15 13a4.17 4.17 0 01-3-4 4.17 4.17 0 01-3 4\\\" /> <path d=\\\"M17.707 6.294A3 3 0 1012 5a3 3 0 10-5.707 1.294\\\" /> <path d=\\\"M17.996 5.125a4 4 0 012.526 5.77\\\" /> <path d=\\\"M18 18a4 4 0 002-7.465\\\" /> <path d=\\\"M19.967 17.482a4 4 0 11-7.967.517 4 4 0 11-7.967-.517\\\" /> <path d=\\\"M6 18a4 4 0 01-2-7.465\\\" /> <path d=\\\"M6.004 5.125a4 4 0 00-2.526 5.77\\\" />\",\n \"bug\": \"<path d=\\\"M12 20v-9\\\" /> <path d=\\\"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z\\\" /> <path d=\\\"M14.12 3.88 16 2\\\" /> <path d=\\\"M21 21a4 4 0 0 0-3.81-4\\\" /> <path d=\\\"M21 5a4 4 0 0 1-3.55 3.97\\\" /> <path d=\\\"M22 13h-4\\\" /> <path d=\\\"M3 21a4 4 0 0 1 3.81-4\\\" /> <path d=\\\"M3 5a4 4 0 0 0 3.55 3.97\\\" /> <path d=\\\"M6 13H2\\\" /> <path d=\\\"m8 2 1.88 1.88\\\" /> <path d=\\\"M9 7.13V6a3 3 0 1 1 6 0v1.13\\\" />\",\n \"calendar-days\": \"<path d=\\\"M8 2v3\\\" /> <path d=\\\"M16 2v3\\\" /> <rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" /> <path d=\\\"M3 9h18\\\" /> <path d=\\\"M8 13h.01\\\" /> <path d=\\\"M12 13h.01\\\" /> <path d=\\\"M16 13h.01\\\" /> <path d=\\\"M8 17h.01\\\" /> <path d=\\\"M12 17h.01\\\" /> <path d=\\\"M16 17h.01\\\" />\",\n \"chart-no-axes-column-increasing\": \"<path d=\\\"M5 21v-6\\\" /> <path d=\\\"M12 21V9\\\" /> <path d=\\\"M19 21V3\\\" />\",\n \"check\": \"<path d=\\\"M20 6 9 17l-5-5\\\" />\",\n \"chevron-down\": \"<path d=\\\"m6 9 6 6 6-6\\\" />\",\n \"chevron-left\": \"<path d=\\\"m15 18-6-6 6-6\\\" />\",\n \"chevron-right\": \"<path d=\\\"m9 18 6-6-6-6\\\" />\",\n \"chevrons-down-up\": \"<path d=\\\"m7 20 5-5 5 5\\\" /> <path d=\\\"m7 4 5 5 5-5\\\" />\",\n \"chevrons-up-down\": \"<path d=\\\"m7 15 5 5 5-5\\\" /> <path d=\\\"m7 9 5-5 5 5\\\" />\",\n \"circle-alert\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" /> <line x1=\\\"12\\\" x2=\\\"12\\\" y1=\\\"8\\\" y2=\\\"12\\\" /> <line x1=\\\"12\\\" x2=\\\"12.01\\\" y1=\\\"16\\\" y2=\\\"16\\\" />\",\n \"circle-check\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" /> <path d=\\\"m16 9-5.5 5.5L8 12\\\" />\",\n \"circle-dashed\": \"<path d=\\\"M10.1 2.182a10 10 0 0 1 3.8 0\\\" /> <path d=\\\"M13.9 21.818a10 10 0 0 1-3.8 0\\\" /> <path d=\\\"M17.609 3.721a10 10 0 0 1 2.69 2.7\\\" /> <path d=\\\"M2.182 13.9a10 10 0 0 1 0-3.8\\\" /> <path d=\\\"M20.279 17.609a10 10 0 0 1-2.7 2.69\\\" /> <path d=\\\"M21.818 10.1a10 10 0 0 1 0 3.8\\\" /> <path d=\\\"M3.721 6.391a10 10 0 0 1 2.7-2.69\\\" /> <path d=\\\"M6.391 20.279a10 10 0 0 1-2.69-2.7\\\" />\",\n \"circle-half\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" /> <path d=\\\"M12 18a6 6 0 0 0 0-12v12z\\\" />\",\n \"circle-user-round\": \"<path d=\\\"M17.925 20.056a6 6 0 0 0-11.851.001\\\" /> <circle cx=\\\"12\\\" cy=\\\"11\\\" r=\\\"4\\\" /> <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\",\n \"clock-3\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" /> <path d=\\\"M12 6v6h4\\\" />\",\n \"code-2\": \"<path d=\\\"m18 16 4-4-4-4\\\" /> <path d=\\\"m6 8-4 4 4 4\\\" /> <path d=\\\"m14.5 4-5 16\\\" />\",\n \"columns-3\": \"<rect width=\\\"18\\\" height=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"2\\\" /> <path d=\\\"M9 3v18\\\" /> <path d=\\\"M15 3v18\\\" />\",\n \"compass\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" /> <path d=\\\"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z\\\" />\",\n \"component\": \"<path d=\\\"M15.536 11.293a1 1 0 0 0 0 1.414l2.376 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z\\\" /> <path d=\\\"M2.297 11.293a1 1 0 0 0 0 1.414l2.377 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414L6.088 8.916a1 1 0 0 0-1.414 0z\\\" /> <path d=\\\"M8.916 17.912a1 1 0 0 0 0 1.415l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.415l-2.377-2.376a1 1 0 0 0-1.414 0z\\\" /> <path d=\\\"M8.916 4.674a1 1 0 0 0 0 1.414l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z\\\" />\",\n \"copy\": \"<rect width=\\\"14\\\" height=\\\"14\\\" x=\\\"8\\\" y=\\\"8\\\" rx=\\\"2\\\" ry=\\\"2\\\" /> <path d=\\\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\\\" />\",\n \"corner-down-left\": \"<path d=\\\"M20 4v7a4 4 0 0 1-4 4H4\\\" /> <path d=\\\"m9 10-5 5 5 5\\\" />\",\n \"credit-card\": \"<rect width=\\\"20\\\" height=\\\"14\\\" x=\\\"2\\\" y=\\\"5\\\" rx=\\\"2\\\" /> <line x1=\\\"2\\\" x2=\\\"22\\\" y1=\\\"10\\\" y2=\\\"10\\\" /> <path d=\\\"M6 14h2\\\" />\",\n \"database\": \"<ellipse cx=\\\"12\\\" cy=\\\"5\\\" rx=\\\"9\\\" ry=\\\"3\\\" /> <path d=\\\"M3 5V19A9 3 0 0 0 21 19V5\\\" /> <path d=\\\"M3 12A9 3 0 0 0 21 12\\\" />\",\n \"download\": \"<path d=\\\"M12 15V3\\\" /> <path d=\\\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\\\" /> <path d=\\\"m7 10 5 5 5-5\\\" />\",\n \"ellipsis\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\" /> <circle cx=\\\"19\\\" cy=\\\"12\\\" r=\\\"1\\\" /> <circle cx=\\\"5\\\" cy=\\\"12\\\" r=\\\"1\\\" />\",\n \"ellipsis-vertical\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\" /> <circle cx=\\\"12\\\" cy=\\\"5\\\" r=\\\"1\\\" /> <circle cx=\\\"12\\\" cy=\\\"19\\\" r=\\\"1\\\" />\",\n \"eye\": \"<path d=\\\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\\\" /> <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\" />\",\n \"eye-off\": \"<path d=\\\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\\\" /> <path d=\\\"M14.084 14.158a3 3 0 0 1-4.242-4.242\\\" /> <path d=\\\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\\\" /> <path d=\\\"m2 2 20 20\\\" />\",\n \"file-archive\": \"<path d=\\\"M13.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v11.5\\\" /> <path d=\\\"M14 2v5a1 1 0 0 0 1 1h5\\\" /> <path d=\\\"M8 12v-1\\\" /> <path d=\\\"M8 18v-2\\\" /> <path d=\\\"M8 7V6\\\" /> <circle cx=\\\"8\\\" cy=\\\"20\\\" r=\\\"2\\\" />\",\n \"file-code-2\": \"<path d=\\\"M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35\\\" /> <path d=\\\"M14 2v5a1 1 0 0 0 1 1h5\\\" /> <path d=\\\"m5 16-3 3 3 3\\\" /> <path d=\\\"m9 22 3-3-3-3\\\" />\",\n \"file-search\": \"<path d=\\\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\\\" /> <path d=\\\"M14 2v5a1 1 0 0 0 1 1h5\\\" /> <circle cx=\\\"11.5\\\" cy=\\\"14.5\\\" r=\\\"2.5\\\" /> <path d=\\\"M13.3 16.3 15 18\\\" />\",\n \"file-spreadsheet\": \"<path d=\\\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\\\" /> <path d=\\\"M14 2v5a1 1 0 0 0 1 1h5\\\" /> <path d=\\\"M8 13h2\\\" /> <path d=\\\"M14 13h2\\\" /> <path d=\\\"M8 17h2\\\" /> <path d=\\\"M14 17h2\\\" />\",\n \"file-text\": \"<path d=\\\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\\\" /> <path d=\\\"M14 2v5a1 1 0 0 0 1 1h5\\\" /> <path d=\\\"M10 9H8\\\" /> <path d=\\\"M16 13H8\\\" /> <path d=\\\"M16 17H8\\\" />\",\n \"filter\": \"<path d=\\\"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z\\\" />\",\n \"flame\": \"<path d=\\\"M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4\\\" />\",\n \"flask-conical\": \"<path d=\\\"M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2\\\" /> <path d=\\\"M6.453 15h11.094\\\" /> <path d=\\\"M8.5 2h7\\\" />\",\n \"gauge\": \"<path d=\\\"m12 14 4-4\\\" /> <path d=\\\"M3.34 19a10 10 0 1 1 17.32 0\\\" />\",\n \"git-branch\": \"<path d=\\\"M15 6a9 9 0 0 0-9 9V3\\\" /> <circle cx=\\\"18\\\" cy=\\\"6\\\" r=\\\"3\\\" /> <circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\" />\",\n \"github\": \"<path fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"/>\",\n \"hammer\": \"<path d=\\\"m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9\\\" /> <path d=\\\"m18 15 4-4\\\" /> <path d=\\\"m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5\\\" />\",\n \"hash\": \"<line x1=\\\"4\\\" x2=\\\"20\\\" y1=\\\"9\\\" y2=\\\"9\\\" /> <line x1=\\\"4\\\" x2=\\\"20\\\" y1=\\\"15\\\" y2=\\\"15\\\" /> <line x1=\\\"10\\\" x2=\\\"8\\\" y1=\\\"3\\\" y2=\\\"21\\\" /> <line x1=\\\"16\\\" x2=\\\"14\\\" y1=\\\"3\\\" y2=\\\"21\\\" />\",\n \"headset\": \"<path d=\\\"M3 11h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-5Zm0 0a9 9 0 1 1 18 0m0 0v5a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3Z\\\" /> <path d=\\\"M21 16v2a4 4 0 0 1-4 4h-5\\\" />\",\n \"history\": \"<path d=\\\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\\\" /> <path d=\\\"M3 3v5h5\\\" /> <path d=\\\"M12 7v5l4 2\\\" />\",\n \"home\": \"<path d=\\\"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8\\\" /> <path d=\\\"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\\\" />\",\n \"inbox\": \"<polyline points=\\\"22 12 16 12 14 15 10 15 8 12 2 12\\\" /> <path d=\\\"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\\\" />\",\n \"info\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" /> <path d=\\\"M12 16v-4\\\" /> <path d=\\\"M12 8h.01\\\" />\",\n \"keyboard\": \"<path d=\\\"M10 8h.01\\\" /> <path d=\\\"M12 12h.01\\\" /> <path d=\\\"M14 8h.01\\\" /> <path d=\\\"M16 12h.01\\\" /> <path d=\\\"M18 8h.01\\\" /> <path d=\\\"M6 8h.01\\\" /> <path d=\\\"M7 16h10\\\" /> <path d=\\\"M8 12h.01\\\" /> <rect width=\\\"20\\\" height=\\\"16\\\" x=\\\"2\\\" y=\\\"4\\\" rx=\\\"2\\\" />\",\n \"layout-grid\": \"<rect width=\\\"7\\\" height=\\\"7\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"1\\\" /> <rect width=\\\"7\\\" height=\\\"7\\\" x=\\\"14\\\" y=\\\"3\\\" rx=\\\"1\\\" /> <rect width=\\\"7\\\" height=\\\"7\\\" x=\\\"14\\\" y=\\\"14\\\" rx=\\\"1\\\" /> <rect width=\\\"7\\\" height=\\\"7\\\" x=\\\"3\\\" y=\\\"14\\\" rx=\\\"1\\\" />\",\n \"layout-panel-top\": \"<rect width=\\\"18\\\" height=\\\"7\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"1\\\" /> <rect width=\\\"7\\\" height=\\\"7\\\" x=\\\"3\\\" y=\\\"14\\\" rx=\\\"1\\\" /> <rect width=\\\"7\\\" height=\\\"7\\\" x=\\\"14\\\" y=\\\"14\\\" rx=\\\"1\\\" />\",\n \"life-buoy\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" /> <path d=\\\"m4.93 4.93 4.24 4.24\\\" /> <path d=\\\"m14.83 9.17 4.24-4.24\\\" /> <path d=\\\"m14.83 14.83 4.24 4.24\\\" /> <path d=\\\"m9.17 14.83-4.24 4.24\\\" /> <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\" />\",\n \"link\": \"<path d=\\\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\\\" /> <path d=\\\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\\\" />\",\n \"list\": \"<path d=\\\"M3 5h.01\\\" /> <path d=\\\"M3 12h.01\\\" /> <path d=\\\"M3 19h.01\\\" /> <path d=\\\"M8 5h13\\\" /> <path d=\\\"M8 12h13\\\" /> <path d=\\\"M8 19h13\\\" />\",\n \"list-checks\": \"<path d=\\\"M13 5h8\\\" /> <path d=\\\"M13 12h8\\\" /> <path d=\\\"M13 19h8\\\" /> <path d=\\\"m3 17 2 2 4-4\\\" /> <path d=\\\"m3 7 2 2 4-4\\\" />\",\n \"list-filter\": \"<path d=\\\"M2 5h20\\\" /> <path d=\\\"M6 12h12\\\" /> <path d=\\\"M9 19h6\\\" />\",\n \"list-tree\": \"<path d=\\\"M8 5h13\\\" /> <path d=\\\"M13 12h8\\\" /> <path d=\\\"M13 19h8\\\" /> <path d=\\\"M3 10a2 2 0 0 0 2 2h3\\\" /> <path d=\\\"M3 5v12a2 2 0 0 0 2 2h3\\\" />\",\n \"loader-circle\": \"<path d=\\\"M21 12a9 9 0 1 1-6.219-8.56\\\" />\",\n \"lock\": \"<rect width=\\\"18\\\" height=\\\"11\\\" x=\\\"3\\\" y=\\\"11\\\" rx=\\\"2\\\" ry=\\\"2\\\" /> <path d=\\\"M7 11V7a5 5 0 0 1 10 0v4\\\" />\",\n \"log-out\": \"<path d=\\\"m16 17 5-5-5-5\\\" /> <path d=\\\"M21 12H9\\\" /> <path d=\\\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\\\" />\",\n \"mail\": \"<path d=\\\"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7\\\" /> <rect x=\\\"2\\\" y=\\\"4\\\" width=\\\"20\\\" height=\\\"16\\\" rx=\\\"2\\\" />\",\n \"map-pin\": \"<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\\\" /> <circle cx=\\\"12\\\" cy=\\\"10\\\" r=\\\"3\\\" />\",\n \"maximize-2\": \"<path d=\\\"M15 3h6v6\\\" /> <path d=\\\"m21 3-7 7\\\" /> <path d=\\\"m3 21 7-7\\\" /> <path d=\\\"M9 21H3v-6\\\" />\",\n \"menu\": \"<path d=\\\"M4 5h16\\\" /> <path d=\\\"M4 12h16\\\" /> <path d=\\\"M4 19h16\\\" />\",\n \"message-square-text\": \"<path d=\\\"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z\\\" /> <path d=\\\"M7 11h10\\\" /> <path d=\\\"M7 15h6\\\" /> <path d=\\\"M7 7h8\\\" />\",\n \"minus\": \"<path d=\\\"M5 12h14\\\" />\",\n \"monitor\": \"<rect width=\\\"20\\\" height=\\\"14\\\" x=\\\"2\\\" y=\\\"3\\\" rx=\\\"2\\\" /> <line x1=\\\"8\\\" x2=\\\"16\\\" y1=\\\"21\\\" y2=\\\"21\\\" /> <line x1=\\\"12\\\" x2=\\\"12\\\" y1=\\\"17\\\" y2=\\\"21\\\" />\",\n \"moon-star\": \"<path d=\\\"M18 5h4\\\" /> <path d=\\\"M20 3v4\\\" /> <path d=\\\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\\\" />\",\n \"mountain\": \"<path d=\\\"m8 3 4 8 5-5 5 15H2L8 3z\\\" />\",\n \"mouse-pointer-click\": \"<path d=\\\"M14 4.1 12 6\\\" /> <path d=\\\"m5.1 8-2.9-.8\\\" /> <path d=\\\"m6 12-1.9 2\\\" /> <path d=\\\"M7.2 2.2 8 5.1\\\" /> <path d=\\\"M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z\\\" />\",\n \"notebook-text\": \"<path d=\\\"M2 6h4\\\" /> <path d=\\\"M2 10h4\\\" /> <path d=\\\"M2 14h4\\\" /> <path d=\\\"M2 18h4\\\" /> <rect width=\\\"16\\\" height=\\\"20\\\" x=\\\"4\\\" y=\\\"2\\\" rx=\\\"2\\\" /> <path d=\\\"M9.5 8h5\\\" /> <path d=\\\"M9.5 12H16\\\" /> <path d=\\\"M9.5 16H14\\\" />\",\n \"package\": \"<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\\\" /> <path d=\\\"M12 22V12\\\" /> <polyline points=\\\"3.29 7 12 12 20.71 7\\\" /> <path d=\\\"m7.5 4.27 9 5.15\\\" />\",\n \"palette\": \"<path d=\\\"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z\\\" /> <circle cx=\\\"13.5\\\" cy=\\\"6.5\\\" r=\\\".5\\\" fill=\\\"currentColor\\\" /> <circle cx=\\\"17.5\\\" cy=\\\"10.5\\\" r=\\\".5\\\" fill=\\\"currentColor\\\" /> <circle cx=\\\"6.5\\\" cy=\\\"12.5\\\" r=\\\".5\\\" fill=\\\"currentColor\\\" /> <circle cx=\\\"8.5\\\" cy=\\\"7.5\\\" r=\\\".5\\\" fill=\\\"currentColor\\\" />\",\n \"panel-left\": \"<rect width=\\\"18\\\" height=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"2\\\" /> <path d=\\\"M9 3v18\\\" />\",\n \"panel-right\": \"<rect width=\\\"18\\\" height=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"2\\\" /> <path d=\\\"M15 3v18\\\" />\",\n \"panel-top\": \"<rect width=\\\"18\\\" height=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"2\\\" /> <path d=\\\"M3 9h18\\\" />\",\n \"panels-top-left\": \"<rect width=\\\"18\\\" height=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"2\\\" /> <path d=\\\"M3 9h18\\\" /> <path d=\\\"M9 21V9\\\" />\",\n \"paperclip\": \"<path d=\\\"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551\\\" />\",\n \"play\": \"<path d=\\\"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\\\" />\",\n \"plus\": \"<path d=\\\"M5 12h14\\\" /> <path d=\\\"M12 5v14\\\" />\",\n \"printer\": \"<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\\\" /> <path d=\\\"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6\\\" /> <rect x=\\\"6\\\" y=\\\"14\\\" width=\\\"12\\\" height=\\\"8\\\" rx=\\\"1\\\" />\",\n \"rectangle-ellipsis\": \"<rect width=\\\"20\\\" height=\\\"12\\\" x=\\\"2\\\" y=\\\"6\\\" rx=\\\"2\\\" /> <path d=\\\"M12 12h.01\\\" /> <path d=\\\"M17 12h.01\\\" /> <path d=\\\"M7 12h.01\\\" />\",\n \"refresh-cw\": \"<path d=\\\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\\\" /> <path d=\\\"M21 3v5h-5\\\" /> <path d=\\\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\\\" /> <path d=\\\"M8 16H3v5\\\" />\",\n \"repeat-2\": \"<path d=\\\"m2 9 3-3 3 3\\\" /> <path d=\\\"M13 18H7a2 2 0 0 1-2-2V6\\\" /> <path d=\\\"m22 15-3 3-3-3\\\" /> <path d=\\\"M11 6h6a2 2 0 0 1 2 2v10\\\" />\",\n \"rocket\": \"<path d=\\\"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5\\\" /> <path d=\\\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09\\\" /> <path d=\\\"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z\\\" /> <path d=\\\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05\\\" />\",\n \"rotate-ccw\": \"<path d=\\\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\\\" /> <path d=\\\"M3 3v5h5\\\" />\",\n \"route\": \"<circle cx=\\\"6\\\" cy=\\\"19\\\" r=\\\"3\\\" /> <path d=\\\"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15\\\" /> <circle cx=\\\"18\\\" cy=\\\"5\\\" r=\\\"3\\\" />\",\n \"save\": \"<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\\\" /> <path d=\\\"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7\\\" /> <path d=\\\"M7 3v4a1 1 0 0 0 1 1h7\\\" />\",\n \"search\": \"<path d=\\\"m21 21-4.34-4.34\\\" /> <circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\" />\",\n \"search-x\": \"<path d=\\\"m13.5 8.5-5 5\\\" /> <path d=\\\"m8.5 8.5 5 5\\\" /> <circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\" /> <path d=\\\"m21 21-4.3-4.3\\\" />\",\n \"send\": \"<path d=\\\"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z\\\" /> <path d=\\\"m21.854 2.147-10.94 10.939\\\" />\",\n \"server\": \"<rect width=\\\"20\\\" height=\\\"8\\\" x=\\\"2\\\" y=\\\"2\\\" rx=\\\"2\\\" ry=\\\"2\\\" /> <rect width=\\\"20\\\" height=\\\"8\\\" x=\\\"2\\\" y=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\" /> <line x1=\\\"6\\\" x2=\\\"6.01\\\" y1=\\\"6\\\" y2=\\\"6\\\" /> <line x1=\\\"6\\\" x2=\\\"6.01\\\" y1=\\\"18\\\" y2=\\\"18\\\" />\",\n \"settings-2\": \"<path d=\\\"M14 17H5\\\" /> <path d=\\\"M19 7h-9\\\" /> <circle cx=\\\"17\\\" cy=\\\"17\\\" r=\\\"3\\\" /> <circle cx=\\\"7\\\" cy=\\\"7\\\" r=\\\"3\\\" />\",\n \"shield-alert\": \"<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\\\" /> <path d=\\\"M12 8v4\\\" /> <path d=\\\"M12 16h.01\\\" />\",\n \"shield-check\": \"<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\\\" /> <path d=\\\"m9 12 2 2 4-4\\\" />\",\n \"sliders-horizontal\": \"<path d=\\\"M10 5H3\\\" /> <path d=\\\"M12 19H3\\\" /> <path d=\\\"M14 3v4\\\" /> <path d=\\\"M16 17v4\\\" /> <path d=\\\"M21 12h-9\\\" /> <path d=\\\"M21 19h-5\\\" /> <path d=\\\"M21 5h-7\\\" /> <path d=\\\"M8 10v4\\\" /> <path d=\\\"M8 12H3\\\" />\",\n \"smile\": \"<path d=\\\"M15 10V9\\\" /> <path d=\\\"M16.472 15a6 6 0 01-8.943 0\\\" /> <path d=\\\"M9 10V9\\\" /> <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\",\n \"sparkles\": \"<path d=\\\"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\\\" /> <path d=\\\"M20 2v4\\\" /> <path d=\\\"M22 4h-4\\\" /> <circle cx=\\\"4\\\" cy=\\\"20\\\" r=\\\"2\\\" />\",\n \"square-mouse-pointer\": \"<path d=\\\"M12.034 12.681a.498.498 0 0 1 .647-.647l9 3.5a.5.5 0 0 1-.033.943l-3.444 1.068a1 1 0 0 0-.66.66l-1.067 3.443a.5.5 0 0 1-.943.033z\\\" /> <path d=\\\"M21 11V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h6\\\" />\",\n \"sun\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\" /> <path d=\\\"M12 2v2\\\" /> <path d=\\\"M12 20v2\\\" /> <path d=\\\"m4.93 4.93 1.41 1.41\\\" /> <path d=\\\"m17.66 17.66 1.41 1.41\\\" /> <path d=\\\"M2 12h2\\\" /> <path d=\\\"M20 12h2\\\" /> <path d=\\\"m6.34 17.66-1.41 1.41\\\" /> <path d=\\\"m19.07 4.93-1.41 1.41\\\" />\",\n \"swatch-book\": \"<path d=\\\"M11 17a4 4 0 0 1-8 0V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2Z\\\" /> <path d=\\\"M16.7 13H19a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H7\\\" /> <path d=\\\"M 7 17h.01\\\" /> <path d=\\\"m11 8 2.3-2.3a2.4 2.4 0 0 1 3.404.004L18.6 7.6a2.4 2.4 0 0 1 .026 3.434L9.9 19.8\\\" />\",\n \"table\": \"<path d=\\\"M12 3v18\\\" /> <rect width=\\\"18\\\" height=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"2\\\" /> <path d=\\\"M3 9h18\\\" /> <path d=\\\"M3 15h18\\\" />\",\n \"table-2\": \"<path d=\\\"M3 9h18\\\" /> <path d=\\\"M9 3v18\\\" /> <rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" />\",\n \"terminal\": \"<path d=\\\"M12 19h8\\\" /> <path d=\\\"m4 17 6-6-6-6\\\" />\",\n \"text-cursor-input\": \"<path d=\\\"M12 20h-1a2 2 0 0 1-2-2 2 2 0 0 1-2 2H6\\\" /> <path d=\\\"M13 8h7a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-7\\\" /> <path d=\\\"M5 16H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2h1\\\" /> <path d=\\\"M6 4h1a2 2 0 0 1 2 2 2 2 0 0 1 2-2h1\\\" /> <path d=\\\"M9 6v12\\\" />\",\n \"ticket\": \"<path d=\\\"M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z\\\" /> <path d=\\\"M13 5v2\\\" /> <path d=\\\"M13 17v2\\\" /> <path d=\\\"M13 11v2\\\" />\",\n \"timer\": \"<line x1=\\\"10\\\" x2=\\\"14\\\" y1=\\\"2\\\" y2=\\\"2\\\" /> <line x1=\\\"12\\\" x2=\\\"15\\\" y1=\\\"14\\\" y2=\\\"11\\\" /> <circle cx=\\\"12\\\" cy=\\\"14\\\" r=\\\"8\\\" />\",\n \"trash-2\": \"<path d=\\\"M10 11v6\\\" /> <path d=\\\"M14 11v6\\\" /> <path d=\\\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\\\" /> <path d=\\\"M3 6h18\\\" /> <path d=\\\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\\\" />\",\n \"trending-down\": \"<path d=\\\"M16 17h6v-6\\\" /> <path d=\\\"m22 17-8.5-8.5-5 5L2 7\\\" />\",\n \"trending-up\": \"<path d=\\\"M16 7h6v6\\\" /> <path d=\\\"m22 7-8.5 8.5-5-5L2 17\\\" />\",\n \"triangle-alert\": \"<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\\\" /> <path d=\\\"M12 9v4\\\" /> <path d=\\\"M12 17h.01\\\" />\",\n \"type\": \"<path d=\\\"M12 4v16\\\" /> <path d=\\\"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2\\\" /> <path d=\\\"M9 20h6\\\" />\",\n \"upload-cloud\": \"<path d=\\\"M12 13v8\\\" /> <path d=\\\"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\\\" /> <path d=\\\"m8 17 4-4 4 4\\\" />\",\n \"user-round\": \"<circle cx=\\\"12\\\" cy=\\\"8\\\" r=\\\"5\\\" /> <path d=\\\"M20 21a8 8 0 0 0-16 0\\\" />\",\n \"user-round-check\": \"<path d=\\\"M2 21a8 8 0 0 1 13.292-6\\\" /> <circle cx=\\\"10\\\" cy=\\\"8\\\" r=\\\"5\\\" /> <path d=\\\"m16 19 2 2 4-4\\\" />\",\n \"user-round-plus\": \"<path d=\\\"M2 21a8 8 0 0 1 13.292-6\\\" /> <circle cx=\\\"10\\\" cy=\\\"8\\\" r=\\\"5\\\" /> <path d=\\\"M19 16v6\\\" /> <path d=\\\"M22 19h-6\\\" />\",\n \"users-round\": \"<path d=\\\"M18 21a8 8 0 0 0-16 0\\\" /> <circle cx=\\\"10\\\" cy=\\\"8\\\" r=\\\"5\\\" /> <path d=\\\"M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3\\\" />\",\n \"waypoints\": \"<path d=\\\"m10.586 5.414-5.172 5.172\\\" /> <path d=\\\"m18.586 13.414-5.172 5.172\\\" /> <path d=\\\"M6 12h12\\\" /> <circle cx=\\\"12\\\" cy=\\\"20\\\" r=\\\"2\\\" /> <circle cx=\\\"12\\\" cy=\\\"4\\\" r=\\\"2\\\" /> <circle cx=\\\"20\\\" cy=\\\"12\\\" r=\\\"2\\\" /> <circle cx=\\\"4\\\" cy=\\\"12\\\" r=\\\"2\\\" />\",\n \"workflow\": \"<rect width=\\\"8\\\" height=\\\"8\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"2\\\" /> <path d=\\\"M7 11v4a2 2 0 0 0 2 2h4\\\" /> <rect width=\\\"8\\\" height=\\\"8\\\" x=\\\"13\\\" y=\\\"13\\\" rx=\\\"2\\\" />\",\n \"x\": \"<path d=\\\"M18 6 6 18\\\" /> <path d=\\\"m6 6 12 12\\\" />\",\n \"zap\": \"<path d=\\\"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z\\\" />\",\n};\n","import type { CSSProperties } from \"react\";\nimport { ICON_DATA } from \"./icon-data\";\n\ntype IconProps = {\n name: string;\n className?: string;\n style?: CSSProperties;\n};\n\n/**\n * Icons render as inline SVG when the name is part of the bundled Lucide set\n * (so they work without any runtime), and fall back to the Iconify web\n * component for arbitrary `lucide:*` / `mdi:*` / `simple-icons:*` names.\n *\n * The SVG lives inside the <iconify-icon> element so applications that already\n * load Iconify can still upgrade and render the canonical icon. All existing\n * CSS selectors that target `iconify-icon` keep working.\n */\nexport default function Icon({ name, className, style }: IconProps) {\n const key = name.startsWith(\"lucide:\") ? name.slice(\"lucide:\".length) : name;\n const data = ICON_DATA[key];\n\n return (\n <iconify-icon\n icon={name}\n className={className}\n style={style}\n aria-hidden=\"true\"\n noobserver\n >\n {data ? (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.9\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n focusable=\"false\"\n dangerouslySetInnerHTML={{ __html: data }}\n />\n ) : null}\n </iconify-icon>\n );\n}\n","\"use client\";\r\n\r\nimport { useState, type ReactNode, type SyntheticEvent } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Collapse.module.css\";\r\n\r\nexport type CollapseTone = \"default\" | \"info\" | \"success\" | \"warning\" | \"danger\";\r\n\r\ntype CollapseProps = {\r\n title: string;\r\n description?: string;\r\n icon?: string;\r\n badge?: ReactNode;\r\n tone?: CollapseTone;\r\n defaultOpen?: boolean;\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n children: ReactNode;\r\n className?: string;\r\n};\r\n\r\nexport default function Collapse({\r\n title,\r\n description,\r\n icon,\r\n badge,\r\n tone = \"default\",\r\n defaultOpen = false,\r\n open,\r\n onOpenChange,\r\n children,\r\n className,\r\n}: CollapseProps) {\r\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\r\n const isOpen = open ?? internalOpen;\r\n\r\n const handleToggle = (event: SyntheticEvent<HTMLDetailsElement>) => {\r\n const next = event.currentTarget.open;\r\n if (open === undefined) setInternalOpen(next);\r\n onOpenChange?.(next);\r\n };\r\n\r\n return (\r\n <details\r\n className={[styles.collapse, className].filter(Boolean).join(\" \")}\r\n data-tone={tone}\r\n open={isOpen}\r\n onToggle={handleToggle}\r\n >\r\n <summary className={styles.summary}>\r\n {icon ? (\r\n <span className={styles.icon}>\r\n <Icon name={icon} />\r\n </span>\r\n ) : null}\r\n <span className={styles.texts}>\r\n <span className={styles.title}>{title}</span>\r\n {description ? (\r\n <span className={styles.description}>{description}</span>\r\n ) : null}\r\n </span>\r\n {badge !== undefined && badge !== null ? (\r\n <span className={styles.badge}>{badge}</span>\r\n ) : null}\r\n <Icon name=\"lucide:chevron-down\" className={styles.chevron} />\r\n </summary>\r\n <div className={styles.content}>{children}</div>\r\n </details>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { useState, type ReactNode } from \"react\";\r\nimport Collapse, { type CollapseTone } from \"./Collapse\";\r\nimport styles from \"./Accordion.module.css\";\r\n\r\nexport type AccordionItem = {\r\n id: string;\r\n title: string;\r\n description?: string;\r\n icon?: string;\r\n badge?: ReactNode;\r\n tone?: CollapseTone;\r\n content: ReactNode;\r\n};\r\n\r\ntype AccordionProps = {\r\n items: AccordionItem[];\r\n type?: \"single\" | \"multiple\";\r\n defaultValue?: string[];\r\n value?: string[];\r\n onValueChange?: (value: string[]) => void;\r\n className?: string;\r\n};\r\n\r\nexport default function Accordion({\r\n items,\r\n type = \"single\",\r\n defaultValue = [],\r\n value,\r\n onValueChange,\r\n className,\r\n}: AccordionProps) {\r\n const [internalValue, setInternalValue] = useState(defaultValue);\r\n const currentValue = value ?? internalValue;\r\n\r\n const toggle = (id: string, open: boolean) => {\r\n let next: string[];\r\n\r\n if (open) {\r\n next =\r\n type === \"single\"\r\n ? [id]\r\n : Array.from(new Set([...currentValue, id]));\r\n } else {\r\n next = currentValue.filter((item) => item !== id);\r\n }\r\n\r\n if (value === undefined) setInternalValue(next);\r\n onValueChange?.(next);\r\n };\r\n\r\n return (\r\n <div className={[styles.accordion, className].filter(Boolean).join(\" \")}>\r\n {items.map((item) => (\r\n <Collapse\r\n key={item.id}\r\n title={item.title}\r\n description={item.description}\r\n icon={item.icon}\r\n badge={item.badge}\r\n tone={item.tone}\r\n open={currentValue.includes(item.id)}\r\n onOpenChange={(open) => toggle(item.id, open)}\r\n >\r\n {item.content}\r\n </Collapse>\r\n ))}\r\n </div>\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\r\nimport type { Tone } from \"@/lib/data\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Badge.module.css\";\r\n\r\nexport type BadgeTone = Tone | \"neutral\";\r\n\r\ntype BadgeProps = {\r\n children: ReactNode;\r\n tone?: BadgeTone;\r\n variant?: \"soft\" | \"solid\" | \"outline\";\r\n size?: \"sm\" | \"md\";\r\n dot?: boolean;\r\n icon?: string;\r\n className?: string;\r\n};\r\n\r\nexport default function Badge({\r\n children,\r\n tone = \"neutral\",\r\n variant = \"soft\",\r\n size = \"md\",\r\n dot = false,\r\n icon,\r\n className,\r\n}: BadgeProps) {\r\n return (\r\n <span\r\n className={[styles.badge, className].filter(Boolean).join(\" \")}\r\n data-tone={tone}\r\n data-variant={variant}\r\n data-size={size}\r\n >\r\n {dot ? <span className={styles.dot} aria-hidden=\"true\" /> : null}\r\n {icon ? <Icon name={icon} /> : null}\r\n <span>{children}</span>\r\n </span>\r\n );\r\n}\r\n","import type { ButtonHTMLAttributes } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Button.module.css\";\r\n\r\nexport type ButtonTone = \"default\" | \"primary\" | \"danger\" | \"success\" | \"warning\";\r\nexport type ButtonVariant = \"outline\" | \"solid\" | \"ghost\";\r\n\r\ntype ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\r\n label: string;\r\n icon?: string;\r\n iconRight?: string;\r\n tone?: ButtonTone;\r\n variant?: ButtonVariant;\r\n size?: \"sm\" | \"md\";\r\n iconOnly?: boolean;\r\n loading?: boolean;\r\n fullWidth?: boolean;\r\n};\r\n\r\nexport default function Button({\r\n label,\r\n icon,\r\n iconRight,\r\n tone = \"default\",\r\n variant = \"outline\",\r\n size = \"md\",\r\n iconOnly = false,\r\n loading = false,\r\n fullWidth = false,\r\n className,\r\n type = \"button\",\r\n disabled,\r\n title,\r\n \"aria-label\": ariaLabel,\r\n ...rest\r\n}: ButtonProps) {\r\n return (\r\n <button\r\n {...rest}\r\n type={type}\r\n className={[styles.button, className].filter(Boolean).join(\" \")}\r\n data-tone={tone}\r\n data-variant={variant}\r\n data-size={size}\r\n data-icon-only={iconOnly ? \"\" : undefined}\r\n data-full-width={fullWidth ? \"\" : undefined}\r\n data-loading={loading ? \"\" : undefined}\r\n disabled={disabled || loading}\r\n aria-busy={loading || undefined}\r\n aria-label={ariaLabel ?? (iconOnly ? label : undefined)}\r\n title={iconOnly ? title ?? label : title}\r\n >\r\n {loading ? (\r\n <span className={styles.spinner} aria-hidden=\"true\" />\r\n ) : icon ? (\r\n <Icon name={icon} />\r\n ) : null}\r\n {iconOnly ? null : <span className={styles.label}>{label}</span>}\r\n {iconRight && !iconOnly && !loading ? <Icon name={iconRight} /> : null}\r\n </button>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useId, useRef, type ReactNode } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Modal.module.css\";\r\n\r\nexport type ModalTone = \"default\" | \"info\" | \"success\" | \"warning\" | \"danger\";\r\n\r\ntype ModalProps = {\r\n open: boolean;\r\n onClose: () => void;\r\n title: string;\r\n description?: string;\r\n icon?: string;\r\n tone?: ModalTone;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n presentation?: \"center\" | \"sheet\" | \"fullscreen\";\r\n children?: ReactNode;\r\n footer?: ReactNode;\r\n closeOnBackdrop?: boolean;\r\n};\r\n\r\nexport default function Modal({\r\n open,\r\n onClose,\r\n title,\r\n description,\r\n icon,\r\n tone = \"default\",\r\n size = \"md\",\r\n presentation = \"center\",\r\n children,\r\n footer,\r\n closeOnBackdrop = true,\r\n}: ModalProps) {\r\n const dialogRef = useRef<HTMLDialogElement>(null);\r\n const titleId = useId();\r\n const descriptionId = useId();\r\n\r\n useEffect(() => {\r\n const dialog = dialogRef.current;\r\n if (!dialog) return;\r\n if (open && !dialog.open) dialog.showModal();\r\n if (!open && dialog.open) dialog.close();\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const previous = document.body.style.overflow;\r\n document.body.style.overflow = \"hidden\";\r\n return () => {\r\n document.body.style.overflow = previous;\r\n };\r\n }, [open]);\r\n\r\n return (\r\n <dialog\r\n ref={dialogRef}\r\n className={styles.dialog}\r\n data-size={size}\r\n data-presentation={presentation}\r\n data-tone={tone}\r\n aria-labelledby={titleId}\r\n aria-describedby={description ? descriptionId : undefined}\r\n onClose={() => {\r\n if (open) onClose();\r\n }}\r\n onCancel={(event) => {\r\n event.preventDefault();\r\n onClose();\r\n }}\r\n onClick={(event) => {\r\n if (!closeOnBackdrop) return;\r\n if (event.target !== event.currentTarget) return;\r\n const rect = event.currentTarget.getBoundingClientRect();\r\n const outside =\r\n event.clientX < rect.left ||\r\n event.clientX > rect.right ||\r\n event.clientY < rect.top ||\r\n event.clientY > rect.bottom;\r\n if (outside) onClose();\r\n }}\r\n >\r\n <div className={styles.header}>\r\n {icon ? (\r\n <span className={styles.icon}>\r\n <Icon name={icon} />\r\n </span>\r\n ) : null}\r\n <div className={styles.headerText}>\r\n <h2 id={titleId} className={styles.title}>\r\n {title}\r\n </h2>\r\n {description ? (\r\n <p id={descriptionId} className={styles.description}>\r\n {description}\r\n </p>\r\n ) : null}\r\n </div>\r\n <button\r\n type=\"button\"\r\n className={styles.close}\r\n aria-label=\"Close modal\"\r\n onClick={onClose}\r\n >\r\n <Icon name=\"lucide:x\" />\r\n </button>\r\n </div>\r\n\r\n {children ? <div className={styles.body}>{children}</div> : null}\r\n {footer ? <div className={styles.footer}>{footer}</div> : null}\r\n </dialog>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport type { User } from \"@/lib/data\";\r\nimport Badge from \"./Badge\";\r\nimport Button from \"./Button\";\r\nimport Modal from \"./Modal\";\r\nimport styles from \"./AccountModal.module.css\";\r\n\r\ntype AccountModalProps = {\r\n open: boolean;\r\n onClose: () => void;\r\n user: User;\r\n role?: string;\r\n workspace?: string;\r\n onSignOut?: () => void;\r\n};\r\n\r\nexport default function AccountModal({\r\n open,\r\n onClose,\r\n user,\r\n role = \"Administrator\",\r\n workspace = \"Poinqu\",\r\n onSignOut,\r\n}: AccountModalProps) {\r\n return (\r\n <Modal\r\n open={open}\r\n onClose={onClose}\r\n title=\"Account\"\r\n description=\"Informasi akun yang sedang login.\"\r\n icon=\"lucide:user-round\"\r\n tone=\"info\"\r\n size=\"sm\"\r\n footer={\r\n <>\r\n {onSignOut ? (\r\n <Button\r\n label=\"Sign out\"\r\n variant=\"ghost\"\r\n tone=\"danger\"\r\n icon=\"lucide:log-out\"\r\n onClick={() => {\r\n onSignOut();\r\n onClose();\r\n }}\r\n />\r\n ) : null}\r\n <Button\r\n label=\"Close\"\r\n variant=\"solid\"\r\n tone=\"primary\"\r\n onClick={onClose}\r\n />\r\n </>\r\n }\r\n >\r\n <div className={styles.account}>\r\n <span className={styles.avatar}>{user.initials}</span>\r\n <span className={styles.text}>\r\n <strong>{user.name}</strong>\r\n <span>{user.email}</span>\r\n </span>\r\n <Badge tone=\"success\" dot size=\"sm\">\r\n Online\r\n </Badge>\r\n </div>\r\n\r\n <div className={styles.details}>\r\n <div>\r\n <span>Role</span>\r\n <strong>{role}</strong>\r\n </div>\r\n <div>\r\n <span>Workspace</span>\r\n <strong>{workspace}</strong>\r\n </div>\r\n <div>\r\n <span>Status</span>\r\n <Badge tone=\"success\" dot size=\"sm\">\r\n Online\r\n </Badge>\r\n </div>\r\n </div>\r\n </Modal>\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Alert.module.css\";\r\n\r\nexport type AlertTone = \"info\" | \"success\" | \"warning\" | \"danger\";\r\n\r\nconst TONE_ICONS: Record<AlertTone, string> = {\r\n info: \"lucide:info\",\r\n success: \"lucide:circle-check\",\r\n warning: \"lucide:triangle-alert\",\r\n danger: \"lucide:circle-alert\",\r\n};\r\n\r\ntype AlertProps = {\r\n title: string;\r\n description?: ReactNode;\r\n tone?: AlertTone;\r\n icon?: string;\r\n onDismiss?: () => void;\r\n className?: string;\r\n};\r\n\r\nexport default function Alert({\r\n title,\r\n description,\r\n tone = \"info\",\r\n icon,\r\n onDismiss,\r\n className,\r\n}: AlertProps) {\r\n return (\r\n <div\r\n className={[styles.alert, className].filter(Boolean).join(\" \")}\r\n data-tone={tone}\r\n role=\"alert\"\r\n >\r\n <Icon name={icon ?? TONE_ICONS[tone]} className={styles.icon} />\r\n <div className={styles.content}>\r\n <strong className={styles.title}>{title}</strong>\r\n {description ? <p className={styles.description}>{description}</p> : null}\r\n </div>\r\n {onDismiss ? (\r\n <button\r\n type=\"button\"\r\n className={styles.close}\r\n aria-label=\"Dismiss alert\"\r\n onClick={onDismiss}\r\n >\r\n <Icon name=\"lucide:x\" />\r\n </button>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useId, useRef, type ReactNode } from \"react\";\r\nimport Button from \"./Button\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./AlertDialog.module.css\";\r\n\r\nexport type AlertDialogTone = \"default\" | \"danger\" | \"warning\" | \"success\";\r\n\r\ntype AlertDialogProps = {\r\n open: boolean;\r\n onOpenChange: (open: boolean) => void;\r\n title: string;\r\n description?: ReactNode;\r\n icon?: string;\r\n tone?: AlertDialogTone;\r\n confirmLabel?: string;\r\n cancelLabel?: string;\r\n onConfirm?: () => void;\r\n loading?: boolean;\r\n size?: \"default\" | \"sm\";\r\n};\r\n\r\nconst TONE_ICONS: Record<AlertDialogTone, string> = {\r\n default: \"lucide:info\",\r\n danger: \"lucide:triangle-alert\",\r\n warning: \"lucide:alert-triangle\",\r\n success: \"lucide:circle-check\",\r\n};\r\n\r\nconst CONFIRM_TONES: Record<\r\n AlertDialogTone,\r\n \"primary\" | \"danger\" | \"warning\" | \"success\"\r\n> = {\r\n default: \"primary\",\r\n danger: \"danger\",\r\n warning: \"warning\",\r\n success: \"success\",\r\n};\r\n\r\nexport default function AlertDialog({\r\n open,\r\n onOpenChange,\r\n title,\r\n description,\r\n icon,\r\n tone = \"default\",\r\n confirmLabel = \"Continue\",\r\n cancelLabel = \"Cancel\",\r\n onConfirm,\r\n loading = false,\r\n size = \"default\",\r\n}: AlertDialogProps) {\r\n const dialogRef = useRef<HTMLDialogElement>(null);\r\n const titleId = useId();\r\n const descriptionId = useId();\r\n\r\n useEffect(() => {\r\n const dialog = dialogRef.current;\r\n if (!dialog) return;\r\n if (open && !dialog.open) dialog.showModal();\r\n if (!open && dialog.open) dialog.close();\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const previous = document.body.style.overflow;\r\n document.body.style.overflow = \"hidden\";\r\n return () => {\r\n document.body.style.overflow = previous;\r\n };\r\n }, [open]);\r\n\r\n return (\r\n <dialog\r\n ref={dialogRef}\r\n className={styles.dialog}\r\n data-tone={tone}\r\n data-size={size}\r\n role=\"alertdialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={titleId}\r\n aria-describedby={description ? descriptionId : undefined}\r\n onClose={() => {\r\n if (open) onOpenChange(false);\r\n }}\r\n onCancel={(event) => {\r\n event.preventDefault();\r\n onOpenChange(false);\r\n }}\r\n >\r\n <div className={styles.body}>\r\n <span className={styles.icon}>\r\n <Icon name={icon ?? TONE_ICONS[tone]} />\r\n </span>\r\n\r\n <div className={styles.text}>\r\n <h2 id={titleId} className={styles.title}>\r\n {title}\r\n </h2>\r\n {description ? (\r\n <p id={descriptionId} className={styles.description}>\r\n {description}\r\n </p>\r\n ) : null}\r\n </div>\r\n </div>\r\n\r\n <div className={styles.footer}>\r\n <Button\r\n label={cancelLabel}\r\n variant=\"outline\"\r\n disabled={loading}\r\n onClick={() => onOpenChange(false)}\r\n />\r\n <Button\r\n label={confirmLabel}\r\n variant=\"solid\"\r\n tone={CONFIRM_TONES[tone]}\r\n loading={loading}\r\n onClick={onConfirm}\r\n />\r\n </div>\r\n </dialog>\r\n );\r\n}\r\n","import styles from \"./Spinner.module.css\";\r\n\r\nexport type SpinnerTone = \"default\" | \"primary\" | \"success\" | \"danger\" | \"muted\";\r\n\r\ntype SpinnerProps = {\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n tone?: SpinnerTone;\r\n label?: string;\r\n className?: string;\r\n};\r\n\r\nexport default function Spinner({\r\n size = \"md\",\r\n tone = \"default\",\r\n label = \"Loading\",\r\n className,\r\n}: SpinnerProps) {\r\n return (\r\n <span\r\n className={[styles.spinner, className].filter(Boolean).join(\" \")}\r\n data-size={size}\r\n data-tone={tone}\r\n role=\"status\"\r\n aria-label={label}\r\n />\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport Spinner from \"./Spinner\";\r\nimport styles from \"./Attachment.module.css\";\r\n\r\nexport type AttachmentState =\r\n | \"idle\"\r\n | \"uploading\"\r\n | \"processing\"\r\n | \"error\"\r\n | \"done\";\r\nexport type AttachmentSize = \"default\" | \"sm\" | \"xs\";\r\n\r\ntype AttachmentProps = {\r\n name: string;\r\n meta?: string;\r\n icon?: string;\r\n image?: string;\r\n state?: AttachmentState;\r\n progress?: number;\r\n size?: AttachmentSize;\r\n orientation?: \"horizontal\" | \"vertical\";\r\n onOpen?: () => void;\r\n onRemove?: () => void;\r\n className?: string;\r\n};\r\n\r\nfunction stateDescription(\r\n state: AttachmentState,\r\n meta: string | undefined,\r\n progress: number | undefined,\r\n) {\r\n if (state === \"uploading\") {\r\n return progress === undefined\r\n ? \"Uploading…\"\r\n : `Uploading · ${Math.round(progress)}%`;\r\n }\r\n if (state === \"processing\") return \"Processing document…\";\r\n if (state === \"error\") return \"Upload failed. Try again.\";\r\n return meta;\r\n}\r\n\r\nexport default function Attachment({\r\n name,\r\n meta,\r\n icon = \"lucide:file-text\",\r\n image,\r\n state = \"done\",\r\n progress,\r\n size = \"default\",\r\n orientation = \"horizontal\",\r\n onOpen,\r\n onRemove,\r\n className,\r\n}: AttachmentProps) {\r\n const clampedProgress =\r\n progress === undefined ? undefined : Math.min(100, Math.max(0, progress));\r\n const description = stateDescription(state, meta, clampedProgress);\r\n\r\n return (\r\n <div\r\n className={[styles.attachment, className].filter(Boolean).join(\" \")}\r\n data-state={state}\r\n data-size={size}\r\n data-orientation={orientation}\r\n >\r\n {onOpen ? (\r\n <button\r\n type=\"button\"\r\n className={styles.trigger}\r\n aria-label={`Preview ${name}`}\r\n onClick={onOpen}\r\n />\r\n ) : null}\r\n\r\n <span className={styles.media}>\r\n {image ? (\r\n // eslint-disable-next-line @next/next/no-img-element -- attachment previews accept arbitrary local or remote files.\r\n <img src={image} alt=\"\" />\r\n ) : (\r\n <Icon name={icon} />\r\n )}\r\n </span>\r\n\r\n <span className={styles.content}>\r\n <span className={styles.title}>{name}</span>\r\n {description ? (\r\n <span className={styles.description}>{description}</span>\r\n ) : null}\r\n {state === \"uploading\" ? (\r\n <span className={styles.progress} aria-hidden=\"true\">\r\n <span style={{ width: `${clampedProgress ?? 0}%` }} />\r\n </span>\r\n ) : null}\r\n </span>\r\n\r\n <span className={styles.actions}>\r\n {state === \"processing\" ? <Spinner size=\"sm\" label=\"Processing\" /> : null}\r\n {state === \"error\" ? (\r\n <Icon name=\"lucide:circle-alert\" className={styles.errorIcon} />\r\n ) : null}\r\n {onRemove ? (\r\n <button\r\n type=\"button\"\r\n className={styles.action}\r\n aria-label={`Remove ${name}`}\r\n onClick={onRemove}\r\n >\r\n <Icon name=\"lucide:x\" />\r\n </button>\r\n ) : null}\r\n </span>\r\n </div>\r\n );\r\n}\r\n\r\nexport function AttachmentGroup({\r\n children,\r\n className,\r\n}: {\r\n children: ReactNode;\r\n className?: string;\r\n}) {\r\n return (\r\n <div className={[styles.group, className].filter(Boolean).join(\" \")}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import styles from \"./Avatar.module.css\";\n\ntype AvatarProps = {\n name: string;\n initials: string;\n src?: string;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n showName?: boolean;\n status?: \"online\" | \"offline\" | \"busy\" | \"away\";\n className?: string;\n};\n\nexport default function Avatar({\n name,\n initials,\n src,\n size = \"sm\",\n showName = true,\n status,\n className,\n}: AvatarProps) {\n return (\n <span\n className={[styles.avatar, className].filter(Boolean).join(\" \")}\n data-size={size}\n >\n <span className={styles.image} title={name}>\n <span aria-hidden=\"true\">{initials}</span>\n {/* Native img keeps the package framework-agnostic (no next/image peer). */}\n {/* eslint-disable-next-line @next/next/no-img-element */}\n {src ? <img src={src} alt=\"\" width={40} height={40} loading=\"lazy\" /> : null}\n {status ? (\n <i className={styles.status} data-status={status} aria-hidden=\"true\" />\n ) : null}\n </span>\n {showName ? <span className={styles.name}>{name}</span> : null}\n </span>\n );\n}\n","\"use strict\";\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) return obj;\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") return { default: obj };\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) return cache.get(obj);\n\n var newObj = { __proto__: null };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);\n else newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n\n if (cache) cache.set(obj, newObj);\n\n return newObj;\n}\nexports._ = _interop_require_wildcard;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n assign: null,\n getRenderedSearch: null,\n searchParamsToUrlQuery: null,\n urlQueryToSearchParams: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n assign: function() {\n return assign;\n },\n getRenderedSearch: function() {\n return getRenderedSearch;\n },\n searchParamsToUrlQuery: function() {\n return searchParamsToUrlQuery;\n },\n urlQueryToSearchParams: function() {\n return urlQueryToSearchParams;\n }\n});\nfunction getRenderedSearch(query) {\n // Inlined implementation of querystring.encode, which is not available in\n // the Edge runtime.\n const pairs = [];\n for(const key in query){\n const value = query[key];\n if (value == null) continue;\n if (Array.isArray(value)) {\n for (const v of value){\n pairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(v))}`);\n }\n } else {\n pairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\n }\n }\n // The result should match the format of a web URL's `search` property, since\n // this is the format that's stored in the App Router state.\n // TODO: We're a bit inconsistent about this. The x-nextjs-rewritten-query\n // header omits the leading question mark. Should refactor to always do\n // that instead.\n if (pairs.length === 0) {\n // If the search string is empty, return an empty string.\n return '';\n }\n // Prepend '?' to the search params string.\n return '?' + pairs.join('&');\n}\nfunction searchParamsToUrlQuery(searchParams) {\n const query = {};\n for (const [key, value] of searchParams.entries()){\n const existing = query[key];\n if (typeof existing === 'undefined') {\n query[key] = value;\n } else if (Array.isArray(existing)) {\n existing.push(value);\n } else {\n query[key] = [\n existing,\n value\n ];\n }\n }\n return query;\n}\nfunction stringifyUrlQueryParam(param) {\n if (typeof param === 'string') {\n return param;\n }\n if (typeof param === 'number' && !isNaN(param) || typeof param === 'boolean') {\n return String(param);\n } else {\n return '';\n }\n}\nfunction urlQueryToSearchParams(query) {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(query)){\n if (Array.isArray(value)) {\n for (const item of value){\n searchParams.append(key, stringifyUrlQueryParam(item));\n }\n } else {\n searchParams.set(key, stringifyUrlQueryParam(value));\n }\n }\n return searchParams;\n}\nfunction assign(target, ...searchParamsList) {\n for (const searchParams of searchParamsList){\n for (const key of searchParams.keys()){\n target.delete(key);\n }\n for (const [key, value] of searchParams.entries()){\n target.append(key, value);\n }\n }\n return target;\n}\n\n//# sourceMappingURL=querystring.js.map","// Format function modified from nodejs\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n formatUrl: null,\n formatWithValidation: null,\n urlObjectKeys: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n formatUrl: function() {\n return formatUrl;\n },\n formatWithValidation: function() {\n return formatWithValidation;\n },\n urlObjectKeys: function() {\n return urlObjectKeys;\n }\n});\nconst _interop_require_wildcard = require(\"@swc/helpers/_/_interop_require_wildcard\");\nconst _querystring = /*#__PURE__*/ _interop_require_wildcard._(require(\"./querystring\"));\nconst slashedProtocols = /https?|ftp|gopher|file/;\nfunction formatUrl(urlObj) {\n let { auth, hostname } = urlObj;\n let protocol = urlObj.protocol || '';\n let pathname = urlObj.pathname || '';\n let hash = urlObj.hash || '';\n let query = urlObj.query || '';\n let host = false;\n auth = auth ? encodeURIComponent(auth).replace(/%3A/i, ':') + '@' : '';\n if (urlObj.host) {\n host = auth + urlObj.host;\n } else if (hostname) {\n host = auth + (~hostname.indexOf(':') ? `[${hostname}]` : hostname);\n if (urlObj.port) {\n host += ':' + urlObj.port;\n }\n }\n if (query && typeof query === 'object') {\n query = String(_querystring.urlQueryToSearchParams(query));\n }\n let search = urlObj.search || query && `?${query}` || '';\n if (protocol && !protocol.endsWith(':')) protocol += ':';\n if (urlObj.slashes || (!protocol || slashedProtocols.test(protocol)) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname[0] !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n if (hash && hash[0] !== '#') hash = '#' + hash;\n if (search && search[0] !== '?') search = '?' + search;\n pathname = pathname.replace(/[?#]/g, encodeURIComponent);\n search = search.replace('#', '%23');\n return `${protocol}${host}${pathname}${search}${hash}`;\n}\nconst urlObjectKeys = [\n 'auth',\n 'hash',\n 'host',\n 'hostname',\n 'href',\n 'path',\n 'pathname',\n 'port',\n 'protocol',\n 'query',\n 'search',\n 'slashes'\n];\nfunction formatWithValidation(url) {\n if (process.env.NODE_ENV === 'development') {\n if (url !== null && typeof url === 'object') {\n Object.keys(url).forEach((key)=>{\n if (!urlObjectKeys.includes(key)) {\n console.warn(`Unknown key passed via urlObject into url.format: ${key}`);\n }\n });\n }\n }\n return formatUrl(url);\n}\n\n//# sourceMappingURL=format-url.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"omit\", {\n enumerable: true,\n get: function() {\n return omit;\n }\n});\nfunction omit(object, keys) {\n const omitted = {};\n Object.keys(object).forEach((key)=>{\n if (!keys.includes(key)) {\n omitted[key] = object[key];\n }\n });\n return omitted;\n}\n\n//# sourceMappingURL=omit.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n DecodeError: null,\n MiddlewareNotFoundError: null,\n MissingStaticPage: null,\n NormalizeError: null,\n PageNotFoundError: null,\n SP: null,\n ST: null,\n WEB_VITALS: null,\n execOnce: null,\n getDisplayName: null,\n getLocationOrigin: null,\n getURL: null,\n isAbsoluteUrl: null,\n isResSent: null,\n loadGetInitialProps: null,\n normalizeRepeatedSlashes: null,\n stringifyError: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DecodeError: function() {\n return DecodeError;\n },\n MiddlewareNotFoundError: function() {\n return MiddlewareNotFoundError;\n },\n MissingStaticPage: function() {\n return MissingStaticPage;\n },\n NormalizeError: function() {\n return NormalizeError;\n },\n PageNotFoundError: function() {\n return PageNotFoundError;\n },\n SP: function() {\n return SP;\n },\n ST: function() {\n return ST;\n },\n WEB_VITALS: function() {\n return WEB_VITALS;\n },\n execOnce: function() {\n return execOnce;\n },\n getDisplayName: function() {\n return getDisplayName;\n },\n getLocationOrigin: function() {\n return getLocationOrigin;\n },\n getURL: function() {\n return getURL;\n },\n isAbsoluteUrl: function() {\n return isAbsoluteUrl;\n },\n isResSent: function() {\n return isResSent;\n },\n loadGetInitialProps: function() {\n return loadGetInitialProps;\n },\n normalizeRepeatedSlashes: function() {\n return normalizeRepeatedSlashes;\n },\n stringifyError: function() {\n return stringifyError;\n }\n});\nconst WEB_VITALS = [\n 'CLS',\n 'FCP',\n 'INP',\n 'LCP',\n 'TTFB'\n];\nfunction execOnce(fn) {\n let used = false;\n let result;\n return (...args)=>{\n if (!used) {\n used = true;\n result = fn(...args);\n }\n return result;\n };\n}\n// Scheme: https://tools.ietf.org/html/rfc3986#section-3.1\n// Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\nconst ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/;\nconst isAbsoluteUrl = (url)=>{\n // Fast path: an absolute URL must start with a letter (the scheme).\n // Check for a-z and A-Z without the cost of the regex.\n const c = url.charCodeAt(0);\n const isLetter = c >= 65 /* A */ && c <= 90 || c >= 97 /* a */ && c <= 122;\n /* z */ if (!isLetter) {\n return false;\n }\n return ABSOLUTE_URL_REGEX.test(url);\n};\nfunction getLocationOrigin() {\n const { protocol, hostname, port } = window.location;\n return `${protocol}//${hostname}${port ? ':' + port : ''}`;\n}\nfunction getURL() {\n const { href } = window.location;\n const origin = getLocationOrigin();\n return href.substring(origin.length);\n}\nfunction getDisplayName(Component) {\n return typeof Component === 'string' ? Component : Component.displayName || Component.name || 'Unknown';\n}\nfunction isResSent(res) {\n return res.finished || res.headersSent;\n}\nfunction normalizeRepeatedSlashes(url) {\n const urlParts = url.split('?');\n const urlNoQuery = urlParts[0];\n return urlNoQuery// first we replace any non-encoded backslashes with forward\n // then normalize repeated forward slashes\n .replace(/\\\\/g, '/').replace(/\\/\\/+/g, '/') + (urlParts[1] ? `?${urlParts.slice(1).join('?')}` : '');\n}\nasync function loadGetInitialProps(App, ctx) {\n if (process.env.NODE_ENV !== 'production') {\n if (App.prototype?.getInitialProps) {\n const message = `\"${getDisplayName(App)}.getInitialProps()\" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.`;\n throw new Error(message);\n }\n }\n // when called from _app `ctx` is nested in `ctx`\n const res = ctx.res || ctx.ctx && ctx.ctx.res;\n if (!App.getInitialProps) {\n if (ctx.ctx && ctx.Component) {\n // @ts-ignore pageProps default\n return {\n pageProps: await loadGetInitialProps(ctx.Component, ctx.ctx)\n };\n }\n return {};\n }\n const props = await App.getInitialProps(ctx);\n if (res && isResSent(res)) {\n return props;\n }\n if (!props) {\n const message = `\"${getDisplayName(App)}.getInitialProps()\" should resolve to an object. But found \"${props}\" instead.`;\n throw new Error(message);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (Object.keys(props).length === 0 && !ctx.ctx) {\n console.warn(`${getDisplayName(App)} returned an empty object from \\`getInitialProps\\`. This de-optimizes and prevents automatic static optimization. https://nextjs.org/docs/messages/empty-object-getInitialProps`);\n }\n }\n return props;\n}\nconst SP = typeof performance !== 'undefined';\nconst ST = SP && [\n 'mark',\n 'measure',\n 'getEntriesByName'\n].every((method)=>typeof performance[method] === 'function');\nclass DecodeError extends Error {\n}\nclass NormalizeError extends Error {\n}\nclass PageNotFoundError extends Error {\n constructor(page){\n super();\n this.code = 'ENOENT';\n this.name = 'PageNotFoundError';\n this.message = `Cannot find module for page: ${page}`;\n }\n}\nclass MissingStaticPage extends Error {\n constructor(page, message){\n super();\n this.message = `Failed to load static file for page: ${page} ${message}`;\n }\n}\nclass MiddlewareNotFoundError extends Error {\n constructor(){\n super();\n this.code = 'ENOENT';\n this.message = `Cannot find the middleware module`;\n }\n}\nfunction stringifyError(error) {\n return JSON.stringify({\n message: error.message,\n stack: error.stack\n });\n}\n\n//# sourceMappingURL=utils.js.map","/**\n * Removes the trailing slash for a given route or page path. Examples:\n * - `/foo/bar/` -> `/foo/bar`\n * - `/foo/bar` -> `/foo/bar`\n *\n * Uses charCodeAt (47 === '/') instead of regex to avoid the overhead of\n * compiling and executing a RegExp on every call (~3-5x faster).\n */ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"removeTrailingSlash\", {\n enumerable: true,\n get: function() {\n return removeTrailingSlash;\n }\n});\nfunction removeTrailingSlash(route) {\n return route.charCodeAt(route.length - 1) === 47 && route.length > 1 ? route.slice(0, -1) : route;\n}\n\n//# sourceMappingURL=remove-trailing-slash.js.map","/**\n * Given a path this function will find the pathname, query and hash and return\n * them. This is useful to parse full paths on the client side.\n * @param path A path to parse e.g. /foo/bar?id=1#hash\n */ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"parsePath\", {\n enumerable: true,\n get: function() {\n return parsePath;\n }\n});\nfunction parsePath(path) {\n const hashIndex = path.indexOf('#');\n const queryIndex = path.indexOf('?');\n const hasQuery = queryIndex > -1 && (hashIndex < 0 || queryIndex < hashIndex);\n if (hasQuery || hashIndex > -1) {\n return {\n pathname: path.substring(0, hasQuery ? queryIndex : hashIndex),\n query: hasQuery ? path.substring(queryIndex, hashIndex > -1 ? hashIndex : undefined) : '',\n hash: hashIndex > -1 ? path.slice(hashIndex) : ''\n };\n }\n return {\n pathname: path,\n query: '',\n hash: ''\n };\n}\n\n//# sourceMappingURL=parse-path.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"normalizePathTrailingSlash\", {\n enumerable: true,\n get: function() {\n return normalizePathTrailingSlash;\n }\n});\nconst _removetrailingslash = require(\"../shared/lib/router/utils/remove-trailing-slash\");\nconst _parsepath = require(\"../shared/lib/router/utils/parse-path\");\nconst normalizePathTrailingSlash = (path)=>{\n // 47 is the char code for '/'\n if (path.charCodeAt(0) !== 47 || process.env.__NEXT_MANUAL_TRAILING_SLASH) {\n return path;\n }\n const { pathname, query, hash } = (0, _parsepath.parsePath)(path);\n if (process.env.__NEXT_TRAILING_SLASH) {\n if (/\\.[^/]+\\/?$/.test(pathname)) {\n return `${(0, _removetrailingslash.removeTrailingSlash)(pathname)}${query}${hash}`;\n } else if (pathname.endsWith('/')) {\n return `${pathname}${query}${hash}`;\n } else {\n return `${pathname}/${query}${hash}`;\n }\n }\n return `${(0, _removetrailingslash.removeTrailingSlash)(pathname)}${query}${hash}`;\n};\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=normalize-trailing-slash.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"pathHasPrefix\", {\n enumerable: true,\n get: function() {\n return pathHasPrefix;\n }\n});\nconst _parsepath = require(\"./parse-path\");\nfunction pathHasPrefix(path, prefix) {\n if (typeof path !== 'string') {\n return false;\n }\n const { pathname } = (0, _parsepath.parsePath)(path);\n return pathname === prefix || pathname.startsWith(prefix + '/');\n}\n\n//# sourceMappingURL=path-has-prefix.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"hasBasePath\", {\n enumerable: true,\n get: function() {\n return hasBasePath;\n }\n});\nconst _pathhasprefix = require(\"../shared/lib/router/utils/path-has-prefix\");\nconst basePath = process.env.__NEXT_ROUTER_BASEPATH || '';\nfunction hasBasePath(path) {\n return (0, _pathhasprefix.pathHasPrefix)(path, basePath);\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=has-base-path.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"isLocalURL\", {\n enumerable: true,\n get: function() {\n return isLocalURL;\n }\n});\nconst _utils = require(\"../../utils\");\nconst _hasbasepath = require(\"../../../../client/has-base-path\");\nfunction isLocalURL(url) {\n // prevent a hydration mismatch on href for url with anchor refs\n if (!(0, _utils.isAbsoluteUrl)(url)) return true;\n try {\n // absolute urls can be local if they are on the same origin\n const locationOrigin = (0, _utils.getLocationOrigin)();\n const resolved = new URL(url, locationOrigin);\n return resolved.origin === locationOrigin && (0, _hasbasepath.hasBasePath)(resolved.pathname);\n } catch (_) {\n return false;\n }\n}\n\n//# sourceMappingURL=is-local-url.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n getSortedRouteObjects: null,\n getSortedRoutes: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getSortedRouteObjects: function() {\n return getSortedRouteObjects;\n },\n getSortedRoutes: function() {\n return getSortedRoutes;\n }\n});\nclass UrlNode {\n insert(urlPath) {\n this._insert(urlPath.split('/').filter(Boolean), [], false);\n }\n smoosh() {\n return this._smoosh();\n }\n _smoosh(prefix = '/') {\n const childrenPaths = [\n ...this.children.keys()\n ].sort();\n if (this.slugName !== null) {\n childrenPaths.splice(childrenPaths.indexOf('[]'), 1);\n }\n if (this.restSlugName !== null) {\n childrenPaths.splice(childrenPaths.indexOf('[...]'), 1);\n }\n if (this.optionalRestSlugName !== null) {\n childrenPaths.splice(childrenPaths.indexOf('[[...]]'), 1);\n }\n const routes = childrenPaths.map((c)=>this.children.get(c)._smoosh(`${prefix}${c}/`)).reduce((prev, curr)=>[\n ...prev,\n ...curr\n ], []);\n if (this.slugName !== null) {\n routes.push(...this.children.get('[]')._smoosh(`${prefix}[${this.slugName}]/`));\n }\n if (!this.placeholder) {\n const r = prefix === '/' ? '/' : prefix.slice(0, -1);\n if (this.optionalRestSlugName != null) {\n throw new Error(`You cannot define a route with the same specificity as a optional catch-all route (\"${r}\" and \"${r}[[...${this.optionalRestSlugName}]]\").`);\n }\n routes.unshift(r);\n }\n if (this.restSlugName !== null) {\n routes.push(...this.children.get('[...]')._smoosh(`${prefix}[...${this.restSlugName}]/`));\n }\n if (this.optionalRestSlugName !== null) {\n routes.push(...this.children.get('[[...]]')._smoosh(`${prefix}[[...${this.optionalRestSlugName}]]/`));\n }\n return routes;\n }\n _insert(urlPaths, slugNames, isCatchAll) {\n if (urlPaths.length === 0) {\n this.placeholder = false;\n return;\n }\n if (isCatchAll) {\n throw new Error(`Catch-all must be the last part of the URL.`);\n }\n // The next segment in the urlPaths list\n let nextSegment = urlPaths[0];\n // Check if the segment matches `[something]`\n if (nextSegment.startsWith('[') && nextSegment.endsWith(']')) {\n // Strip `[` and `]`, leaving only `something`\n let segmentName = nextSegment.slice(1, -1);\n let isOptional = false;\n if (segmentName.startsWith('[') && segmentName.endsWith(']')) {\n // Strip optional `[` and `]`, leaving only `something`\n segmentName = segmentName.slice(1, -1);\n isOptional = true;\n }\n if (segmentName.startsWith('…')) {\n throw new Error(`Detected a three-dot character ('…') at ('${segmentName}'). Did you mean ('...')?`);\n }\n if (segmentName.startsWith('...')) {\n // Strip `...`, leaving only `something`\n segmentName = segmentName.substring(3);\n isCatchAll = true;\n }\n if (segmentName.startsWith('[') || segmentName.endsWith(']')) {\n throw new Error(`Segment names may not start or end with extra brackets ('${segmentName}').`);\n }\n if (segmentName.startsWith('.')) {\n throw new Error(`Segment names may not start with erroneous periods ('${segmentName}').`);\n }\n function handleSlug(previousSlug, nextSlug) {\n if (previousSlug !== null) {\n // If the specific segment already has a slug but the slug is not `something`\n // This prevents collisions like:\n // pages/[post]/index.js\n // pages/[id]/index.js\n // Because currently multiple dynamic params on the same segment level are not supported\n if (previousSlug !== nextSlug) {\n // TODO: This error seems to be confusing for users, needs an error link, the description can be based on above comment.\n throw new Error(`You cannot use different slug names for the same dynamic path ('${previousSlug}' !== '${nextSlug}').`);\n }\n }\n slugNames.forEach((slug)=>{\n if (slug === nextSlug) {\n throw new Error(`You cannot have the same slug name \"${nextSlug}\" repeat within a single dynamic path`);\n }\n if (slug.replace(/\\W/g, '') === nextSegment.replace(/\\W/g, '')) {\n throw new Error(`You cannot have the slug names \"${slug}\" and \"${nextSlug}\" differ only by non-word symbols within a single dynamic path`);\n }\n });\n slugNames.push(nextSlug);\n }\n if (isCatchAll) {\n if (isOptional) {\n if (this.restSlugName != null) {\n throw new Error(`You cannot use both an required and optional catch-all route at the same level (\"[...${this.restSlugName}]\" and \"${urlPaths[0]}\" ).`);\n }\n handleSlug(this.optionalRestSlugName, segmentName);\n // slugName is kept as it can only be one particular slugName\n this.optionalRestSlugName = segmentName;\n // nextSegment is overwritten to [[...]] so that it can later be sorted specifically\n nextSegment = '[[...]]';\n } else {\n if (this.optionalRestSlugName != null) {\n throw new Error(`You cannot use both an optional and required catch-all route at the same level (\"[[...${this.optionalRestSlugName}]]\" and \"${urlPaths[0]}\").`);\n }\n handleSlug(this.restSlugName, segmentName);\n // slugName is kept as it can only be one particular slugName\n this.restSlugName = segmentName;\n // nextSegment is overwritten to [...] so that it can later be sorted specifically\n nextSegment = '[...]';\n }\n } else {\n if (isOptional) {\n throw new Error(`Optional route parameters are not yet supported (\"${urlPaths[0]}\").`);\n }\n handleSlug(this.slugName, segmentName);\n // slugName is kept as it can only be one particular slugName\n this.slugName = segmentName;\n // nextSegment is overwritten to [] so that it can later be sorted specifically\n nextSegment = '[]';\n }\n }\n // If this UrlNode doesn't have the nextSegment yet we create a new child UrlNode\n if (!this.children.has(nextSegment)) {\n this.children.set(nextSegment, new UrlNode());\n }\n this.children.get(nextSegment)._insert(urlPaths.slice(1), slugNames, isCatchAll);\n }\n constructor(){\n this.placeholder = true;\n this.children = new Map();\n this.slugName = null;\n this.restSlugName = null;\n this.optionalRestSlugName = null;\n }\n}\nfunction getSortedRoutes(normalizedPages) {\n // First the UrlNode is created, and every UrlNode can have only 1 dynamic segment\n // Eg you can't have pages/[post]/abc.js and pages/[hello]/something-else.js\n // Only 1 dynamic segment per nesting level\n // So in the case that is test/e2e/dynamic-routing it'll be this:\n // pages/[post]/comments.js\n // pages/blog/[post]/comment/[id].js\n // Both are fine because `pages/[post]` and `pages/blog` are on the same level\n // So in this case `UrlNode` created here has `this.slugName === 'post'`\n // And since your PR passed through `slugName` as an array basically it'd including it in too many possibilities\n // Instead what has to be passed through is the upwards path's dynamic names\n const root = new UrlNode();\n // Here the `root` gets injected multiple paths, and insert will break them up into sublevels\n normalizedPages.forEach((pagePath)=>root.insert(pagePath));\n // Smoosh will then sort those sublevels up to the point where you get the correct route definition priority\n return root.smoosh();\n}\nfunction getSortedRouteObjects(objects, getter) {\n // We're assuming here that all the pathnames are unique, that way we can\n // sort the list and use the index as the key.\n const indexes = {};\n const pathnames = [];\n for(let i = 0; i < objects.length; i++){\n const pathname = getter(objects[i]);\n indexes[pathname] = i;\n pathnames[i] = pathname;\n }\n // Sort the pathnames.\n const sorted = getSortedRoutes(pathnames);\n // Map the sorted pathnames back to the original objects using the new sorted\n // index.\n return sorted.map((pathname)=>objects[indexes[pathname]]);\n}\n\n//# sourceMappingURL=sorted-routes.js.map","/**\n * For a given page path, this function ensures that there is a leading slash.\n * If there is not a leading slash, one is added, otherwise it is noop.\n */ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"ensureLeadingSlash\", {\n enumerable: true,\n get: function() {\n return ensureLeadingSlash;\n }\n});\nfunction ensureLeadingSlash(path) {\n return path.startsWith('/') ? path : `/${path}`;\n}\n\n//# sourceMappingURL=ensure-leading-slash.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n DEFAULT_SEGMENT_KEY: null,\n NOT_FOUND_SEGMENT_KEY: null,\n PAGE_SEGMENT_KEY: null,\n computeSelectedLayoutSegment: null,\n getSegmentValue: null,\n getSelectedLayoutSegmentPath: null,\n isGroupSegment: null,\n isParallelRouteSegment: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DEFAULT_SEGMENT_KEY: function() {\n return DEFAULT_SEGMENT_KEY;\n },\n NOT_FOUND_SEGMENT_KEY: function() {\n return NOT_FOUND_SEGMENT_KEY;\n },\n PAGE_SEGMENT_KEY: function() {\n return PAGE_SEGMENT_KEY;\n },\n computeSelectedLayoutSegment: function() {\n return computeSelectedLayoutSegment;\n },\n getSegmentValue: function() {\n return getSegmentValue;\n },\n getSelectedLayoutSegmentPath: function() {\n return getSelectedLayoutSegmentPath;\n },\n isGroupSegment: function() {\n return isGroupSegment;\n },\n isParallelRouteSegment: function() {\n return isParallelRouteSegment;\n }\n});\nfunction getSegmentValue(segment) {\n return Array.isArray(segment) ? segment[1] : segment;\n}\nfunction isGroupSegment(segment) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')');\n}\nfunction isParallelRouteSegment(segment) {\n return segment.startsWith('@') && segment !== '@children';\n}\nfunction computeSelectedLayoutSegment(segments, parallelRouteKey) {\n if (!segments || segments.length === 0) {\n return null;\n }\n // For 'children', use first segment; for other parallel routes, use last segment\n const rawSegment = parallelRouteKey === 'children' ? segments[0] : segments[segments.length - 1];\n // If the default slot is showing, return null since it's not technically \"selected\" (it's a fallback)\n // Returning an internal value like `__DEFAULT__` would be confusing\n return rawSegment === DEFAULT_SEGMENT_KEY ? null : rawSegment;\n}\nfunction getSelectedLayoutSegmentPath(tree, parallelRouteKey, first = true, segmentPath = []) {\n let node;\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey];\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1];\n node = parallelRoutes.children ?? Object.values(parallelRoutes)[0];\n }\n if (!node) return segmentPath;\n const segment = node[0];\n let segmentValue = getSegmentValue(segment);\n if (!segmentValue || segmentValue === PAGE_SEGMENT_KEY) {\n return segmentPath;\n }\n segmentPath.push(segmentValue);\n return getSelectedLayoutSegmentPath(node, parallelRouteKey, false, segmentPath);\n}\nconst PAGE_SEGMENT_KEY = '__PAGE__';\nconst DEFAULT_SEGMENT_KEY = '__DEFAULT__';\nconst NOT_FOUND_SEGMENT_KEY = '/_not-found';\n\n//# sourceMappingURL=segment.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n compareAppPaths: null,\n normalizeAppPath: null,\n normalizeRscURL: null,\n selectAppPageEntry: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n compareAppPaths: function() {\n return compareAppPaths;\n },\n normalizeAppPath: function() {\n return normalizeAppPath;\n },\n normalizeRscURL: function() {\n return normalizeRscURL;\n },\n selectAppPageEntry: function() {\n return selectAppPageEntry;\n }\n});\nconst _ensureleadingslash = require(\"../../page-path/ensure-leading-slash\");\nconst _segment = require(\"../../segment\");\nfunction normalizeAppPath(route) {\n return (0, _ensureleadingslash.ensureLeadingSlash)(route.split('/').reduce((pathname, segment, index, segments)=>{\n // Empty segments are ignored.\n if (!segment) {\n return pathname;\n }\n // Groups are ignored.\n if ((0, _segment.isGroupSegment)(segment)) {\n return pathname;\n }\n // Parallel segments are ignored.\n if (segment[0] === '@') {\n return pathname;\n }\n // The last segment (if it's a leaf) should be ignored.\n if ((segment === 'page' || segment === 'route') && index === segments.length - 1) {\n return pathname;\n }\n return `${pathname}/${segment}`;\n }, ''));\n}\nfunction compareAppPaths(a, b) {\n const aHasSlot = a.includes('/@');\n const bHasSlot = b.includes('/@');\n if (aHasSlot && !bHasSlot) return -1;\n if (!aHasSlot && bHasSlot) return 1;\n return a.localeCompare(b);\n}\nfunction normalizeAppPageEntryPathname(appPath) {\n // Webpack app entries preserve escaped underscore segments as `%5F`, while\n // normalized request pathnames expose the decoded `_` segment.\n return normalizeAppPath(appPath).replace(/%5F/g, '_');\n}\nfunction selectAppPageEntry(pathname, appPaths, normalizePathname = normalizeAppPageEntryPathname) {\n let entry;\n for (const appPath of appPaths){\n if (normalizePathname(appPath) !== pathname) continue;\n if (entry === undefined || compareAppPaths(entry, appPath) < 0) {\n entry = appPath;\n }\n }\n if (entry === undefined) {\n throw new Error(`Invariant: no direct app page entry found for ${pathname}`);\n }\n return entry;\n}\nfunction normalizeRscURL(url) {\n return url.replace(/\\.rsc($|\\?)/, // $1 ensures `?` is preserved\n '$1');\n}\n\n//# sourceMappingURL=app-paths.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n INTERCEPTION_ROUTE_MARKERS: null,\n extractInterceptionRouteInformation: null,\n findMissingCanonicalInterceptionRoutes: null,\n isInterceptionRouteAppPath: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n INTERCEPTION_ROUTE_MARKERS: function() {\n return INTERCEPTION_ROUTE_MARKERS;\n },\n extractInterceptionRouteInformation: function() {\n return extractInterceptionRouteInformation;\n },\n findMissingCanonicalInterceptionRoutes: function() {\n return findMissingCanonicalInterceptionRoutes;\n },\n isInterceptionRouteAppPath: function() {\n return isInterceptionRouteAppPath;\n }\n});\nconst _apppaths = require(\"./app-paths\");\nconst INTERCEPTION_ROUTE_MARKERS = [\n '(..)(..)',\n '(.)',\n '(..)',\n '(...)'\n];\nfunction parseRoutePattern(route) {\n const segments = route.split('/').filter(Boolean);\n const tail = segments.at(-1);\n const isOptionalCatchAll = tail !== undefined && tail.startsWith('[[...') && tail.endsWith(']]');\n const isCatchAll = tail !== undefined && tail.startsWith('[...') && tail.endsWith(']');\n const unbounded = isOptionalCatchAll || isCatchAll;\n const prefixSegments = unbounded ? segments.slice(0, -1) : segments;\n return {\n prefix: prefixSegments.map((segment)=>segment.startsWith('[') && segment.endsWith(']') ? null : segment),\n minLength: prefixSegments.length + (isCatchAll && !isOptionalCatchAll ? 1 : 0),\n unbounded\n };\n}\nfunction acceptsLength(pattern, length) {\n return pattern.unbounded ? length >= pattern.minLength : length === pattern.minLength;\n}\nfunction prefixCovers(canonical, intercepted) {\n return canonical.prefix.every((canonicalSegment, index)=>{\n if (canonicalSegment === null) return true;\n const interceptedSegment = intercepted.prefix[index];\n return interceptedSegment !== undefined && interceptedSegment !== null && canonicalSegment === interceptedSegment;\n });\n}\nfunction patternCoversAtLength(canonical, intercepted, length) {\n return acceptsLength(canonical, length) && acceptsLength(intercepted, length) && prefixCovers(canonical, intercepted);\n}\n/** Returns whether ordinary route patterns cover every URL in `route`. */ function isRoutePatternCovered(route, ordinaryRoutes) {\n const intercepted = parseRoutePattern(route);\n if (!intercepted.unbounded) {\n return ordinaryRoutes.some((pattern)=>patternCoversAtLength(pattern, intercepted, intercepted.minLength));\n }\n let unboundedCoverageStart = Infinity;\n for (const pattern of ordinaryRoutes){\n if (pattern.unbounded && prefixCovers(pattern, intercepted)) {\n unboundedCoverageStart = Math.min(unboundedCoverageStart, Math.max(intercepted.minLength, pattern.minLength));\n }\n }\n if (unboundedCoverageStart === Infinity) return false;\n // An optional or required catchall can have its shorter paths covered by\n // fixed routes before another catchall takes over the remaining suffix.\n for(let length = intercepted.minLength; length < unboundedCoverageStart; length++){\n if (!ordinaryRoutes.some((pattern)=>patternCoversAtLength(pattern, intercepted, length))) {\n return false;\n }\n }\n return true;\n}\nfunction isInterceptionRouteAppPath(path) {\n // TODO-APP: add more serious validation\n return path.split('/').find((segment)=>INTERCEPTION_ROUTE_MARKERS.find((m)=>segment.startsWith(m))) !== undefined;\n}\nfunction extractInterceptionRouteInformation(path) {\n let interceptingRoute;\n let marker;\n let interceptedRoute;\n for (const segment of path.split('/')){\n marker = INTERCEPTION_ROUTE_MARKERS.find((m)=>segment.startsWith(m));\n if (marker) {\n ;\n [interceptingRoute, interceptedRoute] = path.split(marker, 2);\n break;\n }\n }\n if (!interceptingRoute || !marker || !interceptedRoute) {\n throw new Error(`Invalid interception route: ${path}. Must be in the format /<intercepting route>/(..|...|..)(..)/<intercepted route>`);\n }\n interceptingRoute = (0, _apppaths.normalizeAppPath)(interceptingRoute) // normalize the path, e.g. /(blog)/feed -> /feed\n ;\n switch(marker){\n case '(.)':\n // (.) indicates that we should match with sibling routes, so we just need to append the intercepted route to the intercepting route\n if (interceptingRoute === '/') {\n interceptedRoute = `/${interceptedRoute}`;\n } else {\n interceptedRoute = interceptingRoute + '/' + interceptedRoute;\n }\n break;\n case '(..)':\n // (..) indicates that we should match at one level up, so we need to remove the last segment of the intercepting route\n if (interceptingRoute === '/') {\n throw new Error(`Invalid interception route: ${path}. Cannot use (..) marker at the root level, use (.) instead.`);\n }\n interceptedRoute = interceptingRoute.split('/').slice(0, -1).concat(interceptedRoute).join('/');\n break;\n case '(...)':\n // (...) will match the route segment in the root directory, so we need to use the root directory to prepend the intercepted route\n interceptedRoute = '/' + interceptedRoute;\n break;\n case '(..)(..)':\n // (..)(..) indicates that we should match at two levels up, so we need to remove the last two segments of the intercepting route\n const splitInterceptingRoute = interceptingRoute.split('/');\n if (splitInterceptingRoute.length <= 2) {\n throw new Error(`Invalid interception route: ${path}. Cannot use (..)(..) marker at the root level or one level up.`);\n }\n interceptedRoute = splitInterceptingRoute.slice(0, -2).concat(interceptedRoute).join('/');\n break;\n default:\n throw new Error('Invariant: unexpected marker');\n }\n return {\n interceptingRoute,\n interceptedRoute\n };\n}\nfunction findMissingCanonicalInterceptionRoutes(appPaths) {\n const canonicalRoutes = Object.keys(appPaths).filter((route)=>!isInterceptionRouteAppPath(route));\n const canonicalRoutePatterns = canonicalRoutes.map(parseRoutePattern);\n return Object.keys(appPaths).filter(isInterceptionRouteAppPath).map((interceptionRoute)=>({\n interceptionRoute,\n canonicalRoute: extractInterceptionRouteInformation(interceptionRoute).interceptedRoute\n })).filter(({ canonicalRoute })=>!isRoutePatternCovered(canonicalRoute, canonicalRoutePatterns)).sort((a, b)=>a.interceptionRoute.localeCompare(b.interceptionRoute));\n}\n\n//# sourceMappingURL=interception-routes.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"isDynamicRoute\", {\n enumerable: true,\n get: function() {\n return isDynamicRoute;\n }\n});\nconst _interceptionroutes = require(\"./interception-routes\");\n// Identify /.*[param].*/ in route string\nconst TEST_ROUTE = /\\/[^/]*\\[[^/]+\\][^/]*(?=\\/|$)/;\n// Identify /[param]/ in route string\nconst TEST_STRICT_ROUTE = /\\/\\[[^/]+\\](?=\\/|$)/;\nfunction isDynamicRoute(route, strict = true) {\n if ((0, _interceptionroutes.isInterceptionRouteAppPath)(route)) {\n route = (0, _interceptionroutes.extractInterceptionRouteInformation)(route).interceptedRoute;\n }\n if (strict) {\n return TEST_STRICT_ROUTE.test(route);\n }\n return TEST_ROUTE.test(route);\n}\n\n//# sourceMappingURL=is-dynamic.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n getSortedRouteObjects: null,\n getSortedRoutes: null,\n isDynamicRoute: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getSortedRouteObjects: function() {\n return _sortedroutes.getSortedRouteObjects;\n },\n getSortedRoutes: function() {\n return _sortedroutes.getSortedRoutes;\n },\n isDynamicRoute: function() {\n return _isdynamic.isDynamicRoute;\n }\n});\nconst _sortedroutes = require(\"./sorted-routes\");\nconst _isdynamic = require(\"./is-dynamic\");\n\n//# sourceMappingURL=index.js.map","(()=>{\"use strict\";if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var e={};(()=>{var n=e;Object.defineProperty(n,\"__esModule\",{value:true});n.pathToRegexp=n.tokensToRegexp=n.regexpToFunction=n.match=n.tokensToFunction=n.compile=n.parse=void 0;function lexer(e){var n=[];var r=0;while(r<e.length){var t=e[r];if(t===\"*\"||t===\"+\"||t===\"?\"){n.push({type:\"MODIFIER\",index:r,value:e[r++]});continue}if(t===\"\\\\\"){n.push({type:\"ESCAPED_CHAR\",index:r++,value:e[r++]});continue}if(t===\"{\"){n.push({type:\"OPEN\",index:r,value:e[r++]});continue}if(t===\"}\"){n.push({type:\"CLOSE\",index:r,value:e[r++]});continue}if(t===\":\"){var a=\"\";var i=r+1;while(i<e.length){var o=e.charCodeAt(i);if(o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122||o===95){a+=e[i++];continue}break}if(!a)throw new TypeError(\"Missing parameter name at \".concat(r));n.push({type:\"NAME\",index:r,value:a});r=i;continue}if(t===\"(\"){var c=1;var f=\"\";var i=r+1;if(e[i]===\"?\"){throw new TypeError('Pattern cannot start with \"?\" at '.concat(i))}while(i<e.length){if(e[i]===\"\\\\\"){f+=e[i++]+e[i++];continue}if(e[i]===\")\"){c--;if(c===0){i++;break}}else if(e[i]===\"(\"){c++;if(e[i+1]!==\"?\"){throw new TypeError(\"Capturing groups are not allowed at \".concat(i))}}f+=e[i++]}if(c)throw new TypeError(\"Unbalanced pattern at \".concat(r));if(!f)throw new TypeError(\"Missing pattern at \".concat(r));n.push({type:\"PATTERN\",index:r,value:f});r=i;continue}n.push({type:\"CHAR\",index:r,value:e[r++]})}n.push({type:\"END\",index:r,value:\"\"});return n}function parse(e,n){if(n===void 0){n={}}var r=lexer(e);var t=n.prefixes,a=t===void 0?\"./\":t,i=n.delimiter,o=i===void 0?\"/#?\":i;var c=[];var f=0;var u=0;var p=\"\";var tryConsume=function(e){if(u<r.length&&r[u].type===e)return r[u++].value};var mustConsume=function(e){var n=tryConsume(e);if(n!==undefined)return n;var t=r[u],a=t.type,i=t.index;throw new TypeError(\"Unexpected \".concat(a,\" at \").concat(i,\", expected \").concat(e))};var consumeText=function(){var e=\"\";var n;while(n=tryConsume(\"CHAR\")||tryConsume(\"ESCAPED_CHAR\")){e+=n}return e};var isSafe=function(e){for(var n=0,r=o;n<r.length;n++){var t=r[n];if(e.indexOf(t)>-1)return true}return false};var safePattern=function(e){var n=c[c.length-1];var r=e||(n&&typeof n===\"string\"?n:\"\");if(n&&!r){throw new TypeError('Must have text between two parameters, missing text after \"'.concat(n.name,'\"'))}if(!r||isSafe(r))return\"[^\".concat(escapeString(o),\"]+?\");return\"(?:(?!\".concat(escapeString(r),\")[^\").concat(escapeString(o),\"])+?\")};while(u<r.length){var v=tryConsume(\"CHAR\");var s=tryConsume(\"NAME\");var d=tryConsume(\"PATTERN\");if(s||d){var g=v||\"\";if(a.indexOf(g)===-1){p+=g;g=\"\"}if(p){c.push(p);p=\"\"}c.push({name:s||f++,prefix:g,suffix:\"\",pattern:d||safePattern(g),modifier:tryConsume(\"MODIFIER\")||\"\"});continue}var x=v||tryConsume(\"ESCAPED_CHAR\");if(x){p+=x;continue}if(p){c.push(p);p=\"\"}var h=tryConsume(\"OPEN\");if(h){var g=consumeText();var l=tryConsume(\"NAME\")||\"\";var m=tryConsume(\"PATTERN\")||\"\";var T=consumeText();mustConsume(\"CLOSE\");c.push({name:l||(m?f++:\"\"),pattern:l&&!m?safePattern(g):m,prefix:g,suffix:T,modifier:tryConsume(\"MODIFIER\")||\"\"});continue}mustConsume(\"END\")}return c}n.parse=parse;function compile(e,n){return tokensToFunction(parse(e,n),n)}n.compile=compile;function tokensToFunction(e,n){if(n===void 0){n={}}var r=flags(n);var t=n.encode,a=t===void 0?function(e){return e}:t,i=n.validate,o=i===void 0?true:i;var c=e.map((function(e){if(typeof e===\"object\"){return new RegExp(\"^(?:\".concat(e.pattern,\")$\"),r)}}));return function(n){var r=\"\";for(var t=0;t<e.length;t++){var i=e[t];if(typeof i===\"string\"){r+=i;continue}var f=n?n[i.name]:undefined;var u=i.modifier===\"?\"||i.modifier===\"*\";var p=i.modifier===\"*\"||i.modifier===\"+\";if(Array.isArray(f)){if(!p){throw new TypeError('Expected \"'.concat(i.name,'\" to not repeat, but got an array'))}if(f.length===0){if(u)continue;throw new TypeError('Expected \"'.concat(i.name,'\" to not be empty'))}for(var v=0;v<f.length;v++){var s=a(f[v],i);if(o&&!c[t].test(s)){throw new TypeError('Expected all \"'.concat(i.name,'\" to match \"').concat(i.pattern,'\", but got \"').concat(s,'\"'))}r+=i.prefix+s+i.suffix}continue}if(typeof f===\"string\"||typeof f===\"number\"){var s=a(String(f),i);if(o&&!c[t].test(s)){throw new TypeError('Expected \"'.concat(i.name,'\" to match \"').concat(i.pattern,'\", but got \"').concat(s,'\"'))}r+=i.prefix+s+i.suffix;continue}if(u)continue;var d=p?\"an array\":\"a string\";throw new TypeError('Expected \"'.concat(i.name,'\" to be ').concat(d))}return r}}n.tokensToFunction=tokensToFunction;function match(e,n){var r=[];var t=pathToRegexp(e,r,n);return regexpToFunction(t,r,n)}n.match=match;function regexpToFunction(e,n,r){if(r===void 0){r={}}var t=r.decode,a=t===void 0?function(e){return e}:t;return function(r){var t=e.exec(r);if(!t)return false;var i=t[0],o=t.index;var c=Object.create(null);var _loop_1=function(e){if(t[e]===undefined)return\"continue\";var r=n[e-1];if(r.modifier===\"*\"||r.modifier===\"+\"){c[r.name]=t[e].split(r.prefix+r.suffix).map((function(e){return a(e,r)}))}else{c[r.name]=a(t[e],r)}};for(var f=1;f<t.length;f++){_loop_1(f)}return{path:i,index:o,params:c}}}n.regexpToFunction=regexpToFunction;function escapeString(e){return e.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g,\"\\\\$1\")}function flags(e){return e&&e.sensitive?\"\":\"i\"}function regexpToRegexp(e,n){if(!n)return e;var r=/\\((?:\\?<(.*?)>)?(?!\\?)/g;var t=0;var a=r.exec(e.source);while(a){n.push({name:a[1]||t++,prefix:\"\",suffix:\"\",modifier:\"\",pattern:\"\"});a=r.exec(e.source)}return e}function arrayToRegexp(e,n,r){var t=e.map((function(e){return pathToRegexp(e,n,r).source}));return new RegExp(\"(?:\".concat(t.join(\"|\"),\")\"),flags(r))}function stringToRegexp(e,n,r){return tokensToRegexp(parse(e,r),n,r)}function tokensToRegexp(e,n,r){if(r===void 0){r={}}var t=r.strict,a=t===void 0?false:t,i=r.start,o=i===void 0?true:i,c=r.end,f=c===void 0?true:c,u=r.encode,p=u===void 0?function(e){return e}:u,v=r.delimiter,s=v===void 0?\"/#?\":v,d=r.endsWith,g=d===void 0?\"\":d;var x=\"[\".concat(escapeString(g),\"]|$\");var h=\"[\".concat(escapeString(s),\"]\");var l=o?\"^\":\"\";for(var m=0,T=e;m<T.length;m++){var E=T[m];if(typeof E===\"string\"){l+=escapeString(p(E))}else{var w=escapeString(p(E.prefix));var y=escapeString(p(E.suffix));if(E.pattern){if(n)n.push(E);if(w||y){if(E.modifier===\"+\"||E.modifier===\"*\"){var R=E.modifier===\"*\"?\"?\":\"\";l+=\"(?:\".concat(w,\"((?:\").concat(E.pattern,\")(?:\").concat(y).concat(w,\"(?:\").concat(E.pattern,\"))*)\").concat(y,\")\").concat(R)}else{l+=\"(?:\".concat(w,\"(\").concat(E.pattern,\")\").concat(y,\")\").concat(E.modifier)}}else{if(E.modifier===\"+\"||E.modifier===\"*\"){throw new TypeError('Can not repeat \"'.concat(E.name,'\" without a prefix and suffix'))}l+=\"(\".concat(E.pattern,\")\").concat(E.modifier)}}else{l+=\"(?:\".concat(w).concat(y,\")\").concat(E.modifier)}}}if(f){if(!a)l+=\"\".concat(h,\"?\");l+=!r.endsWith?\"$\":\"(?=\".concat(x,\")\")}else{var A=e[e.length-1];var _=typeof A===\"string\"?h.indexOf(A[A.length-1])>-1:A===undefined;if(!a){l+=\"(?:\".concat(h,\"(?=\").concat(x,\"))?\")}if(!_){l+=\"(?=\".concat(h,\"|\").concat(x,\")\")}}return new RegExp(l,flags(r))}n.tokensToRegexp=tokensToRegexp;function pathToRegexp(e,n,r){if(e instanceof RegExp)return regexpToRegexp(e,n);if(Array.isArray(e))return arrayToRegexp(e,n,r);return stringToRegexp(e,n,r)}n.pathToRegexp=pathToRegexp})();module.exports=e})();","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n PARAM_SEPARATOR: null,\n hasAdjacentParameterIssues: null,\n normalizeAdjacentParameters: null,\n normalizeTokensForRegexp: null,\n stripNormalizedSeparators: null,\n stripParameterSeparators: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n PARAM_SEPARATOR: function() {\n return PARAM_SEPARATOR;\n },\n hasAdjacentParameterIssues: function() {\n return hasAdjacentParameterIssues;\n },\n normalizeAdjacentParameters: function() {\n return normalizeAdjacentParameters;\n },\n normalizeTokensForRegexp: function() {\n return normalizeTokensForRegexp;\n },\n stripNormalizedSeparators: function() {\n return stripNormalizedSeparators;\n },\n stripParameterSeparators: function() {\n return stripParameterSeparators;\n }\n});\nconst PARAM_SEPARATOR = '_NEXTSEP_';\nfunction hasAdjacentParameterIssues(route) {\n if (typeof route !== 'string') return false;\n // Check for interception route markers followed immediately by parameters\n // Pattern: /(.):param, /(..):param, /(...):param, /(.)(.):param etc.\n // These patterns cause \"Must have text between two parameters\" errors\n if (/\\/\\(\\.{1,3}\\):[^/\\s]+/.test(route)) {\n return true;\n }\n // Check for basic adjacent parameters without separators\n // Pattern: :param1:param2 (but not :param* or other URL patterns)\n if (/:[a-zA-Z_][a-zA-Z0-9_]*:[a-zA-Z_][a-zA-Z0-9_]*/.test(route)) {\n return true;\n }\n return false;\n}\nfunction normalizeAdjacentParameters(route) {\n let normalized = route;\n // Handle interception route patterns: (.):param -> (.)_NEXTSEP_:param\n normalized = normalized.replace(/(\\([^)]*\\)):([^/\\s]+)/g, `$1${PARAM_SEPARATOR}:$2`);\n // Handle other adjacent parameter patterns: :param1:param2 -> :param1_NEXTSEP_:param2\n normalized = normalized.replace(/:([^:/\\s)]+)(?=:)/g, `:$1${PARAM_SEPARATOR}`);\n return normalized;\n}\nfunction normalizeTokensForRegexp(tokens) {\n return tokens.map((token)=>{\n // Token union type: Token = string | TokenObject\n // Literal path segments are strings, parameters/wildcards are objects\n if (typeof token === 'object' && token !== null && // Not all token objects have 'modifier' property (e.g., simple text tokens)\n 'modifier' in token && // Only repeating modifiers (* or +) cause the validation error\n // Other modifiers like '?' (optional) are fine\n (token.modifier === '*' || token.modifier === '+') && // Token objects can have different shapes depending on route pattern\n 'prefix' in token && 'suffix' in token && // Both prefix and suffix must be empty strings\n // This is what causes the validation error in path-to-regexp\n token.prefix === '' && token.suffix === '') {\n // Add minimal prefix to satisfy path-to-regexp validation\n // We use '/' as it's the most common path delimiter and won't break route matching\n // The prefix gets used in regex generation but doesn't affect parameter extraction\n return {\n ...token,\n prefix: '/'\n };\n }\n return token;\n });\n}\nfunction stripNormalizedSeparators(pathname) {\n // Remove separator after interception route markers\n // Pattern: (.)_NEXTSEP_ -> (.), (..)_NEXTSEP_ -> (..), etc.\n // The separator appears after the closing paren of interception markers\n return pathname.replace(new RegExp(`\\\\)${PARAM_SEPARATOR}`, 'g'), ')');\n}\nfunction stripParameterSeparators(params) {\n const cleaned = {};\n for (const [key, value] of Object.entries(params)){\n if (typeof value === 'string') {\n // Remove the separator if it appears at the start of parameter values\n cleaned[key] = value.replace(new RegExp(`^${PARAM_SEPARATOR}`), '');\n } else if (Array.isArray(value)) {\n // Handle array parameters (from repeated route segments)\n cleaned[key] = value.map((item)=>typeof item === 'string' ? item.replace(new RegExp(`^${PARAM_SEPARATOR}`), '') : item);\n } else {\n cleaned[key] = value;\n }\n }\n return cleaned;\n}\n\n//# sourceMappingURL=route-pattern-normalizer.js.map","/**\n * Client-safe utilities for route matching that don't import server-side\n * utilities to avoid bundling issues with Turbopack\n */ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n safeCompile: null,\n safePathToRegexp: null,\n safeRegexpToFunction: null,\n safeRouteMatcher: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n safeCompile: function() {\n return safeCompile;\n },\n safePathToRegexp: function() {\n return safePathToRegexp;\n },\n safeRegexpToFunction: function() {\n return safeRegexpToFunction;\n },\n safeRouteMatcher: function() {\n return safeRouteMatcher;\n }\n});\nconst _pathtoregexp = require(\"next/dist/compiled/path-to-regexp\");\nconst _routepatternnormalizer = require(\"../../../../lib/route-pattern-normalizer\");\nfunction safePathToRegexp(route, keys, options) {\n if (typeof route !== 'string') {\n return (0, _pathtoregexp.pathToRegexp)(route, keys, options);\n }\n // Check if normalization is needed and cache the result\n const needsNormalization = (0, _routepatternnormalizer.hasAdjacentParameterIssues)(route);\n const routeToUse = needsNormalization ? (0, _routepatternnormalizer.normalizeAdjacentParameters)(route) : route;\n try {\n return (0, _pathtoregexp.pathToRegexp)(routeToUse, keys, options);\n } catch (error) {\n // Only try normalization if we haven't already normalized\n if (!needsNormalization) {\n try {\n const normalizedRoute = (0, _routepatternnormalizer.normalizeAdjacentParameters)(route);\n return (0, _pathtoregexp.pathToRegexp)(normalizedRoute, keys, options);\n } catch (retryError) {\n // If that doesn't work, fall back to original error\n throw error;\n }\n }\n throw error;\n }\n}\nfunction safeCompile(route, options) {\n // Check if normalization is needed and cache the result\n const needsNormalization = (0, _routepatternnormalizer.hasAdjacentParameterIssues)(route);\n const routeToUse = needsNormalization ? (0, _routepatternnormalizer.normalizeAdjacentParameters)(route) : route;\n try {\n const compiler = (0, _pathtoregexp.compile)(routeToUse, options);\n // If we normalized the route, wrap the compiler to strip separators from output\n // The normalization inserts _NEXTSEP_ as a literal string in the pattern to satisfy\n // path-to-regexp validation, but we don't want it in the final compiled URL\n if (needsNormalization) {\n return (params)=>{\n return (0, _routepatternnormalizer.stripNormalizedSeparators)(compiler(params));\n };\n }\n return compiler;\n } catch (error) {\n // Only try normalization if we haven't already normalized\n if (!needsNormalization) {\n try {\n const normalizedRoute = (0, _routepatternnormalizer.normalizeAdjacentParameters)(route);\n const compiler = (0, _pathtoregexp.compile)(normalizedRoute, options);\n // Wrap the compiler to strip separators from output\n return (params)=>{\n return (0, _routepatternnormalizer.stripNormalizedSeparators)(compiler(params));\n };\n } catch (retryError) {\n // If that doesn't work, fall back to original error\n throw error;\n }\n }\n throw error;\n }\n}\nfunction safeRegexpToFunction(regexp, keys) {\n const originalMatcher = (0, _pathtoregexp.regexpToFunction)(regexp, keys || []);\n return (pathname)=>{\n const result = originalMatcher(pathname);\n if (!result) return false;\n // Clean parameters before returning\n return {\n ...result,\n params: (0, _routepatternnormalizer.stripParameterSeparators)(result.params)\n };\n };\n}\nfunction safeRouteMatcher(matcherFn) {\n return (pathname)=>{\n const result = matcherFn(pathname);\n if (!result) return false;\n // Clean parameters before returning\n return (0, _routepatternnormalizer.stripParameterSeparators)(result);\n };\n}\n\n//# sourceMappingURL=route-match-utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"getRouteMatcher\", {\n enumerable: true,\n get: function() {\n return getRouteMatcher;\n }\n});\nconst _utils = require(\"../../utils\");\nconst _routematchutils = require(\"./route-match-utils\");\nfunction getRouteMatcher({ re, groups }) {\n const rawMatcher = (pathname)=>{\n const routeMatch = re.exec(pathname);\n if (!routeMatch) return false;\n const decode = (param)=>{\n try {\n return decodeURIComponent(param);\n } catch {\n throw new _utils.DecodeError('failed to decode param');\n }\n };\n const params = {};\n for (const [key, group] of Object.entries(groups)){\n const match = routeMatch[group.pos];\n if (match !== undefined) {\n if (group.repeat) {\n params[key] = match.split('/').map((entry)=>decode(entry));\n } else {\n params[key] = decode(match);\n }\n }\n }\n return params;\n };\n // Wrap with safe matcher to handle parameter cleaning\n return (0, _routematchutils.safeRouteMatcher)(rawMatcher);\n}\n\n//# sourceMappingURL=route-matcher.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n ACTION_SUFFIX: null,\n APP_DIR_ALIAS: null,\n CACHE_ONE_YEAR_SECONDS: null,\n DOT_NEXT_ALIAS: null,\n ESLINT_DEFAULT_DIRS: null,\n GSP_NO_RETURNED_VALUE: null,\n GSSP_COMPONENT_MEMBER_ERROR: null,\n GSSP_NO_RETURNED_VALUE: null,\n HTML_CONTENT_TYPE_HEADER: null,\n INFINITE_CACHE: null,\n INSTRUMENTATION_HOOK_FILENAME: null,\n JSON_CONTENT_TYPE_HEADER: null,\n MATCHED_PATH_HEADER: null,\n MIDDLEWARE_FILENAME: null,\n MIDDLEWARE_LOCATION_REGEXP: null,\n NEXT_BODY_SUFFIX: null,\n NEXT_CACHE_IMPLICIT_TAG_ID: null,\n NEXT_CACHE_REVALIDATED_TAGS_HEADER: null,\n NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER: null,\n NEXT_CACHE_ROOT_PARAM_TAG_ID: null,\n NEXT_CACHE_SOFT_TAG_MAX_LENGTH: null,\n NEXT_CACHE_TAGS_HEADER: null,\n NEXT_CACHE_TAG_MAX_ITEMS: null,\n NEXT_CACHE_TAG_MAX_LENGTH: null,\n NEXT_DATA_SUFFIX: null,\n NEXT_INTERCEPTION_MARKER_PREFIX: null,\n NEXT_META_SUFFIX: null,\n NEXT_NAV_DEPLOYMENT_ID_HEADER: null,\n NEXT_QUERY_PARAM_PREFIX: null,\n NEXT_RESUME_HEADER: null,\n NEXT_RESUME_STATE_LENGTH_HEADER: null,\n NON_STANDARD_NODE_ENV: null,\n PAGES_DIR_ALIAS: null,\n PRERENDER_REVALIDATE_HEADER: null,\n PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER: null,\n PROXY_FILENAME: null,\n PROXY_LOCATION_REGEXP: null,\n PUBLIC_DIR_MIDDLEWARE_CONFLICT: null,\n ROOT_DIR_ALIAS: null,\n RSC_ACTION_CLIENT_WRAPPER_ALIAS: null,\n RSC_ACTION_ENCRYPTION_ALIAS: null,\n RSC_ACTION_PROXY_ALIAS: null,\n RSC_ACTION_VALIDATE_ALIAS: null,\n RSC_CACHE_WRAPPER_ALIAS: null,\n RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS: null,\n RSC_MOD_REF_PROXY_ALIAS: null,\n RSC_SEGMENTS_DIR_SUFFIX: null,\n RSC_SEGMENT_SUFFIX: null,\n RSC_SUFFIX: null,\n SERVER_PROPS_EXPORT_ERROR: null,\n SERVER_PROPS_GET_INIT_PROPS_CONFLICT: null,\n SERVER_PROPS_SSG_CONFLICT: null,\n SERVER_RUNTIME: null,\n SSG_FALLBACK_EXPORT_ERROR: null,\n SSG_GET_INITIAL_PROPS_CONFLICT: null,\n STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR: null,\n TEXT_PLAIN_CONTENT_TYPE_HEADER: null,\n UNSTABLE_REVALIDATE_RENAME_ERROR: null,\n WEBPACK_LAYERS: null,\n WEBPACK_RESOURCE_QUERIES: null,\n WEB_SOCKET_MAX_RECONNECTIONS: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n ACTION_SUFFIX: function() {\n return ACTION_SUFFIX;\n },\n APP_DIR_ALIAS: function() {\n return APP_DIR_ALIAS;\n },\n CACHE_ONE_YEAR_SECONDS: function() {\n return CACHE_ONE_YEAR_SECONDS;\n },\n DOT_NEXT_ALIAS: function() {\n return DOT_NEXT_ALIAS;\n },\n ESLINT_DEFAULT_DIRS: function() {\n return ESLINT_DEFAULT_DIRS;\n },\n GSP_NO_RETURNED_VALUE: function() {\n return GSP_NO_RETURNED_VALUE;\n },\n GSSP_COMPONENT_MEMBER_ERROR: function() {\n return GSSP_COMPONENT_MEMBER_ERROR;\n },\n GSSP_NO_RETURNED_VALUE: function() {\n return GSSP_NO_RETURNED_VALUE;\n },\n HTML_CONTENT_TYPE_HEADER: function() {\n return HTML_CONTENT_TYPE_HEADER;\n },\n INFINITE_CACHE: function() {\n return INFINITE_CACHE;\n },\n INSTRUMENTATION_HOOK_FILENAME: function() {\n return INSTRUMENTATION_HOOK_FILENAME;\n },\n JSON_CONTENT_TYPE_HEADER: function() {\n return JSON_CONTENT_TYPE_HEADER;\n },\n MATCHED_PATH_HEADER: function() {\n return MATCHED_PATH_HEADER;\n },\n MIDDLEWARE_FILENAME: function() {\n return MIDDLEWARE_FILENAME;\n },\n MIDDLEWARE_LOCATION_REGEXP: function() {\n return MIDDLEWARE_LOCATION_REGEXP;\n },\n NEXT_BODY_SUFFIX: function() {\n return NEXT_BODY_SUFFIX;\n },\n NEXT_CACHE_IMPLICIT_TAG_ID: function() {\n return NEXT_CACHE_IMPLICIT_TAG_ID;\n },\n NEXT_CACHE_REVALIDATED_TAGS_HEADER: function() {\n return NEXT_CACHE_REVALIDATED_TAGS_HEADER;\n },\n NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER: function() {\n return NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER;\n },\n NEXT_CACHE_ROOT_PARAM_TAG_ID: function() {\n return NEXT_CACHE_ROOT_PARAM_TAG_ID;\n },\n NEXT_CACHE_SOFT_TAG_MAX_LENGTH: function() {\n return NEXT_CACHE_SOFT_TAG_MAX_LENGTH;\n },\n NEXT_CACHE_TAGS_HEADER: function() {\n return NEXT_CACHE_TAGS_HEADER;\n },\n NEXT_CACHE_TAG_MAX_ITEMS: function() {\n return NEXT_CACHE_TAG_MAX_ITEMS;\n },\n NEXT_CACHE_TAG_MAX_LENGTH: function() {\n return NEXT_CACHE_TAG_MAX_LENGTH;\n },\n NEXT_DATA_SUFFIX: function() {\n return NEXT_DATA_SUFFIX;\n },\n NEXT_INTERCEPTION_MARKER_PREFIX: function() {\n return NEXT_INTERCEPTION_MARKER_PREFIX;\n },\n NEXT_META_SUFFIX: function() {\n return NEXT_META_SUFFIX;\n },\n NEXT_NAV_DEPLOYMENT_ID_HEADER: function() {\n return NEXT_NAV_DEPLOYMENT_ID_HEADER;\n },\n NEXT_QUERY_PARAM_PREFIX: function() {\n return NEXT_QUERY_PARAM_PREFIX;\n },\n NEXT_RESUME_HEADER: function() {\n return NEXT_RESUME_HEADER;\n },\n NEXT_RESUME_STATE_LENGTH_HEADER: function() {\n return NEXT_RESUME_STATE_LENGTH_HEADER;\n },\n NON_STANDARD_NODE_ENV: function() {\n return NON_STANDARD_NODE_ENV;\n },\n PAGES_DIR_ALIAS: function() {\n return PAGES_DIR_ALIAS;\n },\n PRERENDER_REVALIDATE_HEADER: function() {\n return PRERENDER_REVALIDATE_HEADER;\n },\n PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER: function() {\n return PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER;\n },\n PROXY_FILENAME: function() {\n return PROXY_FILENAME;\n },\n PROXY_LOCATION_REGEXP: function() {\n return PROXY_LOCATION_REGEXP;\n },\n PUBLIC_DIR_MIDDLEWARE_CONFLICT: function() {\n return PUBLIC_DIR_MIDDLEWARE_CONFLICT;\n },\n ROOT_DIR_ALIAS: function() {\n return ROOT_DIR_ALIAS;\n },\n RSC_ACTION_CLIENT_WRAPPER_ALIAS: function() {\n return RSC_ACTION_CLIENT_WRAPPER_ALIAS;\n },\n RSC_ACTION_ENCRYPTION_ALIAS: function() {\n return RSC_ACTION_ENCRYPTION_ALIAS;\n },\n RSC_ACTION_PROXY_ALIAS: function() {\n return RSC_ACTION_PROXY_ALIAS;\n },\n RSC_ACTION_VALIDATE_ALIAS: function() {\n return RSC_ACTION_VALIDATE_ALIAS;\n },\n RSC_CACHE_WRAPPER_ALIAS: function() {\n return RSC_CACHE_WRAPPER_ALIAS;\n },\n RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS: function() {\n return RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS;\n },\n RSC_MOD_REF_PROXY_ALIAS: function() {\n return RSC_MOD_REF_PROXY_ALIAS;\n },\n RSC_SEGMENTS_DIR_SUFFIX: function() {\n return RSC_SEGMENTS_DIR_SUFFIX;\n },\n RSC_SEGMENT_SUFFIX: function() {\n return RSC_SEGMENT_SUFFIX;\n },\n RSC_SUFFIX: function() {\n return RSC_SUFFIX;\n },\n SERVER_PROPS_EXPORT_ERROR: function() {\n return SERVER_PROPS_EXPORT_ERROR;\n },\n SERVER_PROPS_GET_INIT_PROPS_CONFLICT: function() {\n return SERVER_PROPS_GET_INIT_PROPS_CONFLICT;\n },\n SERVER_PROPS_SSG_CONFLICT: function() {\n return SERVER_PROPS_SSG_CONFLICT;\n },\n SERVER_RUNTIME: function() {\n return SERVER_RUNTIME;\n },\n SSG_FALLBACK_EXPORT_ERROR: function() {\n return SSG_FALLBACK_EXPORT_ERROR;\n },\n SSG_GET_INITIAL_PROPS_CONFLICT: function() {\n return SSG_GET_INITIAL_PROPS_CONFLICT;\n },\n STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR: function() {\n return STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR;\n },\n TEXT_PLAIN_CONTENT_TYPE_HEADER: function() {\n return TEXT_PLAIN_CONTENT_TYPE_HEADER;\n },\n UNSTABLE_REVALIDATE_RENAME_ERROR: function() {\n return UNSTABLE_REVALIDATE_RENAME_ERROR;\n },\n WEBPACK_LAYERS: function() {\n return WEBPACK_LAYERS;\n },\n WEBPACK_RESOURCE_QUERIES: function() {\n return WEBPACK_RESOURCE_QUERIES;\n },\n WEB_SOCKET_MAX_RECONNECTIONS: function() {\n return WEB_SOCKET_MAX_RECONNECTIONS;\n }\n});\nconst TEXT_PLAIN_CONTENT_TYPE_HEADER = 'text/plain';\nconst HTML_CONTENT_TYPE_HEADER = 'text/html; charset=utf-8';\nconst JSON_CONTENT_TYPE_HEADER = 'application/json; charset=utf-8';\nconst NEXT_QUERY_PARAM_PREFIX = 'nxtP';\nconst NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI';\nconst MATCHED_PATH_HEADER = 'x-matched-path';\nconst PRERENDER_REVALIDATE_HEADER = 'x-prerender-revalidate';\nconst PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER = 'x-prerender-revalidate-if-generated';\nconst RSC_SEGMENTS_DIR_SUFFIX = '.segments';\nconst RSC_SEGMENT_SUFFIX = '.segment.rsc';\nconst RSC_SUFFIX = '.rsc';\nconst ACTION_SUFFIX = '.action';\nconst NEXT_DATA_SUFFIX = '.json';\nconst NEXT_META_SUFFIX = '.meta';\nconst NEXT_BODY_SUFFIX = '.body';\nconst NEXT_NAV_DEPLOYMENT_ID_HEADER = 'x-nextjs-deployment-id';\nconst NEXT_CACHE_TAGS_HEADER = 'x-next-cache-tags';\nconst NEXT_CACHE_REVALIDATED_TAGS_HEADER = 'x-next-revalidated-tags';\nconst NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER = 'x-next-revalidate-tag-token';\nconst NEXT_RESUME_HEADER = 'next-resume';\nconst NEXT_RESUME_STATE_LENGTH_HEADER = 'x-next-resume-state-length';\nconst NEXT_CACHE_TAG_MAX_ITEMS = 128;\nconst NEXT_CACHE_TAG_MAX_LENGTH = 256;\nconst NEXT_CACHE_SOFT_TAG_MAX_LENGTH = 1024;\nconst NEXT_CACHE_IMPLICIT_TAG_ID = '_N_T_';\nconst NEXT_CACHE_ROOT_PARAM_TAG_ID = '_N_RP_';\nconst CACHE_ONE_YEAR_SECONDS = 31536000;\nconst INFINITE_CACHE = 0xfffffffe;\nconst MIDDLEWARE_FILENAME = 'middleware';\nconst MIDDLEWARE_LOCATION_REGEXP = `(?:src/)?${MIDDLEWARE_FILENAME}`;\nconst PROXY_FILENAME = 'proxy';\nconst PROXY_LOCATION_REGEXP = `(?:src/)?${PROXY_FILENAME}`;\nconst INSTRUMENTATION_HOOK_FILENAME = 'instrumentation';\nconst PAGES_DIR_ALIAS = 'private-next-pages';\nconst DOT_NEXT_ALIAS = 'private-dot-next';\nconst ROOT_DIR_ALIAS = 'private-next-root-dir';\nconst APP_DIR_ALIAS = 'private-next-app-dir';\nconst RSC_MOD_REF_PROXY_ALIAS = 'private-next-rsc-mod-ref-proxy';\nconst RSC_ACTION_VALIDATE_ALIAS = 'private-next-rsc-action-validate';\nconst RSC_ACTION_PROXY_ALIAS = 'private-next-rsc-server-reference';\nconst RSC_CACHE_WRAPPER_ALIAS = 'private-next-rsc-cache-wrapper';\nconst RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS = 'private-next-rsc-track-dynamic-import';\nconst RSC_ACTION_ENCRYPTION_ALIAS = 'private-next-rsc-action-encryption';\nconst RSC_ACTION_CLIENT_WRAPPER_ALIAS = 'private-next-rsc-action-client-wrapper';\nconst PUBLIC_DIR_MIDDLEWARE_CONFLICT = `You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict`;\nconst SSG_GET_INITIAL_PROPS_CONFLICT = `You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps`;\nconst SERVER_PROPS_GET_INIT_PROPS_CONFLICT = `You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.`;\nconst SERVER_PROPS_SSG_CONFLICT = `You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps`;\nconst STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR = `can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props`;\nconst SERVER_PROPS_EXPORT_ERROR = `pages with \\`getServerSideProps\\` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export`;\nconst GSP_NO_RETURNED_VALUE = 'Your `getStaticProps` function did not return an object. Did you forget to add a `return`?';\nconst GSSP_NO_RETURNED_VALUE = 'Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?';\nconst UNSTABLE_REVALIDATE_RENAME_ERROR = 'The `unstable_revalidate` property is available for general use.\\n' + 'Please use `revalidate` instead.';\nconst GSSP_COMPONENT_MEMBER_ERROR = `can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member`;\nconst NON_STANDARD_NODE_ENV = `You are using a non-standard \"NODE_ENV\" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env`;\nconst SSG_FALLBACK_EXPORT_ERROR = `Pages with \\`fallback\\` enabled in \\`getStaticPaths\\` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export`;\nconst ESLINT_DEFAULT_DIRS = [\n 'app',\n 'pages',\n 'components',\n 'lib',\n 'src'\n];\nconst SERVER_RUNTIME = {\n edge: 'edge',\n experimentalEdge: 'experimental-edge',\n nodejs: 'nodejs'\n};\nconst WEB_SOCKET_MAX_RECONNECTIONS = 12;\n/**\n * The names of the webpack layers. These layers are the primitives for the\n * webpack chunks.\n */ const WEBPACK_LAYERS_NAMES = {\n /**\n * The layer for the shared code between the client and server bundles.\n */ shared: 'shared',\n /**\n * The layer for server-only runtime and picking up `react-server` export conditions.\n * Including app router RSC pages and app router custom routes and metadata routes.\n */ reactServerComponents: 'rsc',\n /**\n * Server Side Rendering layer for app (ssr).\n */ serverSideRendering: 'ssr',\n /**\n * The browser client bundle layer for actions.\n */ actionBrowser: 'action-browser',\n /**\n * The Node.js bundle layer for the API routes.\n */ apiNode: 'api-node',\n /**\n * The Edge Lite bundle layer for the API routes.\n */ apiEdge: 'api-edge',\n /**\n * The layer for the middleware code.\n */ middleware: 'middleware',\n /**\n * The layer for the instrumentation hooks.\n */ instrument: 'instrument',\n /**\n * The layer for assets on the edge.\n */ edgeAsset: 'edge-asset',\n /**\n * The browser client bundle layer for App directory.\n */ appPagesBrowser: 'app-pages-browser',\n /**\n * The browser client bundle layer for Pages directory.\n */ pagesDirBrowser: 'pages-dir-browser',\n /**\n * The Edge Lite bundle layer for Pages directory.\n */ pagesDirEdge: 'pages-dir-edge',\n /**\n * The Node.js bundle layer for Pages directory.\n */ pagesDirNode: 'pages-dir-node'\n};\nconst WEBPACK_LAYERS = {\n ...WEBPACK_LAYERS_NAMES,\n GROUP: {\n builtinReact: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser\n ],\n serverOnly: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware\n ],\n neutralTarget: [\n // pages api\n WEBPACK_LAYERS_NAMES.apiNode,\n WEBPACK_LAYERS_NAMES.apiEdge\n ],\n clientOnly: [\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser\n ],\n bundled: [\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.actionBrowser,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.shared,\n WEBPACK_LAYERS_NAMES.instrument,\n WEBPACK_LAYERS_NAMES.middleware\n ],\n appPages: [\n // app router pages and layouts\n WEBPACK_LAYERS_NAMES.reactServerComponents,\n WEBPACK_LAYERS_NAMES.serverSideRendering,\n WEBPACK_LAYERS_NAMES.appPagesBrowser,\n WEBPACK_LAYERS_NAMES.actionBrowser\n ]\n }\n};\nconst WEBPACK_RESOURCE_QUERIES = {\n edgeSSREntry: '__next_edge_ssr_entry__',\n metadata: '__next_metadata__',\n metadataRoute: '__next_metadata_route__',\n metadataImageMeta: '__next_metadata_image_meta__'\n};\n\n//# sourceMappingURL=constants.js.map","// regexp is based on https://github.com/sindresorhus/escape-string-regexp\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"escapeStringRegexp\", {\n enumerable: true,\n get: function() {\n return escapeStringRegexp;\n }\n});\nconst reHasRegExp = /[|\\\\{}()[\\]^$+*?.-]/;\nconst reReplaceRegExp = /[|\\\\{}()[\\]^$+*?.-]/g;\nfunction escapeStringRegexp(str) {\n // see also: https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/escapeRegExp.js#L23\n if (reHasRegExp.test(str)) {\n return str.replace(reReplaceRegExp, '\\\\$&');\n }\n return str;\n}\n\n//# sourceMappingURL=escape-regexp.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"InvariantError\", {\n enumerable: true,\n get: function() {\n return InvariantError;\n }\n});\nclass InvariantError extends Error {\n constructor(message, options){\n super(`Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`, options);\n this.name = 'InvariantError';\n }\n}\n\n//# sourceMappingURL=invariant-error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"parseLoaderTree\", {\n enumerable: true,\n get: function() {\n return parseLoaderTree;\n }\n});\nconst _segment = require(\"../../segment\");\nfunction parseLoaderTree(tree) {\n const [segment, parallelRoutes, modules, staticSiblings] = tree;\n const { layout, template } = modules;\n let { page } = modules;\n // a __DEFAULT__ segment means that this route didn't match any of the\n // segments in the route, so we should use the default page\n page = segment === _segment.DEFAULT_SEGMENT_KEY ? modules.defaultPage : page;\n const conventionPath = layout?.[1] || template?.[1] || page?.[1];\n return {\n page,\n segment,\n modules,\n /* it can be either layout / template / page */ conventionPath,\n parallelRoutes,\n staticSiblings\n };\n}\n\n//# sourceMappingURL=parse-loader-tree.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n getParamProperties: null,\n getSegmentParam: null,\n isCatchAll: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getParamProperties: function() {\n return getParamProperties;\n },\n getSegmentParam: function() {\n return getSegmentParam;\n },\n isCatchAll: function() {\n return isCatchAll;\n }\n});\nconst _interceptionroutes = require(\"./interception-routes\");\nfunction getSegmentParam(segment) {\n const interceptionMarker = _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.find((marker)=>segment.startsWith(marker));\n // if an interception marker is part of the path segment, we need to jump ahead\n // to the relevant portion for param parsing\n if (interceptionMarker) {\n segment = segment.slice(interceptionMarker.length);\n }\n if (segment.startsWith('[[...') && segment.endsWith(']]')) {\n return {\n // TODO-APP: Optional catchall does not currently work with parallel routes,\n // so for now aren't handling a potential interception marker.\n paramType: 'optional-catchall',\n paramName: segment.slice(5, -2)\n };\n }\n if (segment.startsWith('[...') && segment.endsWith(']')) {\n return {\n paramType: interceptionMarker ? `catchall-intercepted-${interceptionMarker}` : 'catchall',\n paramName: segment.slice(4, -1)\n };\n }\n if (segment.startsWith('[') && segment.endsWith(']')) {\n return {\n paramType: interceptionMarker ? `dynamic-intercepted-${interceptionMarker}` : 'dynamic',\n paramName: segment.slice(1, -1)\n };\n }\n return null;\n}\nfunction isCatchAll(type) {\n return type === 'catchall' || type === 'catchall-intercepted-(..)(..)' || type === 'catchall-intercepted-(.)' || type === 'catchall-intercepted-(..)' || type === 'catchall-intercepted-(...)' || type === 'optional-catchall';\n}\nfunction getParamProperties(paramType) {\n let repeat = false;\n let optional = false;\n switch(paramType){\n case 'catchall':\n case 'catchall-intercepted-(..)(..)':\n case 'catchall-intercepted-(.)':\n case 'catchall-intercepted-(..)':\n case 'catchall-intercepted-(...)':\n repeat = true;\n break;\n case 'optional-catchall':\n repeat = true;\n optional = true;\n break;\n case 'dynamic':\n case 'dynamic-intercepted-(..)(..)':\n case 'dynamic-intercepted-(.)':\n case 'dynamic-intercepted-(..)':\n case 'dynamic-intercepted-(...)':\n break;\n default:\n paramType;\n }\n return {\n repeat,\n optional\n };\n}\n\n//# sourceMappingURL=get-segment-param.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n isInterceptionAppRoute: null,\n isNormalizedAppRoute: null,\n parseAppRouteSegment: null,\n parseAppRouteWithSlots: null,\n parseNormalizedAppRoute: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n isInterceptionAppRoute: function() {\n return isInterceptionAppRoute;\n },\n isNormalizedAppRoute: function() {\n return isNormalizedAppRoute;\n },\n parseAppRouteSegment: function() {\n return parseAppRouteSegment;\n },\n parseAppRouteWithSlots: function() {\n return parseAppRouteWithSlots;\n },\n parseNormalizedAppRoute: function() {\n return parseNormalizedAppRoute;\n }\n});\nconst _invarianterror = require(\"../../invariant-error\");\nconst _getsegmentparam = require(\"../utils/get-segment-param\");\nconst _interceptionroutes = require(\"../utils/interception-routes\");\nfunction normalizeEncodedDynamicPlaceholder(segment) {\n if (!/%5b|%5d/i.test(segment)) {\n return segment;\n }\n try {\n const decodedSegment = decodeURIComponent(segment);\n return (0, _getsegmentparam.getSegmentParam)(decodedSegment) ? decodedSegment : segment;\n } catch {\n return segment;\n }\n}\nfunction parseAppRouteSegment(segment) {\n if (segment === '') {\n return null;\n }\n // Check if the segment starts with an interception marker\n const interceptionMarker = _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.find((m)=>segment.startsWith(m));\n const param = (0, _getsegmentparam.getSegmentParam)(segment);\n if (param) {\n return {\n type: 'dynamic',\n name: segment,\n param,\n interceptionMarker\n };\n } else if (segment.startsWith('(') && segment.endsWith(')')) {\n return {\n type: 'route-group',\n name: segment,\n interceptionMarker\n };\n } else if (segment.startsWith('@')) {\n return {\n type: 'parallel-route',\n name: segment,\n interceptionMarker\n };\n } else {\n return {\n type: 'static',\n name: segment,\n interceptionMarker\n };\n }\n}\nfunction isNormalizedAppRoute(route) {\n return route.normalized;\n}\nfunction isInterceptionAppRoute(route) {\n return route.interceptionMarker !== undefined && route.interceptingRoute !== undefined && route.interceptedRoute !== undefined;\n}\n// Bitmask for which non-URL segment types to allow during parsing.\n// By default, route groups and parallel routes are rejected because\n// they should have been stripped by normalizeAppPath. These flags\n// let callers opt in to allowing specific types.\nconst OnlyRoutableSegments = /* */ 0;\nconst AllowParallelSegments = /* */ 1;\nconst AllowGroupSegments = /* */ 2;\nfunction parseAppRouteImpl(pathname, allowedTypes) {\n const pathnameSegments = pathname.split('/').filter(Boolean);\n // Build segments array with static and dynamic segments\n const segments = [];\n // Parse if this is an interception route.\n let interceptionMarker;\n let interceptingRoute;\n let interceptedRoute;\n for (const segment of pathnameSegments){\n const normalizedSegment = normalizeEncodedDynamicPlaceholder(segment);\n // Parse the segment into an AppSegment.\n const appSegment = parseAppRouteSegment(normalizedSegment);\n if (!appSegment) {\n continue;\n }\n if (appSegment.type === 'route-group' && !(allowedTypes & AllowGroupSegments)) {\n throw new _invarianterror.InvariantError(`${pathname} is being parsed as a normalized route, but it has a route group segment.`);\n }\n if (appSegment.type === 'parallel-route' && !(allowedTypes & AllowParallelSegments)) {\n throw new _invarianterror.InvariantError(`${pathname} is being parsed as a normalized route, but it has a parallel route segment.`);\n }\n segments.push(appSegment);\n if (appSegment.interceptionMarker) {\n const parts = pathname.split(appSegment.interceptionMarker);\n if (parts.length !== 2) {\n throw new Error(`Invalid interception route: ${pathname}`);\n }\n interceptingRoute = parseAppRouteImpl(parts[0], allowedTypes);\n interceptedRoute = parseAppRouteImpl(parts[1], allowedTypes);\n interceptionMarker = appSegment.interceptionMarker;\n }\n }\n const dynamicSegments = segments.filter((segment)=>segment.type === 'dynamic');\n return {\n normalized: allowedTypes === OnlyRoutableSegments,\n pathname,\n segments,\n dynamicSegments,\n interceptionMarker,\n interceptingRoute,\n interceptedRoute\n };\n}\nfunction parseNormalizedAppRoute(pathname) {\n return parseAppRouteImpl(pathname, OnlyRoutableSegments);\n}\nfunction parseAppRouteWithSlots(pathname) {\n return parseAppRouteImpl(pathname, AllowParallelSegments);\n}\n\n//# sourceMappingURL=app.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"interceptionPrefixFromParamType\", {\n enumerable: true,\n get: function() {\n return interceptionPrefixFromParamType;\n }\n});\nfunction interceptionPrefixFromParamType(paramType) {\n switch(paramType){\n case 'catchall-intercepted-(..)(..)':\n case 'dynamic-intercepted-(..)(..)':\n return '(..)(..)';\n case 'catchall-intercepted-(.)':\n case 'dynamic-intercepted-(.)':\n return '(.)';\n case 'catchall-intercepted-(..)':\n case 'dynamic-intercepted-(..)':\n return '(..)';\n case 'catchall-intercepted-(...)':\n case 'dynamic-intercepted-(...)':\n return '(...)';\n case 'catchall':\n case 'dynamic':\n case 'optional-catchall':\n default:\n return null;\n }\n}\n\n//# sourceMappingURL=interception-prefix-from-param-type.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"resolveParamValue\", {\n enumerable: true,\n get: function() {\n return resolveParamValue;\n }\n});\nconst _invarianterror = require(\"../../invariant-error\");\nconst _interceptionprefixfromparamtype = require(\"./interception-prefix-from-param-type\");\n/**\n * Extracts the param value from a path segment, handling interception markers\n * based on the expected param type.\n *\n * @param pathSegment - The path segment to extract the value from\n * @param params - The current params object for resolving dynamic param references\n * @param paramType - The expected param type which may include interception marker info\n * @returns The extracted param value\n */ function getParamValueFromSegment(pathSegment, params, paramType) {\n // If the segment is dynamic, resolve it from the params object\n if (pathSegment.type === 'dynamic') {\n return params[pathSegment.param.paramName];\n }\n // If the paramType indicates this is an intercepted param, strip the marker\n // that matches the interception marker in the param type\n const interceptionPrefix = (0, _interceptionprefixfromparamtype.interceptionPrefixFromParamType)(paramType);\n if (interceptionPrefix === pathSegment.interceptionMarker) {\n return pathSegment.name.replace(pathSegment.interceptionMarker, '');\n }\n // For static segments, use the name\n return pathSegment.name;\n}\nfunction resolveParamValue(paramName, paramType, depth, route, params) {\n switch(paramType){\n case 'catchall':\n case 'optional-catchall':\n case 'catchall-intercepted-(..)(..)':\n case 'catchall-intercepted-(.)':\n case 'catchall-intercepted-(..)':\n case 'catchall-intercepted-(...)':\n // For catchall routes, derive from pathname using depth to determine\n // which segments to use\n const processedSegments = [];\n // Process segments to handle any embedded dynamic params\n for(let index = depth; index < route.segments.length; index++){\n const pathSegment = route.segments[index];\n if (pathSegment.type === 'static') {\n let value = pathSegment.name;\n // For intercepted catch-all params, strip the marker from the first segment\n const interceptionPrefix = (0, _interceptionprefixfromparamtype.interceptionPrefixFromParamType)(paramType);\n if (interceptionPrefix && index === depth && interceptionPrefix === pathSegment.interceptionMarker) {\n // Strip the interception marker from the value\n value = value.replace(pathSegment.interceptionMarker, '');\n }\n processedSegments.push(value);\n } else {\n // If the segment is a param placeholder, check if we have its value\n if (!params.hasOwnProperty(pathSegment.param.paramName)) {\n // If the segment is an optional catchall, we can break out of the\n // loop because it's optional!\n if (pathSegment.param.paramType === 'optional-catchall') {\n break;\n }\n // Unknown param placeholder in pathname - can't derive full value\n return undefined;\n }\n // If the segment matches a param, use the param value\n // We don't encode values here as that's handled during retrieval.\n const paramValue = params[pathSegment.param.paramName];\n if (Array.isArray(paramValue)) {\n processedSegments.push(...paramValue);\n } else {\n processedSegments.push(paramValue);\n }\n }\n }\n if (processedSegments.length > 0) {\n return processedSegments;\n } else if (paramType === 'optional-catchall') {\n return undefined;\n } else {\n // We shouldn't be able to match a catchall segment without any path\n // segments if it's not an optional catchall\n throw new _invarianterror.InvariantError(`Unexpected empty path segments match for a route \"${route.pathname}\" with param \"${paramName}\" of type \"${paramType}\"`);\n }\n case 'dynamic':\n case 'dynamic-intercepted-(..)(..)':\n case 'dynamic-intercepted-(.)':\n case 'dynamic-intercepted-(..)':\n case 'dynamic-intercepted-(...)':\n // For regular dynamic parameters, take the segment at this depth\n if (depth < route.segments.length) {\n const pathSegment = route.segments[depth];\n // Check if the segment at this depth is a placeholder for an unknown param\n if (pathSegment.type === 'dynamic' && !params.hasOwnProperty(pathSegment.param.paramName)) {\n // The segment is a placeholder like [category] and we don't have the value\n return undefined;\n }\n // If the segment matches a param, use the param value from params object\n // Otherwise it's a static segment, just use it directly\n // We don't encode values here as that's handled during retrieval\n return getParamValueFromSegment(pathSegment, params, paramType);\n }\n return undefined;\n default:\n paramType;\n }\n}\n\n//# sourceMappingURL=resolve-param-value.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n PARAMETER_PATTERN: null,\n getDynamicParam: null,\n interpolateParallelRouteParams: null,\n parseMatchedParameter: null,\n parseParameter: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n PARAMETER_PATTERN: function() {\n return PARAMETER_PATTERN;\n },\n getDynamicParam: function() {\n return getDynamicParam;\n },\n interpolateParallelRouteParams: function() {\n return interpolateParallelRouteParams;\n },\n parseMatchedParameter: function() {\n return parseMatchedParameter;\n },\n parseParameter: function() {\n return parseParameter;\n }\n});\nconst _invarianterror = require(\"../../invariant-error\");\nconst _parseloadertree = require(\"./parse-loader-tree\");\nconst _app = require(\"../routes/app\");\nconst _resolveparamvalue = require(\"./resolve-param-value\");\n/**\n * Gets the value of a param from the params object. This correctly handles the\n * case where the param is a fallback route param and encodes the resulting\n * value.\n *\n * @param interpolatedParams - The params object.\n * @param segmentKey - The key of the segment.\n * @param fallbackRouteParams - The fallback route params.\n * @returns The value of the param.\n */ function getParamValue(interpolatedParams, segmentKey, fallbackRouteParams) {\n let value = interpolatedParams[segmentKey];\n if (fallbackRouteParams?.has(segmentKey)) {\n // We know that the fallback route params has the segment key because we\n // checked that above.\n const placeholder = fallbackRouteParams.get(segmentKey);\n value = placeholder;\n } else if (Array.isArray(value)) {\n value = value.map((i)=>encodeURIComponent(i));\n } else if (typeof value === 'string') {\n value = encodeURIComponent(value);\n }\n return value;\n}\nfunction interpolateParallelRouteParams(loaderTree, params, pagePath, fallbackRouteParams) {\n const interpolated = structuredClone(params);\n // Stack-based traversal with depth tracking\n const stack = [\n {\n tree: loaderTree,\n depth: 0\n }\n ];\n // Parse the route from the provided page path.\n const route = (0, _app.parseNormalizedAppRoute)(pagePath);\n while(stack.length > 0){\n const { tree, depth } = stack.pop();\n const { segment, parallelRoutes } = (0, _parseloadertree.parseLoaderTree)(tree);\n const appSegment = (0, _app.parseAppRouteSegment)(segment);\n if (appSegment?.type === 'dynamic' && !interpolated.hasOwnProperty(appSegment.param.paramName) && // If the param is in the fallback route params, we don't need to\n // interpolate it because it's already marked as being unknown.\n !fallbackRouteParams?.has(appSegment.param.paramName)) {\n const { paramName, paramType } = appSegment.param;\n const paramValue = (0, _resolveparamvalue.resolveParamValue)(paramName, paramType, depth, route, interpolated);\n if (paramValue !== undefined) {\n interpolated[paramName] = paramValue;\n } else if (paramType !== 'optional-catchall') {\n throw new _invarianterror.InvariantError(`Could not resolve param value for segment: ${paramName}`);\n }\n }\n // Calculate next depth - increment if this is not a route group and not empty\n let nextDepth = depth;\n if (appSegment && appSegment.type !== 'route-group' && appSegment.type !== 'parallel-route') {\n nextDepth++;\n }\n // Add all parallel routes to the stack for processing\n for (const parallelRoute of Object.values(parallelRoutes)){\n stack.push({\n tree: parallelRoute,\n depth: nextDepth\n });\n }\n }\n return interpolated;\n}\nfunction getDynamicParam(interpolatedParams, segmentKey, dynamicParamType, fallbackRouteParams, staticSiblings) {\n let value = getParamValue(interpolatedParams, segmentKey, fallbackRouteParams);\n // handle the case where an optional catchall does not have a value,\n // e.g. `/dashboard/[[...slug]]` when requesting `/dashboard`\n if (!value || value.length === 0) {\n if (dynamicParamType === 'oc') {\n return {\n param: segmentKey,\n value: null,\n type: dynamicParamType,\n treeSegment: [\n segmentKey,\n '',\n dynamicParamType,\n staticSiblings\n ]\n };\n }\n throw new _invarianterror.InvariantError(`Missing value for segment key: \"${segmentKey}\" with dynamic param type: ${dynamicParamType}`);\n }\n const paramCacheKey = Array.isArray(value) ? value.join('/') : value;\n return {\n param: segmentKey,\n // The value that is passed to user code.\n value,\n // The value that is rendered in the router tree.\n // TODO: If the number of static siblings exceeds some threshold (e.g.,\n // dozens or hundreds), consider sending a Bloom filter instead of the full\n // array to reduce payload size. The client would then use the Bloom filter\n // to check membership with a small false positive rate.\n treeSegment: [\n segmentKey,\n paramCacheKey,\n dynamicParamType,\n staticSiblings\n ],\n type: dynamicParamType\n };\n}\nconst PARAMETER_PATTERN = /^([^[]*)\\[((?:\\[[^\\]]*\\])|[^\\]]+)\\](.*)$/;\nfunction parseParameter(param) {\n const match = param.match(PARAMETER_PATTERN);\n if (!match) {\n return parseMatchedParameter(param);\n }\n return parseMatchedParameter(match[2]);\n}\nfunction parseMatchedParameter(param) {\n const optional = param.startsWith('[') && param.endsWith(']');\n if (optional) {\n param = param.slice(1, -1);\n }\n const repeat = param.startsWith('...');\n if (repeat) {\n param = param.slice(3);\n }\n return {\n key: param,\n repeat,\n optional\n };\n}\n\n//# sourceMappingURL=get-dynamic-param.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n getNamedMiddlewareRegex: null,\n getNamedRouteRegex: null,\n getRouteRegex: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n getNamedMiddlewareRegex: function() {\n return getNamedMiddlewareRegex;\n },\n getNamedRouteRegex: function() {\n return getNamedRouteRegex;\n },\n getRouteRegex: function() {\n return getRouteRegex;\n }\n});\nconst _constants = require(\"../../../../lib/constants\");\nconst _interceptionroutes = require(\"./interception-routes\");\nconst _escaperegexp = require(\"../../escape-regexp\");\nconst _removetrailingslash = require(\"./remove-trailing-slash\");\nconst _getdynamicparam = require(\"./get-dynamic-param\");\nfunction getParametrizedRoute(route, includeSuffix, includePrefix) {\n const groups = {};\n let groupIndex = 1;\n const segments = [];\n for (const segment of (0, _removetrailingslash.removeTrailingSlash)(route).slice(1).split('/')){\n const markerMatch = _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.find((m)=>segment.startsWith(m));\n const paramMatches = segment.match(_getdynamicparam.PARAMETER_PATTERN) // Check for parameters\n ;\n if (markerMatch && paramMatches && paramMatches[2]) {\n const { key, optional, repeat } = (0, _getdynamicparam.parseMatchedParameter)(paramMatches[2]);\n groups[key] = {\n pos: groupIndex++,\n repeat,\n optional\n };\n segments.push(`/${(0, _escaperegexp.escapeStringRegexp)(markerMatch)}([^/]+?)`);\n } else if (paramMatches && paramMatches[2]) {\n const { key, repeat, optional } = (0, _getdynamicparam.parseMatchedParameter)(paramMatches[2]);\n groups[key] = {\n pos: groupIndex++,\n repeat,\n optional\n };\n if (includePrefix && paramMatches[1]) {\n segments.push(`/${(0, _escaperegexp.escapeStringRegexp)(paramMatches[1])}`);\n }\n let s = repeat ? optional ? '(?:/(.+?))?' : '/(.+?)' : '/([^/]+?)';\n // Remove the leading slash if includePrefix already added it.\n if (includePrefix && paramMatches[1]) {\n s = s.substring(1);\n }\n segments.push(s);\n } else {\n segments.push(`/${(0, _escaperegexp.escapeStringRegexp)(segment)}`);\n }\n // If there's a suffix, add it to the segments if it's enabled.\n if (includeSuffix && paramMatches && paramMatches[3]) {\n segments.push((0, _escaperegexp.escapeStringRegexp)(paramMatches[3]));\n }\n }\n return {\n parameterizedRoute: segments.join(''),\n groups\n };\n}\nfunction getRouteRegex(normalizedRoute, { includeSuffix = false, includePrefix = false, excludeOptionalTrailingSlash = false } = {}) {\n const { parameterizedRoute, groups } = getParametrizedRoute(normalizedRoute, includeSuffix, includePrefix);\n let re = parameterizedRoute;\n if (!excludeOptionalTrailingSlash) {\n re += '(?:/)?';\n }\n return {\n re: new RegExp(`^${re}$`),\n groups: groups\n };\n}\n/**\n * Builds a function to generate a minimal routeKey using only a-z and minimal\n * number of characters.\n */ function buildGetSafeRouteKey() {\n let i = 0;\n return ()=>{\n let routeKey = '';\n let j = ++i;\n while(j > 0){\n routeKey += String.fromCharCode(97 + (j - 1) % 26);\n j = Math.floor((j - 1) / 26);\n }\n return routeKey;\n };\n}\nfunction getSafeKeyFromSegment({ interceptionMarker, getSafeRouteKey, segment, routeKeys, keyPrefix, backreferenceDuplicateKeys }) {\n const { key, optional, repeat } = (0, _getdynamicparam.parseMatchedParameter)(segment);\n // replace any non-word characters since they can break\n // the named regex\n let cleanedKey = key.replace(/\\W/g, '');\n if (keyPrefix) {\n cleanedKey = `${keyPrefix}${cleanedKey}`;\n }\n let invalidKey = false;\n // check if the key is still invalid and fallback to using a known\n // safe key\n if (cleanedKey.length === 0 || cleanedKey.length > 30) {\n invalidKey = true;\n }\n if (!isNaN(parseInt(cleanedKey.slice(0, 1)))) {\n invalidKey = true;\n }\n if (invalidKey) {\n cleanedKey = getSafeRouteKey();\n }\n const duplicateKey = cleanedKey in routeKeys;\n if (keyPrefix) {\n routeKeys[cleanedKey] = `${keyPrefix}${key}`;\n } else {\n routeKeys[cleanedKey] = key;\n }\n // if the segment has an interception marker, make sure that's part of the regex pattern\n // this is to ensure that the route with the interception marker doesn't incorrectly match\n // the non-intercepted route (ie /app/(.)[username] should not match /app/[username])\n const interceptionPrefix = interceptionMarker ? (0, _escaperegexp.escapeStringRegexp)(interceptionMarker) : '';\n let pattern;\n if (duplicateKey && backreferenceDuplicateKeys) {\n // Use a backreference to the key to ensure that the key is the same value\n // in each of the placeholders.\n pattern = `\\\\k<${cleanedKey}>`;\n } else if (repeat) {\n pattern = `(?<${cleanedKey}>.+?)`;\n } else {\n pattern = `(?<${cleanedKey}>[^/]+?)`;\n }\n return {\n key,\n pattern: optional ? `(?:/${interceptionPrefix}${pattern})?` : `/${interceptionPrefix}${pattern}`,\n cleanedKey: cleanedKey,\n optional,\n repeat\n };\n}\nfunction getNamedParametrizedRoute(route, prefixRouteKeys, includeSuffix, includePrefix, backreferenceDuplicateKeys, reference = {\n names: {},\n intercepted: {}\n}) {\n const getSafeRouteKey = buildGetSafeRouteKey();\n const routeKeys = {};\n const segments = [];\n const inverseParts = [];\n // Ensure we don't mutate the original reference object.\n reference = structuredClone(reference);\n for (const segment of (0, _removetrailingslash.removeTrailingSlash)(route).slice(1).split('/')){\n const hasInterceptionMarker = _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.some((m)=>segment.startsWith(m));\n const paramMatches = segment.match(_getdynamicparam.PARAMETER_PATTERN) // Check for parameters\n ;\n const interceptionMarker = hasInterceptionMarker ? paramMatches?.[1] : undefined;\n let keyPrefix;\n if (interceptionMarker && paramMatches?.[2]) {\n keyPrefix = prefixRouteKeys ? _constants.NEXT_INTERCEPTION_MARKER_PREFIX : undefined;\n reference.intercepted[paramMatches[2]] = interceptionMarker;\n } else if (paramMatches?.[2] && reference.intercepted[paramMatches[2]]) {\n keyPrefix = prefixRouteKeys ? _constants.NEXT_INTERCEPTION_MARKER_PREFIX : undefined;\n } else {\n keyPrefix = prefixRouteKeys ? _constants.NEXT_QUERY_PARAM_PREFIX : undefined;\n }\n if (interceptionMarker && paramMatches && paramMatches[2]) {\n // If there's an interception marker, add it to the segments.\n const { key, pattern, cleanedKey, repeat, optional } = getSafeKeyFromSegment({\n getSafeRouteKey,\n interceptionMarker,\n segment: paramMatches[2],\n routeKeys,\n keyPrefix,\n backreferenceDuplicateKeys\n });\n segments.push(pattern);\n inverseParts.push(`/${paramMatches[1]}:${reference.names[key] ?? cleanedKey}${repeat ? optional ? '*' : '+' : ''}`);\n reference.names[key] ??= cleanedKey;\n } else if (paramMatches && paramMatches[2]) {\n // If there's a prefix, add it to the segments if it's enabled.\n if (includePrefix && paramMatches[1]) {\n segments.push(`/${(0, _escaperegexp.escapeStringRegexp)(paramMatches[1])}`);\n inverseParts.push(`/${paramMatches[1]}`);\n }\n const { key, pattern, cleanedKey, repeat, optional } = getSafeKeyFromSegment({\n getSafeRouteKey,\n segment: paramMatches[2],\n routeKeys,\n keyPrefix,\n backreferenceDuplicateKeys\n });\n // Remove the leading slash if includePrefix already added it.\n let s = pattern;\n if (includePrefix && paramMatches[1]) {\n s = s.substring(1);\n }\n segments.push(s);\n inverseParts.push(`/:${reference.names[key] ?? cleanedKey}${repeat ? optional ? '*' : '+' : ''}`);\n reference.names[key] ??= cleanedKey;\n } else {\n segments.push(`/${(0, _escaperegexp.escapeStringRegexp)(segment)}`);\n inverseParts.push(`/${segment}`);\n }\n // If there's a suffix, add it to the segments if it's enabled.\n if (includeSuffix && paramMatches && paramMatches[3]) {\n segments.push((0, _escaperegexp.escapeStringRegexp)(paramMatches[3]));\n inverseParts.push(paramMatches[3]);\n }\n }\n return {\n namedParameterizedRoute: segments.join(''),\n routeKeys,\n pathToRegexpPattern: inverseParts.join(''),\n reference\n };\n}\nfunction getNamedRouteRegex(normalizedRoute, options) {\n const result = getNamedParametrizedRoute(normalizedRoute, options.prefixRouteKeys, options.includeSuffix ?? false, options.includePrefix ?? false, options.backreferenceDuplicateKeys ?? false, options.reference);\n let namedRegex = result.namedParameterizedRoute;\n if (!options.excludeOptionalTrailingSlash) {\n namedRegex += '(?:/)?';\n }\n return {\n ...getRouteRegex(normalizedRoute, options),\n namedRegex: `^${namedRegex}$`,\n routeKeys: result.routeKeys,\n pathToRegexpPattern: result.pathToRegexpPattern,\n reference: result.reference\n };\n}\nfunction getNamedMiddlewareRegex(normalizedRoute, options) {\n const { parameterizedRoute } = getParametrizedRoute(normalizedRoute, false, false);\n const { catchAll = true } = options;\n if (parameterizedRoute === '/') {\n let catchAllRegex = catchAll ? '.*' : '';\n return {\n namedRegex: `^/${catchAllRegex}$`\n };\n }\n const { namedParameterizedRoute } = getNamedParametrizedRoute(normalizedRoute, false, false, false, false, undefined);\n let catchAllGroupedRegex = catchAll ? '(?:(/.*)?)' : '';\n return {\n namedRegex: `^${namedParameterizedRoute}${catchAllGroupedRegex}$`\n };\n}\n\n//# sourceMappingURL=route-regex.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"interpolateAs\", {\n enumerable: true,\n get: function() {\n return interpolateAs;\n }\n});\nconst _routematcher = require(\"./route-matcher\");\nconst _routeregex = require(\"./route-regex\");\nfunction interpolateAs(route, asPathname, query) {\n let interpolatedRoute = '';\n const dynamicRegex = (0, _routeregex.getRouteRegex)(route);\n const dynamicGroups = dynamicRegex.groups;\n const dynamicMatches = // Try to match the dynamic route against the asPath\n (asPathname !== route ? (0, _routematcher.getRouteMatcher)(dynamicRegex)(asPathname) : '') || // Fall back to reading the values from the href\n // TODO: should this take priority; also need to change in the router.\n query;\n interpolatedRoute = route;\n const params = Object.keys(dynamicGroups);\n if (!params.every((param)=>{\n let value = dynamicMatches[param] || '';\n const { repeat, optional } = dynamicGroups[param];\n // support single-level catch-all\n // TODO: more robust handling for user-error (passing `/`)\n let replaced = `[${repeat ? '...' : ''}${param}]`;\n if (optional) {\n replaced = `${!value ? '/' : ''}[${replaced}]`;\n }\n if (repeat && !Array.isArray(value)) value = [\n value\n ];\n return (optional || param in dynamicMatches) && // Interpolate group into data URL if present\n (interpolatedRoute = interpolatedRoute.replace(replaced, repeat ? value.map(// these values should be fully encoded instead of just\n // path delimiter escaped since they are being inserted\n // into the URL and we expect URL encoded segments\n // when parsing dynamic route params\n (segment)=>encodeURIComponent(segment)).join('/') : encodeURIComponent(value)) || '/');\n })) {\n interpolatedRoute = '' // did not satisfy all requirements\n ;\n // n.b. We ignore this error because we handle warning for this case in\n // development in the `<Link>` component directly.\n }\n return {\n params,\n result: interpolatedRoute\n };\n}\n\n//# sourceMappingURL=interpolate-as.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"resolveHref\", {\n enumerable: true,\n get: function() {\n return resolveHref;\n }\n});\nconst _querystring = require(\"../shared/lib/router/utils/querystring\");\nconst _formaturl = require(\"../shared/lib/router/utils/format-url\");\nconst _omit = require(\"../shared/lib/router/utils/omit\");\nconst _utils = require(\"../shared/lib/utils\");\nconst _normalizetrailingslash = require(\"./normalize-trailing-slash\");\nconst _islocalurl = require(\"../shared/lib/router/utils/is-local-url\");\nconst _utils1 = require(\"../shared/lib/router/utils\");\nconst _interpolateas = require(\"../shared/lib/router/utils/interpolate-as\");\nconst _routeregex = require(\"../shared/lib/router/utils/route-regex\");\nconst _routematcher = require(\"../shared/lib/router/utils/route-matcher\");\nfunction resolveHref(router, href, resolveAs) {\n // we use a dummy base url for relative urls\n let base;\n let urlAsString = typeof href === 'string' ? href : (0, _formaturl.formatWithValidation)(href);\n // repeated slashes and backslashes in the URL are considered\n // invalid and will never match a Next.js page/file\n // https://www.rfc-editor.org/rfc/rfc3986.html#section-3.1\n const urlProtoMatch = urlAsString.match(/^[a-z][a-z0-9+.-]*:\\/\\//i);\n const urlAsStringNoProto = urlProtoMatch ? urlAsString.slice(urlProtoMatch[0].length) : urlAsString;\n const urlParts = urlAsStringNoProto.split('?', 1);\n if ((urlParts[0] || '').match(/(\\/\\/|\\\\)/)) {\n console.error(`Invalid href '${urlAsString}' passed to next/router in page: '${router.pathname}'. Repeated forward-slashes (//) or backslashes \\\\ are not valid in the href.`);\n const normalizedUrl = (0, _utils.normalizeRepeatedSlashes)(urlAsStringNoProto);\n urlAsString = (urlProtoMatch ? urlProtoMatch[0] : '') + normalizedUrl;\n }\n // Return because it cannot be routed by the Next.js router\n if (!(0, _islocalurl.isLocalURL)(urlAsString)) {\n return resolveAs ? [\n urlAsString\n ] : urlAsString;\n }\n try {\n let baseBase = urlAsString.startsWith('#') ? router.asPath : router.pathname;\n // If the provided href is only a query string, it is safer to use the asPath\n // considering rewrites.\n if (urlAsString.startsWith('?')) {\n baseBase = router.asPath;\n // However, if is a dynamic route, we need to use the pathname to preserve the\n // query interpolation and rewrites (router.pathname will look like \"/[slug]\").\n if ((0, _utils1.isDynamicRoute)(router.pathname)) {\n baseBase = router.pathname;\n const routeRegex = (0, _routeregex.getRouteRegex)(router.pathname);\n const match = (0, _routematcher.getRouteMatcher)(routeRegex)(router.asPath);\n // For dynamic routes, if asPath doesn't match the pathname regex, it is a rewritten path.\n // In this case, should use asPath to preserve the current URL.\n if (!match) {\n baseBase = router.asPath;\n }\n // Note: There is an edge case where the pathname is dynamic, and also a rewrite path to the same segment.\n // E.g. in \"/[slug]\" path, rewrite \"/foo\" -> \"/bar\"\n // In this case, it will be treated as a non-rewritten path and possibly interpolate the query string.\n // E.g., \"/any?slug=foo\" will become the content of \"/foo\", not rewritten as \"/bar\"\n // This is currently a trade-off of not resolving rewrite paths on every Router/Link call,\n // but using a lighter route regex pattern check.\n }\n }\n base = new URL(baseBase, 'http://n');\n } catch (_) {\n // fallback to / for invalid asPath values e.g. //\n base = new URL('/', 'http://n');\n }\n try {\n const finalUrl = new URL(urlAsString, base);\n finalUrl.pathname = (0, _normalizetrailingslash.normalizePathTrailingSlash)(finalUrl.pathname);\n let interpolatedAs = '';\n if ((0, _utils1.isDynamicRoute)(finalUrl.pathname) && finalUrl.searchParams && resolveAs) {\n const query = (0, _querystring.searchParamsToUrlQuery)(finalUrl.searchParams);\n const { result, params } = (0, _interpolateas.interpolateAs)(finalUrl.pathname, finalUrl.pathname, query);\n if (result) {\n interpolatedAs = (0, _formaturl.formatWithValidation)({\n pathname: result,\n hash: finalUrl.hash,\n query: (0, _omit.omit)(query, params)\n });\n }\n }\n // if the origin didn't change, it means we received a relative href\n const resolvedHref = finalUrl.origin === base.origin ? finalUrl.href.slice(finalUrl.origin.length) : finalUrl.href;\n return resolveAs ? [\n resolvedHref,\n interpolatedAs || resolvedHref\n ] : resolvedHref;\n } catch (_) {\n return resolveAs ? [\n urlAsString\n ] : urlAsString;\n }\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=resolve-href.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"addPathPrefix\", {\n enumerable: true,\n get: function() {\n return addPathPrefix;\n }\n});\nconst _parsepath = require(\"./parse-path\");\nfunction addPathPrefix(path, prefix) {\n if (!path.startsWith('/') || !prefix) {\n return path;\n }\n const { pathname, query, hash } = (0, _parsepath.parsePath)(path);\n return `${prefix}${pathname}${query}${hash}`;\n}\n\n//# sourceMappingURL=add-path-prefix.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"addLocale\", {\n enumerable: true,\n get: function() {\n return addLocale;\n }\n});\nconst _addpathprefix = require(\"./add-path-prefix\");\nconst _pathhasprefix = require(\"./path-has-prefix\");\nfunction addLocale(path, locale, defaultLocale, ignorePrefix) {\n // If no locale was given or the locale is the default locale, we don't need\n // to prefix the path.\n if (!locale || locale === defaultLocale) return path;\n const lower = path.toLowerCase();\n // If the path is an API path or the path already has the locale prefix, we\n // don't need to prefix the path.\n if (!ignorePrefix) {\n if ((0, _pathhasprefix.pathHasPrefix)(lower, '/api')) return path;\n if ((0, _pathhasprefix.pathHasPrefix)(lower, `/${locale.toLowerCase()}`)) return path;\n }\n // Add the locale prefix to the path.\n return (0, _addpathprefix.addPathPrefix)(path, `/${locale}`);\n}\n\n//# sourceMappingURL=add-locale.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"addLocale\", {\n enumerable: true,\n get: function() {\n return addLocale;\n }\n});\nconst _normalizetrailingslash = require(\"./normalize-trailing-slash\");\nconst addLocale = (path, ...args)=>{\n if (process.env.__NEXT_I18N_SUPPORT) {\n return (0, _normalizetrailingslash.normalizePathTrailingSlash)(require('../shared/lib/router/utils/add-locale').addLocale(path, ...args));\n }\n return path;\n};\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=add-locale.js.map","\"use strict\";\n\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\nexports._ = _interop_require_default;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"RouterContext\", {\n enumerable: true,\n get: function() {\n return RouterContext;\n }\n});\nconst _interop_require_default = require(\"@swc/helpers/_/_interop_require_default\");\nconst _react = /*#__PURE__*/ _interop_require_default._(require(\"react\"));\nconst RouterContext = _react.default.createContext(null);\nif (process.env.NODE_ENV !== 'production') {\n RouterContext.displayName = 'RouterContext';\n}\n\n//# sourceMappingURL=router-context.shared-runtime.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n cancelIdleCallback: null,\n requestIdleCallback: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n cancelIdleCallback: function() {\n return cancelIdleCallback;\n },\n requestIdleCallback: function() {\n return requestIdleCallback;\n }\n});\nconst requestIdleCallback = typeof self !== 'undefined' && self.requestIdleCallback && self.requestIdleCallback.bind(window) || function(cb) {\n let start = Date.now();\n return self.setTimeout(function() {\n cb({\n didTimeout: false,\n timeRemaining: function() {\n return Math.max(0, 50 - (Date.now() - start));\n }\n });\n }, 1);\n};\nconst cancelIdleCallback = typeof self !== 'undefined' && self.cancelIdleCallback && self.cancelIdleCallback.bind(window) || function(id) {\n return clearTimeout(id);\n};\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=request-idle-callback.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"useIntersection\", {\n enumerable: true,\n get: function() {\n return useIntersection;\n }\n});\nconst _react = require(\"react\");\nconst _requestidlecallback = require(\"./request-idle-callback\");\nconst hasIntersectionObserver = typeof IntersectionObserver === 'function';\nconst observers = new Map();\nconst idList = [];\nfunction createObserver(options) {\n const id = {\n root: options.root || null,\n margin: options.rootMargin || ''\n };\n const existing = idList.find((obj)=>obj.root === id.root && obj.margin === id.margin);\n let instance;\n if (existing) {\n instance = observers.get(existing);\n if (instance) {\n return instance;\n }\n }\n const elements = new Map();\n const observer = new IntersectionObserver((entries)=>{\n entries.forEach((entry)=>{\n const callback = elements.get(entry.target);\n const isVisible = entry.isIntersecting || entry.intersectionRatio > 0;\n if (callback && isVisible) {\n callback(isVisible);\n }\n });\n }, options);\n instance = {\n id,\n observer,\n elements\n };\n idList.push(id);\n observers.set(id, instance);\n return instance;\n}\nfunction observe(element, callback, options) {\n const { id, observer, elements } = createObserver(options);\n elements.set(element, callback);\n observer.observe(element);\n return function unobserve() {\n elements.delete(element);\n observer.unobserve(element);\n // Destroy observer when there's nothing left to watch:\n if (elements.size === 0) {\n observer.disconnect();\n observers.delete(id);\n const index = idList.findIndex((obj)=>obj.root === id.root && obj.margin === id.margin);\n if (index > -1) {\n idList.splice(index, 1);\n }\n }\n };\n}\nfunction useIntersection({ rootRef, rootMargin, disabled }) {\n const isDisabled = disabled || !hasIntersectionObserver;\n const [visible, setVisible] = (0, _react.useState)(false);\n const elementRef = (0, _react.useRef)(null);\n const setElement = (0, _react.useCallback)((element)=>{\n elementRef.current = element;\n }, []);\n (0, _react.useEffect)(()=>{\n if (hasIntersectionObserver) {\n if (isDisabled || visible) return;\n const element = elementRef.current;\n if (element && element.tagName) {\n const unobserve = observe(element, (isVisible)=>isVisible && setVisible(isVisible), {\n root: rootRef?.current,\n rootMargin\n });\n return unobserve;\n }\n } else {\n if (!visible) {\n const idleCallback = (0, _requestidlecallback.requestIdleCallback)(()=>setVisible(true));\n return ()=>(0, _requestidlecallback.cancelIdleCallback)(idleCallback);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n isDisabled,\n rootMargin,\n rootRef,\n visible,\n elementRef.current\n ]);\n const resetVisible = (0, _react.useCallback)(()=>{\n setVisible(false);\n }, []);\n return [\n setElement,\n visible,\n resetVisible\n ];\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=use-intersection.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"normalizeLocalePath\", {\n enumerable: true,\n get: function() {\n return normalizeLocalePath;\n }\n});\n/**\n * A cache of lowercased locales for each list of locales. This is stored as a\n * WeakMap so if the locales are garbage collected, the cache entry will be\n * removed as well.\n */ const cache = new WeakMap();\nfunction normalizeLocalePath(pathname, locales) {\n // If locales is undefined, return the pathname as is.\n if (!locales) return {\n pathname\n };\n // Get the cached lowercased locales or create a new cache entry.\n let lowercasedLocales = cache.get(locales);\n if (!lowercasedLocales) {\n lowercasedLocales = locales.map((locale)=>locale.toLowerCase());\n cache.set(locales, lowercasedLocales);\n }\n let detectedLocale;\n // The first segment will be empty, because it has a leading `/`. If\n // there is no further segment, there is no locale (or it's the default).\n const segments = pathname.split('/', 2);\n // If there's no second segment (ie, the pathname is just `/`), there's no\n // locale.\n if (!segments[1]) return {\n pathname\n };\n // The second segment will contain the locale part if any.\n const segment = segments[1].toLowerCase();\n // See if the segment matches one of the locales. If it doesn't, there is\n // no locale (or it's the default).\n const index = lowercasedLocales.indexOf(segment);\n if (index < 0) return {\n pathname\n };\n // Return the case-sensitive locale.\n detectedLocale = locales[index];\n // Remove the `/${locale}` part of the pathname.\n pathname = pathname.slice(detectedLocale.length + 1) || '/';\n return {\n pathname,\n detectedLocale\n };\n}\n\n//# sourceMappingURL=normalize-locale-path.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"normalizeLocalePath\", {\n enumerable: true,\n get: function() {\n return normalizeLocalePath;\n }\n});\nconst normalizeLocalePath = (pathname, locales)=>{\n if (process.env.__NEXT_I18N_SUPPORT) {\n return require('../shared/lib/i18n/normalize-locale-path').normalizeLocalePath(pathname, locales);\n }\n return {\n pathname,\n detectedLocale: undefined\n };\n};\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=normalize-locale-path.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"detectDomainLocale\", {\n enumerable: true,\n get: function() {\n return detectDomainLocale;\n }\n});\nfunction detectDomainLocale(domainItems, hostname, detectedLocale) {\n if (!domainItems) return;\n if (detectedLocale) {\n detectedLocale = detectedLocale.toLowerCase();\n }\n for (const item of domainItems){\n // remove port if present\n const domainHostname = item.domain?.split(':', 1)[0].toLowerCase();\n if (hostname === domainHostname || detectedLocale === item.defaultLocale.toLowerCase() || item.locales?.some((locale)=>locale.toLowerCase() === detectedLocale)) {\n return item;\n }\n }\n}\n\n//# sourceMappingURL=detect-domain-locale.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"detectDomainLocale\", {\n enumerable: true,\n get: function() {\n return detectDomainLocale;\n }\n});\nconst detectDomainLocale = (...args)=>{\n if (process.env.__NEXT_I18N_SUPPORT) {\n return require('../shared/lib/i18n/detect-domain-locale').detectDomainLocale(...args);\n }\n};\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=detect-domain-locale.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"getDomainLocale\", {\n enumerable: true,\n get: function() {\n return getDomainLocale;\n }\n});\nconst _normalizetrailingslash = require(\"./normalize-trailing-slash\");\nconst basePath = process.env.__NEXT_ROUTER_BASEPATH || '';\nfunction getDomainLocale(path, locale, locales, domainLocales) {\n if (process.env.__NEXT_I18N_SUPPORT) {\n const normalizeLocalePath = require('./normalize-locale-path').normalizeLocalePath;\n const detectDomainLocale = require('./detect-domain-locale').detectDomainLocale;\n const target = locale || normalizeLocalePath(path, locales).detectedLocale;\n const domain = detectDomainLocale(domainLocales, undefined, target);\n if (domain) {\n const proto = `http${domain.http ? '' : 's'}://`;\n const finalLocale = target === domain.defaultLocale ? '' : `/${target}`;\n return `${proto}${domain.domain}${(0, _normalizetrailingslash.normalizePathTrailingSlash)(`${basePath}${finalLocale}${path}`)}`;\n }\n return false;\n } else {\n return false;\n }\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=get-domain-locale.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"addBasePath\", {\n enumerable: true,\n get: function() {\n return addBasePath;\n }\n});\nconst _addpathprefix = require(\"../shared/lib/router/utils/add-path-prefix\");\nconst _normalizetrailingslash = require(\"./normalize-trailing-slash\");\nconst basePath = process.env.__NEXT_ROUTER_BASEPATH || '';\nfunction addBasePath(path, required) {\n return (0, _normalizetrailingslash.normalizePathTrailingSlash)(process.env.__NEXT_MANUAL_CLIENT_BASE_PATH && !required ? path : (0, _addpathprefix.addPathPrefix)(path, basePath));\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=add-base-path.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"useMergedRef\", {\n enumerable: true,\n get: function() {\n return useMergedRef;\n }\n});\nconst _react = require(\"react\");\nfunction useMergedRef(refA, refB) {\n const cleanupA = (0, _react.useRef)(null);\n const cleanupB = (0, _react.useRef)(null);\n // NOTE: In theory, we could skip the wrapping if only one of the refs is non-null.\n // (this happens often if the user doesn't pass a ref to Link/Form/Image)\n // But this can cause us to leak a cleanup-ref into user code (previously via `<Link legacyBehavior>`),\n // and the user might pass that ref into ref-merging library that doesn't support cleanup refs\n // (because it hasn't been updated for React 19)\n // which can then cause things to blow up, because a cleanup-returning ref gets called with `null`.\n // So in practice, it's safer to be defensive and always wrap the ref, even on React 19.\n return (0, _react.useCallback)((current)=>{\n if (current === null) {\n const cleanupFnA = cleanupA.current;\n if (cleanupFnA) {\n cleanupA.current = null;\n cleanupFnA();\n }\n const cleanupFnB = cleanupB.current;\n if (cleanupFnB) {\n cleanupB.current = null;\n cleanupFnB();\n }\n } else {\n if (refA) {\n cleanupA.current = applyRef(refA, current);\n }\n if (refB) {\n cleanupB.current = applyRef(refB, current);\n }\n }\n }, [\n refA,\n refB\n ]);\n}\nfunction applyRef(refA, current) {\n if (typeof refA === 'function') {\n const cleanup = refA(current);\n if (typeof cleanup === 'function') {\n return cleanup;\n } else {\n return ()=>refA(null);\n }\n } else {\n refA.current = current;\n return ()=>{\n refA.current = null;\n };\n }\n}\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=use-merged-ref.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"errorOnce\", {\n enumerable: true,\n get: function() {\n return errorOnce;\n }\n});\nlet errorOnce = (_)=>{};\nif (process.env.NODE_ENV !== 'production') {\n const errors = new Set();\n errorOnce = (msg)=>{\n if (!errors.has(msg)) {\n console.error(msg);\n }\n errors.add(msg);\n };\n}\n\n//# sourceMappingURL=error-once.js.map","'use client';\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n0 && (module.exports = {\n default: null,\n useLinkStatus: null\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n default: function() {\n return _default;\n },\n useLinkStatus: function() {\n return useLinkStatus;\n }\n});\nconst _interop_require_wildcard = require(\"@swc/helpers/_/_interop_require_wildcard\");\nconst _jsxruntime = require(\"react/jsx-runtime\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(require(\"react\"));\nconst _resolvehref = require(\"./resolve-href\");\nconst _islocalurl = require(\"../shared/lib/router/utils/is-local-url\");\nconst _formaturl = require(\"../shared/lib/router/utils/format-url\");\nconst _utils = require(\"../shared/lib/utils\");\nconst _addlocale = require(\"./add-locale\");\nconst _routercontextsharedruntime = require(\"../shared/lib/router-context.shared-runtime\");\nconst _useintersection = require(\"./use-intersection\");\nconst _getdomainlocale = require(\"./get-domain-locale\");\nconst _addbasepath = require(\"./add-base-path\");\nconst _usemergedref = require(\"./use-merged-ref\");\nconst prefetched = new Set();\nfunction prefetch(router, href, as, options) {\n if (typeof window === 'undefined') {\n return;\n }\n if (!(0, _islocalurl.isLocalURL)(href)) {\n return;\n }\n // We should only dedupe requests when experimental.optimisticClientCache is\n // disabled.\n if (!options.bypassPrefetchedCheck) {\n const locale = // Let the link's locale prop override the default router locale.\n typeof options.locale !== 'undefined' ? options.locale : 'locale' in router ? router.locale : undefined;\n const prefetchedKey = href + '%' + as + '%' + locale;\n // If we've already fetched the key, then don't prefetch it again!\n if (prefetched.has(prefetchedKey)) {\n return;\n }\n // Mark this URL as prefetched.\n prefetched.add(prefetchedKey);\n }\n // Prefetch the JSON page if asked (only in the client)\n // We need to handle a prefetch error here since we may be\n // loading with priority which can reject but we don't\n // want to force navigation since this is only a prefetch\n router.prefetch(href, as, options).catch((err)=>{\n if (process.env.NODE_ENV !== 'production') {\n // rethrow to show invalid URL errors\n throw err;\n }\n });\n}\nfunction isModifiedEvent(event) {\n const eventTarget = event.currentTarget;\n const target = eventTarget.getAttribute('target');\n return target && target !== '_self' || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || // triggers resource download\n event.nativeEvent && event.nativeEvent.which === 2;\n}\nfunction linkClicked(e, router, href, as, replace, shallow, scroll, locale, onNavigate) {\n const { nodeName } = e.currentTarget;\n // anchors inside an svg have a lowercase nodeName\n const isAnchorNodeName = nodeName.toUpperCase() === 'A';\n if (isAnchorNodeName && isModifiedEvent(e) || e.currentTarget.hasAttribute('download')) {\n // ignore click for browser’s default behavior\n return;\n }\n if (!(0, _islocalurl.isLocalURL)(href)) {\n if (replace) {\n // browser default behavior does not replace the history state\n // so we need to do it manually\n e.preventDefault();\n location.replace(href);\n }\n // ignore click for browser’s default behavior\n return;\n }\n e.preventDefault();\n const navigate = ()=>{\n if (onNavigate) {\n let isDefaultPrevented = false;\n onNavigate({\n preventDefault: ()=>{\n isDefaultPrevented = true;\n }\n });\n if (isDefaultPrevented) {\n return;\n }\n }\n // If the router is an NextRouter instance it will have `beforePopState`\n const routerScroll = scroll ?? true;\n if ('beforePopState' in router) {\n router[replace ? 'replace' : 'push'](href, as, {\n shallow,\n locale,\n scroll: routerScroll\n });\n } else {\n router[replace ? 'replace' : 'push'](as || href, {\n scroll: routerScroll\n });\n }\n };\n navigate();\n}\nfunction formatStringOrUrl(urlObjOrString) {\n if (typeof urlObjOrString === 'string') {\n return urlObjOrString;\n }\n return (0, _formaturl.formatUrl)(urlObjOrString);\n}\n/**\n * A React component that extends the HTML `<a>` element to provide [prefetching](https://nextjs.org/docs/app/building-your-application/routing/linking-and-navigating#2-prefetching)\n * and client-side navigation between routes.\n *\n * It is the primary way to navigate between routes in Next.js.\n *\n * Read more: [Next.js docs: `<Link>`](https://nextjs.org/docs/app/api-reference/components/link)\n */ const Link = /*#__PURE__*/ _react.default.forwardRef(function LinkComponent(props, forwardedRef) {\n let children;\n const { href: hrefProp, as: asProp, children: childrenProp, prefetch: prefetchProp = null, passHref, replace, shallow, scroll, locale, onClick, onNavigate, onMouseEnter: onMouseEnterProp, onTouchStart: onTouchStartProp, legacyBehavior = false, transitionTypes, ...restProps } = props;\n children = childrenProp;\n if (legacyBehavior && (typeof children === 'string' || typeof children === 'number')) {\n children = /*#__PURE__*/ (0, _jsxruntime.jsx)(\"a\", {\n children: children\n });\n }\n const router = _react.default.useContext(_routercontextsharedruntime.RouterContext);\n const prefetchEnabled = prefetchProp !== false;\n if (process.env.NODE_ENV !== 'production') {\n function createPropError(args) {\n return new Error(`Failed prop type: The prop \\`${args.key}\\` expects a ${args.expected} in \\`<Link>\\`, but got \\`${args.actual}\\` instead.` + (typeof window !== 'undefined' ? \"\\nOpen your browser's console to view the Component stack trace.\" : ''));\n }\n // TypeScript trick for type-guarding:\n const requiredPropsGuard = {\n href: true\n };\n const requiredProps = Object.keys(requiredPropsGuard);\n requiredProps.forEach((key)=>{\n if (key === 'href') {\n if (props[key] == null || typeof props[key] !== 'string' && typeof props[key] !== 'object') {\n throw createPropError({\n key,\n expected: '`string` or `object`',\n actual: props[key] === null ? 'null' : typeof props[key]\n });\n }\n } else {\n // TypeScript trick for type-guarding:\n const _ = key;\n }\n });\n // TypeScript trick for type-guarding:\n const optionalPropsGuard = {\n as: true,\n replace: true,\n scroll: true,\n shallow: true,\n passHref: true,\n prefetch: true,\n locale: true,\n onClick: true,\n onMouseEnter: true,\n onTouchStart: true,\n legacyBehavior: true,\n onNavigate: true,\n transitionTypes: true\n };\n const optionalProps = Object.keys(optionalPropsGuard);\n optionalProps.forEach((key)=>{\n const valType = typeof props[key];\n if (key === 'as') {\n if (props[key] && valType !== 'string' && valType !== 'object') {\n throw createPropError({\n key,\n expected: '`string` or `object`',\n actual: valType\n });\n }\n } else if (key === 'locale') {\n if (props[key] && valType !== 'string') {\n throw createPropError({\n key,\n expected: '`string`',\n actual: valType\n });\n }\n } else if (key === 'onClick' || key === 'onMouseEnter' || key === 'onTouchStart' || key === 'onNavigate') {\n if (props[key] && valType !== 'function') {\n throw createPropError({\n key,\n expected: '`function`',\n actual: valType\n });\n }\n } else if (key === 'replace' || key === 'scroll' || key === 'shallow' || key === 'passHref' || key === 'legacyBehavior') {\n if (props[key] != null && valType !== 'boolean') {\n throw createPropError({\n key,\n expected: '`boolean`',\n actual: valType\n });\n }\n } else if (key === 'prefetch') {\n if (props[key] != null && valType !== 'boolean' && props[key] !== 'auto') {\n throw createPropError({\n key,\n expected: '`boolean | \"auto\"`',\n actual: valType\n });\n }\n } else if (key === 'transitionTypes') {\n if (props[key] != null && !Array.isArray(props[key])) {\n throw createPropError({\n key,\n expected: '`string[]`',\n actual: valType\n });\n }\n } else {\n // TypeScript trick for type-guarding:\n const _ = key;\n }\n });\n }\n const { href, as } = _react.default.useMemo(()=>{\n if (!router) {\n const resolvedHref = formatStringOrUrl(hrefProp);\n return {\n href: resolvedHref,\n as: asProp ? formatStringOrUrl(asProp) : resolvedHref\n };\n }\n const [resolvedHref, resolvedAs] = (0, _resolvehref.resolveHref)(router, hrefProp, true);\n return {\n href: resolvedHref,\n as: asProp ? (0, _resolvehref.resolveHref)(router, asProp) : resolvedAs || resolvedHref\n };\n }, [\n router,\n hrefProp,\n asProp\n ]);\n const previousHref = _react.default.useRef(href);\n const previousAs = _react.default.useRef(as);\n // This will return the first child, if multiple are provided it will throw an error\n let child;\n if (legacyBehavior) {\n if (process.env.NODE_ENV === 'development') {\n if (onClick) {\n console.warn(`\"onClick\" was passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but \"legacyBehavior\" was set. The legacy behavior requires onClick be set on the child of next/link`);\n }\n if (onMouseEnterProp) {\n console.warn(`\"onMouseEnter\" was passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but \"legacyBehavior\" was set. The legacy behavior requires onMouseEnter be set on the child of next/link`);\n }\n try {\n child = _react.default.Children.only(children);\n } catch (err) {\n if (!children) {\n throw new Error(`No children were passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but one child is required https://nextjs.org/docs/messages/link-no-children`);\n }\n throw new Error(`Multiple children were passed to <Link> with \\`href\\` of \\`${hrefProp}\\` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children` + (typeof window !== 'undefined' ? \" \\nOpen your browser's console to view the Component stack trace.\" : ''));\n }\n } else {\n child = _react.default.Children.only(children);\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if (children?.type === 'a') {\n throw new Error('Invalid <Link> with <a> child. Please remove <a> or use <Link legacyBehavior>.\\nLearn more: https://nextjs.org/docs/messages/invalid-new-link-with-extra-anchor');\n }\n }\n }\n const childRef = legacyBehavior ? child && typeof child === 'object' && child.ref : forwardedRef;\n const [setIntersectionRef, isVisible, resetVisible] = (0, _useintersection.useIntersection)({\n rootMargin: '200px'\n });\n const setIntersectionWithResetRef = _react.default.useCallback((el)=>{\n // Before the link getting observed, check if visible state need to be reset\n if (previousAs.current !== as || previousHref.current !== href) {\n resetVisible();\n previousAs.current = as;\n previousHref.current = href;\n }\n setIntersectionRef(el);\n }, [\n as,\n href,\n resetVisible,\n setIntersectionRef\n ]);\n const setRef = (0, _usemergedref.useMergedRef)(setIntersectionWithResetRef, childRef);\n // Prefetch the URL if we haven't already and it's visible.\n _react.default.useEffect(()=>{\n // in dev, we only prefetch on hover to avoid wasting resources as the prefetch will trigger compiling the page.\n if (process.env.NODE_ENV !== 'production') {\n return;\n }\n if (!router) {\n return;\n }\n // If we don't need to prefetch the URL, don't do prefetch.\n if (!isVisible || !prefetchEnabled) {\n return;\n }\n // Prefetch the URL.\n prefetch(router, href, as, {\n // dedupe across appear/disappear of the Link.\n bypassPrefetchedCheck: false,\n locale\n });\n }, [\n as,\n href,\n isVisible,\n locale,\n prefetchEnabled,\n router?.locale,\n router\n ]);\n const childProps = {\n ref: setRef,\n onClick (e) {\n if (process.env.NODE_ENV !== 'production') {\n if (!e) {\n throw new Error(`Component rendered inside next/link has to pass click event to \"onClick\" prop.`);\n }\n }\n if (!legacyBehavior && typeof onClick === 'function') {\n onClick(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onClick === 'function') {\n child.props.onClick(e);\n }\n if (!router) {\n return;\n }\n if (e.defaultPrevented) {\n return;\n }\n linkClicked(e, router, href, as, replace, shallow, scroll, locale, onNavigate);\n },\n onMouseEnter (e) {\n if (!legacyBehavior && typeof onMouseEnterProp === 'function') {\n onMouseEnterProp(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onMouseEnter === 'function') {\n child.props.onMouseEnter(e);\n }\n if (!router) {\n return;\n }\n prefetch(router, href, as, {\n locale,\n priority: true,\n // @see {https://github.com/vercel/next.js/discussions/40268?sort=top#discussioncomment-3572642}\n bypassPrefetchedCheck: true\n });\n },\n onTouchStart: process.env.__NEXT_LINK_NO_TOUCH_START ? undefined : function onTouchStart(e) {\n if (!legacyBehavior && typeof onTouchStartProp === 'function') {\n onTouchStartProp(e);\n }\n if (legacyBehavior && child.props && typeof child.props.onTouchStart === 'function') {\n child.props.onTouchStart(e);\n }\n if (!router) {\n return;\n }\n prefetch(router, href, as, {\n locale,\n priority: true,\n // @see {https://github.com/vercel/next.js/discussions/40268?sort=top#discussioncomment-3572642}\n bypassPrefetchedCheck: true\n });\n }\n };\n // If the url is absolute, we can bypass the logic to prepend the domain and locale.\n if ((0, _utils.isAbsoluteUrl)(as)) {\n childProps.href = as;\n } else if (!legacyBehavior || passHref || child.type === 'a' && !('href' in child.props)) {\n const curLocale = typeof locale !== 'undefined' ? locale : router?.locale;\n // we only render domain locales if we are currently on a domain locale\n // so that locale links are still visitable in development/preview envs\n const localeDomain = router?.isLocaleDomain && (0, _getdomainlocale.getDomainLocale)(as, curLocale, router?.locales, router?.domainLocales);\n childProps.href = localeDomain || (0, _addbasepath.addBasePath)((0, _addlocale.addLocale)(as, curLocale, router?.defaultLocale));\n }\n if (legacyBehavior) {\n if (process.env.NODE_ENV === 'development') {\n const { errorOnce } = require('../shared/lib/utils/error-once');\n errorOnce('`legacyBehavior` is deprecated and will be removed in a future ' + 'release. A codemod is available to upgrade your components:\\n\\n' + 'npx @next/codemod@latest new-link .\\n\\n' + 'Learn more: https://nextjs.org/docs/app/building-your-application/upgrading/codemods#remove-a-tags-from-link-components');\n }\n return /*#__PURE__*/ _react.default.cloneElement(child, childProps);\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"a\", {\n ...restProps,\n ...childProps,\n children: children\n });\n});\nconst LinkStatusContext = /*#__PURE__*/ (0, _react.createContext)({\n // We do not support link status in the Pages Router, so we always return false\n pending: false\n});\nconst useLinkStatus = ()=>{\n // This behaviour is like React's useFormStatus. When the component is not under\n // a <form> tag, it will get the default value, instead of throwing an error.\n return (0, _react.useContext)(LinkStatusContext);\n};\nconst _default = Link;\n\nif ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {\n Object.defineProperty(exports.default, '__esModule', { value: true });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n}\n\n//# sourceMappingURL=link.js.map","module.exports = require('./dist/client/link')\n","import { Fragment, type ReactNode } from \"react\";\r\nimport Link from \"next/link\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Breadcrumb.module.css\";\r\n\r\nexport type BreadcrumbItem = {\r\n label: string;\r\n href?: string;\r\n icon?: string;\r\n};\r\n\r\ntype BreadcrumbProps = {\r\n items: BreadcrumbItem[];\r\n ariaLabel?: string;\r\n separator?: ReactNode;\r\n className?: string;\r\n};\r\n\r\nexport default function Breadcrumb({\r\n items,\r\n ariaLabel = \"Breadcrumb\",\r\n separator = \"/\",\r\n className,\r\n}: BreadcrumbProps) {\r\n return (\r\n <nav\r\n aria-label={ariaLabel}\r\n className={[styles.breadcrumb, className].filter(Boolean).join(\" \")}\r\n >\r\n <ol className={styles.list}>\r\n {items.map((item, index) => {\r\n const last = index === items.length - 1;\r\n return (\r\n <Fragment key={`${item.label}-${index}`}>\r\n {index > 0 ? (\r\n <li className={styles.separator} aria-hidden=\"true\">\r\n {separator}\r\n </li>\r\n ) : null}\r\n <li className={styles.item}>\r\n {!last && item.href ? (\r\n <Link href={item.href} className={styles.link}>\r\n {item.icon ? <Icon name={item.icon} /> : null}\r\n <span>{item.label}</span>\r\n </Link>\r\n ) : (\r\n <span\r\n className={last ? styles.current : styles.text}\r\n aria-current={last ? \"page\" : undefined}\r\n >\r\n {item.icon ? <Icon name={item.icon} /> : null}\r\n <span>{item.label}</span>\r\n </span>\r\n )}\r\n </li>\r\n </Fragment>\r\n );\r\n })}\r\n </ol>\r\n </nav>\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\r\nimport styles from \"./ButtonGroup.module.css\";\r\n\r\ntype ButtonGroupProps = {\r\n children: ReactNode;\r\n \"aria-label\": string;\r\n className?: string;\r\n};\r\n\r\nexport default function ButtonGroup({\r\n children,\r\n \"aria-label\": ariaLabel,\r\n className,\r\n}: ButtonGroupProps) {\r\n return (\r\n <div\r\n role=\"group\"\r\n aria-label={ariaLabel}\r\n className={[styles.group, className].filter(Boolean).join(\" \")}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Card.module.css\";\r\n\r\ntype CardProps = {\r\n children: ReactNode;\r\n variant?: \"default\" | \"muted\" | \"elevated\";\r\n interactive?: boolean;\r\n className?: string;\r\n};\r\n\r\nexport default function Card({\r\n children,\r\n variant = \"default\",\r\n interactive = false,\r\n className,\r\n}: CardProps) {\r\n return (\r\n <div\r\n className={[styles.card, className].filter(Boolean).join(\" \")}\r\n data-variant={variant}\r\n data-interactive={interactive ? \"\" : undefined}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\ntype CardHeaderProps = {\r\n title: string;\r\n description?: string;\r\n actions?: ReactNode;\r\n icon?: string;\r\n as?: \"h2\" | \"h3\" | \"h4\";\r\n className?: string;\r\n};\r\n\r\nexport function CardHeader({\r\n title,\r\n description,\r\n actions,\r\n icon,\r\n as = \"h3\",\r\n className,\r\n}: CardHeaderProps) {\r\n const Heading = as;\r\n\r\n return (\r\n <div className={[styles.header, className].filter(Boolean).join(\" \")}>\r\n {icon ? (\r\n <span className={styles.headerIcon}>\r\n <Icon name={icon} />\r\n </span>\r\n ) : null}\r\n <div className={styles.headerText}>\r\n <Heading className={styles.headerTitle}>{title}</Heading>\r\n {description ? (\r\n <p className={styles.headerDescription}>{description}</p>\r\n ) : null}\r\n </div>\r\n {actions ? <div className={styles.headerActions}>{actions}</div> : null}\r\n </div>\r\n );\r\n}\r\n\r\nexport function CardBody({\r\n children,\r\n padding = \"md\",\r\n className,\r\n}: {\r\n children: ReactNode;\r\n padding?: \"none\" | \"sm\" | \"md\";\r\n className?: string;\r\n}) {\r\n return (\r\n <div\r\n className={[styles.body, className].filter(Boolean).join(\" \")}\r\n data-padding={padding}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport function CardFooter({\r\n children,\r\n align = \"end\",\r\n className,\r\n}: {\r\n children: ReactNode;\r\n align?: \"start\" | \"end\" | \"between\";\r\n className?: string;\r\n}) {\r\n return (\r\n <div\r\n className={[styles.footer, className].filter(Boolean).join(\" \")}\r\n data-align={align}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import type { InputHTMLAttributes } from \"react\";\r\nimport styles from \"./Form.module.css\";\r\n\r\nexport type CheckboxProps = Omit<\r\n InputHTMLAttributes<HTMLInputElement>,\r\n \"type\"\r\n> & {\r\n label?: string;\r\n description?: string;\r\n indeterminate?: boolean;\r\n};\r\n\r\nexport default function Checkbox({\r\n label,\r\n description,\r\n indeterminate = false,\r\n className,\r\n disabled,\r\n ...rest\r\n}: CheckboxProps) {\r\n const setRef = (node: HTMLInputElement | null) => {\r\n if (node) node.indeterminate = indeterminate;\r\n };\r\n\r\n return (\r\n <label\r\n className={[styles.choice, className].filter(Boolean).join(\" \")}\r\n data-disabled={disabled ? \"\" : undefined}\r\n >\r\n <input\r\n ref={setRef}\r\n type=\"checkbox\"\r\n className={styles.choiceInput}\r\n disabled={disabled}\r\n {...rest}\r\n />\r\n <span className={styles.checkBox} aria-hidden=\"true\">\r\n <svg className={styles.checkMark} viewBox=\"0 0 12 12\" focusable=\"false\">\r\n {indeterminate ? (\r\n <path d=\"M2.5 6h7\" />\r\n ) : (\r\n <path d=\"M2.6 6.2 4.9 8.4 9.4 3.4\" />\r\n )}\r\n </svg>\r\n </span>\r\n {label || description ? (\r\n <span className={styles.choiceTexts}>\r\n {label ? <span className={styles.choiceLabel}>{label}</span> : null}\r\n {description ? (\r\n <span className={styles.choiceDescription}>{description}</span>\r\n ) : null}\r\n </span>\r\n ) : null}\r\n </label>\r\n );\r\n}\r\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport Icon from \"./Icon\";\nimport styles from \"./CodeBlock.module.css\";\n\ntype CodeBlockProps = {\n code: string;\n language?: string;\n filename?: string;\n showLineNumbers?: boolean;\n copyable?: boolean;\n className?: string;\n};\n\nexport default function CodeBlock({\n code,\n language = \"tsx\",\n filename,\n showLineNumbers = false,\n copyable = true,\n className,\n}: CodeBlockProps) {\n const [copied, setCopied] = useState(false);\n const lines = code.replace(/\\n$/, \"\").split(\"\\n\");\n\n useEffect(() => {\n if (!copied) return;\n const timer = window.setTimeout(() => setCopied(false), 1600);\n return () => window.clearTimeout(timer);\n }, [copied]);\n\n const copy = async () => {\n try {\n await navigator.clipboard.writeText(code);\n setCopied(true);\n } catch {\n /* Clipboard access can be denied; fail silently. */\n }\n };\n\n return (\n <div className={[styles.block, className].filter(Boolean).join(\" \")}>\n <div className={styles.header}>\n <span className={styles.dots} aria-hidden=\"true\">\n <i />\n <i />\n <i />\n </span>\n <span className={styles.filename}>{filename ?? `example.${language}`}</span>\n {copyable ? (\n <button\n type=\"button\"\n className={styles.copy}\n onClick={copy}\n aria-label={copied ? \"Copied\" : \"Copy code\"}\n >\n <Icon name={copied ? \"lucide:check\" : \"lucide:copy\"} />\n <span>{copied ? \"Copied\" : \"Copy\"}</span>\n </button>\n ) : null}\n </div>\n <pre className={styles.pre}>\n <code>\n {lines.map((line, index) => (\n <span key={`${index}-${line}`} className={styles.line}>\n {showLineNumbers ? (\n <span className={styles.lineNumber} aria-hidden=\"true\">\n {index + 1}\n </span>\n ) : null}\n <span className={styles.lineText}>{line || \" \"}</span>\n </span>\n ))}\n </code>\n </pre>\n </div>\n );\n}\n","\"use client\";\r\n\r\nimport {\r\n useEffect,\r\n useId,\r\n useMemo,\r\n useRef,\r\n useState,\r\n type CSSProperties,\r\n type KeyboardEvent,\r\n} from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Combobox.module.css\";\r\n\r\nexport type ComboboxOption = {\r\n value: string;\r\n label: string;\r\n description?: string;\r\n icon?: string;\r\n group?: string;\r\n disabled?: boolean;\r\n};\r\n\r\ntype ComboboxProps = {\r\n options: ComboboxOption[];\r\n value?: string | string[] | null;\r\n onValueChange?: (value: string | string[] | null) => void;\r\n placeholder?: string;\r\n searchPlaceholder?: string;\r\n emptyMessage?: string;\r\n multiple?: boolean;\r\n clearable?: boolean;\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n required?: boolean;\r\n id?: string;\r\n name?: string;\r\n ariaLabel?: string;\r\n \"aria-describedby\"?: string;\r\n \"aria-invalid\"?: boolean;\r\n className?: string;\r\n};\r\n\r\ntype OptionGroup = {\r\n key: string;\r\n label?: string;\r\n options: { option: ComboboxOption; index: number }[];\r\n};\r\n\r\ntype PopoverPosition = {\r\n left: number;\r\n width: number;\r\n top?: number;\r\n bottom?: number;\r\n maxHeight: number;\r\n};\r\n\r\nfunction computePopoverPosition(rect: DOMRect): PopoverPosition {\r\n const gap = 6;\r\n const viewportHeight = window.innerHeight;\r\n const spaceBelow = viewportHeight - rect.bottom - gap - 8;\r\n const spaceAbove = rect.top - gap - 8;\r\n const openAbove = spaceBelow < 180 && spaceAbove > spaceBelow;\r\n const available = Math.max(120, openAbove ? spaceAbove : spaceBelow);\r\n const left = Math.max(\r\n 8,\r\n Math.min(rect.left, window.innerWidth - rect.width - 8),\r\n );\r\n\r\n return {\r\n left,\r\n width: rect.width,\r\n top: openAbove ? undefined : rect.bottom + gap,\r\n bottom: openAbove ? viewportHeight - rect.top + gap : undefined,\r\n maxHeight: Math.min(280, available),\r\n };\r\n}\r\n\r\nexport default function Combobox({\r\n options,\r\n value,\r\n onValueChange,\r\n placeholder = \"Select an option\",\r\n searchPlaceholder = \"Search…\",\r\n emptyMessage = \"No options found.\",\r\n multiple = false,\r\n clearable = false,\r\n disabled = false,\r\n invalid = false,\r\n required = false,\r\n id,\r\n name,\r\n ariaLabel = \"Combobox\",\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-invalid\": ariaInvalid,\r\n className,\r\n}: ComboboxProps) {\r\n const [open, setOpen] = useState(false);\r\n const [query, setQuery] = useState(\"\");\r\n const [activeIndex, setActiveIndex] = useState(0);\r\n const [position, setPosition] = useState<PopoverPosition | null>(null);\r\n const rootRef = useRef<HTMLDivElement>(null);\r\n const controlRef = useRef<HTMLDivElement>(null);\r\n const popoverRef = useRef<HTMLDivElement>(null);\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n const suppressOpen = useRef(false);\r\n const listId = useId();\r\n\r\n const selectedValues = useMemo(() => {\r\n if (multiple) return Array.isArray(value) ? value : [];\r\n if (typeof value === \"string\") return [value];\r\n return [];\r\n }, [multiple, value]);\r\n\r\n const selectedOption = options.find(\r\n (option) => option.value === selectedValues[0],\r\n );\r\n\r\n const filteredOptions = useMemo(() => {\r\n const normalized = query.trim().toLowerCase();\r\n if (!normalized) return options;\r\n\r\n return options.filter((option) =>\r\n `${option.label} ${option.description ?? \"\"} ${option.group ?? \"\"}`\r\n .toLowerCase()\r\n .includes(normalized),\r\n );\r\n }, [options, query]);\r\n\r\n const groups = useMemo<OptionGroup[]>(() => {\r\n const result: OptionGroup[] = [];\r\n\r\n filteredOptions.forEach((option, index) => {\r\n const key = option.group ?? \"\";\r\n const last = result[result.length - 1];\r\n\r\n if (last && last.label === option.group) {\r\n last.options.push({ option, index });\r\n } else {\r\n result.push({\r\n key: `${key}-${result.length}`,\r\n label: option.group,\r\n options: [{ option, index }],\r\n });\r\n }\r\n });\r\n\r\n return result;\r\n }, [filteredOptions]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n\r\n const handlePointerDown = (event: PointerEvent) => {\r\n const target = event.target as Node;\r\n if (\r\n !rootRef.current?.contains(target) &&\r\n !popoverRef.current?.contains(target)\r\n ) {\r\n setOpen(false);\r\n setQuery(\"\");\r\n }\r\n };\r\n\r\n document.addEventListener(\"pointerdown\", handlePointerDown);\r\n return () => document.removeEventListener(\"pointerdown\", handlePointerDown);\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n\r\n const update = () => {\r\n const rect = controlRef.current?.getBoundingClientRect();\r\n if (rect) setPosition(computePopoverPosition(rect));\r\n };\r\n\r\n window.addEventListener(\"resize\", update);\r\n window.addEventListener(\"scroll\", update, true);\r\n return () => {\r\n window.removeEventListener(\"resize\", update);\r\n window.removeEventListener(\"scroll\", update, true);\r\n };\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const active = document.getElementById(`${listId}-option-${activeIndex}`);\r\n active?.scrollIntoView({ block: \"nearest\" });\r\n }, [activeIndex, listId, open]);\r\n\r\n const updatePosition = () => {\r\n const rect = controlRef.current?.getBoundingClientRect();\r\n if (rect) setPosition(computePopoverPosition(rect));\r\n };\r\n\r\n const closeList = () => {\r\n setOpen(false);\r\n setQuery(\"\");\r\n };\r\n\r\n const openList = () => {\r\n if (disabled) return;\r\n setActiveIndex(0);\r\n updatePosition();\r\n setOpen(true);\r\n };\r\n\r\n const handleFocus = () => {\r\n if (suppressOpen.current || disabled) return;\r\n setActiveIndex(0);\r\n updatePosition();\r\n setOpen(true);\r\n if (!multiple) setQuery(\"\");\r\n };\r\n\r\n const selectOption = (option: ComboboxOption) => {\r\n if (option.disabled) return;\r\n\r\n if (multiple) {\r\n const next = selectedValues.includes(option.value)\r\n ? selectedValues.filter((item) => item !== option.value)\r\n : [...selectedValues, option.value];\r\n onValueChange?.(next);\r\n setQuery(\"\");\r\n return;\r\n }\r\n\r\n onValueChange?.(option.value);\r\n closeList();\r\n };\r\n\r\n const removeValue = (optionValue: string) => {\r\n onValueChange?.(selectedValues.filter((item) => item !== optionValue));\r\n };\r\n\r\n const clearSelection = () => {\r\n onValueChange?.(multiple ? [] : null);\r\n setQuery(\"\");\r\n };\r\n\r\n const moveActive = (direction: 1 | -1) => {\r\n if (!filteredOptions.length) return;\r\n\r\n let next = activeIndex;\r\n for (let step = 0; step < filteredOptions.length; step += 1) {\r\n next =\r\n (next + direction + filteredOptions.length) % filteredOptions.length;\r\n if (!filteredOptions[next].disabled) break;\r\n }\r\n setActiveIndex(next);\r\n };\r\n\r\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\r\n if (disabled) return;\r\n\r\n if (event.key === \"Escape\") {\r\n if (open) {\r\n event.preventDefault();\r\n closeList();\r\n }\r\n return;\r\n }\r\n\r\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\r\n event.preventDefault();\r\n if (!open) {\r\n openList();\r\n return;\r\n }\r\n moveActive(event.key === \"ArrowDown\" ? 1 : -1);\r\n return;\r\n }\r\n\r\n if (event.key === \"Enter\") {\r\n if (!open) return;\r\n event.preventDefault();\r\n const option = filteredOptions[activeIndex];\r\n if (option) selectOption(option);\r\n else if (!multiple) closeList();\r\n return;\r\n }\r\n\r\n if (\r\n event.key === \"Backspace\" &&\r\n multiple &&\r\n !query &&\r\n selectedValues.length\r\n ) {\r\n event.preventDefault();\r\n removeValue(selectedValues[selectedValues.length - 1]);\r\n return;\r\n }\r\n\r\n if (event.key === \"Tab\") {\r\n closeList();\r\n }\r\n };\r\n\r\n const inputPlaceholder = multiple\r\n ? selectedValues.length\r\n ? searchPlaceholder\r\n : placeholder\r\n : open\r\n ? searchPlaceholder\r\n : placeholder;\r\n\r\n const inputValue = multiple\r\n ? query\r\n : open\r\n ? query\r\n : selectedOption?.label ?? \"\";\r\n\r\n const activeOption = open ? filteredOptions[activeIndex] : undefined;\r\n\r\n return (\r\n <div\r\n ref={rootRef}\r\n className={[styles.wrap, className].filter(Boolean).join(\" \")}\r\n >\r\n <div\r\n ref={controlRef}\r\n className={styles.control}\r\n data-open={open ? \"\" : undefined}\r\n data-disabled={disabled ? \"\" : undefined}\r\n data-invalid={invalid || ariaInvalid ? \"\" : undefined}\r\n data-multiple={multiple ? \"\" : undefined}\r\n onClick={() => {\r\n if (disabled) return;\r\n openList();\r\n inputRef.current?.focus();\r\n }}\r\n >\r\n <Icon name=\"lucide:search\" className={styles.leadingIcon} />\r\n\r\n {multiple ? (\r\n <span className={styles.chips}>\r\n {selectedValues.map((optionValue) => {\r\n const option = options.find((item) => item.value === optionValue);\r\n const label = option?.label ?? optionValue;\r\n\r\n return (\r\n <span key={optionValue} className={styles.chip}>\r\n <span className={styles.chipLabel}>{label}</span>\r\n <button\r\n type=\"button\"\r\n className={styles.chipRemove}\r\n aria-label={`Remove ${label}`}\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n removeValue(optionValue);\r\n }}\r\n >\r\n <Icon name=\"lucide:x\" />\r\n </button>\r\n </span>\r\n );\r\n })}\r\n <input\r\n ref={inputRef}\r\n id={id}\r\n name={name}\r\n className={styles.input}\r\n type=\"text\"\r\n role=\"combobox\"\r\n autoComplete=\"off\"\r\n spellCheck={false}\r\n value={inputValue}\r\n placeholder={inputPlaceholder}\r\n disabled={disabled}\r\n required={required}\r\n aria-label={ariaLabel}\r\n aria-expanded={open}\r\n aria-controls={open ? listId : undefined}\r\n aria-autocomplete=\"list\"\r\n aria-activedescendant={\r\n activeOption\r\n ? `${listId}-option-${activeIndex}`\r\n : undefined\r\n }\r\n aria-describedby={ariaDescribedBy}\r\n aria-invalid={invalid || ariaInvalid || undefined}\r\n onFocus={handleFocus}\r\n onChange={(event) => {\r\n setActiveIndex(0);\r\n setQuery(event.target.value);\r\n setOpen(true);\r\n }}\r\n onKeyDown={handleKeyDown}\r\n />\r\n </span>\r\n ) : (\r\n <input\r\n ref={inputRef}\r\n id={id}\r\n name={name}\r\n className={styles.input}\r\n type=\"text\"\r\n role=\"combobox\"\r\n autoComplete=\"off\"\r\n spellCheck={false}\r\n value={inputValue}\r\n placeholder={inputPlaceholder}\r\n disabled={disabled}\r\n required={required}\r\n aria-label={ariaLabel}\r\n aria-expanded={open}\r\n aria-controls={open ? listId : undefined}\r\n aria-autocomplete=\"list\"\r\n aria-activedescendant={\r\n activeOption ? `${listId}-option-${activeIndex}` : undefined\r\n }\r\n aria-describedby={ariaDescribedBy}\r\n aria-invalid={invalid || ariaInvalid || undefined}\r\n onFocus={handleFocus}\r\n onChange={(event) => {\r\n setActiveIndex(0);\r\n setQuery(event.target.value);\r\n setOpen(true);\r\n }}\r\n onKeyDown={handleKeyDown}\r\n />\r\n )}\r\n\r\n {clearable && selectedValues.length ? (\r\n <button\r\n type=\"button\"\r\n className={styles.clear}\r\n aria-label=\"Clear selection\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n clearSelection();\r\n }}\r\n >\r\n <Icon name=\"lucide:x\" />\r\n </button>\r\n ) : null}\r\n\r\n <Icon name=\"lucide:chevrons-up-down\" className={styles.chevron} />\r\n </div>\r\n\r\n {open && position\r\n ? createPortal(\r\n <div\r\n ref={popoverRef}\r\n className={styles.popover}\r\n style={\r\n {\r\n left: position.left,\r\n width: position.width,\r\n top: position.top,\r\n bottom: position.bottom,\r\n maxHeight: position.maxHeight,\r\n } as CSSProperties\r\n }\r\n >\r\n <div\r\n className={styles.list}\r\n role=\"listbox\"\r\n id={listId}\r\n aria-label={ariaLabel}\r\n >\r\n {filteredOptions.length ? (\r\n groups.map((group) => (\r\n <div\r\n key={group.key}\r\n className={styles.group}\r\n role=\"group\"\r\n aria-label={group.label}\r\n >\r\n {group.label ? (\r\n <span className={styles.groupLabel}>{group.label}</span>\r\n ) : null}\r\n {group.options.map(({ option, index }) => {\r\n const selected = selectedValues.includes(option.value);\r\n\r\n return (\r\n <button\r\n key={option.value}\r\n type=\"button\"\r\n role=\"option\"\r\n id={`${listId}-option-${index}`}\r\n tabIndex={-1}\r\n className={styles.option}\r\n data-active={index === activeIndex ? \"\" : undefined}\r\n data-selected={selected ? \"\" : undefined}\r\n aria-selected={selected}\r\n disabled={option.disabled}\r\n onMouseEnter={() => {\r\n if (!option.disabled) setActiveIndex(index);\r\n }}\r\n onClick={() => {\r\n selectOption(option);\r\n suppressOpen.current = true;\r\n inputRef.current?.focus();\r\n window.setTimeout(() => {\r\n suppressOpen.current = false;\r\n }, 0);\r\n }}\r\n >\r\n {option.icon ? (\r\n <Icon\r\n name={option.icon}\r\n className={styles.optionIcon}\r\n />\r\n ) : null}\r\n <span className={styles.optionText}>\r\n <span className={styles.optionLabel}>\r\n {option.label}\r\n </span>\r\n {option.description ? (\r\n <span className={styles.optionDescription}>\r\n {option.description}\r\n </span>\r\n ) : null}\r\n </span>\r\n {selected ? (\r\n <Icon\r\n name=\"lucide:check\"\r\n className={styles.check}\r\n />\r\n ) : null}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n ))\r\n ) : (\r\n <div className={styles.empty}>{emptyMessage}</div>\r\n )}\r\n </div>\r\n </div>,\r\n document.body,\r\n )\r\n : null}\r\n </div>\r\n );\r\n}\r\n","import type { InputHTMLAttributes, ReactNode } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Form.module.css\";\r\n\r\nexport type InputProps = Omit<\r\n InputHTMLAttributes<HTMLInputElement>,\r\n \"size\"\r\n> & {\r\n icon?: string;\r\n iconRight?: string;\r\n endAdornment?: ReactNode;\r\n size?: \"sm\" | \"md\";\r\n invalid?: boolean;\r\n fullWidth?: boolean;\r\n};\r\n\r\nexport default function Input({\r\n icon,\r\n iconRight,\r\n endAdornment,\r\n size = \"md\",\r\n invalid = false,\r\n fullWidth = false,\r\n className,\r\n disabled,\r\n ...rest\r\n}: InputProps) {\r\n return (\r\n <div\r\n className={[styles.inputWrap, fullWidth ? styles.fullWidth : \"\", className]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n data-size={size}\r\n data-invalid={invalid ? \"\" : undefined}\r\n data-disabled={disabled ? \"\" : undefined}\r\n >\r\n {icon ? <Icon name={icon} className={styles.inputIcon} /> : null}\r\n <input\r\n className={styles.input}\r\n disabled={disabled}\r\n aria-invalid={invalid || undefined}\r\n {...rest}\r\n />\r\n {iconRight ? <Icon name={iconRight} className={styles.inputIcon} /> : null}\r\n {endAdornment}\r\n </div>\r\n );\r\n}\r\n","import Icon from \"./Icon\";\r\nimport styles from \"./Pagination.module.css\";\r\n\r\ntype PaginationProps = {\r\n page: number;\r\n pageCount: number;\r\n onPageChange: (page: number) => void;\r\n siblings?: number;\r\n ariaLabel?: string;\r\n className?: string;\r\n};\r\n\r\ntype PageItem = number | \"ellipsis\";\r\n\r\nconst range = (start: number, end: number) =>\r\n Array.from({ length: end - start + 1 }, (_, index) => start + index);\r\n\r\nfunction getPageItems(page: number, total: number, siblings: number): PageItem[] {\r\n const totalNumbers = siblings * 2 + 5;\r\n\r\n if (total <= totalNumbers) {\r\n return range(1, total);\r\n }\r\n\r\n const leftSibling = Math.max(page - siblings, 1);\r\n const rightSibling = Math.min(page + siblings, total);\r\n const showLeftEllipsis = leftSibling > 2;\r\n const showRightEllipsis = rightSibling < total - 1;\r\n\r\n if (!showLeftEllipsis && showRightEllipsis) {\r\n return [...range(1, siblings * 2 + 3), \"ellipsis\", total];\r\n }\r\n\r\n if (showLeftEllipsis && !showRightEllipsis) {\r\n return [1, \"ellipsis\", ...range(total - (siblings * 2 + 2), total)];\r\n }\r\n\r\n return [\r\n 1,\r\n \"ellipsis\",\r\n ...range(leftSibling, rightSibling),\r\n \"ellipsis\",\r\n total,\r\n ];\r\n}\r\n\r\nexport default function Pagination({\r\n page,\r\n pageCount,\r\n onPageChange,\r\n siblings = 1,\r\n ariaLabel = \"Pagination\",\r\n className,\r\n}: PaginationProps) {\r\n if (pageCount <= 1) return null;\r\n\r\n const current = Math.min(Math.max(page, 1), pageCount);\r\n const items = getPageItems(current, pageCount, siblings);\r\n\r\n return (\r\n <nav\r\n className={[styles.pagination, className].filter(Boolean).join(\" \")}\r\n aria-label={ariaLabel}\r\n >\r\n <button\r\n type=\"button\"\r\n className={styles.navButton}\r\n aria-label=\"Previous page\"\r\n disabled={current === 1}\r\n onClick={() => onPageChange(current - 1)}\r\n >\r\n <Icon name=\"lucide:chevron-left\" />\r\n </button>\r\n\r\n <div className={styles.pages}>\r\n {items.map((item, index) =>\r\n item === \"ellipsis\" ? (\r\n <span\r\n key={`ellipsis-${index}`}\r\n className={styles.ellipsis}\r\n aria-hidden=\"true\"\r\n >\r\n …\r\n </span>\r\n ) : (\r\n <button\r\n key={item}\r\n type=\"button\"\r\n className={styles.pageButton}\r\n aria-label={`Page ${item}`}\r\n aria-current={item === current ? \"page\" : undefined}\r\n onClick={() => onPageChange(item)}\r\n >\r\n {item}\r\n </button>\r\n ),\r\n )}\r\n </div>\r\n\r\n <span className={styles.summary} aria-live=\"polite\">\r\n Page {current} of {pageCount}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n className={styles.navButton}\r\n aria-label=\"Next page\"\r\n disabled={current === pageCount}\r\n onClick={() => onPageChange(current + 1)}\r\n >\r\n <Icon name=\"lucide:chevron-right\" />\r\n </button>\r\n </nav>\r\n );\r\n}\r\n","import type {\r\n HTMLAttributes,\r\n ReactNode,\r\n TdHTMLAttributes,\r\n ThHTMLAttributes,\r\n} from \"react\";\r\nimport styles from \"./Table.module.css\";\r\n\r\ntype CellAlign = \"left\" | \"center\" | \"right\";\r\n\r\ntype TableProps = {\r\n children: ReactNode;\r\n ariaLabel?: string;\r\n caption?: string;\r\n minWidth?: number;\r\n className?: string;\r\n /** Render edge-to-edge inside a Card body: no own border, radius or background. */\r\n flush?: boolean;\r\n};\r\n\r\nexport default function Table({\r\n children,\r\n ariaLabel,\r\n caption,\r\n minWidth = 720,\r\n className,\r\n flush = false,\r\n}: TableProps) {\r\n return (\r\n <div className={styles.wrapper} data-flush={flush ? \"\" : undefined}>\r\n <table\r\n className={[styles.table, className].filter(Boolean).join(\" \")}\r\n style={{ minWidth }}\r\n aria-label={ariaLabel}\r\n >\r\n {caption ? <caption className={styles.caption}>{caption}</caption> : null}\r\n {children}\r\n </table>\r\n </div>\r\n );\r\n}\r\n\r\nexport function TableHead({ children }: { children: ReactNode }) {\r\n return <thead className={styles.head}>{children}</thead>;\r\n}\r\n\r\nexport function TableBody({ children }: { children: ReactNode }) {\r\n return <tbody className={styles.body}>{children}</tbody>;\r\n}\r\n\r\ntype TableRowProps = HTMLAttributes<HTMLTableRowElement> & {\r\n children: ReactNode;\r\n selected?: boolean;\r\n interactive?: boolean;\r\n};\r\n\r\nexport function TableRow({\r\n children,\r\n selected = false,\r\n interactive = false,\r\n className,\r\n ...rest\r\n}: TableRowProps) {\r\n return (\r\n <tr\r\n {...rest}\r\n className={[styles.row, className].filter(Boolean).join(\" \")}\r\n data-selected={selected ? \"\" : undefined}\r\n data-interactive={interactive ? \"\" : undefined}\r\n >\r\n {children}\r\n </tr>\r\n );\r\n}\r\n\r\ntype TableHeaderCellProps = Omit<\r\n ThHTMLAttributes<HTMLTableCellElement>,\r\n \"align\"\r\n> & {\r\n align?: CellAlign;\r\n children?: ReactNode;\r\n};\r\n\r\nexport function TableHeaderCell({\r\n children,\r\n align = \"left\",\r\n className,\r\n scope = \"col\",\r\n ...rest\r\n}: TableHeaderCellProps) {\r\n return (\r\n <th\r\n {...rest}\r\n scope={scope}\r\n className={[styles.headerCell, className].filter(Boolean).join(\" \")}\r\n data-align={align}\r\n >\r\n {children}\r\n </th>\r\n );\r\n}\r\n\r\ntype TableCellProps = Omit<TdHTMLAttributes<HTMLTableCellElement>, \"align\"> & {\r\n align?: CellAlign;\r\n children?: ReactNode;\r\n};\r\n\r\nexport function TableCell({\r\n children,\r\n align = \"left\",\r\n className,\r\n ...rest\r\n}: TableCellProps) {\r\n return (\r\n <td\r\n {...rest}\r\n className={[styles.cell, className].filter(Boolean).join(\" \")}\r\n data-align={align}\r\n >\r\n {children}\r\n </td>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport {\r\n useMemo,\r\n useState,\r\n type ReactNode,\r\n} from \"react\";\r\nimport Checkbox from \"./Checkbox\";\r\nimport Icon from \"./Icon\";\r\nimport Input from \"./Input\";\r\nimport Pagination from \"./Pagination\";\r\nimport Table, {\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableHeaderCell,\r\n TableRow,\r\n} from \"./Table\";\r\nimport styles from \"./DataTable.module.css\";\r\n\r\nexport type DataTableColumn<T> = {\r\n key: string;\r\n header: string;\r\n align?: \"left\" | \"center\" | \"right\";\r\n sortable?: boolean;\r\n sortValue?: (row: T) => string | number;\r\n cell: (row: T) => ReactNode;\r\n width?: string;\r\n};\r\n\r\ntype DataTableProps<T> = {\r\n data: T[];\r\n columns: DataTableColumn<T>[];\r\n getRowId: (row: T) => string;\r\n ariaLabel?: string;\r\n searchable?: boolean;\r\n searchPlaceholder?: string;\r\n searchText?: (row: T) => string;\r\n pageSize?: number;\r\n selectable?: boolean;\r\n emptyMessage?: string;\r\n /** Edge-to-edge table inside a Card: toolbar and footer keep their own padding. */\r\n flush?: boolean;\r\n};\r\n\r\nexport default function DataTable<T>({\r\n data,\r\n columns,\r\n getRowId,\r\n ariaLabel = \"Data table\",\r\n searchable = true,\r\n searchPlaceholder = \"Search…\",\r\n searchText,\r\n pageSize = 5,\r\n selectable = false,\r\n emptyMessage = \"No records match your filters.\",\r\n flush = false,\r\n}: DataTableProps<T>) {\r\n const [query, setQuery] = useState(\"\");\r\n const [page, setPage] = useState(1);\r\n const [sort, setSort] = useState<{\r\n key: string;\r\n direction: \"asc\" | \"desc\";\r\n }>({ key: \"\", direction: \"asc\" });\r\n const [selected, setSelected] = useState<Set<string>>(() => new Set());\r\n\r\n const filtered = useMemo(() => {\r\n const normalized = query.trim().toLowerCase();\r\n if (!normalized) return data;\r\n\r\n return data.filter((row) =>\r\n (searchText ? searchText(row) : JSON.stringify(row))\r\n .toLowerCase()\r\n .includes(normalized),\r\n );\r\n }, [data, query, searchText]);\r\n\r\n const sorted = useMemo(() => {\r\n if (!sort.key) return filtered;\r\n\r\n const column = columns.find(\r\n (item) => item.key === sort.key && item.sortable && item.sortValue,\r\n );\r\n if (!column?.sortValue) return filtered;\r\n\r\n const factor = sort.direction === \"asc\" ? 1 : -1;\r\n return [...filtered].sort((left, right) => {\r\n const leftValue = column.sortValue?.(left) ?? \"\";\r\n const rightValue = column.sortValue?.(right) ?? \"\";\r\n\r\n if (typeof leftValue === \"number\" && typeof rightValue === \"number\") {\r\n return (leftValue - rightValue) * factor;\r\n }\r\n\r\n return (\r\n String(leftValue).localeCompare(String(rightValue), undefined, {\r\n numeric: true,\r\n }) * factor\r\n );\r\n });\r\n }, [columns, filtered, sort]);\r\n\r\n const pageCount = Math.max(1, Math.ceil(sorted.length / pageSize));\r\n const currentPage = Math.min(page, pageCount);\r\n const startIndex = (currentPage - 1) * pageSize;\r\n const pageRows = sorted.slice(startIndex, startIndex + pageSize);\r\n const pageIds = pageRows.map(getRowId);\r\n\r\n const allChecked =\r\n pageIds.length > 0 && pageIds.every((id) => selected.has(id));\r\n const someChecked =\r\n pageIds.some((id) => selected.has(id)) && !allChecked;\r\n\r\n const toggleRow = (id: string) => {\r\n setSelected((previous) => {\r\n const next = new Set(previous);\r\n if (next.has(id)) next.delete(id);\r\n else next.add(id);\r\n return next;\r\n });\r\n };\r\n\r\n const togglePage = (checked: boolean) => {\r\n setSelected((previous) => {\r\n const next = new Set(previous);\r\n for (const id of pageIds) {\r\n if (checked) next.add(id);\r\n else next.delete(id);\r\n }\r\n return next;\r\n });\r\n };\r\n\r\n const handleSearch = (value: string) => {\r\n setQuery(value);\r\n setPage(1);\r\n };\r\n\r\n const handleSort = (column: DataTableColumn<T>) => {\r\n if (!column.sortable) return;\r\n\r\n setSort((previous) => ({\r\n key: column.key,\r\n direction:\r\n previous.key === column.key && previous.direction === \"asc\"\r\n ? \"desc\"\r\n : \"asc\",\r\n }));\r\n setPage(1);\r\n };\r\n\r\n const ariaSortFor = (key: string) => {\r\n if (sort.key !== key) return \"none\" as const;\r\n return sort.direction === \"asc\"\r\n ? (\"ascending\" as const)\r\n : (\"descending\" as const);\r\n };\r\n\r\n const rangeLabel = sorted.length\r\n ? `Showing ${startIndex + 1}–${Math.min(startIndex + pageSize, sorted.length)} of ${sorted.length}`\r\n : \"No results\";\r\n\r\n return (\r\n <div className={styles.dataTable} data-flush={flush ? \"\" : undefined}>\r\n <div className={styles.toolbar}>\r\n {searchable ? (\r\n <div className={styles.search}>\r\n <Input\r\n type=\"search\"\r\n icon=\"lucide:search\"\r\n value={query}\r\n placeholder={searchPlaceholder}\r\n aria-label={searchPlaceholder}\r\n onChange={(event) => handleSearch(event.target.value)}\r\n fullWidth\r\n />\r\n </div>\r\n ) : null}\r\n\r\n <div className={styles.toolbarMeta}>\r\n {selectable && selected.size > 0 ? (\r\n <div className={styles.selection}>\r\n <span>{selected.size} selected</span>\r\n <button type=\"button\" onClick={() => setSelected(new Set())}>\r\n Clear\r\n </button>\r\n </div>\r\n ) : null}\r\n <span className={styles.resultCount}>\r\n {sorted.length} {sorted.length === 1 ? \"result\" : \"results\"}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n {pageRows.length ? (\r\n <Table ariaLabel={ariaLabel} minWidth={760} flush={flush}>\r\n <TableHead>\r\n <TableRow>\r\n {selectable ? (\r\n <TableHeaderCell className={styles.checkCell}>\r\n <Checkbox\r\n aria-label=\"Select all rows on this page\"\r\n checked={allChecked}\r\n indeterminate={someChecked}\r\n onChange={(event) => togglePage(event.target.checked)}\r\n />\r\n </TableHeaderCell>\r\n ) : null}\r\n {columns.map((column) => (\r\n <TableHeaderCell\r\n key={column.key}\r\n align={column.align}\r\n style={column.width ? { width: column.width } : undefined}\r\n aria-sort={\r\n column.sortable ? ariaSortFor(column.key) : undefined\r\n }\r\n >\r\n {column.sortable ? (\r\n <button\r\n type=\"button\"\r\n className={styles.sortButton}\r\n aria-label={`Sort by ${column.header}`}\r\n onClick={() => handleSort(column)}\r\n >\r\n {column.header}\r\n <Icon\r\n name={\r\n sort.key === column.key\r\n ? sort.direction === \"asc\"\r\n ? \"lucide:arrow-up\"\r\n : \"lucide:arrow-down\"\r\n : \"lucide:arrow-down-up\"\r\n }\r\n />\r\n </button>\r\n ) : (\r\n column.header\r\n )}\r\n </TableHeaderCell>\r\n ))}\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {pageRows.map((row) => {\r\n const id = getRowId(row);\r\n const isSelected = selected.has(id);\r\n\r\n return (\r\n <TableRow key={id} selected={isSelected}>\r\n {selectable ? (\r\n <TableCell className={styles.checkCell}>\r\n <Checkbox\r\n aria-label={`Select row ${id}`}\r\n checked={isSelected}\r\n onChange={() => toggleRow(id)}\r\n />\r\n </TableCell>\r\n ) : null}\r\n {columns.map((column) => (\r\n <TableCell key={column.key} align={column.align}>\r\n {column.cell(row)}\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n );\r\n })}\r\n </TableBody>\r\n </Table>\r\n ) : (\r\n <div className={styles.empty}>\r\n <span className={styles.emptyIcon}>\r\n <Icon name=\"lucide:inbox\" />\r\n </span>\r\n <strong>No results</strong>\r\n <p>{emptyMessage}</p>\r\n {query ? (\r\n <button type=\"button\" onClick={() => handleSearch(\"\")}>\r\n Clear search\r\n </button>\r\n ) : null}\r\n </div>\r\n )}\r\n\r\n {sorted.length ? (\r\n <div className={styles.footer}>\r\n <span className={styles.range}>{rangeLabel}</span>\r\n <Pagination\r\n page={currentPage}\r\n pageCount={pageCount}\r\n onPageChange={setPage}\r\n />\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport {\r\n useEffect,\r\n useId,\r\n useRef,\r\n useState,\r\n type CSSProperties,\r\n type KeyboardEvent,\r\n} from \"react\";\r\nimport Button, { type ButtonTone, type ButtonVariant } from \"./Button\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Dropdown.module.css\";\r\n\r\nexport type DropdownItem = {\r\n type?: \"item\";\r\n label: string;\r\n icon?: string;\r\n shortcut?: string;\r\n tone?: \"default\" | \"danger\";\r\n disabled?: boolean;\r\n onSelect?: () => void;\r\n};\r\n\r\nexport type DropdownEntry =\r\n | DropdownItem\r\n | { type: \"separator\" }\r\n | { type: \"label\"; label: string };\r\n\r\ntype DropdownProps = {\r\n label: string;\r\n icon?: string;\r\n iconRight?: string;\r\n tone?: ButtonTone;\r\n variant?: ButtonVariant;\r\n size?: \"sm\" | \"md\";\r\n iconOnly?: boolean;\r\n align?: \"start\" | \"end\";\r\n items: DropdownEntry[];\r\n menuWidth?: number;\r\n className?: string;\r\n};\r\n\r\ntype MenuPosition = {\r\n top?: number;\r\n bottom?: number;\r\n left?: number;\r\n right?: number;\r\n maxHeight: number;\r\n};\r\n\r\nfunction computeMenuPosition(\r\n rect: DOMRect,\r\n align: \"start\" | \"end\",\r\n estimatedWidth: number,\r\n): MenuPosition {\r\n const gap = 6;\r\n const margin = 8;\r\n const viewportHeight = window.innerHeight;\r\n const spaceBelow = viewportHeight - rect.bottom - gap - margin;\r\n const spaceAbove = rect.top - gap - margin;\r\n const openAbove = spaceBelow < 200 && spaceAbove > spaceBelow;\r\n const maxHeight = Math.min(320, Math.max(140, openAbove ? spaceAbove : spaceBelow));\r\n\r\n if (align === \"start\") {\r\n return {\r\n top: openAbove ? undefined : rect.bottom + gap,\r\n bottom: openAbove ? viewportHeight - rect.top + gap : undefined,\r\n left: Math.max(\r\n margin,\r\n Math.min(rect.left, window.innerWidth - estimatedWidth - margin),\r\n ),\r\n maxHeight,\r\n };\r\n }\r\n\r\n return {\r\n top: openAbove ? undefined : rect.bottom + gap,\r\n bottom: openAbove ? viewportHeight - rect.top + gap : undefined,\r\n right: Math.max(\r\n margin,\r\n Math.min(\r\n window.innerWidth - rect.right,\r\n window.innerWidth - estimatedWidth - margin,\r\n ),\r\n ),\r\n maxHeight,\r\n };\r\n}\r\n\r\nexport default function Dropdown({\r\n label,\r\n icon,\r\n iconRight,\r\n tone,\r\n variant,\r\n size,\r\n iconOnly,\r\n align = \"end\",\r\n items,\r\n menuWidth,\r\n className,\r\n}: DropdownProps) {\r\n const [open, setOpen] = useState(false);\r\n const [position, setPosition] = useState<MenuPosition | null>(null);\r\n const rootRef = useRef<HTMLDivElement>(null);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n const menuId = useId();\r\n\r\n const focusTrigger = () => {\r\n rootRef.current?.querySelector<HTMLButtonElement>(\"button\")?.focus();\r\n };\r\n\r\n const focusItem = (edge: \"first\" | \"last\") => {\r\n const menuItems = menuRef.current?.querySelectorAll<HTMLButtonElement>(\r\n '[role=\"menuitem\"]:not(:disabled)',\r\n );\r\n if (!menuItems?.length) return;\r\n menuItems[edge === \"first\" ? 0 : menuItems.length - 1].focus();\r\n };\r\n\r\n const updatePosition = () => {\r\n const rect = rootRef.current?.getBoundingClientRect();\r\n if (rect) {\r\n setPosition(\r\n computeMenuPosition(rect, align, menuWidth ?? 190),\r\n );\r\n }\r\n };\r\n\r\n const openMenu = () => {\r\n updatePosition();\r\n setOpen(true);\r\n };\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n\r\n const update = () => {\r\n const rect = rootRef.current?.getBoundingClientRect();\r\n if (rect) {\r\n setPosition(\r\n computeMenuPosition(rect, align, menuWidth ?? 190),\r\n );\r\n }\r\n };\r\n\r\n window.addEventListener(\"resize\", update);\r\n window.addEventListener(\"scroll\", update, true);\r\n return () => {\r\n window.removeEventListener(\"resize\", update);\r\n window.removeEventListener(\"scroll\", update, true);\r\n };\r\n }, [align, menuWidth, open]);\r\n\r\n useEffect(() => {\r\n const closeOnOutside = (event: MouseEvent) => {\r\n if (rootRef.current && !rootRef.current.contains(event.target as Node)) {\r\n setOpen(false);\r\n }\r\n };\r\n document.addEventListener(\"click\", closeOnOutside);\r\n return () => document.removeEventListener(\"click\", closeOnOutside);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const closeOnEscape = (event: globalThis.KeyboardEvent) => {\r\n if (event.key !== \"Escape\") return;\r\n setOpen(false);\r\n focusTrigger();\r\n };\r\n document.addEventListener(\"keydown\", closeOnEscape);\r\n return () => document.removeEventListener(\"keydown\", closeOnEscape);\r\n }, [open]);\r\n\r\n const handleMenuKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\r\n const menuItems = [\r\n ...(menuRef.current?.querySelectorAll<HTMLButtonElement>(\r\n '[role=\"menuitem\"]:not(:disabled)',\r\n ) ?? []),\r\n ];\r\n if (!menuItems.length) return;\r\n\r\n const index = menuItems.indexOf(document.activeElement as HTMLButtonElement);\r\n\r\n if (event.key === \"ArrowDown\") {\r\n event.preventDefault();\r\n menuItems[(index + 1) % menuItems.length].focus();\r\n } else if (event.key === \"ArrowUp\") {\r\n event.preventDefault();\r\n menuItems[(index - 1 + menuItems.length) % menuItems.length].focus();\r\n } else if (event.key === \"Home\") {\r\n event.preventDefault();\r\n menuItems[0].focus();\r\n } else if (event.key === \"End\") {\r\n event.preventDefault();\r\n menuItems[menuItems.length - 1].focus();\r\n } else if (event.key === \"Tab\") {\r\n setOpen(false);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={rootRef}\r\n className={[styles.wrapper, className].filter(Boolean).join(\" \")}\r\n onKeyDown={(event) => {\r\n if (event.key !== \"ArrowDown\" && event.key !== \"ArrowUp\") return;\r\n if (!open) {\r\n event.preventDefault();\r\n openMenu();\r\n requestAnimationFrame(() =>\r\n focusItem(event.key === \"ArrowDown\" ? \"first\" : \"last\"),\r\n );\r\n return;\r\n }\r\n if (!menuRef.current?.contains(document.activeElement)) {\r\n event.preventDefault();\r\n focusItem(event.key === \"ArrowDown\" ? \"first\" : \"last\");\r\n }\r\n }}\r\n >\r\n <Button\r\n label={label}\r\n icon={icon}\r\n iconRight={iconRight}\r\n tone={tone}\r\n variant={variant}\r\n size={size}\r\n iconOnly={iconOnly}\r\n aria-haspopup=\"menu\"\r\n aria-expanded={open}\r\n aria-controls={open ? menuId : undefined}\r\n onClick={() => {\r\n if (open) setOpen(false);\r\n else openMenu();\r\n }}\r\n />\r\n\r\n {open && position ? (\r\n <div\r\n ref={menuRef}\r\n id={menuId}\r\n className={styles.menu}\r\n role=\"menu\"\r\n aria-label={label}\r\n data-align={align}\r\n style={\r\n {\r\n ...(menuWidth ? { minWidth: menuWidth } : {}),\r\n ...position,\r\n } as CSSProperties\r\n }\r\n onKeyDown={handleMenuKeyDown}\r\n >\r\n {items.map((entry, index) => {\r\n if (entry.type === \"separator\") {\r\n return (\r\n <div\r\n key={`separator-${index}`}\r\n className={styles.separator}\r\n role=\"separator\"\r\n />\r\n );\r\n }\r\n\r\n if (entry.type === \"label\") {\r\n return (\r\n <div key={`label-${index}-${entry.label}`} className={styles.menuLabel}>\r\n {entry.label}\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n key={`item-${index}-${entry.label}`}\r\n type=\"button\"\r\n role=\"menuitem\"\r\n className={styles.item}\r\n data-tone={entry.tone}\r\n disabled={entry.disabled}\r\n onClick={() => {\r\n entry.onSelect?.();\r\n setOpen(false);\r\n requestAnimationFrame(focusTrigger);\r\n }}\r\n >\r\n {entry.icon ? <Icon name={entry.icon} /> : null}\r\n <span>{entry.label}</span>\r\n {entry.shortcut ? <kbd>{entry.shortcut}</kbd> : null}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\nimport Icon from \"./Icon\";\nimport styles from \"./EmptyState.module.css\";\n\ntype EmptyStateProps = {\n icon?: string;\n title: string;\n description?: string;\n action?: ReactNode;\n secondaryAction?: ReactNode;\n variant?: \"default\" | \"dashed\" | \"card\";\n compact?: boolean;\n className?: string;\n};\n\nexport default function EmptyState({\n icon = \"lucide:inbox\",\n title,\n description,\n action,\n secondaryAction,\n variant = \"dashed\",\n compact = false,\n className,\n}: EmptyStateProps) {\n return (\n <div\n className={[styles.empty, className].filter(Boolean).join(\" \")}\n data-variant={variant}\n data-compact={compact ? \"\" : undefined}\n >\n <span className={styles.iconWrap} aria-hidden=\"true\">\n <span className={styles.glow} />\n <Icon name={icon} />\n </span>\n <h3 className={styles.title}>{title}</h3>\n {description ? <p className={styles.description}>{description}</p> : null}\n {action || secondaryAction ? (\n <div className={styles.actions}>\n {action}\n {secondaryAction}\n </div>\n ) : null}\n </div>\n );\n}\n","\"use client\";\r\n\r\nimport {\r\n cloneElement,\r\n isValidElement,\r\n useId,\r\n type ReactElement,\r\n type ReactNode,\r\n} from \"react\";\r\nimport styles from \"./Form.module.css\";\r\n\r\ntype FormFieldProps = {\r\n label: string;\r\n id?: string;\r\n hint?: string;\r\n error?: string;\r\n required?: boolean;\r\n children: ReactNode;\r\n className?: string;\r\n};\r\n\r\nexport default function FormField({\r\n label,\r\n id,\r\n hint,\r\n error,\r\n required,\r\n children,\r\n className,\r\n}: FormFieldProps) {\r\n const generatedId = useId();\r\n const child = isValidElement(children)\r\n ? (children as ReactElement<Record<string, unknown>>)\r\n : null;\r\n\r\n const childId =\r\n typeof child?.props.id === \"string\" ? child.props.id : undefined;\r\n const controlId = childId ?? id ?? generatedId;\r\n const hintId = `${controlId}-hint`;\r\n const errorId = `${controlId}-error`;\r\n\r\n const existingDescribedBy =\r\n typeof child?.props[\"aria-describedby\"] === \"string\"\r\n ? child.props[\"aria-describedby\"]\r\n : undefined;\r\n const describedBy =\r\n [existingDescribedBy, error ? errorId : hint ? hintId : undefined]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const control = child\r\n ? cloneElement(child, {\r\n id: controlId,\r\n \"aria-describedby\": describedBy,\r\n \"aria-invalid\": error ? true : child.props[\"aria-invalid\"],\r\n invalid: error ? true : child.props.invalid,\r\n required: required ?? child.props.required,\r\n })\r\n : children;\r\n\r\n return (\r\n <div className={[styles.field, className].filter(Boolean).join(\" \")}>\r\n <label className={styles.label} htmlFor={controlId}>\r\n {label}\r\n {required ? (\r\n <span className={styles.required} aria-hidden=\"true\">\r\n *\r\n </span>\r\n ) : null}\r\n </label>\r\n {control}\r\n {error ? (\r\n <p className={styles.errorText} id={errorId}>\r\n {error}\r\n </p>\r\n ) : hint ? (\r\n <p className={styles.hint} id={hintId}>\r\n {hint}\r\n </p>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\nimport styles from \"./Kbd.module.css\";\n\ntype KbdProps = {\n children: ReactNode;\n size?: \"sm\" | \"md\";\n className?: string;\n};\n\nexport default function Kbd({ children, size = \"md\", className }: KbdProps) {\n return (\n <kbd\n className={[styles.kbd, className].filter(Boolean).join(\" \")}\n data-size={size}\n >\n {children}\n </kbd>\n );\n}\n","import type { ReactNode } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./ListGroup.module.css\";\r\n\r\ntype ListGroupProps = {\r\n children: ReactNode;\r\n ariaLabel?: string;\r\n className?: string;\r\n};\r\n\r\nexport default function ListGroup({\r\n children,\r\n ariaLabel,\r\n className,\r\n}: ListGroupProps) {\r\n return (\r\n <ul\r\n className={[styles.listGroup, className].filter(Boolean).join(\" \")}\r\n aria-label={ariaLabel}\r\n >\r\n {children}\r\n </ul>\r\n );\r\n}\r\n\r\ntype ListGroupItemProps = {\r\n title: string;\r\n description?: string;\r\n icon?: string;\r\n meta?: ReactNode;\r\n actions?: ReactNode;\r\n active?: boolean;\r\n className?: string;\r\n};\r\n\r\nexport function ListGroupItem({\r\n title,\r\n description,\r\n icon,\r\n meta,\r\n actions,\r\n active = false,\r\n className,\r\n}: ListGroupItemProps) {\r\n return (\r\n <li\r\n className={[styles.item, className].filter(Boolean).join(\" \")}\r\n data-active={active ? \"\" : undefined}\r\n >\r\n {icon ? (\r\n <span className={styles.leading}>\r\n <Icon name={icon} />\r\n </span>\r\n ) : null}\r\n <span className={styles.content}>\r\n <span className={styles.title}>{title}</span>\r\n {description ? (\r\n <span className={styles.description}>{description}</span>\r\n ) : null}\r\n </span>\r\n {meta ? <span className={styles.meta}>{meta}</span> : null}\r\n {actions ? <span className={styles.actions}>{actions}</span> : null}\r\n </li>\r\n );\r\n}\r\n","import type { AriaRole, ReactNode } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport Spinner, { type SpinnerTone } from \"./Spinner\";\r\nimport styles from \"./Marker.module.css\";\r\n\r\nexport type MarkerVariant = \"default\" | \"border\" | \"separator\";\r\nexport type MarkerTone =\r\n | \"default\"\r\n | \"info\"\r\n | \"success\"\r\n | \"warning\"\r\n | \"danger\"\r\n | \"muted\";\r\n\r\ntype MarkerProps = {\r\n children: ReactNode;\r\n variant?: MarkerVariant;\r\n tone?: MarkerTone;\r\n icon?: string;\r\n loading?: boolean;\r\n meta?: ReactNode;\r\n role?: AriaRole;\r\n className?: string;\r\n};\r\n\r\nconst SPINNER_TONES: Record<MarkerTone, SpinnerTone> = {\r\n default: \"default\",\r\n info: \"primary\",\r\n success: \"success\",\r\n warning: \"default\",\r\n danger: \"danger\",\r\n muted: \"muted\",\r\n};\r\n\r\nexport default function Marker({\r\n children,\r\n variant = \"default\",\r\n tone = \"default\",\r\n icon,\r\n loading = false,\r\n meta,\r\n role,\r\n className,\r\n}: MarkerProps) {\r\n if (variant === \"separator\") {\r\n return (\r\n <div\r\n className={[styles.separator, className].filter(Boolean).join(\" \")}\r\n data-tone={tone}\r\n role={role}\r\n >\r\n <span>{children}</span>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n className={[styles.marker, className].filter(Boolean).join(\" \")}\r\n data-variant={variant}\r\n data-tone={tone}\r\n role={role}\r\n >\r\n {loading ? (\r\n <Spinner size=\"sm\" tone={SPINNER_TONES[tone]} className={styles.icon} />\r\n ) : icon ? (\r\n <Icon name={icon} className={styles.icon} />\r\n ) : null}\r\n <span className={styles.content}>{children}</span>\r\n {meta ? <span className={styles.meta}>{meta}</span> : null}\r\n </div>\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\nimport styles from \"./PageHeader.module.css\";\n\ntype PageHeaderProps = {\n eyebrow?: string;\n title: string;\n description?: string;\n actions?: ReactNode;\n meta?: ReactNode;\n breadcrumb?: ReactNode;\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n};\n\nexport default function PageHeader({\n eyebrow,\n title,\n description,\n actions,\n meta,\n breadcrumb,\n size = \"md\",\n className,\n}: PageHeaderProps) {\n return (\n <header\n className={[styles.header, className].filter(Boolean).join(\" \")}\n data-size={size}\n >\n {breadcrumb ? <div className={styles.breadcrumb}>{breadcrumb}</div> : null}\n <div className={styles.main}>\n <div className={styles.text}>\n {eyebrow ? <p className={styles.eyebrow}>{eyebrow}</p> : null}\n <h1 className={styles.title}>{title}</h1>\n {description ? (\n <p className={styles.description}>{description}</p>\n ) : null}\n {meta ? <div className={styles.meta}>{meta}</div> : null}\n </div>\n {actions ? <div className={styles.actions}>{actions}</div> : null}\n </div>\n </header>\n );\n}\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport Input, { type InputProps } from \"./Input\";\r\nimport styles from \"./PasswordInput.module.css\";\r\n\r\ntype PasswordInputProps = Omit<InputProps, \"type\" | \"endAdornment\">;\r\n\r\nexport default function PasswordInput({\r\n disabled,\r\n ...props\r\n}: PasswordInputProps) {\r\n const [visible, setVisible] = useState(false);\r\n\r\n return (\r\n <Input\r\n {...props}\r\n type={visible ? \"text\" : \"password\"}\r\n disabled={disabled}\r\n endAdornment={\r\n <button\r\n type=\"button\"\r\n className={styles.toggle}\r\n aria-label={visible ? \"Hide password\" : \"Show password\"}\r\n aria-pressed={visible}\r\n disabled={disabled}\r\n onClick={() => setVisible((previous) => !previous)}\r\n >\r\n <Icon name={visible ? \"lucide:eye-off\" : \"lucide:eye\"} />\r\n </button>\r\n }\r\n />\r\n );\r\n}\r\n","import type { CSSProperties } from \"react\";\r\nimport styles from \"./Placeholder.module.css\";\r\n\r\nexport type PlaceholderVariant = \"text\" | \"heading\" | \"circle\" | \"rect\";\r\n\r\ntype PlaceholderProps = {\r\n variant?: PlaceholderVariant;\r\n width?: string | number;\r\n height?: string | number;\r\n lines?: number;\r\n animated?: boolean;\r\n className?: string;\r\n style?: CSSProperties;\r\n};\r\n\r\nconst toSize = (value: string | number | undefined) =>\r\n typeof value === \"number\" ? `${value}px` : value;\r\n\r\nexport default function Placeholder({\r\n variant = \"text\",\r\n width,\r\n height,\r\n lines = 1,\r\n animated = true,\r\n className,\r\n style,\r\n}: PlaceholderProps) {\r\n const baseClass = [styles.placeholder, className].filter(Boolean).join(\" \");\r\n const commonStyle: CSSProperties = {\r\n width: toSize(width),\r\n height: toSize(height),\r\n ...style,\r\n };\r\n\r\n if (variant === \"text\" && lines > 1) {\r\n return (\r\n <span className={styles.lines} aria-hidden=\"true\">\r\n {Array.from({ length: lines }).map((_, index) => (\r\n <span\r\n key={index}\r\n className={baseClass}\r\n data-variant=\"text\"\r\n data-animated={animated ? \"\" : undefined}\r\n style={{\r\n width: index === lines - 1 ? \"68%\" : toSize(width) ?? \"100%\",\r\n }}\r\n />\r\n ))}\r\n </span>\r\n );\r\n }\r\n\r\n return (\r\n <span\r\n aria-hidden=\"true\"\r\n className={baseClass}\r\n data-variant={variant}\r\n data-animated={animated ? \"\" : undefined}\r\n style={\r\n variant === \"circle\"\r\n ? { width: toSize(width) ?? \"40px\", height: toSize(height) ?? \"40px\", ...style }\r\n : commonStyle\r\n }\r\n />\r\n );\r\n}\r\n","import type { CSSProperties } from \"react\";\nimport styles from \"./Progress.module.css\";\n\nexport type ProgressTone =\n | \"default\"\n | \"primary\"\n | \"success\"\n | \"warning\"\n | \"danger\";\n\ntype ProgressProps = {\n value?: number;\n max?: number;\n tone?: ProgressTone;\n size?: \"sm\" | \"md\" | \"lg\";\n label?: string;\n showValue?: boolean;\n indeterminate?: boolean;\n className?: string;\n};\n\nexport default function Progress({\n value = 0,\n max = 100,\n tone = \"primary\",\n size = \"md\",\n label,\n showValue = false,\n indeterminate = false,\n className,\n}: ProgressProps) {\n const clamped = Math.min(Math.max(value, 0), max);\n const percent = max === 0 ? 0 : Math.round((clamped / max) * 100);\n const style = { \"--progress-value\": `${percent}%` } as CSSProperties;\n\n return (\n <div\n className={[styles.wrap, className].filter(Boolean).join(\" \")}\n data-tone={tone}\n data-size={size}\n >\n {label || showValue ? (\n <div className={styles.meta}>\n <span className={styles.label}>{label}</span>\n {showValue ? (\n <span className={styles.value}>{indeterminate ? \"…\" : `${percent}%`}</span>\n ) : null}\n </div>\n ) : null}\n <div\n className={styles.track}\n role=\"progressbar\"\n aria-label={label}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={indeterminate ? undefined : clamped}\n aria-valuetext={indeterminate ? \"Loading\" : `${percent}%`}\n data-indeterminate={indeterminate ? \"\" : undefined}\n style={style}\n >\n <span className={styles.bar} />\n </div>\n </div>\n );\n}\n","import styles from \"./Form.module.css\";\r\n\r\nexport type RadioOption = {\r\n value: string;\r\n label: string;\r\n description?: string;\r\n disabled?: boolean;\r\n};\r\n\r\ntype RadioGroupProps = {\r\n name: string;\r\n label: string;\r\n value: string;\r\n onChange: (value: string) => void;\r\n options: RadioOption[];\r\n orientation?: \"vertical\" | \"horizontal\";\r\n className?: string;\r\n};\r\n\r\nexport default function RadioGroup({\r\n name,\r\n label,\r\n value,\r\n onChange,\r\n options,\r\n orientation = \"vertical\",\r\n className,\r\n}: RadioGroupProps) {\r\n return (\r\n <fieldset\r\n className={[styles.radioGroup, className].filter(Boolean).join(\" \")}\r\n >\r\n <legend className={styles.legend}>{label}</legend>\r\n <div className={styles.radioList} data-orientation={orientation}>\r\n {options.map((option) => (\r\n <label\r\n key={option.value}\r\n className={styles.choice}\r\n data-disabled={option.disabled ? \"\" : undefined}\r\n >\r\n <input\r\n type=\"radio\"\r\n name={name}\r\n value={option.value}\r\n checked={value === option.value}\r\n disabled={option.disabled}\r\n onChange={() => onChange(option.value)}\r\n className={styles.choiceInput}\r\n />\r\n <span className={styles.radioCircle} aria-hidden=\"true\">\r\n <span className={styles.radioDot} />\r\n </span>\r\n <span className={styles.choiceTexts}>\r\n <span className={styles.choiceLabel}>{option.label}</span>\r\n {option.description ? (\r\n <span className={styles.choiceDescription}>\r\n {option.description}\r\n </span>\r\n ) : null}\r\n </span>\r\n </label>\r\n ))}\r\n </div>\r\n </fieldset>\r\n );\r\n}\r\n","export type Tone =\r\n | \"info\"\r\n | \"success\"\r\n | \"danger\"\r\n | \"warning\"\r\n | \"yellow\"\r\n | \"violet\"\r\n | \"cyan\";\r\n\r\nexport const BRAND = {\r\n name: \"Poinqu\",\r\n mark: \"P\",\r\n};\r\n\r\nexport type User = {\r\n name: string;\r\n email: string;\r\n initials: string;\r\n};\r\n\r\nexport const USER: User = {\r\n name: \"Aditya Pratama\",\r\n email: \"aditya.pratama@example.com\",\r\n initials: \"AP\",\r\n};\r\n\r\nexport type NavLink = {\r\n kind: \"link\";\r\n label: string;\r\n icon: string;\r\n};\r\n\r\nexport type NavGroup = {\r\n kind: \"group\";\r\n label: string;\r\n icon: string;\r\n defaultOpen?: boolean;\r\n children: { label: string; icon: string }[];\r\n};\r\n\r\nexport type NavEntry = NavLink | NavGroup;\r\n\r\nexport type NavSection = {\r\n caption: string;\r\n entries: NavEntry[];\r\n};\r\n\r\nexport type RangeValue = \"Last week\" | \"Last month\" | \"Last quarter\";\r\n\r\nexport const RANGE_OPTIONS: RangeValue[] = [\r\n \"Last week\",\r\n \"Last month\",\r\n \"Last quarter\",\r\n];\r\n\r\nexport type Priority = \"High\" | \"Medium\" | \"Low\";\r\nexport type TicketStatus = \"In Review\" | \"In Progress\" | \"Delivered\";\r\n\r\nexport const PRIORITY_META: Record<Priority, { tone: Tone; icon: string }> = {\r\n High: { tone: \"danger\", icon: \"lucide:chart-no-axes-column-increasing\" },\r\n Medium: { tone: \"warning\", icon: \"lucide:chart-no-axes-column-increasing\" },\r\n Low: { tone: \"yellow\", icon: \"lucide:chart-no-axes-column-increasing\" },\r\n};\r\n\r\nexport const STATUS_META: Record<TicketStatus, { tone: Tone; icon: string }> = {\r\n \"In Review\": { tone: \"info\", icon: \"lucide:file-text\" },\r\n \"In Progress\": { tone: \"warning\", icon: \"lucide:history\" },\r\n Delivered: { tone: \"success\", icon: \"lucide:check\" },\r\n};\r\n","import Icon from \"./Icon\";\r\nimport type { RangeValue } from \"@/lib/data\";\r\nimport { RANGE_OPTIONS } from \"@/lib/data\";\r\nimport styles from \"./RangeSelect.module.css\";\r\n\r\ntype RangeSelectProps = {\r\n value: RangeValue;\r\n onChange: (value: RangeValue) => void;\r\n ariaLabel: string;\r\n};\r\n\r\nexport default function RangeSelect({ value, onChange, ariaLabel }: RangeSelectProps) {\r\n return (\r\n <label className={styles.range}>\r\n <Icon name=\"lucide:calendar-days\" />\r\n <select\r\n value={value}\r\n aria-label={ariaLabel}\r\n onChange={(event) => onChange(event.target.value as RangeValue)}\r\n >\r\n {RANGE_OPTIONS.map((option) => (\r\n <option key={option}>{option}</option>\r\n ))}\r\n </select>\r\n <Icon name=\"lucide:chevron-down\" />\r\n </label>\r\n );\r\n}\r\n","import type { RefObject } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./SearchField.module.css\";\r\n\r\ntype SearchFieldProps = {\r\n value: string;\r\n onChange: (value: string) => void;\r\n placeholder: string;\r\n ariaLabel: string;\r\n className?: string;\r\n inputRef?: RefObject<HTMLInputElement | null>;\r\n};\r\n\r\nexport default function SearchField({\r\n value,\r\n onChange,\r\n placeholder,\r\n ariaLabel,\r\n className,\r\n inputRef,\r\n}: SearchFieldProps) {\r\n return (\r\n <label className={[styles.search, className].filter(Boolean).join(\" \")}>\r\n <Icon name=\"lucide:search\" />\r\n <input\r\n ref={inputRef}\r\n type=\"search\"\r\n value={value}\r\n placeholder={placeholder}\r\n aria-label={ariaLabel}\r\n onChange={(event) => onChange(event.target.value)}\r\n />\r\n </label>\r\n );\r\n}\r\n","import type { ReactNode, SelectHTMLAttributes } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Form.module.css\";\r\n\r\nexport type SelectProps = Omit<\r\n SelectHTMLAttributes<HTMLSelectElement>,\r\n \"size\"\r\n> & {\r\n children: ReactNode;\r\n invalid?: boolean;\r\n size?: \"sm\" | \"md\";\r\n fullWidth?: boolean;\r\n};\r\n\r\nexport default function Select({\r\n children,\r\n invalid = false,\r\n size = \"md\",\r\n fullWidth = false,\r\n className,\r\n disabled,\r\n ...rest\r\n}: SelectProps) {\r\n return (\r\n <div\r\n className={[styles.selectWrap, fullWidth ? styles.fullWidth : \"\", className]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n data-size={size}\r\n data-invalid={invalid ? \"\" : undefined}\r\n data-disabled={disabled ? \"\" : undefined}\r\n >\r\n <select\r\n className={styles.select}\r\n disabled={disabled}\r\n aria-invalid={invalid || undefined}\r\n {...rest}\r\n >\r\n {children}\r\n </select>\r\n <Icon name=\"lucide:chevron-down\" className={styles.selectIcon} />\r\n </div>\r\n );\r\n}\r\n","\"use client\";\n\nimport { useState, type CSSProperties } from \"react\";\nimport styles from \"./Slider.module.css\";\n\nexport type SliderProps = {\n label?: string;\n description?: string;\n value?: number;\n defaultValue?: number;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n showValue?: boolean;\n formatValue?: (value: number) => string;\n onValueChange?: (value: number) => void;\n className?: string;\n};\n\nexport default function Slider({\n label,\n description,\n value,\n defaultValue = 50,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n showValue = true,\n formatValue = (next) => `${next}`,\n onValueChange,\n className,\n}: SliderProps) {\n const [internal, setInternal] = useState(defaultValue);\n const current = value ?? internal;\n const percent = max === min ? 0 : ((current - min) / (max - min)) * 100;\n\n return (\n <div\n className={[styles.wrap, className].filter(Boolean).join(\" \")}\n data-disabled={disabled ? \"\" : undefined}\n style={{ \"--slider-value\": `${percent}%` } as CSSProperties}\n >\n {label || showValue ? (\n <div className={styles.meta}>\n <span className={styles.label}>{label}</span>\n {showValue ? (\n <span className={styles.value}>{formatValue(current)}</span>\n ) : null}\n </div>\n ) : null}\n <div className={styles.trackWrap}>\n <input\n className={styles.input}\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={current}\n disabled={disabled}\n aria-label={label}\n aria-valuetext={formatValue(current)}\n onChange={(event) => {\n const next = Number(event.target.value);\n if (value === undefined) setInternal(next);\n onValueChange?.(next);\n }}\n />\n </div>\n {description ? <p className={styles.description}>{description}</p> : null}\n </div>\n );\n}\n","import type { CSSProperties, ReactNode } from \"react\";\nimport Icon from \"./Icon\";\nimport styles from \"./Stat.module.css\";\n\nexport type StatTrend = {\n value: string;\n direction?: \"up\" | \"down\" | \"flat\";\n positive?: boolean;\n};\n\ntype StatProps = {\n label: string;\n value: string;\n description?: string;\n icon?: string;\n trend?: StatTrend;\n spark?: number[];\n footer?: ReactNode;\n tone?: \"default\" | \"accent\" | \"success\" | \"warning\" | \"danger\";\n className?: string;\n};\n\nexport default function Stat({\n label,\n value,\n description,\n icon,\n trend,\n spark,\n footer,\n tone = \"default\",\n className,\n}: StatProps) {\n const max = spark?.length ? Math.max(...spark, 1) : 1;\n\n return (\n <div\n className={[styles.stat, className].filter(Boolean).join(\" \")}\n data-tone={tone}\n >\n <div className={styles.top}>\n <span className={styles.label}>{label}</span>\n {icon ? (\n <span className={styles.icon}>\n <Icon name={icon} />\n </span>\n ) : null}\n </div>\n <div className={styles.valueRow}>\n <strong className={styles.value}>{value}</strong>\n {trend ? (\n <span\n className={styles.trend}\n data-direction={trend.direction ?? \"up\"}\n data-positive={trend.positive === false ? \"false\" : \"true\"}\n >\n <Icon\n name={\n trend.direction === \"down\"\n ? \"lucide:trending-down\"\n : trend.direction === \"flat\"\n ? \"lucide:minus\"\n : \"lucide:trending-up\"\n }\n />\n {trend.value}\n </span>\n ) : null}\n </div>\n {description ? <p className={styles.description}>{description}</p> : null}\n\n {spark?.length ? (\n <div className={styles.spark} aria-hidden=\"true\">\n {spark.map((point, index) => (\n <span\n key={`${index}-${point}`}\n style={{ height: `${Math.max(12, (point / max) * 100)}%` }}\n />\n ))}\n </div>\n ) : null}\n\n {footer ? <div className={styles.footer}>{footer}</div> : null}\n </div>\n );\n}\n\nexport function StatGrid({\n children,\n columns = 4,\n className,\n}: {\n children: ReactNode;\n columns?: 2 | 3 | 4;\n className?: string;\n}) {\n return (\n <div\n className={[styles.grid, className].filter(Boolean).join(\" \")}\n style={{ \"--stat-columns\": String(columns) } as CSSProperties}\n >\n {children}\n </div>\n );\n}\n","import type { Tone } from \"@/lib/data\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./StatusBadge.module.css\";\r\n\r\ntype StatusBadgeProps = {\r\n tone: Tone;\r\n icon: string;\r\n label: string;\r\n};\r\n\r\nexport default function StatusBadge({ tone, icon, label }: StatusBadgeProps) {\r\n return (\r\n <span className={styles.status} data-tone={tone}>\r\n <Icon name={icon} />\r\n <span>{label}</span>\r\n </span>\r\n );\r\n}\r\n","import Icon from \"./Icon\";\r\nimport styles from \"./Stepper.module.css\";\r\n\r\nexport type StepItem = {\r\n label: string;\r\n description?: string;\r\n};\r\n\r\ntype StepperProps = {\r\n steps: StepItem[];\r\n current: number;\r\n orientation?: \"horizontal\" | \"vertical\";\r\n onStepChange?: (index: number) => void;\r\n className?: string;\r\n};\r\n\r\nexport default function Stepper({\r\n steps,\r\n current,\r\n orientation = \"horizontal\",\r\n onStepChange,\r\n className,\r\n}: StepperProps) {\r\n return (\r\n <ol\r\n className={[styles.stepper, className].filter(Boolean).join(\" \")}\r\n data-orientation={orientation}\r\n aria-label=\"Progress\"\r\n >\r\n {steps.map((step, index) => {\r\n const state =\r\n index < current ? \"complete\" : index === current ? \"current\" : \"upcoming\";\r\n\r\n const content = (\r\n <>\r\n <span className={styles.indicator} data-state={state} aria-hidden=\"true\">\r\n {state === \"complete\" ? (\r\n <Icon name=\"lucide:check\" />\r\n ) : (\r\n <span>{index + 1}</span>\r\n )}\r\n </span>\r\n <span className={styles.texts}>\r\n <span className={styles.label}>{step.label}</span>\r\n {step.description ? (\r\n <span className={styles.description}>{step.description}</span>\r\n ) : null}\r\n </span>\r\n </>\r\n );\r\n\r\n return (\r\n <li\r\n key={`${step.label}-${index}`}\r\n className={styles.step}\r\n data-state={state}\r\n aria-current={state === \"current\" ? \"step\" : undefined}\r\n >\r\n {onStepChange ? (\r\n <button\r\n type=\"button\"\r\n className={styles.stepAction}\r\n onClick={() => onStepChange(index)}\r\n >\r\n {content}\r\n </button>\r\n ) : (\r\n <div className={styles.stepAction}>{content}</div>\r\n )}\r\n </li>\r\n );\r\n })}\r\n </ol>\r\n );\r\n}\r\n","import type { InputHTMLAttributes } from \"react\";\r\nimport styles from \"./Form.module.css\";\r\n\r\nexport type SwitchProps = Omit<\r\n InputHTMLAttributes<HTMLInputElement>,\r\n \"type\"\r\n> & {\r\n label: string;\r\n description?: string;\r\n};\r\n\r\nexport default function Switch({\r\n label,\r\n description,\r\n className,\r\n disabled,\r\n ...rest\r\n}: SwitchProps) {\r\n return (\r\n <label\r\n className={[styles.switch, className].filter(Boolean).join(\" \")}\r\n data-disabled={disabled ? \"\" : undefined}\r\n >\r\n <span className={styles.switchTexts}>\r\n <span className={styles.choiceLabel}>{label}</span>\r\n {description ? (\r\n <span className={styles.choiceDescription}>{description}</span>\r\n ) : null}\r\n </span>\r\n <input\r\n type=\"checkbox\"\r\n role=\"switch\"\r\n className={styles.choiceInput}\r\n disabled={disabled}\r\n {...rest}\r\n />\r\n <span className={styles.switchTrack} aria-hidden=\"true\">\r\n <span className={styles.switchThumb} />\r\n </span>\r\n </label>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport {\r\n createContext,\r\n useContext,\r\n useId,\r\n useState,\r\n type KeyboardEvent,\r\n type ReactNode,\r\n} from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Tabs.module.css\";\r\n\r\nexport type TabsVariant = \"underline\" | \"pill\";\r\n\r\ntype TabsContextValue = {\r\n value: string;\r\n setValue: (value: string) => void;\r\n baseId: string;\r\n};\r\n\r\nconst TabsContext = createContext<TabsContextValue | null>(null);\r\n\r\nfunction useTabs() {\r\n const context = useContext(TabsContext);\r\n if (!context) {\r\n throw new Error(\"Tabs components must be used within <Tabs>\");\r\n }\r\n return context;\r\n}\r\n\r\nconst slug = (value: string) => value.replace(/[^a-zA-Z0-9_-]/g, \"-\");\r\n\r\ntype TabsProps = {\r\n defaultValue: string;\r\n value?: string;\r\n onValueChange?: (value: string) => void;\r\n variant?: TabsVariant;\r\n children: ReactNode;\r\n className?: string;\r\n};\r\n\r\nexport default function Tabs({\r\n defaultValue,\r\n value,\r\n onValueChange,\r\n variant = \"underline\",\r\n children,\r\n className,\r\n}: TabsProps) {\r\n const [internalValue, setInternalValue] = useState(defaultValue);\r\n const baseId = useId();\r\n const currentValue = value ?? internalValue;\r\n\r\n const setValue = (next: string) => {\r\n if (value === undefined) setInternalValue(next);\r\n onValueChange?.(next);\r\n };\r\n\r\n return (\r\n <TabsContext.Provider value={{ value: currentValue, setValue, baseId }}>\r\n <div\r\n className={[styles.tabs, className].filter(Boolean).join(\" \")}\r\n data-variant={variant}\r\n >\r\n {children}\r\n </div>\r\n </TabsContext.Provider>\r\n );\r\n}\r\n\r\ntype TabsListProps = {\r\n children: ReactNode;\r\n ariaLabel: string;\r\n className?: string;\r\n};\r\n\r\nexport function TabsList({ children, ariaLabel, className }: TabsListProps) {\r\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\r\n const keys = [\"ArrowRight\", \"ArrowLeft\", \"Home\", \"End\"];\r\n if (!keys.includes(event.key)) return;\r\n\r\n const tabs = [\r\n ...event.currentTarget.querySelectorAll<HTMLButtonElement>(\r\n '[role=\"tab\"]:not(:disabled)',\r\n ),\r\n ];\r\n if (!tabs.length) return;\r\n\r\n event.preventDefault();\r\n const currentIndex = tabs.indexOf(\r\n document.activeElement as HTMLButtonElement,\r\n );\r\n\r\n let next = currentIndex;\r\n if (event.key === \"ArrowRight\") {\r\n next = currentIndex < 0 ? 0 : (currentIndex + 1) % tabs.length;\r\n } else if (event.key === \"ArrowLeft\") {\r\n next =\r\n currentIndex < 0\r\n ? tabs.length - 1\r\n : (currentIndex - 1 + tabs.length) % tabs.length;\r\n } else if (event.key === \"Home\") {\r\n next = 0;\r\n } else if (event.key === \"End\") {\r\n next = tabs.length - 1;\r\n }\r\n\r\n tabs[next].focus();\r\n tabs[next].click();\r\n };\r\n\r\n return (\r\n <div\r\n role=\"tablist\"\r\n aria-label={ariaLabel}\r\n className={[styles.list, className].filter(Boolean).join(\" \")}\r\n onKeyDown={handleKeyDown}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\ntype TabProps = {\r\n value: string;\r\n icon?: string;\r\n badge?: ReactNode;\r\n disabled?: boolean;\r\n children: ReactNode;\r\n className?: string;\r\n};\r\n\r\nexport function Tab({\r\n value,\r\n icon,\r\n badge,\r\n disabled = false,\r\n children,\r\n className,\r\n}: TabProps) {\r\n const context = useTabs();\r\n const selected = context.value === value;\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n role=\"tab\"\r\n id={`${context.baseId}-tab-${slug(value)}`}\r\n aria-selected={selected}\r\n aria-controls={`${context.baseId}-panel-${slug(value)}`}\r\n tabIndex={selected ? 0 : -1}\r\n disabled={disabled}\r\n data-selected={selected ? \"\" : undefined}\r\n className={[styles.tab, className].filter(Boolean).join(\" \")}\r\n onClick={() => context.setValue(value)}\r\n >\r\n {icon ? <Icon name={icon} /> : null}\r\n <span>{children}</span>\r\n {badge !== undefined && badge !== null ? (\r\n <span className={styles.badge}>{badge}</span>\r\n ) : null}\r\n </button>\r\n );\r\n}\r\n\r\ntype TabPanelProps = {\r\n value: string;\r\n children: ReactNode;\r\n className?: string;\r\n};\r\n\r\nexport function TabPanel({ value, children, className }: TabPanelProps) {\r\n const context = useTabs();\r\n const selected = context.value === value;\r\n\r\n return (\r\n <div\r\n role=\"tabpanel\"\r\n id={`${context.baseId}-panel-${slug(value)}`}\r\n aria-labelledby={`${context.baseId}-tab-${slug(value)}`}\r\n hidden={!selected}\r\n tabIndex={0}\r\n className={[styles.panel, className].filter(Boolean).join(\" \")}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import type { TextareaHTMLAttributes } from \"react\";\r\nimport styles from \"./Form.module.css\";\r\n\r\nexport type TextareaProps = TextareaHTMLAttributes<HTMLTextAreaElement> & {\r\n invalid?: boolean;\r\n};\r\n\r\nexport default function Textarea({\r\n invalid = false,\r\n className,\r\n ...rest\r\n}: TextareaProps) {\r\n return (\r\n <textarea\r\n className={[styles.textarea, className].filter(Boolean).join(\" \")}\r\n data-invalid={invalid ? \"\" : undefined}\r\n aria-invalid={invalid || undefined}\r\n {...rest}\r\n />\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport {\r\n createContext,\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState,\r\n type CSSProperties,\r\n type ReactNode,\r\n} from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Toast.module.css\";\r\n\r\nexport type ToastTone = \"info\" | \"success\" | \"warning\" | \"danger\";\r\n\r\nexport type ToastAction = {\r\n label: string;\r\n onClick: () => void;\r\n};\r\n\r\nexport type ToastOptions = {\r\n title: string;\r\n description?: string;\r\n tone?: ToastTone;\r\n duration?: number;\r\n action?: ToastAction;\r\n};\r\n\r\ntype ToastRecord = {\r\n id: number;\r\n title: string;\r\n description?: string;\r\n tone: ToastTone;\r\n duration: number;\r\n action?: ToastAction;\r\n};\r\n\r\ntype ToastContextValue = {\r\n toast: (options: ToastOptions) => number;\r\n dismiss: (id: number) => void;\r\n};\r\n\r\nconst ToastContext = createContext<ToastContextValue | null>(null);\r\n\r\nconst TONE_ICONS: Record<ToastTone, string> = {\r\n info: \"lucide:info\",\r\n success: \"lucide:circle-check\",\r\n warning: \"lucide:triangle-alert\",\r\n danger: \"lucide:circle-alert\",\r\n};\r\n\r\nfunction ToastCard({\r\n item,\r\n onDismiss,\r\n}: {\r\n item: ToastRecord;\r\n onDismiss: (id: number) => void;\r\n}) {\r\n useEffect(() => {\r\n if (!item.duration) return;\r\n const timer = window.setTimeout(() => onDismiss(item.id), item.duration);\r\n return () => window.clearTimeout(timer);\r\n }, [item.duration, item.id, onDismiss]);\r\n\r\n return (\r\n <div\r\n className={styles.toast}\r\n data-tone={item.tone}\r\n role=\"status\"\r\n style={{ \"--toast-duration\": `${item.duration}ms` } as CSSProperties}\r\n >\r\n <span className={styles.icon}>\r\n <Icon name={TONE_ICONS[item.tone]} />\r\n </span>\r\n <div className={styles.content}>\r\n <strong className={styles.title}>{item.title}</strong>\r\n {item.description ? (\r\n <p className={styles.description}>{item.description}</p>\r\n ) : null}\r\n {item.action ? (\r\n <button\r\n type=\"button\"\r\n className={styles.action}\r\n onClick={() => {\r\n item.action?.onClick();\r\n onDismiss(item.id);\r\n }}\r\n >\r\n {item.action.label}\r\n </button>\r\n ) : null}\r\n </div>\r\n <button\r\n type=\"button\"\r\n className={styles.close}\r\n aria-label=\"Dismiss notification\"\r\n onClick={() => onDismiss(item.id)}\r\n >\r\n <Icon name=\"lucide:x\" />\r\n </button>\r\n {item.duration ? <span className={styles.progress} aria-hidden=\"true\" /> : null}\r\n </div>\r\n );\r\n}\r\n\r\nexport function ToastProvider({ children }: { children: ReactNode }) {\r\n const [toasts, setToasts] = useState<ToastRecord[]>([]);\r\n const nextId = useRef(0);\r\n\r\n const dismiss = useCallback((id: number) => {\r\n setToasts((previous) => previous.filter((item) => item.id !== id));\r\n }, []);\r\n\r\n const toast = useCallback((options: ToastOptions) => {\r\n const id = ++nextId.current;\r\n const record: ToastRecord = {\r\n id,\r\n title: options.title,\r\n description: options.description,\r\n tone: options.tone ?? \"info\",\r\n duration: options.duration ?? 4200,\r\n action: options.action,\r\n };\r\n setToasts((previous) => [...previous.slice(-3), record]);\r\n return id;\r\n }, []);\r\n\r\n const value = useMemo(() => ({ toast, dismiss }), [toast, dismiss]);\r\n\r\n return (\r\n <ToastContext.Provider value={value}>\r\n {children}\r\n <div\r\n className={styles.viewport}\r\n aria-live=\"polite\"\r\n aria-atomic=\"false\"\r\n aria-label=\"Notifications\"\r\n >\r\n {toasts.map((item) => (\r\n <ToastCard key={item.id} item={item} onDismiss={dismiss} />\r\n ))}\r\n </div>\r\n </ToastContext.Provider>\r\n );\r\n}\r\n\r\nexport function useToast() {\r\n const context = useContext(ToastContext);\r\n if (!context) {\r\n throw new Error(\"useToast must be used within a ToastProvider\");\r\n }\r\n return context;\r\n}\r\n","\"use client\";\r\n\r\nimport {\r\n cloneElement,\r\n isValidElement,\r\n useEffect,\r\n useId,\r\n useLayoutEffect,\r\n useRef,\r\n useState,\r\n type ReactElement,\r\n type ReactNode,\r\n} from \"react\";\r\nimport styles from \"./Tooltip.module.css\";\r\n\r\nexport type TooltipPlacement = \"top\" | \"bottom\" | \"left\" | \"right\";\r\n\r\ntype TooltipChildProps = {\r\n \"aria-describedby\"?: string;\r\n};\r\n\r\ntype TooltipProps = {\r\n content: ReactNode;\r\n children: ReactNode;\r\n placement?: TooltipPlacement;\r\n delay?: number;\r\n disabled?: boolean;\r\n className?: string;\r\n};\r\n\r\nexport default function Tooltip({\r\n content,\r\n children,\r\n placement = \"top\",\r\n delay = 120,\r\n disabled = false,\r\n className,\r\n}: TooltipProps) {\r\n const [visible, setVisible] = useState(false);\r\n const timer = useRef<number | undefined>(undefined);\r\n const hovered = useRef(false);\r\n const focused = useRef(false);\r\n const wrapperRef = useRef<HTMLSpanElement>(null);\r\n const tooltipRef = useRef<HTMLSpanElement>(null);\r\n const id = useId();\r\n\r\n const clearTimer = () => {\r\n if (timer.current !== undefined) {\r\n window.clearTimeout(timer.current);\r\n timer.current = undefined;\r\n }\r\n };\r\n\r\n const show = () => {\r\n if (disabled) return;\r\n clearTimer();\r\n timer.current = window.setTimeout(() => setVisible(true), delay);\r\n };\r\n\r\n const hide = () => {\r\n clearTimer();\r\n setVisible(false);\r\n };\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (timer.current !== undefined) window.clearTimeout(timer.current);\r\n };\r\n }, []);\r\n\r\n useLayoutEffect(() => {\r\n if (!visible) return;\r\n\r\n const trigger = wrapperRef.current?.getBoundingClientRect();\r\n const tooltip = tooltipRef.current;\r\n if (!trigger || !tooltip) return;\r\n\r\n const rect = tooltip.getBoundingClientRect();\r\n const gap = 8;\r\n const margin = 8;\r\n let top = 0;\r\n let left = 0;\r\n\r\n if (placement === \"top\") {\r\n top = trigger.top - rect.height - gap;\r\n left = trigger.left + trigger.width / 2 - rect.width / 2;\r\n } else if (placement === \"bottom\") {\r\n top = trigger.bottom + gap;\r\n left = trigger.left + trigger.width / 2 - rect.width / 2;\r\n } else if (placement === \"left\") {\r\n top = trigger.top + trigger.height / 2 - rect.height / 2;\r\n left = trigger.left - rect.width - gap;\r\n } else {\r\n top = trigger.top + trigger.height / 2 - rect.height / 2;\r\n left = trigger.right + gap;\r\n }\r\n\r\n top = Math.max(margin, Math.min(top, window.innerHeight - rect.height - margin));\r\n left = Math.max(margin, Math.min(left, window.innerWidth - rect.width - margin));\r\n\r\n tooltip.style.top = `${top}px`;\r\n tooltip.style.left = `${left}px`;\r\n }, [content, placement, visible]);\r\n\r\n useEffect(() => {\r\n if (!visible) return;\r\n\r\n const hideOnMove = () => setVisible(false);\r\n window.addEventListener(\"scroll\", hideOnMove, true);\r\n window.addEventListener(\"resize\", hideOnMove);\r\n return () => {\r\n window.removeEventListener(\"scroll\", hideOnMove, true);\r\n window.removeEventListener(\"resize\", hideOnMove);\r\n };\r\n }, [visible]);\r\n\r\n const child = isValidElement(children)\r\n ? (children as ReactElement<Record<string, unknown>>)\r\n : null;\r\n const childProps = child?.props as TooltipChildProps | undefined;\r\n\r\n const describedBy = visible\r\n ? [childProps?.[\"aria-describedby\"], id].filter(Boolean).join(\" \")\r\n : childProps?.[\"aria-describedby\"];\r\n\r\n const trigger = child\r\n ? cloneElement(child, { \"aria-describedby\": describedBy })\r\n : children;\r\n\r\n return (\r\n <span\r\n ref={wrapperRef}\r\n className={[styles.wrapper, className].filter(Boolean).join(\" \")}\r\n onMouseEnter={() => {\r\n hovered.current = true;\r\n show();\r\n }}\r\n onMouseLeave={() => {\r\n hovered.current = false;\r\n if (!focused.current) hide();\r\n }}\r\n onFocus={() => {\r\n focused.current = true;\r\n show();\r\n }}\r\n onBlur={() => {\r\n focused.current = false;\r\n if (!hovered.current) hide();\r\n }}\r\n onKeyDown={(event) => {\r\n if (event.key === \"Escape\") hide();\r\n }}\r\n >\r\n {trigger}\r\n {visible ? (\r\n <span\r\n ref={tooltipRef}\r\n role=\"tooltip\"\r\n id={id}\r\n className={styles.tooltip}\r\n data-placement={placement}\r\n >\r\n {content}\r\n <span className={styles.arrow} aria-hidden=\"true\" />\r\n </span>\r\n ) : null}\r\n </span>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { useState, type ReactNode } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport Spinner from \"./Spinner\";\r\nimport styles from \"./Trace.module.css\";\r\n\r\nexport type TraceStatus = \"done\" | \"running\" | \"error\" | \"pending\";\r\n\r\nexport type TraceItem = {\r\n id: string;\r\n title: string;\r\n description?: string;\r\n icon?: string;\r\n status?: TraceStatus;\r\n meta?: ReactNode;\r\n detail?: ReactNode;\r\n defaultOpen?: boolean;\r\n};\r\n\r\ntype TraceProps = {\r\n items: TraceItem[];\r\n ariaLabel?: string;\r\n className?: string;\r\n};\r\n\r\nconst STATUS_ICONS: Record<TraceStatus, string> = {\r\n done: \"lucide:check\",\r\n running: \"lucide:loader-circle\",\r\n error: \"lucide:x\",\r\n pending: \"lucide:circle-dashed\",\r\n};\r\n\r\nfunction TraceLine({\r\n item,\r\n status,\r\n expandable,\r\n}: {\r\n item: TraceItem;\r\n status: TraceStatus;\r\n expandable: boolean;\r\n}) {\r\n return (\r\n <span className={styles.line}>\r\n <span\r\n className={styles.icon}\r\n aria-hidden={status === \"running\" ? undefined : true}\r\n >\r\n {status === \"running\" ? (\r\n <Spinner size=\"sm\" label={`${item.title} running`} />\r\n ) : (\r\n <Icon name={item.icon ?? STATUS_ICONS[status]} />\r\n )}\r\n </span>\r\n\r\n <span className={styles.text}>\r\n <span className={styles.title}>{item.title}</span>\r\n {item.description ? (\r\n <span className={styles.description}>{item.description}</span>\r\n ) : null}\r\n </span>\r\n\r\n {item.meta ? <span className={styles.meta}>{item.meta}</span> : null}\r\n {expandable ? (\r\n <Icon name=\"lucide:chevron-down\" className={styles.chevron} />\r\n ) : null}\r\n </span>\r\n );\r\n}\r\n\r\nfunction TraceCollapsible({\r\n item,\r\n status,\r\n}: {\r\n item: TraceItem;\r\n status: TraceStatus;\r\n}) {\r\n const [open, setOpen] = useState(Boolean(item.defaultOpen));\r\n\r\n return (\r\n <details\r\n className={styles.collapsible}\r\n open={open}\r\n onToggle={(event) => setOpen(event.currentTarget.open)}\r\n >\r\n <summary className={styles.summary}>\r\n <TraceLine item={item} status={status} expandable />\r\n </summary>\r\n <div className={styles.detail}>{item.detail}</div>\r\n </details>\r\n );\r\n}\r\n\r\nexport default function Trace({\r\n items,\r\n ariaLabel = \"Trace\",\r\n className,\r\n}: TraceProps) {\r\n return (\r\n <ol\r\n className={[styles.trace, className].filter(Boolean).join(\" \")}\r\n aria-label={ariaLabel}\r\n >\r\n {items.map((item) => {\r\n const status = item.status ?? \"done\";\r\n\r\n return (\r\n <li key={item.id} className={styles.item} data-status={status}>\r\n {item.detail ? (\r\n <TraceCollapsible item={item} status={status} />\r\n ) : (\r\n <TraceLine item={item} status={status} expandable={false} />\r\n )}\r\n </li>\r\n );\r\n })}\r\n </ol>\r\n );\r\n}\r\n","import type { ElementType, ReactNode } from \"react\";\r\nimport styles from \"./Typography.module.css\";\r\n\r\nexport type TypographyVariant =\r\n | \"display\"\r\n | \"h1\"\r\n | \"h2\"\r\n | \"h3\"\r\n | \"h4\"\r\n | \"lead\"\r\n | \"body\"\r\n | \"small\"\r\n | \"muted\"\r\n | \"label\"\r\n | \"code\"\r\n | \"quote\";\r\n\r\nexport type TypographyTone =\r\n | \"default\"\r\n | \"secondary\"\r\n | \"muted\"\r\n | \"info\"\r\n | \"success\"\r\n | \"warning\"\r\n | \"danger\";\r\n\r\nexport type TypographyWeight = \"regular\" | \"medium\" | \"semibold\";\r\n\r\ntype TypographyProps = {\r\n children: ReactNode;\r\n as?: ElementType;\r\n variant?: TypographyVariant;\r\n tone?: TypographyTone;\r\n weight?: TypographyWeight;\r\n align?: \"left\" | \"center\" | \"right\";\r\n truncate?: boolean;\r\n className?: string;\r\n};\r\n\r\nconst DEFAULT_TAG: Record<TypographyVariant, ElementType> = {\r\n display: \"h1\",\r\n h1: \"h1\",\r\n h2: \"h2\",\r\n h3: \"h3\",\r\n h4: \"h4\",\r\n lead: \"p\",\r\n body: \"p\",\r\n small: \"p\",\r\n muted: \"p\",\r\n label: \"span\",\r\n code: \"code\",\r\n quote: \"blockquote\",\r\n};\r\n\r\nexport default function Typography({\r\n children,\r\n as,\r\n variant = \"body\",\r\n tone = \"default\",\r\n weight,\r\n align = \"left\",\r\n truncate = false,\r\n className,\r\n}: TypographyProps) {\r\n const Tag = as ?? DEFAULT_TAG[variant];\r\n\r\n return (\r\n <Tag\r\n className={[styles.typography, className].filter(Boolean).join(\" \")}\r\n data-variant={variant}\r\n data-tone={tone}\r\n data-weight={weight}\r\n data-align={align === \"left\" ? undefined : align}\r\n data-truncate={truncate ? \"\" : undefined}\r\n >\r\n {children}\r\n </Tag>\r\n );\r\n}\r\n","\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\n\nexport type Theme = \"light\" | \"dark\" | \"system\";\nexport type ResolvedTheme = \"light\" | \"dark\";\n\ntype ThemeContextValue = {\n theme: Theme;\n resolvedTheme: ResolvedTheme;\n setTheme: (theme: Theme) => void;\n toggleTheme: () => void;\n};\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\n\nexport const THEME_STORAGE_KEY = \"poinqu-theme\";\n\nfunction readStoredTheme(fallback: Theme): Theme {\n if (typeof window === \"undefined\") return fallback;\n try {\n const stored = window.localStorage.getItem(THEME_STORAGE_KEY);\n if (stored === \"light\" || stored === \"dark\" || stored === \"system\") {\n return stored;\n }\n } catch {\n /* localStorage may be unavailable (private mode, sandbox). */\n }\n return fallback;\n}\n\nexport function getSystemTheme(): ResolvedTheme {\n if (typeof window === \"undefined\") return \"light\";\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\";\n}\n\nfunction resolveTheme(theme: Theme): ResolvedTheme {\n return theme === \"system\" ? getSystemTheme() : theme;\n}\n\nexport function applyTheme(theme: Theme) {\n if (typeof document === \"undefined\") return;\n const resolved = resolveTheme(theme);\n const root = document.documentElement;\n root.dataset.theme = resolved;\n root.style.colorScheme = resolved;\n}\n\ntype ThemeProviderProps = {\n children: ReactNode;\n defaultTheme?: Theme;\n};\n\nexport function ThemeProvider({\n children,\n defaultTheme = \"system\",\n}: ThemeProviderProps) {\n const [theme, setThemeState] = useState<Theme>(() =>\n readStoredTheme(defaultTheme),\n );\n const [resolvedTheme, setResolvedTheme] = useState<ResolvedTheme>(() =>\n resolveTheme(readStoredTheme(defaultTheme)),\n );\n\n useEffect(() => {\n applyTheme(theme);\n }, [theme]);\n\n useEffect(() => {\n const media = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const onChange = () => {\n if (readStoredTheme(defaultTheme) !== \"system\") return;\n setResolvedTheme(getSystemTheme());\n applyTheme(\"system\");\n };\n media.addEventListener(\"change\", onChange);\n return () => media.removeEventListener(\"change\", onChange);\n }, [defaultTheme]);\n\n const setTheme = useCallback((next: Theme) => {\n setThemeState(next);\n setResolvedTheme(resolveTheme(next));\n try {\n window.localStorage.setItem(THEME_STORAGE_KEY, next);\n } catch {\n /* Ignore storage failures; the in-memory theme still works. */\n }\n applyTheme(next);\n }, []);\n\n const toggleTheme = useCallback(() => {\n setTheme(resolvedTheme === \"dark\" ? \"light\" : \"dark\");\n }, [resolvedTheme, setTheme]);\n\n const value = useMemo(\n () => ({ theme, resolvedTheme, setTheme, toggleTheme }),\n [theme, resolvedTheme, setTheme, toggleTheme],\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n","\"use client\";\n\nimport { useEffect, useId, useRef, useState, useSyncExternalStore } from \"react\";\nimport Icon from \"@/components/ui/Icon\";\nimport { useTheme, type Theme } from \"./ThemeProvider\";\nimport styles from \"./ThemeToggle.module.css\";\n\ntype ThemeToggleProps = {\n variant?: \"icon\" | \"segmented\";\n className?: string;\n};\n\nconst OPTIONS: { value: Theme; label: string; icon: string }[] = [\n { value: \"light\", label: \"Light\", icon: \"lucide:sun\" },\n { value: \"dark\", label: \"Dark\", icon: \"lucide:moon-star\" },\n { value: \"system\", label: \"System\", icon: \"lucide:monitor\" },\n];\n\nconst subscribe = () => () => {};\nconst getClientSnapshot = () => true;\nconst getServerSnapshot = () => false;\n\nexport default function ThemeToggle({\n variant = \"icon\",\n className,\n}: ThemeToggleProps) {\n const { theme, resolvedTheme, setTheme, toggleTheme } = useTheme();\n const mounted = useSyncExternalStore(\n subscribe,\n getClientSnapshot,\n getServerSnapshot,\n );\n const [open, setOpen] = useState(false);\n const wrapRef = useRef<HTMLDivElement>(null);\n const menuId = useId();\n\n useEffect(() => {\n if (!open) return;\n const onPointerDown = (event: MouseEvent) => {\n if (!wrapRef.current?.contains(event.target as Node)) setOpen(false);\n };\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") setOpen(false);\n };\n document.addEventListener(\"mousedown\", onPointerDown);\n document.addEventListener(\"keydown\", onKeyDown);\n return () => {\n document.removeEventListener(\"mousedown\", onPointerDown);\n document.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [open]);\n\n if (variant === \"segmented\") {\n return (\n <div\n className={[styles.segmented, className].filter(Boolean).join(\" \")}\n role=\"group\"\n aria-label=\"Color theme\"\n >\n {OPTIONS.map((option) => (\n <button\n key={option.value}\n type=\"button\"\n className={styles.segment}\n data-active={mounted && theme === option.value ? \"\" : undefined}\n aria-pressed={mounted ? theme === option.value : undefined}\n onClick={() => setTheme(option.value)}\n >\n <Icon name={option.icon} />\n <span>{option.label}</span>\n </button>\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={wrapRef}\n className={[styles.wrap, className].filter(Boolean).join(\" \")}\n >\n <button\n type=\"button\"\n className={styles.iconButton}\n aria-label=\"Change color theme\"\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-controls={menuId}\n onClick={() => setOpen((value) => !value)}\n >\n <Icon\n name={\n !mounted\n ? \"lucide:circle-half\"\n : resolvedTheme === \"dark\"\n ? \"lucide:moon-star\"\n : \"lucide:sun\"\n }\n />\n </button>\n\n {open ? (\n <div id={menuId} className={styles.menu} role=\"menu\">\n <p className={styles.menuLabel}>Appearance</p>\n {OPTIONS.map((option) => (\n <button\n key={option.value}\n type=\"button\"\n role=\"menuitemradio\"\n aria-checked={theme === option.value}\n className={styles.menuItem}\n onClick={() => {\n setTheme(option.value);\n setOpen(false);\n }}\n >\n <Icon name={option.icon} />\n <span>{option.label}</span>\n {theme === option.value ? (\n <Icon name=\"lucide:check\" className={styles.check} />\n ) : null}\n </button>\n ))}\n <button\n type=\"button\"\n className={styles.quickToggle}\n onClick={() => {\n toggleTheme();\n setOpen(false);\n }}\n >\n Toggle {resolvedTheme === \"dark\" ? \"light\" : \"dark\"}\n <Icon name=\"lucide:arrow-right\" />\n </button>\n </div>\n ) : null}\n </div>\n );\n}\n","/**\n * Server-safe theme bootstrap. Inline this in the root layout so the persisted\n * theme is applied before the first paint (no flash of the wrong theme).\n */\nexport const THEME_STORAGE_KEY = \"poinqu-theme\";\n\nexport const themeScript = `(function(){try{var t=localStorage.getItem(\"${THEME_STORAGE_KEY}\");var m=window.matchMedia(\"(prefers-color-scheme: dark)\").matches;var r=t===\"dark\"||((!t||t===\"system\")&&m)?\"dark\":\"light\";document.documentElement.dataset.theme=r;document.documentElement.style.colorScheme=r;}catch(e){}})();`;\n","\"use client\";\n\nimport { themeScript } from \"./theme-script\";\n\ntype ThemeScriptProps = {\n /**\n * Optional CSP nonce. Only needed when your app uses a strict\n * Content-Security-Policy without 'unsafe-inline'.\n */\n nonce?: string;\n};\n\n/**\n * Applies the persisted theme before first paint. Render it once, as the first\n * child of <body>, to avoid a flash of the wrong theme.\n *\n * <body>\n * <ThemeScript />\n * ...\n * </body>\n */\nexport default function ThemeScript({ nonce }: ThemeScriptProps) {\n return (\n <script nonce={nonce} dangerouslySetInnerHTML={{ __html: themeScript }} />\n );\n}\n"],"names":["ICON_DATA","Icon","name","className","style","key","data","jsx","Collapse","title","description","icon","badge","tone","defaultOpen","open","onOpenChange","children","internalOpen","setInternalOpen","useState","isOpen","handleToggle","event","next","jsxs","styles","Accordion","items","type","defaultValue","value","onValueChange","internalValue","setInternalValue","currentValue","toggle","id","item","Badge","variant","size","dot","Button","label","iconRight","iconOnly","loading","fullWidth","disabled","ariaLabel","rest","Modal","onClose","presentation","footer","closeOnBackdrop","dialogRef","useRef","titleId","useId","descriptionId","useEffect","dialog","previous","rect","AccountModal","user","role","workspace","onSignOut","Fragment","TONE_ICONS","Alert","onDismiss","CONFIRM_TONES","AlertDialog","confirmLabel","cancelLabel","onConfirm","Spinner","stateDescription","state","meta","progress","Attachment","image","orientation","onOpen","onRemove","clampedProgress","AttachmentGroup","Avatar","initials","src","showName","status","_getRequireWildcardCache","nodeInterop","cacheBabelInterop","cacheNodeInterop","_interop_require_wildcard","obj","cache","newObj","hasPropertyDescriptor","desc","_interop_require_wildcard_1","exports","_export","target","all","assign","getRenderedSearch","searchParamsToUrlQuery","urlQueryToSearchParams","query","pairs","v","searchParams","existing","stringifyUrlQueryParam","param","searchParamsList","formatUrl","formatWithValidation","urlObjectKeys","_querystring","require$$0","require$$1","slashedProtocols","urlObj","auth","hostname","protocol","pathname","hash","host","search","url","omit","object","keys","omitted","DecodeError","MiddlewareNotFoundError","MissingStaticPage","NormalizeError","PageNotFoundError","SP","ST","WEB_VITALS","execOnce","getDisplayName","getLocationOrigin","getURL","isAbsoluteUrl","isResSent","loadGetInitialProps","normalizeRepeatedSlashes","stringifyError","fn","used","result","args","ABSOLUTE_URL_REGEX","c","port","href","origin","Component","res","urlParts","App","ctx","message","props","method","page","error","removeTrailingSlash","route","parsePath","path","hashIndex","queryIndex","hasQuery","normalizePathTrailingSlash","_removetrailingslash","_parsepath","module","pathHasPrefix","prefix","hasBasePath","_pathhasprefix","basePath","isLocalURL","_utils","_hasbasepath","locationOrigin","resolved","getSortedRouteObjects","getSortedRoutes","UrlNode","urlPath","childrenPaths","routes","prev","curr","r","urlPaths","slugNames","isCatchAll","nextSegment","handleSlug","previousSlug","nextSlug","slug","segmentName","isOptional","normalizedPages","root","pagePath","objects","getter","indexes","pathnames","i","ensureLeadingSlash","DEFAULT_SEGMENT_KEY","NOT_FOUND_SEGMENT_KEY","PAGE_SEGMENT_KEY","computeSelectedLayoutSegment","getSegmentValue","getSelectedLayoutSegmentPath","isGroupSegment","isParallelRouteSegment","segment","segments","parallelRouteKey","rawSegment","tree","first","segmentPath","node","parallelRoutes","segmentValue","compareAppPaths","normalizeAppPath","normalizeRscURL","selectAppPageEntry","_ensureleadingslash","_segment","index","a","b","aHasSlot","bHasSlot","normalizeAppPageEntryPathname","appPath","appPaths","normalizePathname","entry","INTERCEPTION_ROUTE_MARKERS","extractInterceptionRouteInformation","findMissingCanonicalInterceptionRoutes","isInterceptionRouteAppPath","_apppaths","parseRoutePattern","tail","isOptionalCatchAll","unbounded","prefixSegments","acceptsLength","pattern","length","prefixCovers","canonical","intercepted","canonicalSegment","interceptedSegment","patternCoversAtLength","isRoutePatternCovered","ordinaryRoutes","unboundedCoverageStart","m","interceptingRoute","marker","interceptedRoute","splitInterceptingRoute","canonicalRoutePatterns","interceptionRoute","canonicalRoute","isDynamicRoute","_interceptionroutes","TEST_ROUTE","TEST_STRICT_ROUTE","strict","_sortedroutes","_isdynamic","e","n","lexer","t","o","f","parse","u","p","tryConsume","mustConsume","consumeText","isSafe","safePattern","escapeString","s","d","g","x","h","l","T","compile","tokensToFunction","flags","match","pathToRegexp","regexpToFunction","_loop_1","regexpToRegexp","arrayToRegexp","stringToRegexp","tokensToRegexp","E","w","y","R","A","_","pathToRegexpModule","PARAM_SEPARATOR","hasAdjacentParameterIssues","normalizeAdjacentParameters","normalizeTokensForRegexp","stripNormalizedSeparators","stripParameterSeparators","normalized","tokens","token","params","cleaned","safeCompile","safePathToRegexp","safeRegexpToFunction","safeRouteMatcher","_pathtoregexp","_routepatternnormalizer","options","needsNormalization","routeToUse","normalizedRoute","compiler","regexp","originalMatcher","matcherFn","getRouteMatcher","_routematchutils","re","groups","rawMatcher","routeMatch","decode","group","ACTION_SUFFIX","APP_DIR_ALIAS","CACHE_ONE_YEAR_SECONDS","DOT_NEXT_ALIAS","ESLINT_DEFAULT_DIRS","GSP_NO_RETURNED_VALUE","GSSP_COMPONENT_MEMBER_ERROR","GSSP_NO_RETURNED_VALUE","HTML_CONTENT_TYPE_HEADER","INFINITE_CACHE","INSTRUMENTATION_HOOK_FILENAME","JSON_CONTENT_TYPE_HEADER","MATCHED_PATH_HEADER","MIDDLEWARE_FILENAME","MIDDLEWARE_LOCATION_REGEXP","NEXT_BODY_SUFFIX","NEXT_CACHE_IMPLICIT_TAG_ID","NEXT_CACHE_REVALIDATED_TAGS_HEADER","NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER","NEXT_CACHE_ROOT_PARAM_TAG_ID","NEXT_CACHE_SOFT_TAG_MAX_LENGTH","NEXT_CACHE_TAGS_HEADER","NEXT_CACHE_TAG_MAX_ITEMS","NEXT_CACHE_TAG_MAX_LENGTH","NEXT_DATA_SUFFIX","NEXT_INTERCEPTION_MARKER_PREFIX","NEXT_META_SUFFIX","NEXT_NAV_DEPLOYMENT_ID_HEADER","NEXT_QUERY_PARAM_PREFIX","NEXT_RESUME_HEADER","NEXT_RESUME_STATE_LENGTH_HEADER","NON_STANDARD_NODE_ENV","PAGES_DIR_ALIAS","PRERENDER_REVALIDATE_HEADER","PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER","PROXY_FILENAME","PROXY_LOCATION_REGEXP","PUBLIC_DIR_MIDDLEWARE_CONFLICT","ROOT_DIR_ALIAS","RSC_ACTION_CLIENT_WRAPPER_ALIAS","RSC_ACTION_ENCRYPTION_ALIAS","RSC_ACTION_PROXY_ALIAS","RSC_ACTION_VALIDATE_ALIAS","RSC_CACHE_WRAPPER_ALIAS","RSC_DYNAMIC_IMPORT_WRAPPER_ALIAS","RSC_MOD_REF_PROXY_ALIAS","RSC_SEGMENTS_DIR_SUFFIX","RSC_SEGMENT_SUFFIX","RSC_SUFFIX","SERVER_PROPS_EXPORT_ERROR","SERVER_PROPS_GET_INIT_PROPS_CONFLICT","SERVER_PROPS_SSG_CONFLICT","SERVER_RUNTIME","SSG_FALLBACK_EXPORT_ERROR","SSG_GET_INITIAL_PROPS_CONFLICT","STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR","TEXT_PLAIN_CONTENT_TYPE_HEADER","UNSTABLE_REVALIDATE_RENAME_ERROR","WEBPACK_LAYERS","WEBPACK_RESOURCE_QUERIES","WEB_SOCKET_MAX_RECONNECTIONS","WEBPACK_LAYERS_NAMES","escapeStringRegexp","reHasRegExp","reReplaceRegExp","str","InvariantError","parseLoaderTree","modules","staticSiblings","layout","template","conventionPath","getParamProperties","getSegmentParam","interceptionMarker","paramType","repeat","optional","isInterceptionAppRoute","isNormalizedAppRoute","parseAppRouteSegment","parseAppRouteWithSlots","parseNormalizedAppRoute","_invarianterror","_getsegmentparam","require$$2","normalizeEncodedDynamicPlaceholder","decodedSegment","OnlyRoutableSegments","AllowParallelSegments","AllowGroupSegments","parseAppRouteImpl","allowedTypes","pathnameSegments","normalizedSegment","appSegment","parts","dynamicSegments","interceptionPrefixFromParamType","resolveParamValue","_interceptionprefixfromparamtype","getParamValueFromSegment","pathSegment","paramName","depth","processedSegments","interceptionPrefix","paramValue","PARAMETER_PATTERN","getDynamicParam","interpolateParallelRouteParams","parseMatchedParameter","parseParameter","_parseloadertree","_app","_resolveparamvalue","require$$3","getParamValue","interpolatedParams","segmentKey","fallbackRouteParams","loaderTree","interpolated","stack","nextDepth","parallelRoute","dynamicParamType","paramCacheKey","getNamedMiddlewareRegex","getNamedRouteRegex","getRouteRegex","_constants","_escaperegexp","_getdynamicparam","require$$4","getParametrizedRoute","includeSuffix","includePrefix","groupIndex","markerMatch","paramMatches","excludeOptionalTrailingSlash","parameterizedRoute","buildGetSafeRouteKey","routeKey","j","getSafeKeyFromSegment","getSafeRouteKey","routeKeys","keyPrefix","backreferenceDuplicateKeys","cleanedKey","invalidKey","duplicateKey","getNamedParametrizedRoute","prefixRouteKeys","reference","inverseParts","hasInterceptionMarker","namedRegex","catchAll","namedParameterizedRoute","interpolateAs","_routematcher","_routeregex","asPathname","interpolatedRoute","dynamicRegex","dynamicGroups","dynamicMatches","replaced","resolveHref","_formaturl","_omit","_normalizetrailingslash","_islocalurl","require$$5","_utils1","require$$6","_interpolateas","require$$7","require$$8","require$$9","router","resolveAs","base","urlAsString","urlProtoMatch","urlAsStringNoProto","normalizedUrl","baseBase","routeRegex","finalUrl","interpolatedAs","resolvedHref","addPathPrefix","addLocale","_addpathprefix","locale","defaultLocale","ignorePrefix","lower","_interop_require_default","_interop_require_default_1","RouterContext","cancelIdleCallback","requestIdleCallback","cb","start","useIntersection","_react","_requestidlecallback","hasIntersectionObserver","observers","idList","createObserver","instance","elements","observer","entries","callback","isVisible","observe","element","rootRef","rootMargin","isDisabled","visible","setVisible","elementRef","setElement","idleCallback","resetVisible","normalizeLocalePath","locales","lowercasedLocales","detectedLocale","detectDomainLocale","domainItems","domainHostname","getDomainLocale","domainLocales","domain","proto","finalLocale","addBasePath","required","useMergedRef","refA","refB","cleanupA","cleanupB","current","cleanupFnA","cleanupFnB","applyRef","cleanup","errorOnce","errors","msg","_default","useLinkStatus","_jsxruntime","_resolvehref","_addlocale","_routercontextsharedruntime","_useintersection","_getdomainlocale","require$$10","_addbasepath","require$$11","_usemergedref","require$$12","prefetched","prefetch","as","prefetchedKey","err","isModifiedEvent","linkClicked","replace","shallow","scroll","onNavigate","nodeName","isDefaultPrevented","routerScroll","formatStringOrUrl","urlObjOrString","Link","forwardedRef","hrefProp","asProp","childrenProp","prefetchProp","passHref","onClick","onMouseEnterProp","onTouchStartProp","legacyBehavior","transitionTypes","restProps","prefetchEnabled","createPropError","valType","resolvedAs","previousHref","previousAs","child","childRef","setIntersectionRef","setIntersectionWithResetRef","el","setRef","childProps","curLocale","localeDomain","require$$13","LinkStatusContext","link","Breadcrumb","separator","last","ButtonGroup","Card","interactive","CardHeader","actions","Heading","CardBody","padding","CardFooter","align","Checkbox","indeterminate","CodeBlock","code","language","filename","showLineNumbers","copyable","copied","setCopied","lines","timer","copy","line","computePopoverPosition","viewportHeight","spaceBelow","spaceAbove","openAbove","available","Combobox","placeholder","searchPlaceholder","emptyMessage","multiple","clearable","invalid","ariaDescribedBy","ariaInvalid","setOpen","setQuery","activeIndex","setActiveIndex","position","setPosition","controlRef","popoverRef","inputRef","suppressOpen","listId","selectedValues","useMemo","selectedOption","option","filteredOptions","handlePointerDown","update","updatePosition","closeList","openList","handleFocus","selectOption","removeValue","optionValue","clearSelection","moveActive","direction","step","handleKeyDown","inputPlaceholder","inputValue","activeOption","createPortal","selected","Input","endAdornment","range","end","getPageItems","total","siblings","totalNumbers","leftSibling","rightSibling","showLeftEllipsis","showRightEllipsis","Pagination","pageCount","onPageChange","Table","caption","minWidth","flush","TableHead","TableBody","TableRow","TableHeaderCell","scope","TableCell","DataTable","columns","getRowId","searchable","searchText","pageSize","selectable","setPage","sort","setSort","setSelected","filtered","row","sorted","column","factor","left","right","leftValue","rightValue","currentPage","startIndex","pageRows","pageIds","allChecked","someChecked","toggleRow","togglePage","checked","handleSearch","handleSort","ariaSortFor","rangeLabel","isSelected","computeMenuPosition","estimatedWidth","maxHeight","Dropdown","menuWidth","menuRef","menuId","focusTrigger","focusItem","edge","menuItems","openMenu","closeOnOutside","closeOnEscape","handleMenuKeyDown","EmptyState","action","secondaryAction","compact","FormField","hint","generatedId","isValidElement","controlId","hintId","errorId","describedBy","control","cloneElement","Kbd","ListGroup","ListGroupItem","active","SPINNER_TONES","Marker","PageHeader","eyebrow","breadcrumb","PasswordInput","toSize","Placeholder","width","height","animated","baseClass","commonStyle","Progress","max","showValue","clamped","percent","RadioGroup","onChange","BRAND","USER","RANGE_OPTIONS","PRIORITY_META","STATUS_META","RangeSelect","SearchField","Select","Slider","min","formatValue","internal","setInternal","Stat","trend","spark","point","StatGrid","StatusBadge","Stepper","steps","onStepChange","content","Switch","TabsContext","createContext","useTabs","context","useContext","Tabs","baseId","setValue","TabsList","tabs","currentIndex","Tab","TabPanel","Textarea","ToastContext","ToastCard","ToastProvider","toasts","setToasts","nextId","dismiss","useCallback","toast","record","useToast","Tooltip","placement","delay","hovered","focused","wrapperRef","tooltipRef","clearTimer","show","hide","useLayoutEffect","trigger","tooltip","gap","margin","top","hideOnMove","STATUS_ICONS","TraceLine","expandable","TraceCollapsible","Trace","DEFAULT_TAG","Typography","weight","truncate","Tag","ThemeContext","THEME_STORAGE_KEY","readStoredTheme","fallback","stored","getSystemTheme","resolveTheme","theme","applyTheme","ThemeProvider","defaultTheme","setThemeState","resolvedTheme","setResolvedTheme","media","setTheme","toggleTheme","useTheme","OPTIONS","subscribe","getClientSnapshot","getServerSnapshot","ThemeToggle","mounted","useSyncExternalStore","wrapRef","onPointerDown","onKeyDown","themeScript","ThemeScript","nonce"],"mappings":"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","x_google_ignoreList":[13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63]}
1
+ {"version":3,"file":"index.mjs","sources":["../components/ui/icon-data.ts","../components/ui/Icon.tsx","../components/ui/Collapse.tsx","../components/ui/Accordion.tsx","../components/ui/Badge.tsx","../components/ui/Button.tsx","../components/ui/Modal.tsx","../components/ui/AccountModal.tsx","../components/ui/Alert.tsx","../components/ui/AlertDialog.tsx","../components/ui/Spinner.tsx","../components/ui/Attachment.tsx","../components/ui/Avatar.tsx","../components/ui/Breadcrumb.tsx","../components/ui/ButtonGroup.tsx","../components/ui/Card.tsx","../components/ui/Checkbox.tsx","../components/ui/CodeBlock.tsx","../components/ui/Combobox.tsx","../components/ui/Input.tsx","../components/ui/Pagination.tsx","../components/ui/Table.tsx","../components/ui/DataTable.tsx","../components/ui/Dropdown.tsx","../components/ui/EmptyState.tsx","../components/ui/FormField.tsx","../components/ui/Kbd.tsx","../components/ui/ListGroup.tsx","../components/ui/Marker.tsx","../components/ui/PageHeader.tsx","../components/ui/PasswordInput.tsx","../components/ui/Placeholder.tsx","../components/ui/Progress.tsx","../components/ui/RadioGroup.tsx","../lib/data.ts","../components/ui/RangeSelect.tsx","../components/ui/SearchField.tsx","../components/ui/Select.tsx","../components/ui/Slider.tsx","../components/ui/Stat.tsx","../components/ui/StatusBadge.tsx","../components/ui/Stepper.tsx","../components/ui/Switch.tsx","../components/ui/Tabs.tsx","../components/ui/Textarea.tsx","../components/ui/Toast.tsx","../components/ui/Tooltip.tsx","../components/ui/Trace.tsx","../components/ui/Typography.tsx","../components/theme/ThemeProvider.tsx","../components/theme/ThemeToggle.tsx","../components/theme/theme-script.ts","../components/theme/ThemeScript.tsx"],"sourcesContent":["// @generated by scripts/generate-icons.mjs — do not edit manually.\n// Source: lucide-static v1.61.0. Lucide icons are © Lucide Contributors,\n// licensed under the ISC license. See THIRD_PARTY_NOTICES.md.\n//\n// This map is used as an inline SVG fallback for the <iconify-icon> element so\n// icons render instantly (SSR included) without requiring the Iconify runtime.\n// Unknown icon names still fall through to the Iconify web component.\n\nexport const ICON_DATA: Record<string, string> = {\n \"accessibility\": \"<circle cx=\\\"16\\\" cy=\\\"4\\\" r=\\\"1\\\" /> <path d=\\\"m18 19 1-7-6 1\\\" /> <path d=\\\"m5 8 3-3 5.5 3-2.36 3.5\\\" /> <path d=\\\"M4.24 14.5a5 5 0 0 0 6.88 6\\\" /> <path d=\\\"M13.76 17.5a5 5 0 0 0-6.88-6\\\" />\",\n \"activity\": \"<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\\\" />\",\n \"alert-triangle\": \"<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\\\" /> <path d=\\\"M12 9v4\\\" /> <path d=\\\"M12 17h.01\\\" />\",\n \"align-center\": \"<path d=\\\"M21 5H3\\\" /> <path d=\\\"M17 12H7\\\" /> <path d=\\\"M19 19H5\\\" />\",\n \"align-left\": \"<path d=\\\"M21 5H3\\\" /> <path d=\\\"M15 12H3\\\" /> <path d=\\\"M17 19H3\\\" />\",\n \"align-right\": \"<path d=\\\"M21 5H3\\\" /> <path d=\\\"M21 12H9\\\" /> <path d=\\\"M21 19H7\\\" />\",\n \"app-window\": \"<rect x=\\\"2\\\" y=\\\"4\\\" width=\\\"20\\\" height=\\\"16\\\" rx=\\\"2\\\" /> <path d=\\\"M10 4v4\\\" /> <path d=\\\"M2 8h20\\\" /> <path d=\\\"M6 4v4\\\" />\",\n \"archive\": \"<rect width=\\\"20\\\" height=\\\"5\\\" x=\\\"2\\\" y=\\\"3\\\" rx=\\\"1\\\" /> <path d=\\\"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8\\\" /> <path d=\\\"M10 12h4\\\" />\",\n \"arrow-down\": \"<path d=\\\"M12 5v14\\\" /> <path d=\\\"m19 12-7 7-7-7\\\" />\",\n \"arrow-down-up\": \"<path d=\\\"m3 16 4 4 4-4\\\" /> <path d=\\\"M7 20V4\\\" /> <path d=\\\"m21 8-4-4-4 4\\\" /> <path d=\\\"M17 4v16\\\" />\",\n \"arrow-left\": \"<path d=\\\"m12 19-7-7 7-7\\\" /> <path d=\\\"M19 12H5\\\" />\",\n \"arrow-right\": \"<path d=\\\"M5 12h14\\\" /> <path d=\\\"m12 5 7 7-7 7\\\" />\",\n \"arrow-up\": \"<path d=\\\"m5 12 7-7 7 7\\\" /> <path d=\\\"M12 19V5\\\" />\",\n \"arrow-up-right\": \"<path d=\\\"M7 7h10v10\\\" /> <path d=\\\"M7 17 17 7\\\" />\",\n \"atom\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\" /> <path d=\\\"M20.2 20.2c2.04-2.03.02-7.36-4.5-11.9-4.54-4.52-9.87-6.54-11.9-4.5-2.04 2.03-.02 7.36 4.5 11.9 4.54 4.52 9.87 6.54 11.9 4.5Z\\\" /> <path d=\\\"M15.7 15.7c4.52-4.54 6.54-9.87 4.5-11.9-2.03-2.04-7.36-.02-11.9 4.5-4.52 4.54-6.54 9.87-4.5 11.9 2.03 2.04 7.36.02 11.9-4.5Z\\\" />\",\n \"badge\": \"<path d=\\\"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z\\\" />\",\n \"bell\": \"<path d=\\\"M10.268 21a2 2 0 0 0 3.464 0\\\" /> <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\\\" />\",\n \"bell-ring\": \"<path d=\\\"M10.268 21a2 2 0 0 0 3.464 0\\\" /> <path d=\\\"M22 8c0-2.3-.8-4.3-2-6\\\" /> <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\\\" /> <path d=\\\"M4 2C2.8 3.7 2 5.7 2 8\\\" />\",\n \"blocks\": \"<path d=\\\"M10 22V7a1 1 0 0 0-1-1H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5a1 1 0 0 0-1-1H2\\\" /> <rect x=\\\"14\\\" y=\\\"2\\\" width=\\\"8\\\" height=\\\"8\\\" rx=\\\"1\\\" />\",\n \"book-open\": \"<path d=\\\"M12 5v16\\\" /> <path d=\\\"M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z\\\" />\",\n \"box\": \"<path d=\\\"M21 8a2 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.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z\\\" /> <path d=\\\"m3.3 7 8.7 5 8.7-5\\\" /> <path d=\\\"M12 22V12\\\" />\",\n \"brain\": \"<path d=\\\"M12 18V5\\\" /> <path d=\\\"M15 13a4.17 4.17 0 01-3-4 4.17 4.17 0 01-3 4\\\" /> <path d=\\\"M17.707 6.294A3 3 0 1012 5a3 3 0 10-5.707 1.294\\\" /> <path d=\\\"M17.996 5.125a4 4 0 012.526 5.77\\\" /> <path d=\\\"M18 18a4 4 0 002-7.465\\\" /> <path d=\\\"M19.967 17.482a4 4 0 11-7.967.517 4 4 0 11-7.967-.517\\\" /> <path d=\\\"M6 18a4 4 0 01-2-7.465\\\" /> <path d=\\\"M6.004 5.125a4 4 0 00-2.526 5.77\\\" />\",\n \"bug\": \"<path d=\\\"M12 20v-9\\\" /> <path d=\\\"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z\\\" /> <path d=\\\"M14.12 3.88 16 2\\\" /> <path d=\\\"M21 21a4 4 0 0 0-3.81-4\\\" /> <path d=\\\"M21 5a4 4 0 0 1-3.55 3.97\\\" /> <path d=\\\"M22 13h-4\\\" /> <path d=\\\"M3 21a4 4 0 0 1 3.81-4\\\" /> <path d=\\\"M3 5a4 4 0 0 0 3.55 3.97\\\" /> <path d=\\\"M6 13H2\\\" /> <path d=\\\"m8 2 1.88 1.88\\\" /> <path d=\\\"M9 7.13V6a3 3 0 1 1 6 0v1.13\\\" />\",\n \"calendar-days\": \"<path d=\\\"M8 2v3\\\" /> <path d=\\\"M16 2v3\\\" /> <rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" /> <path d=\\\"M3 9h18\\\" /> <path d=\\\"M8 13h.01\\\" /> <path d=\\\"M12 13h.01\\\" /> <path d=\\\"M16 13h.01\\\" /> <path d=\\\"M8 17h.01\\\" /> <path d=\\\"M12 17h.01\\\" /> <path d=\\\"M16 17h.01\\\" />\",\n \"chart-no-axes-column-increasing\": \"<path d=\\\"M5 21v-6\\\" /> <path d=\\\"M12 21V9\\\" /> <path d=\\\"M19 21V3\\\" />\",\n \"check\": \"<path d=\\\"M20 6 9 17l-5-5\\\" />\",\n \"chevron-down\": \"<path d=\\\"m6 9 6 6 6-6\\\" />\",\n \"chevron-left\": \"<path d=\\\"m15 18-6-6 6-6\\\" />\",\n \"chevron-right\": \"<path d=\\\"m9 18 6-6-6-6\\\" />\",\n \"chevrons-down-up\": \"<path d=\\\"m7 20 5-5 5 5\\\" /> <path d=\\\"m7 4 5 5 5-5\\\" />\",\n \"chevrons-up-down\": \"<path d=\\\"m7 15 5 5 5-5\\\" /> <path d=\\\"m7 9 5-5 5 5\\\" />\",\n \"circle-alert\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" /> <line x1=\\\"12\\\" x2=\\\"12\\\" y1=\\\"8\\\" y2=\\\"12\\\" /> <line x1=\\\"12\\\" x2=\\\"12.01\\\" y1=\\\"16\\\" y2=\\\"16\\\" />\",\n \"circle-check\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" /> <path d=\\\"m16 9-5.5 5.5L8 12\\\" />\",\n \"circle-dashed\": \"<path d=\\\"M10.1 2.182a10 10 0 0 1 3.8 0\\\" /> <path d=\\\"M13.9 21.818a10 10 0 0 1-3.8 0\\\" /> <path d=\\\"M17.609 3.721a10 10 0 0 1 2.69 2.7\\\" /> <path d=\\\"M2.182 13.9a10 10 0 0 1 0-3.8\\\" /> <path d=\\\"M20.279 17.609a10 10 0 0 1-2.7 2.69\\\" /> <path d=\\\"M21.818 10.1a10 10 0 0 1 0 3.8\\\" /> <path d=\\\"M3.721 6.391a10 10 0 0 1 2.7-2.69\\\" /> <path d=\\\"M6.391 20.279a10 10 0 0 1-2.69-2.7\\\" />\",\n \"circle-half\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" /> <path d=\\\"M12 18a6 6 0 0 0 0-12v12z\\\" />\",\n \"circle-user-round\": \"<path d=\\\"M17.925 20.056a6 6 0 0 0-11.851.001\\\" /> <circle cx=\\\"12\\\" cy=\\\"11\\\" r=\\\"4\\\" /> <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\",\n \"clock-3\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" /> <path d=\\\"M12 6v6h4\\\" />\",\n \"code-2\": \"<path d=\\\"m18 16 4-4-4-4\\\" /> <path d=\\\"m6 8-4 4 4 4\\\" /> <path d=\\\"m14.5 4-5 16\\\" />\",\n \"columns-3\": \"<rect width=\\\"18\\\" height=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"2\\\" /> <path d=\\\"M9 3v18\\\" /> <path d=\\\"M15 3v18\\\" />\",\n \"compass\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" /> <path d=\\\"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z\\\" />\",\n \"component\": \"<path d=\\\"M15.536 11.293a1 1 0 0 0 0 1.414l2.376 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z\\\" /> <path d=\\\"M2.297 11.293a1 1 0 0 0 0 1.414l2.377 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414L6.088 8.916a1 1 0 0 0-1.414 0z\\\" /> <path d=\\\"M8.916 17.912a1 1 0 0 0 0 1.415l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.415l-2.377-2.376a1 1 0 0 0-1.414 0z\\\" /> <path d=\\\"M8.916 4.674a1 1 0 0 0 0 1.414l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z\\\" />\",\n \"copy\": \"<rect width=\\\"14\\\" height=\\\"14\\\" x=\\\"8\\\" y=\\\"8\\\" rx=\\\"2\\\" ry=\\\"2\\\" /> <path d=\\\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\\\" />\",\n \"corner-down-left\": \"<path d=\\\"M20 4v7a4 4 0 0 1-4 4H4\\\" /> <path d=\\\"m9 10-5 5 5 5\\\" />\",\n \"credit-card\": \"<rect width=\\\"20\\\" height=\\\"14\\\" x=\\\"2\\\" y=\\\"5\\\" rx=\\\"2\\\" /> <line x1=\\\"2\\\" x2=\\\"22\\\" y1=\\\"10\\\" y2=\\\"10\\\" /> <path d=\\\"M6 14h2\\\" />\",\n \"database\": \"<ellipse cx=\\\"12\\\" cy=\\\"5\\\" rx=\\\"9\\\" ry=\\\"3\\\" /> <path d=\\\"M3 5V19A9 3 0 0 0 21 19V5\\\" /> <path d=\\\"M3 12A9 3 0 0 0 21 12\\\" />\",\n \"download\": \"<path d=\\\"M12 15V3\\\" /> <path d=\\\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\\\" /> <path d=\\\"m7 10 5 5 5-5\\\" />\",\n \"ellipsis\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\" /> <circle cx=\\\"19\\\" cy=\\\"12\\\" r=\\\"1\\\" /> <circle cx=\\\"5\\\" cy=\\\"12\\\" r=\\\"1\\\" />\",\n \"ellipsis-vertical\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\" /> <circle cx=\\\"12\\\" cy=\\\"5\\\" r=\\\"1\\\" /> <circle cx=\\\"12\\\" cy=\\\"19\\\" r=\\\"1\\\" />\",\n \"eye\": \"<path d=\\\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\\\" /> <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\" />\",\n \"eye-off\": \"<path d=\\\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\\\" /> <path d=\\\"M14.084 14.158a3 3 0 0 1-4.242-4.242\\\" /> <path d=\\\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\\\" /> <path d=\\\"m2 2 20 20\\\" />\",\n \"file-archive\": \"<path d=\\\"M13.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v11.5\\\" /> <path d=\\\"M14 2v5a1 1 0 0 0 1 1h5\\\" /> <path d=\\\"M8 12v-1\\\" /> <path d=\\\"M8 18v-2\\\" /> <path d=\\\"M8 7V6\\\" /> <circle cx=\\\"8\\\" cy=\\\"20\\\" r=\\\"2\\\" />\",\n \"file-code-2\": \"<path d=\\\"M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35\\\" /> <path d=\\\"M14 2v5a1 1 0 0 0 1 1h5\\\" /> <path d=\\\"m5 16-3 3 3 3\\\" /> <path d=\\\"m9 22 3-3-3-3\\\" />\",\n \"file-search\": \"<path d=\\\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\\\" /> <path d=\\\"M14 2v5a1 1 0 0 0 1 1h5\\\" /> <circle cx=\\\"11.5\\\" cy=\\\"14.5\\\" r=\\\"2.5\\\" /> <path d=\\\"M13.3 16.3 15 18\\\" />\",\n \"file-spreadsheet\": \"<path d=\\\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\\\" /> <path d=\\\"M14 2v5a1 1 0 0 0 1 1h5\\\" /> <path d=\\\"M8 13h2\\\" /> <path d=\\\"M14 13h2\\\" /> <path d=\\\"M8 17h2\\\" /> <path d=\\\"M14 17h2\\\" />\",\n \"file-text\": \"<path d=\\\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\\\" /> <path d=\\\"M14 2v5a1 1 0 0 0 1 1h5\\\" /> <path d=\\\"M10 9H8\\\" /> <path d=\\\"M16 13H8\\\" /> <path d=\\\"M16 17H8\\\" />\",\n \"filter\": \"<path d=\\\"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z\\\" />\",\n \"flame\": \"<path d=\\\"M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4\\\" />\",\n \"flask-conical\": \"<path d=\\\"M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2\\\" /> <path d=\\\"M6.453 15h11.094\\\" /> <path d=\\\"M8.5 2h7\\\" />\",\n \"gauge\": \"<path d=\\\"m12 14 4-4\\\" /> <path d=\\\"M3.34 19a10 10 0 1 1 17.32 0\\\" />\",\n \"git-branch\": \"<path d=\\\"M15 6a9 9 0 0 0-9 9V3\\\" /> <circle cx=\\\"18\\\" cy=\\\"6\\\" r=\\\"3\\\" /> <circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\" />\",\n \"github\": \"<path fill=\\\"currentColor\\\" stroke=\\\"none\\\" d=\\\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\\\"/>\",\n \"hammer\": \"<path d=\\\"m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9\\\" /> <path d=\\\"m18 15 4-4\\\" /> <path d=\\\"m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5\\\" />\",\n \"hash\": \"<line x1=\\\"4\\\" x2=\\\"20\\\" y1=\\\"9\\\" y2=\\\"9\\\" /> <line x1=\\\"4\\\" x2=\\\"20\\\" y1=\\\"15\\\" y2=\\\"15\\\" /> <line x1=\\\"10\\\" x2=\\\"8\\\" y1=\\\"3\\\" y2=\\\"21\\\" /> <line x1=\\\"16\\\" x2=\\\"14\\\" y1=\\\"3\\\" y2=\\\"21\\\" />\",\n \"headset\": \"<path d=\\\"M3 11h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-5Zm0 0a9 9 0 1 1 18 0m0 0v5a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3Z\\\" /> <path d=\\\"M21 16v2a4 4 0 0 1-4 4h-5\\\" />\",\n \"history\": \"<path d=\\\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\\\" /> <path d=\\\"M3 3v5h5\\\" /> <path d=\\\"M12 7v5l4 2\\\" />\",\n \"home\": \"<path d=\\\"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8\\\" /> <path d=\\\"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\\\" />\",\n \"inbox\": \"<polyline points=\\\"22 12 16 12 14 15 10 15 8 12 2 12\\\" /> <path d=\\\"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\\\" />\",\n \"info\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" /> <path d=\\\"M12 16v-4\\\" /> <path d=\\\"M12 8h.01\\\" />\",\n \"keyboard\": \"<path d=\\\"M10 8h.01\\\" /> <path d=\\\"M12 12h.01\\\" /> <path d=\\\"M14 8h.01\\\" /> <path d=\\\"M16 12h.01\\\" /> <path d=\\\"M18 8h.01\\\" /> <path d=\\\"M6 8h.01\\\" /> <path d=\\\"M7 16h10\\\" /> <path d=\\\"M8 12h.01\\\" /> <rect width=\\\"20\\\" height=\\\"16\\\" x=\\\"2\\\" y=\\\"4\\\" rx=\\\"2\\\" />\",\n \"layout-grid\": \"<rect width=\\\"7\\\" height=\\\"7\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"1\\\" /> <rect width=\\\"7\\\" height=\\\"7\\\" x=\\\"14\\\" y=\\\"3\\\" rx=\\\"1\\\" /> <rect width=\\\"7\\\" height=\\\"7\\\" x=\\\"14\\\" y=\\\"14\\\" rx=\\\"1\\\" /> <rect width=\\\"7\\\" height=\\\"7\\\" x=\\\"3\\\" y=\\\"14\\\" rx=\\\"1\\\" />\",\n \"layout-panel-top\": \"<rect width=\\\"18\\\" height=\\\"7\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"1\\\" /> <rect width=\\\"7\\\" height=\\\"7\\\" x=\\\"3\\\" y=\\\"14\\\" rx=\\\"1\\\" /> <rect width=\\\"7\\\" height=\\\"7\\\" x=\\\"14\\\" y=\\\"14\\\" rx=\\\"1\\\" />\",\n \"life-buoy\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" /> <path d=\\\"m4.93 4.93 4.24 4.24\\\" /> <path d=\\\"m14.83 9.17 4.24-4.24\\\" /> <path d=\\\"m14.83 14.83 4.24 4.24\\\" /> <path d=\\\"m9.17 14.83-4.24 4.24\\\" /> <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\" />\",\n \"link\": \"<path d=\\\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\\\" /> <path d=\\\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\\\" />\",\n \"list\": \"<path d=\\\"M3 5h.01\\\" /> <path d=\\\"M3 12h.01\\\" /> <path d=\\\"M3 19h.01\\\" /> <path d=\\\"M8 5h13\\\" /> <path d=\\\"M8 12h13\\\" /> <path d=\\\"M8 19h13\\\" />\",\n \"list-checks\": \"<path d=\\\"M13 5h8\\\" /> <path d=\\\"M13 12h8\\\" /> <path d=\\\"M13 19h8\\\" /> <path d=\\\"m3 17 2 2 4-4\\\" /> <path d=\\\"m3 7 2 2 4-4\\\" />\",\n \"list-filter\": \"<path d=\\\"M2 5h20\\\" /> <path d=\\\"M6 12h12\\\" /> <path d=\\\"M9 19h6\\\" />\",\n \"list-tree\": \"<path d=\\\"M8 5h13\\\" /> <path d=\\\"M13 12h8\\\" /> <path d=\\\"M13 19h8\\\" /> <path d=\\\"M3 10a2 2 0 0 0 2 2h3\\\" /> <path d=\\\"M3 5v12a2 2 0 0 0 2 2h3\\\" />\",\n \"loader-circle\": \"<path d=\\\"M21 12a9 9 0 1 1-6.219-8.56\\\" />\",\n \"lock\": \"<rect width=\\\"18\\\" height=\\\"11\\\" x=\\\"3\\\" y=\\\"11\\\" rx=\\\"2\\\" ry=\\\"2\\\" /> <path d=\\\"M7 11V7a5 5 0 0 1 10 0v4\\\" />\",\n \"log-out\": \"<path d=\\\"m16 17 5-5-5-5\\\" /> <path d=\\\"M21 12H9\\\" /> <path d=\\\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\\\" />\",\n \"mail\": \"<path d=\\\"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7\\\" /> <rect x=\\\"2\\\" y=\\\"4\\\" width=\\\"20\\\" height=\\\"16\\\" rx=\\\"2\\\" />\",\n \"map-pin\": \"<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\\\" /> <circle cx=\\\"12\\\" cy=\\\"10\\\" r=\\\"3\\\" />\",\n \"maximize-2\": \"<path d=\\\"M15 3h6v6\\\" /> <path d=\\\"m21 3-7 7\\\" /> <path d=\\\"m3 21 7-7\\\" /> <path d=\\\"M9 21H3v-6\\\" />\",\n \"menu\": \"<path d=\\\"M4 5h16\\\" /> <path d=\\\"M4 12h16\\\" /> <path d=\\\"M4 19h16\\\" />\",\n \"message-square-text\": \"<path d=\\\"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z\\\" /> <path d=\\\"M7 11h10\\\" /> <path d=\\\"M7 15h6\\\" /> <path d=\\\"M7 7h8\\\" />\",\n \"minus\": \"<path d=\\\"M5 12h14\\\" />\",\n \"monitor\": \"<rect width=\\\"20\\\" height=\\\"14\\\" x=\\\"2\\\" y=\\\"3\\\" rx=\\\"2\\\" /> <line x1=\\\"8\\\" x2=\\\"16\\\" y1=\\\"21\\\" y2=\\\"21\\\" /> <line x1=\\\"12\\\" x2=\\\"12\\\" y1=\\\"17\\\" y2=\\\"21\\\" />\",\n \"moon-star\": \"<path d=\\\"M18 5h4\\\" /> <path d=\\\"M20 3v4\\\" /> <path d=\\\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\\\" />\",\n \"mountain\": \"<path d=\\\"m8 3 4 8 5-5 5 15H2L8 3z\\\" />\",\n \"mouse-pointer-click\": \"<path d=\\\"M14 4.1 12 6\\\" /> <path d=\\\"m5.1 8-2.9-.8\\\" /> <path d=\\\"m6 12-1.9 2\\\" /> <path d=\\\"M7.2 2.2 8 5.1\\\" /> <path d=\\\"M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z\\\" />\",\n \"notebook-text\": \"<path d=\\\"M2 6h4\\\" /> <path d=\\\"M2 10h4\\\" /> <path d=\\\"M2 14h4\\\" /> <path d=\\\"M2 18h4\\\" /> <rect width=\\\"16\\\" height=\\\"20\\\" x=\\\"4\\\" y=\\\"2\\\" rx=\\\"2\\\" /> <path d=\\\"M9.5 8h5\\\" /> <path d=\\\"M9.5 12H16\\\" /> <path d=\\\"M9.5 16H14\\\" />\",\n \"package\": \"<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\\\" /> <path d=\\\"M12 22V12\\\" /> <polyline points=\\\"3.29 7 12 12 20.71 7\\\" /> <path d=\\\"m7.5 4.27 9 5.15\\\" />\",\n \"palette\": \"<path d=\\\"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z\\\" /> <circle cx=\\\"13.5\\\" cy=\\\"6.5\\\" r=\\\".5\\\" fill=\\\"currentColor\\\" /> <circle cx=\\\"17.5\\\" cy=\\\"10.5\\\" r=\\\".5\\\" fill=\\\"currentColor\\\" /> <circle cx=\\\"6.5\\\" cy=\\\"12.5\\\" r=\\\".5\\\" fill=\\\"currentColor\\\" /> <circle cx=\\\"8.5\\\" cy=\\\"7.5\\\" r=\\\".5\\\" fill=\\\"currentColor\\\" />\",\n \"panel-left\": \"<rect width=\\\"18\\\" height=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"2\\\" /> <path d=\\\"M9 3v18\\\" />\",\n \"panel-right\": \"<rect width=\\\"18\\\" height=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"2\\\" /> <path d=\\\"M15 3v18\\\" />\",\n \"panel-top\": \"<rect width=\\\"18\\\" height=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"2\\\" /> <path d=\\\"M3 9h18\\\" />\",\n \"panels-top-left\": \"<rect width=\\\"18\\\" height=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"2\\\" /> <path d=\\\"M3 9h18\\\" /> <path d=\\\"M9 21V9\\\" />\",\n \"paperclip\": \"<path d=\\\"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551\\\" />\",\n \"play\": \"<path d=\\\"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\\\" />\",\n \"plus\": \"<path d=\\\"M5 12h14\\\" /> <path d=\\\"M12 5v14\\\" />\",\n \"printer\": \"<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\\\" /> <path d=\\\"M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6\\\" /> <rect x=\\\"6\\\" y=\\\"14\\\" width=\\\"12\\\" height=\\\"8\\\" rx=\\\"1\\\" />\",\n \"rectangle-ellipsis\": \"<rect width=\\\"20\\\" height=\\\"12\\\" x=\\\"2\\\" y=\\\"6\\\" rx=\\\"2\\\" /> <path d=\\\"M12 12h.01\\\" /> <path d=\\\"M17 12h.01\\\" /> <path d=\\\"M7 12h.01\\\" />\",\n \"refresh-cw\": \"<path d=\\\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\\\" /> <path d=\\\"M21 3v5h-5\\\" /> <path d=\\\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\\\" /> <path d=\\\"M8 16H3v5\\\" />\",\n \"repeat-2\": \"<path d=\\\"m2 9 3-3 3 3\\\" /> <path d=\\\"M13 18H7a2 2 0 0 1-2-2V6\\\" /> <path d=\\\"m22 15-3 3-3-3\\\" /> <path d=\\\"M11 6h6a2 2 0 0 1 2 2v10\\\" />\",\n \"rocket\": \"<path d=\\\"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5\\\" /> <path d=\\\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09\\\" /> <path d=\\\"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z\\\" /> <path d=\\\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05\\\" />\",\n \"rotate-ccw\": \"<path d=\\\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\\\" /> <path d=\\\"M3 3v5h5\\\" />\",\n \"route\": \"<circle cx=\\\"6\\\" cy=\\\"19\\\" r=\\\"3\\\" /> <path d=\\\"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15\\\" /> <circle cx=\\\"18\\\" cy=\\\"5\\\" r=\\\"3\\\" />\",\n \"save\": \"<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\\\" /> <path d=\\\"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7\\\" /> <path d=\\\"M7 3v4a1 1 0 0 0 1 1h7\\\" />\",\n \"search\": \"<path d=\\\"m21 21-4.34-4.34\\\" /> <circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\" />\",\n \"search-x\": \"<path d=\\\"m13.5 8.5-5 5\\\" /> <path d=\\\"m8.5 8.5 5 5\\\" /> <circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\" /> <path d=\\\"m21 21-4.3-4.3\\\" />\",\n \"send\": \"<path d=\\\"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z\\\" /> <path d=\\\"m21.854 2.147-10.94 10.939\\\" />\",\n \"server\": \"<rect width=\\\"20\\\" height=\\\"8\\\" x=\\\"2\\\" y=\\\"2\\\" rx=\\\"2\\\" ry=\\\"2\\\" /> <rect width=\\\"20\\\" height=\\\"8\\\" x=\\\"2\\\" y=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\" /> <line x1=\\\"6\\\" x2=\\\"6.01\\\" y1=\\\"6\\\" y2=\\\"6\\\" /> <line x1=\\\"6\\\" x2=\\\"6.01\\\" y1=\\\"18\\\" y2=\\\"18\\\" />\",\n \"settings-2\": \"<path d=\\\"M14 17H5\\\" /> <path d=\\\"M19 7h-9\\\" /> <circle cx=\\\"17\\\" cy=\\\"17\\\" r=\\\"3\\\" /> <circle cx=\\\"7\\\" cy=\\\"7\\\" r=\\\"3\\\" />\",\n \"shield-alert\": \"<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\\\" /> <path d=\\\"M12 8v4\\\" /> <path d=\\\"M12 16h.01\\\" />\",\n \"shield-check\": \"<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\\\" /> <path d=\\\"m9 12 2 2 4-4\\\" />\",\n \"sliders-horizontal\": \"<path d=\\\"M10 5H3\\\" /> <path d=\\\"M12 19H3\\\" /> <path d=\\\"M14 3v4\\\" /> <path d=\\\"M16 17v4\\\" /> <path d=\\\"M21 12h-9\\\" /> <path d=\\\"M21 19h-5\\\" /> <path d=\\\"M21 5h-7\\\" /> <path d=\\\"M8 10v4\\\" /> <path d=\\\"M8 12H3\\\" />\",\n \"smile\": \"<path d=\\\"M15 10V9\\\" /> <path d=\\\"M16.472 15a6 6 0 01-8.943 0\\\" /> <path d=\\\"M9 10V9\\\" /> <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\" />\",\n \"sparkles\": \"<path d=\\\"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\\\" /> <path d=\\\"M20 2v4\\\" /> <path d=\\\"M22 4h-4\\\" /> <circle cx=\\\"4\\\" cy=\\\"20\\\" r=\\\"2\\\" />\",\n \"square-mouse-pointer\": \"<path d=\\\"M12.034 12.681a.498.498 0 0 1 .647-.647l9 3.5a.5.5 0 0 1-.033.943l-3.444 1.068a1 1 0 0 0-.66.66l-1.067 3.443a.5.5 0 0 1-.943.033z\\\" /> <path d=\\\"M21 11V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h6\\\" />\",\n \"sun\": \"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\" /> <path d=\\\"M12 2v2\\\" /> <path d=\\\"M12 20v2\\\" /> <path d=\\\"m4.93 4.93 1.41 1.41\\\" /> <path d=\\\"m17.66 17.66 1.41 1.41\\\" /> <path d=\\\"M2 12h2\\\" /> <path d=\\\"M20 12h2\\\" /> <path d=\\\"m6.34 17.66-1.41 1.41\\\" /> <path d=\\\"m19.07 4.93-1.41 1.41\\\" />\",\n \"swatch-book\": \"<path d=\\\"M11 17a4 4 0 0 1-8 0V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2Z\\\" /> <path d=\\\"M16.7 13H19a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H7\\\" /> <path d=\\\"M 7 17h.01\\\" /> <path d=\\\"m11 8 2.3-2.3a2.4 2.4 0 0 1 3.404.004L18.6 7.6a2.4 2.4 0 0 1 .026 3.434L9.9 19.8\\\" />\",\n \"table\": \"<path d=\\\"M12 3v18\\\" /> <rect width=\\\"18\\\" height=\\\"18\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"2\\\" /> <path d=\\\"M3 9h18\\\" /> <path d=\\\"M3 15h18\\\" />\",\n \"table-2\": \"<path d=\\\"M3 9h18\\\" /> <path d=\\\"M9 3v18\\\" /> <rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" />\",\n \"terminal\": \"<path d=\\\"M12 19h8\\\" /> <path d=\\\"m4 17 6-6-6-6\\\" />\",\n \"text-cursor-input\": \"<path d=\\\"M12 20h-1a2 2 0 0 1-2-2 2 2 0 0 1-2 2H6\\\" /> <path d=\\\"M13 8h7a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-7\\\" /> <path d=\\\"M5 16H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2h1\\\" /> <path d=\\\"M6 4h1a2 2 0 0 1 2 2 2 2 0 0 1 2-2h1\\\" /> <path d=\\\"M9 6v12\\\" />\",\n \"ticket\": \"<path d=\\\"M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z\\\" /> <path d=\\\"M13 5v2\\\" /> <path d=\\\"M13 17v2\\\" /> <path d=\\\"M13 11v2\\\" />\",\n \"timer\": \"<line x1=\\\"10\\\" x2=\\\"14\\\" y1=\\\"2\\\" y2=\\\"2\\\" /> <line x1=\\\"12\\\" x2=\\\"15\\\" y1=\\\"14\\\" y2=\\\"11\\\" /> <circle cx=\\\"12\\\" cy=\\\"14\\\" r=\\\"8\\\" />\",\n \"trash-2\": \"<path d=\\\"M10 11v6\\\" /> <path d=\\\"M14 11v6\\\" /> <path d=\\\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\\\" /> <path d=\\\"M3 6h18\\\" /> <path d=\\\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\\\" />\",\n \"trending-down\": \"<path d=\\\"M16 17h6v-6\\\" /> <path d=\\\"m22 17-8.5-8.5-5 5L2 7\\\" />\",\n \"trending-up\": \"<path d=\\\"M16 7h6v6\\\" /> <path d=\\\"m22 7-8.5 8.5-5-5L2 17\\\" />\",\n \"triangle-alert\": \"<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\\\" /> <path d=\\\"M12 9v4\\\" /> <path d=\\\"M12 17h.01\\\" />\",\n \"type\": \"<path d=\\\"M12 4v16\\\" /> <path d=\\\"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2\\\" /> <path d=\\\"M9 20h6\\\" />\",\n \"upload-cloud\": \"<path d=\\\"M12 13v8\\\" /> <path d=\\\"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\\\" /> <path d=\\\"m8 17 4-4 4 4\\\" />\",\n \"user-round\": \"<circle cx=\\\"12\\\" cy=\\\"8\\\" r=\\\"5\\\" /> <path d=\\\"M20 21a8 8 0 0 0-16 0\\\" />\",\n \"user-round-check\": \"<path d=\\\"M2 21a8 8 0 0 1 13.292-6\\\" /> <circle cx=\\\"10\\\" cy=\\\"8\\\" r=\\\"5\\\" /> <path d=\\\"m16 19 2 2 4-4\\\" />\",\n \"user-round-plus\": \"<path d=\\\"M2 21a8 8 0 0 1 13.292-6\\\" /> <circle cx=\\\"10\\\" cy=\\\"8\\\" r=\\\"5\\\" /> <path d=\\\"M19 16v6\\\" /> <path d=\\\"M22 19h-6\\\" />\",\n \"users-round\": \"<path d=\\\"M18 21a8 8 0 0 0-16 0\\\" /> <circle cx=\\\"10\\\" cy=\\\"8\\\" r=\\\"5\\\" /> <path d=\\\"M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3\\\" />\",\n \"waypoints\": \"<path d=\\\"m10.586 5.414-5.172 5.172\\\" /> <path d=\\\"m18.586 13.414-5.172 5.172\\\" /> <path d=\\\"M6 12h12\\\" /> <circle cx=\\\"12\\\" cy=\\\"20\\\" r=\\\"2\\\" /> <circle cx=\\\"12\\\" cy=\\\"4\\\" r=\\\"2\\\" /> <circle cx=\\\"20\\\" cy=\\\"12\\\" r=\\\"2\\\" /> <circle cx=\\\"4\\\" cy=\\\"12\\\" r=\\\"2\\\" />\",\n \"workflow\": \"<rect width=\\\"8\\\" height=\\\"8\\\" x=\\\"3\\\" y=\\\"3\\\" rx=\\\"2\\\" /> <path d=\\\"M7 11v4a2 2 0 0 0 2 2h4\\\" /> <rect width=\\\"8\\\" height=\\\"8\\\" x=\\\"13\\\" y=\\\"13\\\" rx=\\\"2\\\" />\",\n \"x\": \"<path d=\\\"M18 6 6 18\\\" /> <path d=\\\"m6 6 12 12\\\" />\",\n \"zap\": \"<path d=\\\"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z\\\" />\",\n};\n","import type { CSSProperties } from \"react\";\nimport { ICON_DATA } from \"./icon-data\";\n\ntype IconProps = {\n name: string;\n className?: string;\n style?: CSSProperties;\n};\n\n/**\n * Icons render as inline SVG when the name is part of the bundled Lucide set\n * (so they work without any runtime), and fall back to the Iconify web\n * component for arbitrary `lucide:*` / `mdi:*` / `simple-icons:*` names.\n *\n * The SVG lives inside the <iconify-icon> element so applications that already\n * load Iconify can still upgrade and render the canonical icon. All existing\n * CSS selectors that target `iconify-icon` keep working.\n */\nexport default function Icon({ name, className, style }: IconProps) {\n const key = name.startsWith(\"lucide:\") ? name.slice(\"lucide:\".length) : name;\n const data = ICON_DATA[key];\n\n return (\n <iconify-icon\n icon={name}\n className={className}\n style={style}\n aria-hidden=\"true\"\n noobserver\n >\n {data ? (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.9\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n focusable=\"false\"\n dangerouslySetInnerHTML={{ __html: data }}\n />\n ) : null}\n </iconify-icon>\n );\n}\n","\"use client\";\r\n\r\nimport { useState, type ReactNode, type SyntheticEvent } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Collapse.module.css\";\r\n\r\nexport type CollapseTone = \"default\" | \"info\" | \"success\" | \"warning\" | \"danger\";\r\n\r\ntype CollapseProps = {\r\n title: string;\r\n description?: string;\r\n icon?: string;\r\n badge?: ReactNode;\r\n tone?: CollapseTone;\r\n defaultOpen?: boolean;\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n children: ReactNode;\r\n className?: string;\r\n};\r\n\r\nexport default function Collapse({\r\n title,\r\n description,\r\n icon,\r\n badge,\r\n tone = \"default\",\r\n defaultOpen = false,\r\n open,\r\n onOpenChange,\r\n children,\r\n className,\r\n}: CollapseProps) {\r\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\r\n const isOpen = open ?? internalOpen;\r\n\r\n const handleToggle = (event: SyntheticEvent<HTMLDetailsElement>) => {\r\n const next = event.currentTarget.open;\r\n if (open === undefined) setInternalOpen(next);\r\n onOpenChange?.(next);\r\n };\r\n\r\n return (\r\n <details\r\n className={[styles.collapse, className].filter(Boolean).join(\" \")}\r\n data-tone={tone}\r\n open={isOpen}\r\n onToggle={handleToggle}\r\n >\r\n <summary className={styles.summary}>\r\n {icon ? (\r\n <span className={styles.icon}>\r\n <Icon name={icon} />\r\n </span>\r\n ) : null}\r\n <span className={styles.texts}>\r\n <span className={styles.title}>{title}</span>\r\n {description ? (\r\n <span className={styles.description}>{description}</span>\r\n ) : null}\r\n </span>\r\n {badge !== undefined && badge !== null ? (\r\n <span className={styles.badge}>{badge}</span>\r\n ) : null}\r\n <Icon name=\"lucide:chevron-down\" className={styles.chevron} />\r\n </summary>\r\n <div className={styles.content}>{children}</div>\r\n </details>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { useState, type ReactNode } from \"react\";\r\nimport Collapse, { type CollapseTone } from \"./Collapse\";\r\nimport styles from \"./Accordion.module.css\";\r\n\r\nexport type AccordionItem = {\r\n id: string;\r\n title: string;\r\n description?: string;\r\n icon?: string;\r\n badge?: ReactNode;\r\n tone?: CollapseTone;\r\n content: ReactNode;\r\n};\r\n\r\ntype AccordionProps = {\r\n items: AccordionItem[];\r\n type?: \"single\" | \"multiple\";\r\n defaultValue?: string[];\r\n value?: string[];\r\n onValueChange?: (value: string[]) => void;\r\n className?: string;\r\n};\r\n\r\nexport default function Accordion({\r\n items,\r\n type = \"single\",\r\n defaultValue = [],\r\n value,\r\n onValueChange,\r\n className,\r\n}: AccordionProps) {\r\n const [internalValue, setInternalValue] = useState(defaultValue);\r\n const currentValue = value ?? internalValue;\r\n\r\n const toggle = (id: string, open: boolean) => {\r\n let next: string[];\r\n\r\n if (open) {\r\n next =\r\n type === \"single\"\r\n ? [id]\r\n : Array.from(new Set([...currentValue, id]));\r\n } else {\r\n next = currentValue.filter((item) => item !== id);\r\n }\r\n\r\n if (value === undefined) setInternalValue(next);\r\n onValueChange?.(next);\r\n };\r\n\r\n return (\r\n <div className={[styles.accordion, className].filter(Boolean).join(\" \")}>\r\n {items.map((item) => (\r\n <Collapse\r\n key={item.id}\r\n title={item.title}\r\n description={item.description}\r\n icon={item.icon}\r\n badge={item.badge}\r\n tone={item.tone}\r\n open={currentValue.includes(item.id)}\r\n onOpenChange={(open) => toggle(item.id, open)}\r\n >\r\n {item.content}\r\n </Collapse>\r\n ))}\r\n </div>\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\r\nimport type { Tone } from \"@/lib/data\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Badge.module.css\";\r\n\r\nexport type BadgeTone = Tone | \"neutral\";\r\n\r\ntype BadgeProps = {\r\n children: ReactNode;\r\n tone?: BadgeTone;\r\n variant?: \"soft\" | \"solid\" | \"outline\";\r\n size?: \"sm\" | \"md\";\r\n dot?: boolean;\r\n icon?: string;\r\n className?: string;\r\n};\r\n\r\nexport default function Badge({\r\n children,\r\n tone = \"neutral\",\r\n variant = \"soft\",\r\n size = \"md\",\r\n dot = false,\r\n icon,\r\n className,\r\n}: BadgeProps) {\r\n return (\r\n <span\r\n className={[styles.badge, className].filter(Boolean).join(\" \")}\r\n data-tone={tone}\r\n data-variant={variant}\r\n data-size={size}\r\n >\r\n {dot ? <span className={styles.dot} aria-hidden=\"true\" /> : null}\r\n {icon ? <Icon name={icon} /> : null}\r\n <span>{children}</span>\r\n </span>\r\n );\r\n}\r\n","import type { ButtonHTMLAttributes } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Button.module.css\";\r\n\r\nexport type ButtonTone = \"default\" | \"primary\" | \"danger\" | \"success\" | \"warning\";\r\nexport type ButtonVariant = \"outline\" | \"solid\" | \"ghost\";\r\n\r\ntype ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {\r\n label: string;\r\n icon?: string;\r\n iconRight?: string;\r\n tone?: ButtonTone;\r\n variant?: ButtonVariant;\r\n size?: \"sm\" | \"md\";\r\n iconOnly?: boolean;\r\n loading?: boolean;\r\n fullWidth?: boolean;\r\n};\r\n\r\nexport default function Button({\r\n label,\r\n icon,\r\n iconRight,\r\n tone = \"default\",\r\n variant = \"outline\",\r\n size = \"md\",\r\n iconOnly = false,\r\n loading = false,\r\n fullWidth = false,\r\n className,\r\n type = \"button\",\r\n disabled,\r\n title,\r\n \"aria-label\": ariaLabel,\r\n ...rest\r\n}: ButtonProps) {\r\n return (\r\n <button\r\n {...rest}\r\n type={type}\r\n className={[styles.button, className].filter(Boolean).join(\" \")}\r\n data-tone={tone}\r\n data-variant={variant}\r\n data-size={size}\r\n data-icon-only={iconOnly ? \"\" : undefined}\r\n data-full-width={fullWidth ? \"\" : undefined}\r\n data-loading={loading ? \"\" : undefined}\r\n disabled={disabled || loading}\r\n aria-busy={loading || undefined}\r\n aria-label={ariaLabel ?? (iconOnly ? label : undefined)}\r\n title={iconOnly ? title ?? label : title}\r\n >\r\n {loading ? (\r\n <span className={styles.spinner} aria-hidden=\"true\" />\r\n ) : icon ? (\r\n <Icon name={icon} />\r\n ) : null}\r\n {iconOnly ? null : <span className={styles.label}>{label}</span>}\r\n {iconRight && !iconOnly && !loading ? <Icon name={iconRight} /> : null}\r\n </button>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useId, useRef, type ReactNode } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Modal.module.css\";\r\n\r\nexport type ModalTone = \"default\" | \"info\" | \"success\" | \"warning\" | \"danger\";\r\n\r\ntype ModalProps = {\r\n open: boolean;\r\n onClose: () => void;\r\n title: string;\r\n description?: string;\r\n icon?: string;\r\n tone?: ModalTone;\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n presentation?: \"center\" | \"sheet\" | \"fullscreen\";\r\n children?: ReactNode;\r\n footer?: ReactNode;\r\n closeOnBackdrop?: boolean;\r\n};\r\n\r\nexport default function Modal({\r\n open,\r\n onClose,\r\n title,\r\n description,\r\n icon,\r\n tone = \"default\",\r\n size = \"md\",\r\n presentation = \"center\",\r\n children,\r\n footer,\r\n closeOnBackdrop = true,\r\n}: ModalProps) {\r\n const dialogRef = useRef<HTMLDialogElement>(null);\r\n const titleId = useId();\r\n const descriptionId = useId();\r\n\r\n useEffect(() => {\r\n const dialog = dialogRef.current;\r\n if (!dialog) return;\r\n if (open && !dialog.open) dialog.showModal();\r\n if (!open && dialog.open) dialog.close();\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const previous = document.body.style.overflow;\r\n document.body.style.overflow = \"hidden\";\r\n return () => {\r\n document.body.style.overflow = previous;\r\n };\r\n }, [open]);\r\n\r\n return (\r\n <dialog\r\n ref={dialogRef}\r\n className={styles.dialog}\r\n data-size={size}\r\n data-presentation={presentation}\r\n data-tone={tone}\r\n aria-labelledby={titleId}\r\n aria-describedby={description ? descriptionId : undefined}\r\n onClose={() => {\r\n if (open) onClose();\r\n }}\r\n onCancel={(event) => {\r\n event.preventDefault();\r\n onClose();\r\n }}\r\n onClick={(event) => {\r\n if (!closeOnBackdrop) return;\r\n if (event.target !== event.currentTarget) return;\r\n const rect = event.currentTarget.getBoundingClientRect();\r\n const outside =\r\n event.clientX < rect.left ||\r\n event.clientX > rect.right ||\r\n event.clientY < rect.top ||\r\n event.clientY > rect.bottom;\r\n if (outside) onClose();\r\n }}\r\n >\r\n <div className={styles.header}>\r\n {icon ? (\r\n <span className={styles.icon}>\r\n <Icon name={icon} />\r\n </span>\r\n ) : null}\r\n <div className={styles.headerText}>\r\n <h2 id={titleId} className={styles.title}>\r\n {title}\r\n </h2>\r\n {description ? (\r\n <p id={descriptionId} className={styles.description}>\r\n {description}\r\n </p>\r\n ) : null}\r\n </div>\r\n <button\r\n type=\"button\"\r\n className={styles.close}\r\n aria-label=\"Close modal\"\r\n onClick={onClose}\r\n >\r\n <Icon name=\"lucide:x\" />\r\n </button>\r\n </div>\r\n\r\n {children ? <div className={styles.body}>{children}</div> : null}\r\n {footer ? <div className={styles.footer}>{footer}</div> : null}\r\n </dialog>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport type { User } from \"@/lib/data\";\r\nimport Badge from \"./Badge\";\r\nimport Button from \"./Button\";\r\nimport Modal from \"./Modal\";\r\nimport styles from \"./AccountModal.module.css\";\r\n\r\ntype AccountModalProps = {\r\n open: boolean;\r\n onClose: () => void;\r\n user: User;\r\n role?: string;\r\n workspace?: string;\r\n onSignOut?: () => void;\r\n};\r\n\r\nexport default function AccountModal({\r\n open,\r\n onClose,\r\n user,\r\n role = \"Administrator\",\r\n workspace = \"Poinqu\",\r\n onSignOut,\r\n}: AccountModalProps) {\r\n return (\r\n <Modal\r\n open={open}\r\n onClose={onClose}\r\n title=\"Account\"\r\n description=\"Informasi akun yang sedang login.\"\r\n icon=\"lucide:user-round\"\r\n tone=\"info\"\r\n size=\"sm\"\r\n footer={\r\n <>\r\n {onSignOut ? (\r\n <Button\r\n label=\"Sign out\"\r\n variant=\"ghost\"\r\n tone=\"danger\"\r\n icon=\"lucide:log-out\"\r\n onClick={() => {\r\n onSignOut();\r\n onClose();\r\n }}\r\n />\r\n ) : null}\r\n <Button\r\n label=\"Close\"\r\n variant=\"solid\"\r\n tone=\"primary\"\r\n onClick={onClose}\r\n />\r\n </>\r\n }\r\n >\r\n <div className={styles.account}>\r\n <span className={styles.avatar}>{user.initials}</span>\r\n <span className={styles.text}>\r\n <strong>{user.name}</strong>\r\n <span>{user.email}</span>\r\n </span>\r\n <Badge tone=\"success\" dot size=\"sm\">\r\n Online\r\n </Badge>\r\n </div>\r\n\r\n <div className={styles.details}>\r\n <div>\r\n <span>Role</span>\r\n <strong>{role}</strong>\r\n </div>\r\n <div>\r\n <span>Workspace</span>\r\n <strong>{workspace}</strong>\r\n </div>\r\n <div>\r\n <span>Status</span>\r\n <Badge tone=\"success\" dot size=\"sm\">\r\n Online\r\n </Badge>\r\n </div>\r\n </div>\r\n </Modal>\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Alert.module.css\";\r\n\r\nexport type AlertTone = \"info\" | \"success\" | \"warning\" | \"danger\";\r\n\r\nconst TONE_ICONS: Record<AlertTone, string> = {\r\n info: \"lucide:info\",\r\n success: \"lucide:circle-check\",\r\n warning: \"lucide:triangle-alert\",\r\n danger: \"lucide:circle-alert\",\r\n};\r\n\r\ntype AlertProps = {\r\n title: string;\r\n description?: ReactNode;\r\n tone?: AlertTone;\r\n icon?: string;\r\n onDismiss?: () => void;\r\n className?: string;\r\n};\r\n\r\nexport default function Alert({\r\n title,\r\n description,\r\n tone = \"info\",\r\n icon,\r\n onDismiss,\r\n className,\r\n}: AlertProps) {\r\n return (\r\n <div\r\n className={[styles.alert, className].filter(Boolean).join(\" \")}\r\n data-tone={tone}\r\n role=\"alert\"\r\n >\r\n <Icon name={icon ?? TONE_ICONS[tone]} className={styles.icon} />\r\n <div className={styles.content}>\r\n <strong className={styles.title}>{title}</strong>\r\n {description ? <p className={styles.description}>{description}</p> : null}\r\n </div>\r\n {onDismiss ? (\r\n <button\r\n type=\"button\"\r\n className={styles.close}\r\n aria-label=\"Dismiss alert\"\r\n onClick={onDismiss}\r\n >\r\n <Icon name=\"lucide:x\" />\r\n </button>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { useEffect, useId, useRef, type ReactNode } from \"react\";\r\nimport Button from \"./Button\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./AlertDialog.module.css\";\r\n\r\nexport type AlertDialogTone = \"default\" | \"danger\" | \"warning\" | \"success\";\r\n\r\ntype AlertDialogProps = {\r\n open: boolean;\r\n onOpenChange: (open: boolean) => void;\r\n title: string;\r\n description?: ReactNode;\r\n icon?: string;\r\n tone?: AlertDialogTone;\r\n confirmLabel?: string;\r\n cancelLabel?: string;\r\n onConfirm?: () => void;\r\n loading?: boolean;\r\n size?: \"default\" | \"sm\";\r\n};\r\n\r\nconst TONE_ICONS: Record<AlertDialogTone, string> = {\r\n default: \"lucide:info\",\r\n danger: \"lucide:triangle-alert\",\r\n warning: \"lucide:alert-triangle\",\r\n success: \"lucide:circle-check\",\r\n};\r\n\r\nconst CONFIRM_TONES: Record<\r\n AlertDialogTone,\r\n \"primary\" | \"danger\" | \"warning\" | \"success\"\r\n> = {\r\n default: \"primary\",\r\n danger: \"danger\",\r\n warning: \"warning\",\r\n success: \"success\",\r\n};\r\n\r\nexport default function AlertDialog({\r\n open,\r\n onOpenChange,\r\n title,\r\n description,\r\n icon,\r\n tone = \"default\",\r\n confirmLabel = \"Continue\",\r\n cancelLabel = \"Cancel\",\r\n onConfirm,\r\n loading = false,\r\n size = \"default\",\r\n}: AlertDialogProps) {\r\n const dialogRef = useRef<HTMLDialogElement>(null);\r\n const titleId = useId();\r\n const descriptionId = useId();\r\n\r\n useEffect(() => {\r\n const dialog = dialogRef.current;\r\n if (!dialog) return;\r\n if (open && !dialog.open) dialog.showModal();\r\n if (!open && dialog.open) dialog.close();\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const previous = document.body.style.overflow;\r\n document.body.style.overflow = \"hidden\";\r\n return () => {\r\n document.body.style.overflow = previous;\r\n };\r\n }, [open]);\r\n\r\n return (\r\n <dialog\r\n ref={dialogRef}\r\n className={styles.dialog}\r\n data-tone={tone}\r\n data-size={size}\r\n role=\"alertdialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={titleId}\r\n aria-describedby={description ? descriptionId : undefined}\r\n onClose={() => {\r\n if (open) onOpenChange(false);\r\n }}\r\n onCancel={(event) => {\r\n event.preventDefault();\r\n onOpenChange(false);\r\n }}\r\n >\r\n <div className={styles.body}>\r\n <span className={styles.icon}>\r\n <Icon name={icon ?? TONE_ICONS[tone]} />\r\n </span>\r\n\r\n <div className={styles.text}>\r\n <h2 id={titleId} className={styles.title}>\r\n {title}\r\n </h2>\r\n {description ? (\r\n <p id={descriptionId} className={styles.description}>\r\n {description}\r\n </p>\r\n ) : null}\r\n </div>\r\n </div>\r\n\r\n <div className={styles.footer}>\r\n <Button\r\n label={cancelLabel}\r\n variant=\"outline\"\r\n disabled={loading}\r\n onClick={() => onOpenChange(false)}\r\n />\r\n <Button\r\n label={confirmLabel}\r\n variant=\"solid\"\r\n tone={CONFIRM_TONES[tone]}\r\n loading={loading}\r\n onClick={onConfirm}\r\n />\r\n </div>\r\n </dialog>\r\n );\r\n}\r\n","import styles from \"./Spinner.module.css\";\r\n\r\nexport type SpinnerTone = \"default\" | \"primary\" | \"success\" | \"danger\" | \"muted\";\r\n\r\ntype SpinnerProps = {\r\n size?: \"sm\" | \"md\" | \"lg\";\r\n tone?: SpinnerTone;\r\n label?: string;\r\n className?: string;\r\n};\r\n\r\nexport default function Spinner({\r\n size = \"md\",\r\n tone = \"default\",\r\n label = \"Loading\",\r\n className,\r\n}: SpinnerProps) {\r\n return (\r\n <span\r\n className={[styles.spinner, className].filter(Boolean).join(\" \")}\r\n data-size={size}\r\n data-tone={tone}\r\n role=\"status\"\r\n aria-label={label}\r\n />\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport Spinner from \"./Spinner\";\r\nimport styles from \"./Attachment.module.css\";\r\n\r\nexport type AttachmentState =\r\n | \"idle\"\r\n | \"uploading\"\r\n | \"processing\"\r\n | \"error\"\r\n | \"done\";\r\nexport type AttachmentSize = \"default\" | \"sm\" | \"xs\";\r\n\r\ntype AttachmentProps = {\r\n name: string;\r\n meta?: string;\r\n icon?: string;\r\n image?: string;\r\n state?: AttachmentState;\r\n progress?: number;\r\n size?: AttachmentSize;\r\n orientation?: \"horizontal\" | \"vertical\";\r\n onOpen?: () => void;\r\n onRemove?: () => void;\r\n className?: string;\r\n};\r\n\r\nfunction stateDescription(\r\n state: AttachmentState,\r\n meta: string | undefined,\r\n progress: number | undefined,\r\n) {\r\n if (state === \"uploading\") {\r\n return progress === undefined\r\n ? \"Uploading…\"\r\n : `Uploading · ${Math.round(progress)}%`;\r\n }\r\n if (state === \"processing\") return \"Processing document…\";\r\n if (state === \"error\") return \"Upload failed. Try again.\";\r\n return meta;\r\n}\r\n\r\nexport default function Attachment({\r\n name,\r\n meta,\r\n icon = \"lucide:file-text\",\r\n image,\r\n state = \"done\",\r\n progress,\r\n size = \"default\",\r\n orientation = \"horizontal\",\r\n onOpen,\r\n onRemove,\r\n className,\r\n}: AttachmentProps) {\r\n const clampedProgress =\r\n progress === undefined ? undefined : Math.min(100, Math.max(0, progress));\r\n const description = stateDescription(state, meta, clampedProgress);\r\n\r\n return (\r\n <div\r\n className={[styles.attachment, className].filter(Boolean).join(\" \")}\r\n data-state={state}\r\n data-size={size}\r\n data-orientation={orientation}\r\n >\r\n {onOpen ? (\r\n <button\r\n type=\"button\"\r\n className={styles.trigger}\r\n aria-label={`Preview ${name}`}\r\n onClick={onOpen}\r\n />\r\n ) : null}\r\n\r\n <span className={styles.media}>\r\n {image ? (\r\n // eslint-disable-next-line @next/next/no-img-element -- attachment previews accept arbitrary local or remote files.\r\n <img src={image} alt=\"\" />\r\n ) : (\r\n <Icon name={icon} />\r\n )}\r\n </span>\r\n\r\n <span className={styles.content}>\r\n <span className={styles.title}>{name}</span>\r\n {description ? (\r\n <span className={styles.description}>{description}</span>\r\n ) : null}\r\n {state === \"uploading\" ? (\r\n <span className={styles.progress} aria-hidden=\"true\">\r\n <span style={{ width: `${clampedProgress ?? 0}%` }} />\r\n </span>\r\n ) : null}\r\n </span>\r\n\r\n <span className={styles.actions}>\r\n {state === \"processing\" ? <Spinner size=\"sm\" label=\"Processing\" /> : null}\r\n {state === \"error\" ? (\r\n <Icon name=\"lucide:circle-alert\" className={styles.errorIcon} />\r\n ) : null}\r\n {onRemove ? (\r\n <button\r\n type=\"button\"\r\n className={styles.action}\r\n aria-label={`Remove ${name}`}\r\n onClick={onRemove}\r\n >\r\n <Icon name=\"lucide:x\" />\r\n </button>\r\n ) : null}\r\n </span>\r\n </div>\r\n );\r\n}\r\n\r\nexport function AttachmentGroup({\r\n children,\r\n className,\r\n}: {\r\n children: ReactNode;\r\n className?: string;\r\n}) {\r\n return (\r\n <div className={[styles.group, className].filter(Boolean).join(\" \")}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import styles from \"./Avatar.module.css\";\n\ntype AvatarProps = {\n name: string;\n initials: string;\n src?: string;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n showName?: boolean;\n status?: \"online\" | \"offline\" | \"busy\" | \"away\";\n className?: string;\n};\n\nexport default function Avatar({\n name,\n initials,\n src,\n size = \"sm\",\n showName = true,\n status,\n className,\n}: AvatarProps) {\n return (\n <span\n className={[styles.avatar, className].filter(Boolean).join(\" \")}\n data-size={size}\n >\n <span className={styles.image} title={name}>\n <span aria-hidden=\"true\">{initials}</span>\n {/* Native img keeps the package framework-agnostic (no next/image peer). */}\n {/* eslint-disable-next-line @next/next/no-img-element */}\n {src ? <img src={src} alt=\"\" width={40} height={40} loading=\"lazy\" /> : null}\n {status ? (\n <i className={styles.status} data-status={status} aria-hidden=\"true\" />\n ) : null}\n </span>\n {showName ? <span className={styles.name}>{name}</span> : null}\n </span>\n );\n}\n","import { Fragment, type ElementType, type ReactNode } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Breadcrumb.module.css\";\r\n\r\nexport type BreadcrumbItem = {\r\n label: string;\r\n href?: string;\r\n icon?: string;\r\n};\r\n\r\ntype BreadcrumbProps = {\r\n items: BreadcrumbItem[];\r\n ariaLabel?: string;\r\n separator?: ReactNode;\r\n /**\r\n * Optional link component, e.g. Next.js `Link`. Defaults to a native anchor\r\n * so the package stays framework-agnostic and works from a CDN.\r\n */\r\n linkComponent?: ElementType;\r\n className?: string;\r\n};\r\n\r\nexport default function Breadcrumb({\r\n items,\r\n ariaLabel = \"Breadcrumb\",\r\n separator = \"/\",\r\n linkComponent,\r\n className,\r\n}: BreadcrumbProps) {\r\n const LinkComponent = linkComponent ?? \"a\";\r\n\r\n return (\r\n <nav\r\n aria-label={ariaLabel}\r\n className={[styles.breadcrumb, className].filter(Boolean).join(\" \")}\r\n >\r\n <ol className={styles.list}>\r\n {items.map((item, index) => {\r\n const last = index === items.length - 1;\r\n return (\r\n <Fragment key={`${item.label}-${index}`}>\r\n {index > 0 ? (\r\n <li className={styles.separator} aria-hidden=\"true\">\r\n {separator}\r\n </li>\r\n ) : null}\r\n <li className={styles.item}>\r\n {!last && item.href ? (\r\n <LinkComponent href={item.href} className={styles.link}>\r\n {item.icon ? <Icon name={item.icon} /> : null}\r\n <span>{item.label}</span>\r\n </LinkComponent>\r\n ) : (\r\n <span\r\n className={last ? styles.current : styles.text}\r\n aria-current={last ? \"page\" : undefined}\r\n >\r\n {item.icon ? <Icon name={item.icon} /> : null}\r\n <span>{item.label}</span>\r\n </span>\r\n )}\r\n </li>\r\n </Fragment>\r\n );\r\n })}\r\n </ol>\r\n </nav>\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\r\nimport styles from \"./ButtonGroup.module.css\";\r\n\r\ntype ButtonGroupProps = {\r\n children: ReactNode;\r\n \"aria-label\": string;\r\n className?: string;\r\n};\r\n\r\nexport default function ButtonGroup({\r\n children,\r\n \"aria-label\": ariaLabel,\r\n className,\r\n}: ButtonGroupProps) {\r\n return (\r\n <div\r\n role=\"group\"\r\n aria-label={ariaLabel}\r\n className={[styles.group, className].filter(Boolean).join(\" \")}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Card.module.css\";\r\n\r\ntype CardProps = {\r\n children: ReactNode;\r\n variant?: \"default\" | \"muted\" | \"elevated\";\r\n interactive?: boolean;\r\n className?: string;\r\n};\r\n\r\nexport default function Card({\r\n children,\r\n variant = \"default\",\r\n interactive = false,\r\n className,\r\n}: CardProps) {\r\n return (\r\n <div\r\n className={[styles.card, className].filter(Boolean).join(\" \")}\r\n data-variant={variant}\r\n data-interactive={interactive ? \"\" : undefined}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\ntype CardHeaderProps = {\r\n title: string;\r\n description?: string;\r\n actions?: ReactNode;\r\n icon?: string;\r\n as?: \"h2\" | \"h3\" | \"h4\";\r\n className?: string;\r\n};\r\n\r\nexport function CardHeader({\r\n title,\r\n description,\r\n actions,\r\n icon,\r\n as = \"h3\",\r\n className,\r\n}: CardHeaderProps) {\r\n const Heading = as;\r\n\r\n return (\r\n <div className={[styles.header, className].filter(Boolean).join(\" \")}>\r\n {icon ? (\r\n <span className={styles.headerIcon}>\r\n <Icon name={icon} />\r\n </span>\r\n ) : null}\r\n <div className={styles.headerText}>\r\n <Heading className={styles.headerTitle}>{title}</Heading>\r\n {description ? (\r\n <p className={styles.headerDescription}>{description}</p>\r\n ) : null}\r\n </div>\r\n {actions ? <div className={styles.headerActions}>{actions}</div> : null}\r\n </div>\r\n );\r\n}\r\n\r\nexport function CardBody({\r\n children,\r\n padding = \"md\",\r\n className,\r\n}: {\r\n children: ReactNode;\r\n padding?: \"none\" | \"sm\" | \"md\";\r\n className?: string;\r\n}) {\r\n return (\r\n <div\r\n className={[styles.body, className].filter(Boolean).join(\" \")}\r\n data-padding={padding}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport function CardFooter({\r\n children,\r\n align = \"end\",\r\n className,\r\n}: {\r\n children: ReactNode;\r\n align?: \"start\" | \"end\" | \"between\";\r\n className?: string;\r\n}) {\r\n return (\r\n <div\r\n className={[styles.footer, className].filter(Boolean).join(\" \")}\r\n data-align={align}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import type { InputHTMLAttributes } from \"react\";\r\nimport styles from \"./Form.module.css\";\r\n\r\nexport type CheckboxProps = Omit<\r\n InputHTMLAttributes<HTMLInputElement>,\r\n \"type\"\r\n> & {\r\n label?: string;\r\n description?: string;\r\n indeterminate?: boolean;\r\n};\r\n\r\nexport default function Checkbox({\r\n label,\r\n description,\r\n indeterminate = false,\r\n className,\r\n disabled,\r\n ...rest\r\n}: CheckboxProps) {\r\n const setRef = (node: HTMLInputElement | null) => {\r\n if (node) node.indeterminate = indeterminate;\r\n };\r\n\r\n return (\r\n <label\r\n className={[styles.choice, className].filter(Boolean).join(\" \")}\r\n data-disabled={disabled ? \"\" : undefined}\r\n >\r\n <input\r\n ref={setRef}\r\n type=\"checkbox\"\r\n className={styles.choiceInput}\r\n disabled={disabled}\r\n {...rest}\r\n />\r\n <span className={styles.checkBox} aria-hidden=\"true\">\r\n <svg className={styles.checkMark} viewBox=\"0 0 12 12\" focusable=\"false\">\r\n {indeterminate ? (\r\n <path d=\"M2.5 6h7\" />\r\n ) : (\r\n <path d=\"M2.6 6.2 4.9 8.4 9.4 3.4\" />\r\n )}\r\n </svg>\r\n </span>\r\n {label || description ? (\r\n <span className={styles.choiceTexts}>\r\n {label ? <span className={styles.choiceLabel}>{label}</span> : null}\r\n {description ? (\r\n <span className={styles.choiceDescription}>{description}</span>\r\n ) : null}\r\n </span>\r\n ) : null}\r\n </label>\r\n );\r\n}\r\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport Icon from \"./Icon\";\nimport styles from \"./CodeBlock.module.css\";\n\ntype CodeBlockProps = {\n code: string;\n language?: string;\n filename?: string;\n showLineNumbers?: boolean;\n copyable?: boolean;\n className?: string;\n};\n\nexport default function CodeBlock({\n code,\n language = \"tsx\",\n filename,\n showLineNumbers = false,\n copyable = true,\n className,\n}: CodeBlockProps) {\n const [copied, setCopied] = useState(false);\n const lines = code.replace(/\\n$/, \"\").split(\"\\n\");\n\n useEffect(() => {\n if (!copied) return;\n const timer = window.setTimeout(() => setCopied(false), 1600);\n return () => window.clearTimeout(timer);\n }, [copied]);\n\n const copy = async () => {\n try {\n await navigator.clipboard.writeText(code);\n setCopied(true);\n } catch {\n /* Clipboard access can be denied; fail silently. */\n }\n };\n\n return (\n <div className={[styles.block, className].filter(Boolean).join(\" \")}>\n <div className={styles.header}>\n <span className={styles.dots} aria-hidden=\"true\">\n <i />\n <i />\n <i />\n </span>\n <span className={styles.filename}>{filename ?? `example.${language}`}</span>\n {copyable ? (\n <button\n type=\"button\"\n className={styles.copy}\n onClick={copy}\n aria-label={copied ? \"Copied\" : \"Copy code\"}\n >\n <Icon name={copied ? \"lucide:check\" : \"lucide:copy\"} />\n <span>{copied ? \"Copied\" : \"Copy\"}</span>\n </button>\n ) : null}\n </div>\n <pre className={styles.pre}>\n <code>\n {lines.map((line, index) => (\n <span key={`${index}-${line}`} className={styles.line}>\n {showLineNumbers ? (\n <span className={styles.lineNumber} aria-hidden=\"true\">\n {index + 1}\n </span>\n ) : null}\n <span className={styles.lineText}>{line || \" \"}</span>\n </span>\n ))}\n </code>\n </pre>\n </div>\n );\n}\n","\"use client\";\r\n\r\nimport {\r\n useEffect,\r\n useId,\r\n useMemo,\r\n useRef,\r\n useState,\r\n type CSSProperties,\r\n type KeyboardEvent,\r\n} from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Combobox.module.css\";\r\n\r\nexport type ComboboxOption = {\r\n value: string;\r\n label: string;\r\n description?: string;\r\n icon?: string;\r\n group?: string;\r\n disabled?: boolean;\r\n};\r\n\r\ntype ComboboxProps = {\r\n options: ComboboxOption[];\r\n value?: string | string[] | null;\r\n onValueChange?: (value: string | string[] | null) => void;\r\n placeholder?: string;\r\n searchPlaceholder?: string;\r\n emptyMessage?: string;\r\n multiple?: boolean;\r\n clearable?: boolean;\r\n disabled?: boolean;\r\n invalid?: boolean;\r\n required?: boolean;\r\n id?: string;\r\n name?: string;\r\n ariaLabel?: string;\r\n \"aria-describedby\"?: string;\r\n \"aria-invalid\"?: boolean;\r\n className?: string;\r\n};\r\n\r\ntype OptionGroup = {\r\n key: string;\r\n label?: string;\r\n options: { option: ComboboxOption; index: number }[];\r\n};\r\n\r\ntype PopoverPosition = {\r\n left: number;\r\n width: number;\r\n top?: number;\r\n bottom?: number;\r\n maxHeight: number;\r\n};\r\n\r\nfunction computePopoverPosition(rect: DOMRect): PopoverPosition {\r\n const gap = 6;\r\n const viewportHeight = window.innerHeight;\r\n const spaceBelow = viewportHeight - rect.bottom - gap - 8;\r\n const spaceAbove = rect.top - gap - 8;\r\n const openAbove = spaceBelow < 180 && spaceAbove > spaceBelow;\r\n const available = Math.max(120, openAbove ? spaceAbove : spaceBelow);\r\n const left = Math.max(\r\n 8,\r\n Math.min(rect.left, window.innerWidth - rect.width - 8),\r\n );\r\n\r\n return {\r\n left,\r\n width: rect.width,\r\n top: openAbove ? undefined : rect.bottom + gap,\r\n bottom: openAbove ? viewportHeight - rect.top + gap : undefined,\r\n maxHeight: Math.min(280, available),\r\n };\r\n}\r\n\r\nexport default function Combobox({\r\n options,\r\n value,\r\n onValueChange,\r\n placeholder = \"Select an option\",\r\n searchPlaceholder = \"Search…\",\r\n emptyMessage = \"No options found.\",\r\n multiple = false,\r\n clearable = false,\r\n disabled = false,\r\n invalid = false,\r\n required = false,\r\n id,\r\n name,\r\n ariaLabel = \"Combobox\",\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-invalid\": ariaInvalid,\r\n className,\r\n}: ComboboxProps) {\r\n const [open, setOpen] = useState(false);\r\n const [query, setQuery] = useState(\"\");\r\n const [activeIndex, setActiveIndex] = useState(0);\r\n const [position, setPosition] = useState<PopoverPosition | null>(null);\r\n const rootRef = useRef<HTMLDivElement>(null);\r\n const controlRef = useRef<HTMLDivElement>(null);\r\n const popoverRef = useRef<HTMLDivElement>(null);\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n const suppressOpen = useRef(false);\r\n const listId = useId();\r\n\r\n const selectedValues = useMemo(() => {\r\n if (multiple) return Array.isArray(value) ? value : [];\r\n if (typeof value === \"string\") return [value];\r\n return [];\r\n }, [multiple, value]);\r\n\r\n const selectedOption = options.find(\r\n (option) => option.value === selectedValues[0],\r\n );\r\n\r\n const filteredOptions = useMemo(() => {\r\n const normalized = query.trim().toLowerCase();\r\n if (!normalized) return options;\r\n\r\n return options.filter((option) =>\r\n `${option.label} ${option.description ?? \"\"} ${option.group ?? \"\"}`\r\n .toLowerCase()\r\n .includes(normalized),\r\n );\r\n }, [options, query]);\r\n\r\n const groups = useMemo<OptionGroup[]>(() => {\r\n const result: OptionGroup[] = [];\r\n\r\n filteredOptions.forEach((option, index) => {\r\n const key = option.group ?? \"\";\r\n const last = result[result.length - 1];\r\n\r\n if (last && last.label === option.group) {\r\n last.options.push({ option, index });\r\n } else {\r\n result.push({\r\n key: `${key}-${result.length}`,\r\n label: option.group,\r\n options: [{ option, index }],\r\n });\r\n }\r\n });\r\n\r\n return result;\r\n }, [filteredOptions]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n\r\n const handlePointerDown = (event: PointerEvent) => {\r\n const target = event.target as Node;\r\n if (\r\n !rootRef.current?.contains(target) &&\r\n !popoverRef.current?.contains(target)\r\n ) {\r\n setOpen(false);\r\n setQuery(\"\");\r\n }\r\n };\r\n\r\n document.addEventListener(\"pointerdown\", handlePointerDown);\r\n return () => document.removeEventListener(\"pointerdown\", handlePointerDown);\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n\r\n const update = () => {\r\n const rect = controlRef.current?.getBoundingClientRect();\r\n if (rect) setPosition(computePopoverPosition(rect));\r\n };\r\n\r\n window.addEventListener(\"resize\", update);\r\n window.addEventListener(\"scroll\", update, true);\r\n return () => {\r\n window.removeEventListener(\"resize\", update);\r\n window.removeEventListener(\"scroll\", update, true);\r\n };\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const active = document.getElementById(`${listId}-option-${activeIndex}`);\r\n active?.scrollIntoView({ block: \"nearest\" });\r\n }, [activeIndex, listId, open]);\r\n\r\n const updatePosition = () => {\r\n const rect = controlRef.current?.getBoundingClientRect();\r\n if (rect) setPosition(computePopoverPosition(rect));\r\n };\r\n\r\n const closeList = () => {\r\n setOpen(false);\r\n setQuery(\"\");\r\n };\r\n\r\n const openList = () => {\r\n if (disabled) return;\r\n setActiveIndex(0);\r\n updatePosition();\r\n setOpen(true);\r\n };\r\n\r\n const handleFocus = () => {\r\n if (suppressOpen.current || disabled) return;\r\n setActiveIndex(0);\r\n updatePosition();\r\n setOpen(true);\r\n if (!multiple) setQuery(\"\");\r\n };\r\n\r\n const selectOption = (option: ComboboxOption) => {\r\n if (option.disabled) return;\r\n\r\n if (multiple) {\r\n const next = selectedValues.includes(option.value)\r\n ? selectedValues.filter((item) => item !== option.value)\r\n : [...selectedValues, option.value];\r\n onValueChange?.(next);\r\n setQuery(\"\");\r\n return;\r\n }\r\n\r\n onValueChange?.(option.value);\r\n closeList();\r\n };\r\n\r\n const removeValue = (optionValue: string) => {\r\n onValueChange?.(selectedValues.filter((item) => item !== optionValue));\r\n };\r\n\r\n const clearSelection = () => {\r\n onValueChange?.(multiple ? [] : null);\r\n setQuery(\"\");\r\n };\r\n\r\n const moveActive = (direction: 1 | -1) => {\r\n if (!filteredOptions.length) return;\r\n\r\n let next = activeIndex;\r\n for (let step = 0; step < filteredOptions.length; step += 1) {\r\n next =\r\n (next + direction + filteredOptions.length) % filteredOptions.length;\r\n if (!filteredOptions[next].disabled) break;\r\n }\r\n setActiveIndex(next);\r\n };\r\n\r\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\r\n if (disabled) return;\r\n\r\n if (event.key === \"Escape\") {\r\n if (open) {\r\n event.preventDefault();\r\n closeList();\r\n }\r\n return;\r\n }\r\n\r\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\r\n event.preventDefault();\r\n if (!open) {\r\n openList();\r\n return;\r\n }\r\n moveActive(event.key === \"ArrowDown\" ? 1 : -1);\r\n return;\r\n }\r\n\r\n if (event.key === \"Enter\") {\r\n if (!open) return;\r\n event.preventDefault();\r\n const option = filteredOptions[activeIndex];\r\n if (option) selectOption(option);\r\n else if (!multiple) closeList();\r\n return;\r\n }\r\n\r\n if (\r\n event.key === \"Backspace\" &&\r\n multiple &&\r\n !query &&\r\n selectedValues.length\r\n ) {\r\n event.preventDefault();\r\n removeValue(selectedValues[selectedValues.length - 1]);\r\n return;\r\n }\r\n\r\n if (event.key === \"Tab\") {\r\n closeList();\r\n }\r\n };\r\n\r\n const inputPlaceholder = multiple\r\n ? selectedValues.length\r\n ? searchPlaceholder\r\n : placeholder\r\n : open\r\n ? searchPlaceholder\r\n : placeholder;\r\n\r\n const inputValue = multiple\r\n ? query\r\n : open\r\n ? query\r\n : selectedOption?.label ?? \"\";\r\n\r\n const activeOption = open ? filteredOptions[activeIndex] : undefined;\r\n\r\n return (\r\n <div\r\n ref={rootRef}\r\n className={[styles.wrap, className].filter(Boolean).join(\" \")}\r\n >\r\n <div\r\n ref={controlRef}\r\n className={styles.control}\r\n data-open={open ? \"\" : undefined}\r\n data-disabled={disabled ? \"\" : undefined}\r\n data-invalid={invalid || ariaInvalid ? \"\" : undefined}\r\n data-multiple={multiple ? \"\" : undefined}\r\n onClick={() => {\r\n if (disabled) return;\r\n openList();\r\n inputRef.current?.focus();\r\n }}\r\n >\r\n <Icon name=\"lucide:search\" className={styles.leadingIcon} />\r\n\r\n {multiple ? (\r\n <span className={styles.chips}>\r\n {selectedValues.map((optionValue) => {\r\n const option = options.find((item) => item.value === optionValue);\r\n const label = option?.label ?? optionValue;\r\n\r\n return (\r\n <span key={optionValue} className={styles.chip}>\r\n <span className={styles.chipLabel}>{label}</span>\r\n <button\r\n type=\"button\"\r\n className={styles.chipRemove}\r\n aria-label={`Remove ${label}`}\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n removeValue(optionValue);\r\n }}\r\n >\r\n <Icon name=\"lucide:x\" />\r\n </button>\r\n </span>\r\n );\r\n })}\r\n <input\r\n ref={inputRef}\r\n id={id}\r\n name={name}\r\n className={styles.input}\r\n type=\"text\"\r\n role=\"combobox\"\r\n autoComplete=\"off\"\r\n spellCheck={false}\r\n value={inputValue}\r\n placeholder={inputPlaceholder}\r\n disabled={disabled}\r\n required={required}\r\n aria-label={ariaLabel}\r\n aria-expanded={open}\r\n aria-controls={open ? listId : undefined}\r\n aria-autocomplete=\"list\"\r\n aria-activedescendant={\r\n activeOption\r\n ? `${listId}-option-${activeIndex}`\r\n : undefined\r\n }\r\n aria-describedby={ariaDescribedBy}\r\n aria-invalid={invalid || ariaInvalid || undefined}\r\n onFocus={handleFocus}\r\n onChange={(event) => {\r\n setActiveIndex(0);\r\n setQuery(event.target.value);\r\n setOpen(true);\r\n }}\r\n onKeyDown={handleKeyDown}\r\n />\r\n </span>\r\n ) : (\r\n <input\r\n ref={inputRef}\r\n id={id}\r\n name={name}\r\n className={styles.input}\r\n type=\"text\"\r\n role=\"combobox\"\r\n autoComplete=\"off\"\r\n spellCheck={false}\r\n value={inputValue}\r\n placeholder={inputPlaceholder}\r\n disabled={disabled}\r\n required={required}\r\n aria-label={ariaLabel}\r\n aria-expanded={open}\r\n aria-controls={open ? listId : undefined}\r\n aria-autocomplete=\"list\"\r\n aria-activedescendant={\r\n activeOption ? `${listId}-option-${activeIndex}` : undefined\r\n }\r\n aria-describedby={ariaDescribedBy}\r\n aria-invalid={invalid || ariaInvalid || undefined}\r\n onFocus={handleFocus}\r\n onChange={(event) => {\r\n setActiveIndex(0);\r\n setQuery(event.target.value);\r\n setOpen(true);\r\n }}\r\n onKeyDown={handleKeyDown}\r\n />\r\n )}\r\n\r\n {clearable && selectedValues.length ? (\r\n <button\r\n type=\"button\"\r\n className={styles.clear}\r\n aria-label=\"Clear selection\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n clearSelection();\r\n }}\r\n >\r\n <Icon name=\"lucide:x\" />\r\n </button>\r\n ) : null}\r\n\r\n <Icon name=\"lucide:chevrons-up-down\" className={styles.chevron} />\r\n </div>\r\n\r\n {open && position\r\n ? createPortal(\r\n <div\r\n ref={popoverRef}\r\n className={styles.popover}\r\n style={\r\n {\r\n left: position.left,\r\n width: position.width,\r\n top: position.top,\r\n bottom: position.bottom,\r\n maxHeight: position.maxHeight,\r\n } as CSSProperties\r\n }\r\n >\r\n <div\r\n className={styles.list}\r\n role=\"listbox\"\r\n id={listId}\r\n aria-label={ariaLabel}\r\n >\r\n {filteredOptions.length ? (\r\n groups.map((group) => (\r\n <div\r\n key={group.key}\r\n className={styles.group}\r\n role=\"group\"\r\n aria-label={group.label}\r\n >\r\n {group.label ? (\r\n <span className={styles.groupLabel}>{group.label}</span>\r\n ) : null}\r\n {group.options.map(({ option, index }) => {\r\n const selected = selectedValues.includes(option.value);\r\n\r\n return (\r\n <button\r\n key={option.value}\r\n type=\"button\"\r\n role=\"option\"\r\n id={`${listId}-option-${index}`}\r\n tabIndex={-1}\r\n className={styles.option}\r\n data-active={index === activeIndex ? \"\" : undefined}\r\n data-selected={selected ? \"\" : undefined}\r\n aria-selected={selected}\r\n disabled={option.disabled}\r\n onMouseEnter={() => {\r\n if (!option.disabled) setActiveIndex(index);\r\n }}\r\n onClick={() => {\r\n selectOption(option);\r\n suppressOpen.current = true;\r\n inputRef.current?.focus();\r\n window.setTimeout(() => {\r\n suppressOpen.current = false;\r\n }, 0);\r\n }}\r\n >\r\n {option.icon ? (\r\n <Icon\r\n name={option.icon}\r\n className={styles.optionIcon}\r\n />\r\n ) : null}\r\n <span className={styles.optionText}>\r\n <span className={styles.optionLabel}>\r\n {option.label}\r\n </span>\r\n {option.description ? (\r\n <span className={styles.optionDescription}>\r\n {option.description}\r\n </span>\r\n ) : null}\r\n </span>\r\n {selected ? (\r\n <Icon\r\n name=\"lucide:check\"\r\n className={styles.check}\r\n />\r\n ) : null}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n ))\r\n ) : (\r\n <div className={styles.empty}>{emptyMessage}</div>\r\n )}\r\n </div>\r\n </div>,\r\n document.body,\r\n )\r\n : null}\r\n </div>\r\n );\r\n}\r\n","import type { InputHTMLAttributes, ReactNode } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Form.module.css\";\r\n\r\nexport type InputProps = Omit<\r\n InputHTMLAttributes<HTMLInputElement>,\r\n \"size\"\r\n> & {\r\n icon?: string;\r\n iconRight?: string;\r\n endAdornment?: ReactNode;\r\n size?: \"sm\" | \"md\";\r\n invalid?: boolean;\r\n fullWidth?: boolean;\r\n};\r\n\r\nexport default function Input({\r\n icon,\r\n iconRight,\r\n endAdornment,\r\n size = \"md\",\r\n invalid = false,\r\n fullWidth = false,\r\n className,\r\n disabled,\r\n ...rest\r\n}: InputProps) {\r\n return (\r\n <div\r\n className={[styles.inputWrap, fullWidth ? styles.fullWidth : \"\", className]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n data-size={size}\r\n data-invalid={invalid ? \"\" : undefined}\r\n data-disabled={disabled ? \"\" : undefined}\r\n >\r\n {icon ? <Icon name={icon} className={styles.inputIcon} /> : null}\r\n <input\r\n className={styles.input}\r\n disabled={disabled}\r\n aria-invalid={invalid || undefined}\r\n {...rest}\r\n />\r\n {iconRight ? <Icon name={iconRight} className={styles.inputIcon} /> : null}\r\n {endAdornment}\r\n </div>\r\n );\r\n}\r\n","import Icon from \"./Icon\";\r\nimport styles from \"./Pagination.module.css\";\r\n\r\ntype PaginationProps = {\r\n page: number;\r\n pageCount: number;\r\n onPageChange: (page: number) => void;\r\n siblings?: number;\r\n ariaLabel?: string;\r\n className?: string;\r\n};\r\n\r\ntype PageItem = number | \"ellipsis\";\r\n\r\nconst range = (start: number, end: number) =>\r\n Array.from({ length: end - start + 1 }, (_, index) => start + index);\r\n\r\nfunction getPageItems(page: number, total: number, siblings: number): PageItem[] {\r\n const totalNumbers = siblings * 2 + 5;\r\n\r\n if (total <= totalNumbers) {\r\n return range(1, total);\r\n }\r\n\r\n const leftSibling = Math.max(page - siblings, 1);\r\n const rightSibling = Math.min(page + siblings, total);\r\n const showLeftEllipsis = leftSibling > 2;\r\n const showRightEllipsis = rightSibling < total - 1;\r\n\r\n if (!showLeftEllipsis && showRightEllipsis) {\r\n return [...range(1, siblings * 2 + 3), \"ellipsis\", total];\r\n }\r\n\r\n if (showLeftEllipsis && !showRightEllipsis) {\r\n return [1, \"ellipsis\", ...range(total - (siblings * 2 + 2), total)];\r\n }\r\n\r\n return [\r\n 1,\r\n \"ellipsis\",\r\n ...range(leftSibling, rightSibling),\r\n \"ellipsis\",\r\n total,\r\n ];\r\n}\r\n\r\nexport default function Pagination({\r\n page,\r\n pageCount,\r\n onPageChange,\r\n siblings = 1,\r\n ariaLabel = \"Pagination\",\r\n className,\r\n}: PaginationProps) {\r\n if (pageCount <= 1) return null;\r\n\r\n const current = Math.min(Math.max(page, 1), pageCount);\r\n const items = getPageItems(current, pageCount, siblings);\r\n\r\n return (\r\n <nav\r\n className={[styles.pagination, className].filter(Boolean).join(\" \")}\r\n aria-label={ariaLabel}\r\n >\r\n <button\r\n type=\"button\"\r\n className={styles.navButton}\r\n aria-label=\"Previous page\"\r\n disabled={current === 1}\r\n onClick={() => onPageChange(current - 1)}\r\n >\r\n <Icon name=\"lucide:chevron-left\" />\r\n </button>\r\n\r\n <div className={styles.pages}>\r\n {items.map((item, index) =>\r\n item === \"ellipsis\" ? (\r\n <span\r\n key={`ellipsis-${index}`}\r\n className={styles.ellipsis}\r\n aria-hidden=\"true\"\r\n >\r\n …\r\n </span>\r\n ) : (\r\n <button\r\n key={item}\r\n type=\"button\"\r\n className={styles.pageButton}\r\n aria-label={`Page ${item}`}\r\n aria-current={item === current ? \"page\" : undefined}\r\n onClick={() => onPageChange(item)}\r\n >\r\n {item}\r\n </button>\r\n ),\r\n )}\r\n </div>\r\n\r\n <span className={styles.summary} aria-live=\"polite\">\r\n Page {current} of {pageCount}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n className={styles.navButton}\r\n aria-label=\"Next page\"\r\n disabled={current === pageCount}\r\n onClick={() => onPageChange(current + 1)}\r\n >\r\n <Icon name=\"lucide:chevron-right\" />\r\n </button>\r\n </nav>\r\n );\r\n}\r\n","import type {\r\n HTMLAttributes,\r\n ReactNode,\r\n TdHTMLAttributes,\r\n ThHTMLAttributes,\r\n} from \"react\";\r\nimport styles from \"./Table.module.css\";\r\n\r\ntype CellAlign = \"left\" | \"center\" | \"right\";\r\n\r\ntype TableProps = {\r\n children: ReactNode;\r\n ariaLabel?: string;\r\n caption?: string;\r\n minWidth?: number;\r\n className?: string;\r\n /** Render edge-to-edge inside a Card body: no own border, radius or background. */\r\n flush?: boolean;\r\n};\r\n\r\nexport default function Table({\r\n children,\r\n ariaLabel,\r\n caption,\r\n minWidth = 720,\r\n className,\r\n flush = false,\r\n}: TableProps) {\r\n return (\r\n <div className={styles.wrapper} data-flush={flush ? \"\" : undefined}>\r\n <table\r\n className={[styles.table, className].filter(Boolean).join(\" \")}\r\n style={{ minWidth }}\r\n aria-label={ariaLabel}\r\n >\r\n {caption ? <caption className={styles.caption}>{caption}</caption> : null}\r\n {children}\r\n </table>\r\n </div>\r\n );\r\n}\r\n\r\nexport function TableHead({ children }: { children: ReactNode }) {\r\n return <thead className={styles.head}>{children}</thead>;\r\n}\r\n\r\nexport function TableBody({ children }: { children: ReactNode }) {\r\n return <tbody className={styles.body}>{children}</tbody>;\r\n}\r\n\r\ntype TableRowProps = HTMLAttributes<HTMLTableRowElement> & {\r\n children: ReactNode;\r\n selected?: boolean;\r\n interactive?: boolean;\r\n};\r\n\r\nexport function TableRow({\r\n children,\r\n selected = false,\r\n interactive = false,\r\n className,\r\n ...rest\r\n}: TableRowProps) {\r\n return (\r\n <tr\r\n {...rest}\r\n className={[styles.row, className].filter(Boolean).join(\" \")}\r\n data-selected={selected ? \"\" : undefined}\r\n data-interactive={interactive ? \"\" : undefined}\r\n >\r\n {children}\r\n </tr>\r\n );\r\n}\r\n\r\ntype TableHeaderCellProps = Omit<\r\n ThHTMLAttributes<HTMLTableCellElement>,\r\n \"align\"\r\n> & {\r\n align?: CellAlign;\r\n children?: ReactNode;\r\n};\r\n\r\nexport function TableHeaderCell({\r\n children,\r\n align = \"left\",\r\n className,\r\n scope = \"col\",\r\n ...rest\r\n}: TableHeaderCellProps) {\r\n return (\r\n <th\r\n {...rest}\r\n scope={scope}\r\n className={[styles.headerCell, className].filter(Boolean).join(\" \")}\r\n data-align={align}\r\n >\r\n {children}\r\n </th>\r\n );\r\n}\r\n\r\ntype TableCellProps = Omit<TdHTMLAttributes<HTMLTableCellElement>, \"align\"> & {\r\n align?: CellAlign;\r\n children?: ReactNode;\r\n};\r\n\r\nexport function TableCell({\r\n children,\r\n align = \"left\",\r\n className,\r\n ...rest\r\n}: TableCellProps) {\r\n return (\r\n <td\r\n {...rest}\r\n className={[styles.cell, className].filter(Boolean).join(\" \")}\r\n data-align={align}\r\n >\r\n {children}\r\n </td>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport {\r\n useMemo,\r\n useState,\r\n type ReactNode,\r\n} from \"react\";\r\nimport Checkbox from \"./Checkbox\";\r\nimport Icon from \"./Icon\";\r\nimport Input from \"./Input\";\r\nimport Pagination from \"./Pagination\";\r\nimport Table, {\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableHeaderCell,\r\n TableRow,\r\n} from \"./Table\";\r\nimport styles from \"./DataTable.module.css\";\r\n\r\nexport type DataTableColumn<T> = {\r\n key: string;\r\n header: string;\r\n align?: \"left\" | \"center\" | \"right\";\r\n sortable?: boolean;\r\n sortValue?: (row: T) => string | number;\r\n cell: (row: T) => ReactNode;\r\n width?: string;\r\n};\r\n\r\ntype DataTableProps<T> = {\r\n data: T[];\r\n columns: DataTableColumn<T>[];\r\n getRowId: (row: T) => string;\r\n ariaLabel?: string;\r\n searchable?: boolean;\r\n searchPlaceholder?: string;\r\n searchText?: (row: T) => string;\r\n pageSize?: number;\r\n selectable?: boolean;\r\n emptyMessage?: string;\r\n /** Edge-to-edge table inside a Card: toolbar and footer keep their own padding. */\r\n flush?: boolean;\r\n};\r\n\r\nexport default function DataTable<T>({\r\n data,\r\n columns,\r\n getRowId,\r\n ariaLabel = \"Data table\",\r\n searchable = true,\r\n searchPlaceholder = \"Search…\",\r\n searchText,\r\n pageSize = 5,\r\n selectable = false,\r\n emptyMessage = \"No records match your filters.\",\r\n flush = false,\r\n}: DataTableProps<T>) {\r\n const [query, setQuery] = useState(\"\");\r\n const [page, setPage] = useState(1);\r\n const [sort, setSort] = useState<{\r\n key: string;\r\n direction: \"asc\" | \"desc\";\r\n }>({ key: \"\", direction: \"asc\" });\r\n const [selected, setSelected] = useState<Set<string>>(() => new Set());\r\n\r\n const filtered = useMemo(() => {\r\n const normalized = query.trim().toLowerCase();\r\n if (!normalized) return data;\r\n\r\n return data.filter((row) =>\r\n (searchText ? searchText(row) : JSON.stringify(row))\r\n .toLowerCase()\r\n .includes(normalized),\r\n );\r\n }, [data, query, searchText]);\r\n\r\n const sorted = useMemo(() => {\r\n if (!sort.key) return filtered;\r\n\r\n const column = columns.find(\r\n (item) => item.key === sort.key && item.sortable && item.sortValue,\r\n );\r\n if (!column?.sortValue) return filtered;\r\n\r\n const factor = sort.direction === \"asc\" ? 1 : -1;\r\n return [...filtered].sort((left, right) => {\r\n const leftValue = column.sortValue?.(left) ?? \"\";\r\n const rightValue = column.sortValue?.(right) ?? \"\";\r\n\r\n if (typeof leftValue === \"number\" && typeof rightValue === \"number\") {\r\n return (leftValue - rightValue) * factor;\r\n }\r\n\r\n return (\r\n String(leftValue).localeCompare(String(rightValue), undefined, {\r\n numeric: true,\r\n }) * factor\r\n );\r\n });\r\n }, [columns, filtered, sort]);\r\n\r\n const pageCount = Math.max(1, Math.ceil(sorted.length / pageSize));\r\n const currentPage = Math.min(page, pageCount);\r\n const startIndex = (currentPage - 1) * pageSize;\r\n const pageRows = sorted.slice(startIndex, startIndex + pageSize);\r\n const pageIds = pageRows.map(getRowId);\r\n\r\n const allChecked =\r\n pageIds.length > 0 && pageIds.every((id) => selected.has(id));\r\n const someChecked =\r\n pageIds.some((id) => selected.has(id)) && !allChecked;\r\n\r\n const toggleRow = (id: string) => {\r\n setSelected((previous) => {\r\n const next = new Set(previous);\r\n if (next.has(id)) next.delete(id);\r\n else next.add(id);\r\n return next;\r\n });\r\n };\r\n\r\n const togglePage = (checked: boolean) => {\r\n setSelected((previous) => {\r\n const next = new Set(previous);\r\n for (const id of pageIds) {\r\n if (checked) next.add(id);\r\n else next.delete(id);\r\n }\r\n return next;\r\n });\r\n };\r\n\r\n const handleSearch = (value: string) => {\r\n setQuery(value);\r\n setPage(1);\r\n };\r\n\r\n const handleSort = (column: DataTableColumn<T>) => {\r\n if (!column.sortable) return;\r\n\r\n setSort((previous) => ({\r\n key: column.key,\r\n direction:\r\n previous.key === column.key && previous.direction === \"asc\"\r\n ? \"desc\"\r\n : \"asc\",\r\n }));\r\n setPage(1);\r\n };\r\n\r\n const ariaSortFor = (key: string) => {\r\n if (sort.key !== key) return \"none\" as const;\r\n return sort.direction === \"asc\"\r\n ? (\"ascending\" as const)\r\n : (\"descending\" as const);\r\n };\r\n\r\n const rangeLabel = sorted.length\r\n ? `Showing ${startIndex + 1}–${Math.min(startIndex + pageSize, sorted.length)} of ${sorted.length}`\r\n : \"No results\";\r\n\r\n return (\r\n <div className={styles.dataTable} data-flush={flush ? \"\" : undefined}>\r\n <div className={styles.toolbar}>\r\n {searchable ? (\r\n <div className={styles.search}>\r\n <Input\r\n type=\"search\"\r\n icon=\"lucide:search\"\r\n value={query}\r\n placeholder={searchPlaceholder}\r\n aria-label={searchPlaceholder}\r\n onChange={(event) => handleSearch(event.target.value)}\r\n fullWidth\r\n />\r\n </div>\r\n ) : null}\r\n\r\n <div className={styles.toolbarMeta}>\r\n {selectable && selected.size > 0 ? (\r\n <div className={styles.selection}>\r\n <span>{selected.size} selected</span>\r\n <button type=\"button\" onClick={() => setSelected(new Set())}>\r\n Clear\r\n </button>\r\n </div>\r\n ) : null}\r\n <span className={styles.resultCount}>\r\n {sorted.length} {sorted.length === 1 ? \"result\" : \"results\"}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n {pageRows.length ? (\r\n <Table ariaLabel={ariaLabel} minWidth={760} flush={flush}>\r\n <TableHead>\r\n <TableRow>\r\n {selectable ? (\r\n <TableHeaderCell className={styles.checkCell}>\r\n <Checkbox\r\n aria-label=\"Select all rows on this page\"\r\n checked={allChecked}\r\n indeterminate={someChecked}\r\n onChange={(event) => togglePage(event.target.checked)}\r\n />\r\n </TableHeaderCell>\r\n ) : null}\r\n {columns.map((column) => (\r\n <TableHeaderCell\r\n key={column.key}\r\n align={column.align}\r\n style={column.width ? { width: column.width } : undefined}\r\n aria-sort={\r\n column.sortable ? ariaSortFor(column.key) : undefined\r\n }\r\n >\r\n {column.sortable ? (\r\n <button\r\n type=\"button\"\r\n className={styles.sortButton}\r\n aria-label={`Sort by ${column.header}`}\r\n onClick={() => handleSort(column)}\r\n >\r\n {column.header}\r\n <Icon\r\n name={\r\n sort.key === column.key\r\n ? sort.direction === \"asc\"\r\n ? \"lucide:arrow-up\"\r\n : \"lucide:arrow-down\"\r\n : \"lucide:arrow-down-up\"\r\n }\r\n />\r\n </button>\r\n ) : (\r\n column.header\r\n )}\r\n </TableHeaderCell>\r\n ))}\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {pageRows.map((row) => {\r\n const id = getRowId(row);\r\n const isSelected = selected.has(id);\r\n\r\n return (\r\n <TableRow key={id} selected={isSelected}>\r\n {selectable ? (\r\n <TableCell className={styles.checkCell}>\r\n <Checkbox\r\n aria-label={`Select row ${id}`}\r\n checked={isSelected}\r\n onChange={() => toggleRow(id)}\r\n />\r\n </TableCell>\r\n ) : null}\r\n {columns.map((column) => (\r\n <TableCell key={column.key} align={column.align}>\r\n {column.cell(row)}\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n );\r\n })}\r\n </TableBody>\r\n </Table>\r\n ) : (\r\n <div className={styles.empty}>\r\n <span className={styles.emptyIcon}>\r\n <Icon name=\"lucide:inbox\" />\r\n </span>\r\n <strong>No results</strong>\r\n <p>{emptyMessage}</p>\r\n {query ? (\r\n <button type=\"button\" onClick={() => handleSearch(\"\")}>\r\n Clear search\r\n </button>\r\n ) : null}\r\n </div>\r\n )}\r\n\r\n {sorted.length ? (\r\n <div className={styles.footer}>\r\n <span className={styles.range}>{rangeLabel}</span>\r\n <Pagination\r\n page={currentPage}\r\n pageCount={pageCount}\r\n onPageChange={setPage}\r\n />\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport {\r\n useEffect,\r\n useId,\r\n useRef,\r\n useState,\r\n type CSSProperties,\r\n type KeyboardEvent,\r\n} from \"react\";\r\nimport Button, { type ButtonTone, type ButtonVariant } from \"./Button\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Dropdown.module.css\";\r\n\r\nexport type DropdownItem = {\r\n type?: \"item\";\r\n label: string;\r\n icon?: string;\r\n shortcut?: string;\r\n tone?: \"default\" | \"danger\";\r\n disabled?: boolean;\r\n onSelect?: () => void;\r\n};\r\n\r\nexport type DropdownEntry =\r\n | DropdownItem\r\n | { type: \"separator\" }\r\n | { type: \"label\"; label: string };\r\n\r\ntype DropdownProps = {\r\n label: string;\r\n icon?: string;\r\n iconRight?: string;\r\n tone?: ButtonTone;\r\n variant?: ButtonVariant;\r\n size?: \"sm\" | \"md\";\r\n iconOnly?: boolean;\r\n align?: \"start\" | \"end\";\r\n items: DropdownEntry[];\r\n menuWidth?: number;\r\n className?: string;\r\n};\r\n\r\ntype MenuPosition = {\r\n top?: number;\r\n bottom?: number;\r\n left?: number;\r\n right?: number;\r\n maxHeight: number;\r\n};\r\n\r\nfunction computeMenuPosition(\r\n rect: DOMRect,\r\n align: \"start\" | \"end\",\r\n estimatedWidth: number,\r\n): MenuPosition {\r\n const gap = 6;\r\n const margin = 8;\r\n const viewportHeight = window.innerHeight;\r\n const spaceBelow = viewportHeight - rect.bottom - gap - margin;\r\n const spaceAbove = rect.top - gap - margin;\r\n const openAbove = spaceBelow < 200 && spaceAbove > spaceBelow;\r\n const maxHeight = Math.min(320, Math.max(140, openAbove ? spaceAbove : spaceBelow));\r\n\r\n if (align === \"start\") {\r\n return {\r\n top: openAbove ? undefined : rect.bottom + gap,\r\n bottom: openAbove ? viewportHeight - rect.top + gap : undefined,\r\n left: Math.max(\r\n margin,\r\n Math.min(rect.left, window.innerWidth - estimatedWidth - margin),\r\n ),\r\n maxHeight,\r\n };\r\n }\r\n\r\n return {\r\n top: openAbove ? undefined : rect.bottom + gap,\r\n bottom: openAbove ? viewportHeight - rect.top + gap : undefined,\r\n right: Math.max(\r\n margin,\r\n Math.min(\r\n window.innerWidth - rect.right,\r\n window.innerWidth - estimatedWidth - margin,\r\n ),\r\n ),\r\n maxHeight,\r\n };\r\n}\r\n\r\nexport default function Dropdown({\r\n label,\r\n icon,\r\n iconRight,\r\n tone,\r\n variant,\r\n size,\r\n iconOnly,\r\n align = \"end\",\r\n items,\r\n menuWidth,\r\n className,\r\n}: DropdownProps) {\r\n const [open, setOpen] = useState(false);\r\n const [position, setPosition] = useState<MenuPosition | null>(null);\r\n const rootRef = useRef<HTMLDivElement>(null);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n const menuId = useId();\r\n\r\n const focusTrigger = () => {\r\n rootRef.current?.querySelector<HTMLButtonElement>(\"button\")?.focus();\r\n };\r\n\r\n const focusItem = (edge: \"first\" | \"last\") => {\r\n const menuItems = menuRef.current?.querySelectorAll<HTMLButtonElement>(\r\n '[role=\"menuitem\"]:not(:disabled)',\r\n );\r\n if (!menuItems?.length) return;\r\n menuItems[edge === \"first\" ? 0 : menuItems.length - 1].focus();\r\n };\r\n\r\n const updatePosition = () => {\r\n const rect = rootRef.current?.getBoundingClientRect();\r\n if (rect) {\r\n setPosition(\r\n computeMenuPosition(rect, align, menuWidth ?? 190),\r\n );\r\n }\r\n };\r\n\r\n const openMenu = () => {\r\n updatePosition();\r\n setOpen(true);\r\n };\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n\r\n const update = () => {\r\n const rect = rootRef.current?.getBoundingClientRect();\r\n if (rect) {\r\n setPosition(\r\n computeMenuPosition(rect, align, menuWidth ?? 190),\r\n );\r\n }\r\n };\r\n\r\n window.addEventListener(\"resize\", update);\r\n window.addEventListener(\"scroll\", update, true);\r\n return () => {\r\n window.removeEventListener(\"resize\", update);\r\n window.removeEventListener(\"scroll\", update, true);\r\n };\r\n }, [align, menuWidth, open]);\r\n\r\n useEffect(() => {\r\n const closeOnOutside = (event: MouseEvent) => {\r\n if (rootRef.current && !rootRef.current.contains(event.target as Node)) {\r\n setOpen(false);\r\n }\r\n };\r\n document.addEventListener(\"click\", closeOnOutside);\r\n return () => document.removeEventListener(\"click\", closeOnOutside);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const closeOnEscape = (event: globalThis.KeyboardEvent) => {\r\n if (event.key !== \"Escape\") return;\r\n setOpen(false);\r\n focusTrigger();\r\n };\r\n document.addEventListener(\"keydown\", closeOnEscape);\r\n return () => document.removeEventListener(\"keydown\", closeOnEscape);\r\n }, [open]);\r\n\r\n const handleMenuKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\r\n const menuItems = [\r\n ...(menuRef.current?.querySelectorAll<HTMLButtonElement>(\r\n '[role=\"menuitem\"]:not(:disabled)',\r\n ) ?? []),\r\n ];\r\n if (!menuItems.length) return;\r\n\r\n const index = menuItems.indexOf(document.activeElement as HTMLButtonElement);\r\n\r\n if (event.key === \"ArrowDown\") {\r\n event.preventDefault();\r\n menuItems[(index + 1) % menuItems.length].focus();\r\n } else if (event.key === \"ArrowUp\") {\r\n event.preventDefault();\r\n menuItems[(index - 1 + menuItems.length) % menuItems.length].focus();\r\n } else if (event.key === \"Home\") {\r\n event.preventDefault();\r\n menuItems[0].focus();\r\n } else if (event.key === \"End\") {\r\n event.preventDefault();\r\n menuItems[menuItems.length - 1].focus();\r\n } else if (event.key === \"Tab\") {\r\n setOpen(false);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={rootRef}\r\n className={[styles.wrapper, className].filter(Boolean).join(\" \")}\r\n onKeyDown={(event) => {\r\n if (event.key !== \"ArrowDown\" && event.key !== \"ArrowUp\") return;\r\n if (!open) {\r\n event.preventDefault();\r\n openMenu();\r\n requestAnimationFrame(() =>\r\n focusItem(event.key === \"ArrowDown\" ? \"first\" : \"last\"),\r\n );\r\n return;\r\n }\r\n if (!menuRef.current?.contains(document.activeElement)) {\r\n event.preventDefault();\r\n focusItem(event.key === \"ArrowDown\" ? \"first\" : \"last\");\r\n }\r\n }}\r\n >\r\n <Button\r\n label={label}\r\n icon={icon}\r\n iconRight={iconRight}\r\n tone={tone}\r\n variant={variant}\r\n size={size}\r\n iconOnly={iconOnly}\r\n aria-haspopup=\"menu\"\r\n aria-expanded={open}\r\n aria-controls={open ? menuId : undefined}\r\n onClick={() => {\r\n if (open) setOpen(false);\r\n else openMenu();\r\n }}\r\n />\r\n\r\n {open && position ? (\r\n <div\r\n ref={menuRef}\r\n id={menuId}\r\n className={styles.menu}\r\n role=\"menu\"\r\n aria-label={label}\r\n data-align={align}\r\n style={\r\n {\r\n ...(menuWidth ? { minWidth: menuWidth } : {}),\r\n ...position,\r\n } as CSSProperties\r\n }\r\n onKeyDown={handleMenuKeyDown}\r\n >\r\n {items.map((entry, index) => {\r\n if (entry.type === \"separator\") {\r\n return (\r\n <div\r\n key={`separator-${index}`}\r\n className={styles.separator}\r\n role=\"separator\"\r\n />\r\n );\r\n }\r\n\r\n if (entry.type === \"label\") {\r\n return (\r\n <div key={`label-${index}-${entry.label}`} className={styles.menuLabel}>\r\n {entry.label}\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n key={`item-${index}-${entry.label}`}\r\n type=\"button\"\r\n role=\"menuitem\"\r\n className={styles.item}\r\n data-tone={entry.tone}\r\n disabled={entry.disabled}\r\n onClick={() => {\r\n entry.onSelect?.();\r\n setOpen(false);\r\n requestAnimationFrame(focusTrigger);\r\n }}\r\n >\r\n {entry.icon ? <Icon name={entry.icon} /> : null}\r\n <span>{entry.label}</span>\r\n {entry.shortcut ? <kbd>{entry.shortcut}</kbd> : null}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\nimport Icon from \"./Icon\";\nimport styles from \"./EmptyState.module.css\";\n\ntype EmptyStateProps = {\n icon?: string;\n title: string;\n description?: string;\n action?: ReactNode;\n secondaryAction?: ReactNode;\n variant?: \"default\" | \"dashed\" | \"card\";\n compact?: boolean;\n className?: string;\n};\n\nexport default function EmptyState({\n icon = \"lucide:inbox\",\n title,\n description,\n action,\n secondaryAction,\n variant = \"dashed\",\n compact = false,\n className,\n}: EmptyStateProps) {\n return (\n <div\n className={[styles.empty, className].filter(Boolean).join(\" \")}\n data-variant={variant}\n data-compact={compact ? \"\" : undefined}\n >\n <span className={styles.iconWrap} aria-hidden=\"true\">\n <span className={styles.glow} />\n <Icon name={icon} />\n </span>\n <h3 className={styles.title}>{title}</h3>\n {description ? <p className={styles.description}>{description}</p> : null}\n {action || secondaryAction ? (\n <div className={styles.actions}>\n {action}\n {secondaryAction}\n </div>\n ) : null}\n </div>\n );\n}\n","\"use client\";\r\n\r\nimport {\r\n cloneElement,\r\n isValidElement,\r\n useId,\r\n type ReactElement,\r\n type ReactNode,\r\n} from \"react\";\r\nimport styles from \"./Form.module.css\";\r\n\r\ntype FormFieldProps = {\r\n label: string;\r\n id?: string;\r\n hint?: string;\r\n error?: string;\r\n required?: boolean;\r\n children: ReactNode;\r\n className?: string;\r\n};\r\n\r\nexport default function FormField({\r\n label,\r\n id,\r\n hint,\r\n error,\r\n required,\r\n children,\r\n className,\r\n}: FormFieldProps) {\r\n const generatedId = useId();\r\n const child = isValidElement(children)\r\n ? (children as ReactElement<Record<string, unknown>>)\r\n : null;\r\n\r\n const childId =\r\n typeof child?.props.id === \"string\" ? child.props.id : undefined;\r\n const controlId = childId ?? id ?? generatedId;\r\n const hintId = `${controlId}-hint`;\r\n const errorId = `${controlId}-error`;\r\n\r\n const existingDescribedBy =\r\n typeof child?.props[\"aria-describedby\"] === \"string\"\r\n ? child.props[\"aria-describedby\"]\r\n : undefined;\r\n const describedBy =\r\n [existingDescribedBy, error ? errorId : hint ? hintId : undefined]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const control = child\r\n ? cloneElement(child, {\r\n id: controlId,\r\n \"aria-describedby\": describedBy,\r\n \"aria-invalid\": error ? true : child.props[\"aria-invalid\"],\r\n invalid: error ? true : child.props.invalid,\r\n required: required ?? child.props.required,\r\n })\r\n : children;\r\n\r\n return (\r\n <div className={[styles.field, className].filter(Boolean).join(\" \")}>\r\n <label className={styles.label} htmlFor={controlId}>\r\n {label}\r\n {required ? (\r\n <span className={styles.required} aria-hidden=\"true\">\r\n *\r\n </span>\r\n ) : null}\r\n </label>\r\n {control}\r\n {error ? (\r\n <p className={styles.errorText} id={errorId}>\r\n {error}\r\n </p>\r\n ) : hint ? (\r\n <p className={styles.hint} id={hintId}>\r\n {hint}\r\n </p>\r\n ) : null}\r\n </div>\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\nimport styles from \"./Kbd.module.css\";\n\ntype KbdProps = {\n children: ReactNode;\n size?: \"sm\" | \"md\";\n className?: string;\n};\n\nexport default function Kbd({ children, size = \"md\", className }: KbdProps) {\n return (\n <kbd\n className={[styles.kbd, className].filter(Boolean).join(\" \")}\n data-size={size}\n >\n {children}\n </kbd>\n );\n}\n","import type { ReactNode } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./ListGroup.module.css\";\r\n\r\ntype ListGroupProps = {\r\n children: ReactNode;\r\n ariaLabel?: string;\r\n className?: string;\r\n};\r\n\r\nexport default function ListGroup({\r\n children,\r\n ariaLabel,\r\n className,\r\n}: ListGroupProps) {\r\n return (\r\n <ul\r\n className={[styles.listGroup, className].filter(Boolean).join(\" \")}\r\n aria-label={ariaLabel}\r\n >\r\n {children}\r\n </ul>\r\n );\r\n}\r\n\r\ntype ListGroupItemProps = {\r\n title: string;\r\n description?: string;\r\n icon?: string;\r\n meta?: ReactNode;\r\n actions?: ReactNode;\r\n active?: boolean;\r\n className?: string;\r\n};\r\n\r\nexport function ListGroupItem({\r\n title,\r\n description,\r\n icon,\r\n meta,\r\n actions,\r\n active = false,\r\n className,\r\n}: ListGroupItemProps) {\r\n return (\r\n <li\r\n className={[styles.item, className].filter(Boolean).join(\" \")}\r\n data-active={active ? \"\" : undefined}\r\n >\r\n {icon ? (\r\n <span className={styles.leading}>\r\n <Icon name={icon} />\r\n </span>\r\n ) : null}\r\n <span className={styles.content}>\r\n <span className={styles.title}>{title}</span>\r\n {description ? (\r\n <span className={styles.description}>{description}</span>\r\n ) : null}\r\n </span>\r\n {meta ? <span className={styles.meta}>{meta}</span> : null}\r\n {actions ? <span className={styles.actions}>{actions}</span> : null}\r\n </li>\r\n );\r\n}\r\n","import type { AriaRole, ReactNode } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport Spinner, { type SpinnerTone } from \"./Spinner\";\r\nimport styles from \"./Marker.module.css\";\r\n\r\nexport type MarkerVariant = \"default\" | \"border\" | \"separator\";\r\nexport type MarkerTone =\r\n | \"default\"\r\n | \"info\"\r\n | \"success\"\r\n | \"warning\"\r\n | \"danger\"\r\n | \"muted\";\r\n\r\ntype MarkerProps = {\r\n children: ReactNode;\r\n variant?: MarkerVariant;\r\n tone?: MarkerTone;\r\n icon?: string;\r\n loading?: boolean;\r\n meta?: ReactNode;\r\n role?: AriaRole;\r\n className?: string;\r\n};\r\n\r\nconst SPINNER_TONES: Record<MarkerTone, SpinnerTone> = {\r\n default: \"default\",\r\n info: \"primary\",\r\n success: \"success\",\r\n warning: \"default\",\r\n danger: \"danger\",\r\n muted: \"muted\",\r\n};\r\n\r\nexport default function Marker({\r\n children,\r\n variant = \"default\",\r\n tone = \"default\",\r\n icon,\r\n loading = false,\r\n meta,\r\n role,\r\n className,\r\n}: MarkerProps) {\r\n if (variant === \"separator\") {\r\n return (\r\n <div\r\n className={[styles.separator, className].filter(Boolean).join(\" \")}\r\n data-tone={tone}\r\n role={role}\r\n >\r\n <span>{children}</span>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n className={[styles.marker, className].filter(Boolean).join(\" \")}\r\n data-variant={variant}\r\n data-tone={tone}\r\n role={role}\r\n >\r\n {loading ? (\r\n <Spinner size=\"sm\" tone={SPINNER_TONES[tone]} className={styles.icon} />\r\n ) : icon ? (\r\n <Icon name={icon} className={styles.icon} />\r\n ) : null}\r\n <span className={styles.content}>{children}</span>\r\n {meta ? <span className={styles.meta}>{meta}</span> : null}\r\n </div>\r\n );\r\n}\r\n","import type { ReactNode } from \"react\";\nimport styles from \"./PageHeader.module.css\";\n\ntype PageHeaderProps = {\n eyebrow?: string;\n title: string;\n description?: string;\n actions?: ReactNode;\n meta?: ReactNode;\n breadcrumb?: ReactNode;\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n};\n\nexport default function PageHeader({\n eyebrow,\n title,\n description,\n actions,\n meta,\n breadcrumb,\n size = \"md\",\n className,\n}: PageHeaderProps) {\n return (\n <header\n className={[styles.header, className].filter(Boolean).join(\" \")}\n data-size={size}\n >\n {breadcrumb ? <div className={styles.breadcrumb}>{breadcrumb}</div> : null}\n <div className={styles.main}>\n <div className={styles.text}>\n {eyebrow ? <p className={styles.eyebrow}>{eyebrow}</p> : null}\n <h1 className={styles.title}>{title}</h1>\n {description ? (\n <p className={styles.description}>{description}</p>\n ) : null}\n {meta ? <div className={styles.meta}>{meta}</div> : null}\n </div>\n {actions ? <div className={styles.actions}>{actions}</div> : null}\n </div>\n </header>\n );\n}\n","\"use client\";\r\n\r\nimport { useState } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport Input, { type InputProps } from \"./Input\";\r\nimport styles from \"./PasswordInput.module.css\";\r\n\r\ntype PasswordInputProps = Omit<InputProps, \"type\" | \"endAdornment\">;\r\n\r\nexport default function PasswordInput({\r\n disabled,\r\n ...props\r\n}: PasswordInputProps) {\r\n const [visible, setVisible] = useState(false);\r\n\r\n return (\r\n <Input\r\n {...props}\r\n type={visible ? \"text\" : \"password\"}\r\n disabled={disabled}\r\n endAdornment={\r\n <button\r\n type=\"button\"\r\n className={styles.toggle}\r\n aria-label={visible ? \"Hide password\" : \"Show password\"}\r\n aria-pressed={visible}\r\n disabled={disabled}\r\n onClick={() => setVisible((previous) => !previous)}\r\n >\r\n <Icon name={visible ? \"lucide:eye-off\" : \"lucide:eye\"} />\r\n </button>\r\n }\r\n />\r\n );\r\n}\r\n","import type { CSSProperties } from \"react\";\r\nimport styles from \"./Placeholder.module.css\";\r\n\r\nexport type PlaceholderVariant = \"text\" | \"heading\" | \"circle\" | \"rect\";\r\n\r\ntype PlaceholderProps = {\r\n variant?: PlaceholderVariant;\r\n width?: string | number;\r\n height?: string | number;\r\n lines?: number;\r\n animated?: boolean;\r\n className?: string;\r\n style?: CSSProperties;\r\n};\r\n\r\nconst toSize = (value: string | number | undefined) =>\r\n typeof value === \"number\" ? `${value}px` : value;\r\n\r\nexport default function Placeholder({\r\n variant = \"text\",\r\n width,\r\n height,\r\n lines = 1,\r\n animated = true,\r\n className,\r\n style,\r\n}: PlaceholderProps) {\r\n const baseClass = [styles.placeholder, className].filter(Boolean).join(\" \");\r\n const commonStyle: CSSProperties = {\r\n width: toSize(width),\r\n height: toSize(height),\r\n ...style,\r\n };\r\n\r\n if (variant === \"text\" && lines > 1) {\r\n return (\r\n <span className={styles.lines} aria-hidden=\"true\">\r\n {Array.from({ length: lines }).map((_, index) => (\r\n <span\r\n key={index}\r\n className={baseClass}\r\n data-variant=\"text\"\r\n data-animated={animated ? \"\" : undefined}\r\n style={{\r\n width: index === lines - 1 ? \"68%\" : toSize(width) ?? \"100%\",\r\n }}\r\n />\r\n ))}\r\n </span>\r\n );\r\n }\r\n\r\n return (\r\n <span\r\n aria-hidden=\"true\"\r\n className={baseClass}\r\n data-variant={variant}\r\n data-animated={animated ? \"\" : undefined}\r\n style={\r\n variant === \"circle\"\r\n ? { width: toSize(width) ?? \"40px\", height: toSize(height) ?? \"40px\", ...style }\r\n : commonStyle\r\n }\r\n />\r\n );\r\n}\r\n","import type { CSSProperties } from \"react\";\nimport styles from \"./Progress.module.css\";\n\nexport type ProgressTone =\n | \"default\"\n | \"primary\"\n | \"success\"\n | \"warning\"\n | \"danger\";\n\ntype ProgressProps = {\n value?: number;\n max?: number;\n tone?: ProgressTone;\n size?: \"sm\" | \"md\" | \"lg\";\n label?: string;\n showValue?: boolean;\n indeterminate?: boolean;\n className?: string;\n};\n\nexport default function Progress({\n value = 0,\n max = 100,\n tone = \"primary\",\n size = \"md\",\n label,\n showValue = false,\n indeterminate = false,\n className,\n}: ProgressProps) {\n const clamped = Math.min(Math.max(value, 0), max);\n const percent = max === 0 ? 0 : Math.round((clamped / max) * 100);\n const style = { \"--progress-value\": `${percent}%` } as CSSProperties;\n\n return (\n <div\n className={[styles.wrap, className].filter(Boolean).join(\" \")}\n data-tone={tone}\n data-size={size}\n >\n {label || showValue ? (\n <div className={styles.meta}>\n <span className={styles.label}>{label}</span>\n {showValue ? (\n <span className={styles.value}>{indeterminate ? \"…\" : `${percent}%`}</span>\n ) : null}\n </div>\n ) : null}\n <div\n className={styles.track}\n role=\"progressbar\"\n aria-label={label}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={indeterminate ? undefined : clamped}\n aria-valuetext={indeterminate ? \"Loading\" : `${percent}%`}\n data-indeterminate={indeterminate ? \"\" : undefined}\n style={style}\n >\n <span className={styles.bar} />\n </div>\n </div>\n );\n}\n","import styles from \"./Form.module.css\";\r\n\r\nexport type RadioOption = {\r\n value: string;\r\n label: string;\r\n description?: string;\r\n disabled?: boolean;\r\n};\r\n\r\ntype RadioGroupProps = {\r\n name: string;\r\n label: string;\r\n value: string;\r\n onChange: (value: string) => void;\r\n options: RadioOption[];\r\n orientation?: \"vertical\" | \"horizontal\";\r\n className?: string;\r\n};\r\n\r\nexport default function RadioGroup({\r\n name,\r\n label,\r\n value,\r\n onChange,\r\n options,\r\n orientation = \"vertical\",\r\n className,\r\n}: RadioGroupProps) {\r\n return (\r\n <fieldset\r\n className={[styles.radioGroup, className].filter(Boolean).join(\" \")}\r\n >\r\n <legend className={styles.legend}>{label}</legend>\r\n <div className={styles.radioList} data-orientation={orientation}>\r\n {options.map((option) => (\r\n <label\r\n key={option.value}\r\n className={styles.choice}\r\n data-disabled={option.disabled ? \"\" : undefined}\r\n >\r\n <input\r\n type=\"radio\"\r\n name={name}\r\n value={option.value}\r\n checked={value === option.value}\r\n disabled={option.disabled}\r\n onChange={() => onChange(option.value)}\r\n className={styles.choiceInput}\r\n />\r\n <span className={styles.radioCircle} aria-hidden=\"true\">\r\n <span className={styles.radioDot} />\r\n </span>\r\n <span className={styles.choiceTexts}>\r\n <span className={styles.choiceLabel}>{option.label}</span>\r\n {option.description ? (\r\n <span className={styles.choiceDescription}>\r\n {option.description}\r\n </span>\r\n ) : null}\r\n </span>\r\n </label>\r\n ))}\r\n </div>\r\n </fieldset>\r\n );\r\n}\r\n","export type Tone =\r\n | \"info\"\r\n | \"success\"\r\n | \"danger\"\r\n | \"warning\"\r\n | \"yellow\"\r\n | \"violet\"\r\n | \"cyan\";\r\n\r\nexport const BRAND = {\r\n name: \"Poinqu\",\r\n mark: \"P\",\r\n};\r\n\r\nexport type User = {\r\n name: string;\r\n email: string;\r\n initials: string;\r\n};\r\n\r\nexport const USER: User = {\r\n name: \"Aditya Pratama\",\r\n email: \"aditya.pratama@example.com\",\r\n initials: \"AP\",\r\n};\r\n\r\nexport type NavLink = {\r\n kind: \"link\";\r\n label: string;\r\n icon: string;\r\n};\r\n\r\nexport type NavGroup = {\r\n kind: \"group\";\r\n label: string;\r\n icon: string;\r\n defaultOpen?: boolean;\r\n children: { label: string; icon: string }[];\r\n};\r\n\r\nexport type NavEntry = NavLink | NavGroup;\r\n\r\nexport type NavSection = {\r\n caption: string;\r\n entries: NavEntry[];\r\n};\r\n\r\nexport type RangeValue = \"Last week\" | \"Last month\" | \"Last quarter\";\r\n\r\nexport const RANGE_OPTIONS: RangeValue[] = [\r\n \"Last week\",\r\n \"Last month\",\r\n \"Last quarter\",\r\n];\r\n\r\nexport type Priority = \"High\" | \"Medium\" | \"Low\";\r\nexport type TicketStatus = \"In Review\" | \"In Progress\" | \"Delivered\";\r\n\r\nexport const PRIORITY_META: Record<Priority, { tone: Tone; icon: string }> = {\r\n High: { tone: \"danger\", icon: \"lucide:chart-no-axes-column-increasing\" },\r\n Medium: { tone: \"warning\", icon: \"lucide:chart-no-axes-column-increasing\" },\r\n Low: { tone: \"yellow\", icon: \"lucide:chart-no-axes-column-increasing\" },\r\n};\r\n\r\nexport const STATUS_META: Record<TicketStatus, { tone: Tone; icon: string }> = {\r\n \"In Review\": { tone: \"info\", icon: \"lucide:file-text\" },\r\n \"In Progress\": { tone: \"warning\", icon: \"lucide:history\" },\r\n Delivered: { tone: \"success\", icon: \"lucide:check\" },\r\n};\r\n","import Icon from \"./Icon\";\r\nimport type { RangeValue } from \"@/lib/data\";\r\nimport { RANGE_OPTIONS } from \"@/lib/data\";\r\nimport styles from \"./RangeSelect.module.css\";\r\n\r\ntype RangeSelectProps = {\r\n value: RangeValue;\r\n onChange: (value: RangeValue) => void;\r\n ariaLabel: string;\r\n};\r\n\r\nexport default function RangeSelect({ value, onChange, ariaLabel }: RangeSelectProps) {\r\n return (\r\n <label className={styles.range}>\r\n <Icon name=\"lucide:calendar-days\" />\r\n <select\r\n value={value}\r\n aria-label={ariaLabel}\r\n onChange={(event) => onChange(event.target.value as RangeValue)}\r\n >\r\n {RANGE_OPTIONS.map((option) => (\r\n <option key={option}>{option}</option>\r\n ))}\r\n </select>\r\n <Icon name=\"lucide:chevron-down\" />\r\n </label>\r\n );\r\n}\r\n","import type { RefObject } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./SearchField.module.css\";\r\n\r\ntype SearchFieldProps = {\r\n value: string;\r\n onChange: (value: string) => void;\r\n placeholder: string;\r\n ariaLabel: string;\r\n className?: string;\r\n inputRef?: RefObject<HTMLInputElement | null>;\r\n};\r\n\r\nexport default function SearchField({\r\n value,\r\n onChange,\r\n placeholder,\r\n ariaLabel,\r\n className,\r\n inputRef,\r\n}: SearchFieldProps) {\r\n return (\r\n <label className={[styles.search, className].filter(Boolean).join(\" \")}>\r\n <Icon name=\"lucide:search\" />\r\n <input\r\n ref={inputRef}\r\n type=\"search\"\r\n value={value}\r\n placeholder={placeholder}\r\n aria-label={ariaLabel}\r\n onChange={(event) => onChange(event.target.value)}\r\n />\r\n </label>\r\n );\r\n}\r\n","import type { ReactNode, SelectHTMLAttributes } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Form.module.css\";\r\n\r\nexport type SelectProps = Omit<\r\n SelectHTMLAttributes<HTMLSelectElement>,\r\n \"size\"\r\n> & {\r\n children: ReactNode;\r\n invalid?: boolean;\r\n size?: \"sm\" | \"md\";\r\n fullWidth?: boolean;\r\n};\r\n\r\nexport default function Select({\r\n children,\r\n invalid = false,\r\n size = \"md\",\r\n fullWidth = false,\r\n className,\r\n disabled,\r\n ...rest\r\n}: SelectProps) {\r\n return (\r\n <div\r\n className={[styles.selectWrap, fullWidth ? styles.fullWidth : \"\", className]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n data-size={size}\r\n data-invalid={invalid ? \"\" : undefined}\r\n data-disabled={disabled ? \"\" : undefined}\r\n >\r\n <select\r\n className={styles.select}\r\n disabled={disabled}\r\n aria-invalid={invalid || undefined}\r\n {...rest}\r\n >\r\n {children}\r\n </select>\r\n <Icon name=\"lucide:chevron-down\" className={styles.selectIcon} />\r\n </div>\r\n );\r\n}\r\n","\"use client\";\n\nimport { useState, type CSSProperties } from \"react\";\nimport styles from \"./Slider.module.css\";\n\nexport type SliderProps = {\n label?: string;\n description?: string;\n value?: number;\n defaultValue?: number;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n showValue?: boolean;\n formatValue?: (value: number) => string;\n onValueChange?: (value: number) => void;\n className?: string;\n};\n\nexport default function Slider({\n label,\n description,\n value,\n defaultValue = 50,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n showValue = true,\n formatValue = (next) => `${next}`,\n onValueChange,\n className,\n}: SliderProps) {\n const [internal, setInternal] = useState(defaultValue);\n const current = value ?? internal;\n const percent = max === min ? 0 : ((current - min) / (max - min)) * 100;\n\n return (\n <div\n className={[styles.wrap, className].filter(Boolean).join(\" \")}\n data-disabled={disabled ? \"\" : undefined}\n style={{ \"--slider-value\": `${percent}%` } as CSSProperties}\n >\n {label || showValue ? (\n <div className={styles.meta}>\n <span className={styles.label}>{label}</span>\n {showValue ? (\n <span className={styles.value}>{formatValue(current)}</span>\n ) : null}\n </div>\n ) : null}\n <div className={styles.trackWrap}>\n <input\n className={styles.input}\n type=\"range\"\n min={min}\n max={max}\n step={step}\n value={current}\n disabled={disabled}\n aria-label={label}\n aria-valuetext={formatValue(current)}\n onChange={(event) => {\n const next = Number(event.target.value);\n if (value === undefined) setInternal(next);\n onValueChange?.(next);\n }}\n />\n </div>\n {description ? <p className={styles.description}>{description}</p> : null}\n </div>\n );\n}\n","import type { CSSProperties, ReactNode } from \"react\";\nimport Icon from \"./Icon\";\nimport styles from \"./Stat.module.css\";\n\nexport type StatTrend = {\n value: string;\n direction?: \"up\" | \"down\" | \"flat\";\n positive?: boolean;\n};\n\ntype StatProps = {\n label: string;\n value: string;\n description?: string;\n icon?: string;\n trend?: StatTrend;\n spark?: number[];\n footer?: ReactNode;\n tone?: \"default\" | \"accent\" | \"success\" | \"warning\" | \"danger\";\n className?: string;\n};\n\nexport default function Stat({\n label,\n value,\n description,\n icon,\n trend,\n spark,\n footer,\n tone = \"default\",\n className,\n}: StatProps) {\n const max = spark?.length ? Math.max(...spark, 1) : 1;\n\n return (\n <div\n className={[styles.stat, className].filter(Boolean).join(\" \")}\n data-tone={tone}\n >\n <div className={styles.top}>\n <span className={styles.label}>{label}</span>\n {icon ? (\n <span className={styles.icon}>\n <Icon name={icon} />\n </span>\n ) : null}\n </div>\n <div className={styles.valueRow}>\n <strong className={styles.value}>{value}</strong>\n {trend ? (\n <span\n className={styles.trend}\n data-direction={trend.direction ?? \"up\"}\n data-positive={trend.positive === false ? \"false\" : \"true\"}\n >\n <Icon\n name={\n trend.direction === \"down\"\n ? \"lucide:trending-down\"\n : trend.direction === \"flat\"\n ? \"lucide:minus\"\n : \"lucide:trending-up\"\n }\n />\n {trend.value}\n </span>\n ) : null}\n </div>\n {description ? <p className={styles.description}>{description}</p> : null}\n\n {spark?.length ? (\n <div className={styles.spark} aria-hidden=\"true\">\n {spark.map((point, index) => (\n <span\n key={`${index}-${point}`}\n style={{ height: `${Math.max(12, (point / max) * 100)}%` }}\n />\n ))}\n </div>\n ) : null}\n\n {footer ? <div className={styles.footer}>{footer}</div> : null}\n </div>\n );\n}\n\nexport function StatGrid({\n children,\n columns = 4,\n className,\n}: {\n children: ReactNode;\n columns?: 2 | 3 | 4;\n className?: string;\n}) {\n return (\n <div\n className={[styles.grid, className].filter(Boolean).join(\" \")}\n style={{ \"--stat-columns\": String(columns) } as CSSProperties}\n >\n {children}\n </div>\n );\n}\n","import type { Tone } from \"@/lib/data\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./StatusBadge.module.css\";\r\n\r\ntype StatusBadgeProps = {\r\n tone: Tone;\r\n icon: string;\r\n label: string;\r\n};\r\n\r\nexport default function StatusBadge({ tone, icon, label }: StatusBadgeProps) {\r\n return (\r\n <span className={styles.status} data-tone={tone}>\r\n <Icon name={icon} />\r\n <span>{label}</span>\r\n </span>\r\n );\r\n}\r\n","import Icon from \"./Icon\";\r\nimport styles from \"./Stepper.module.css\";\r\n\r\nexport type StepItem = {\r\n label: string;\r\n description?: string;\r\n};\r\n\r\ntype StepperProps = {\r\n steps: StepItem[];\r\n current: number;\r\n orientation?: \"horizontal\" | \"vertical\";\r\n onStepChange?: (index: number) => void;\r\n className?: string;\r\n};\r\n\r\nexport default function Stepper({\r\n steps,\r\n current,\r\n orientation = \"horizontal\",\r\n onStepChange,\r\n className,\r\n}: StepperProps) {\r\n return (\r\n <ol\r\n className={[styles.stepper, className].filter(Boolean).join(\" \")}\r\n data-orientation={orientation}\r\n aria-label=\"Progress\"\r\n >\r\n {steps.map((step, index) => {\r\n const state =\r\n index < current ? \"complete\" : index === current ? \"current\" : \"upcoming\";\r\n\r\n const content = (\r\n <>\r\n <span className={styles.indicator} data-state={state} aria-hidden=\"true\">\r\n {state === \"complete\" ? (\r\n <Icon name=\"lucide:check\" />\r\n ) : (\r\n <span>{index + 1}</span>\r\n )}\r\n </span>\r\n <span className={styles.texts}>\r\n <span className={styles.label}>{step.label}</span>\r\n {step.description ? (\r\n <span className={styles.description}>{step.description}</span>\r\n ) : null}\r\n </span>\r\n </>\r\n );\r\n\r\n return (\r\n <li\r\n key={`${step.label}-${index}`}\r\n className={styles.step}\r\n data-state={state}\r\n aria-current={state === \"current\" ? \"step\" : undefined}\r\n >\r\n {onStepChange ? (\r\n <button\r\n type=\"button\"\r\n className={styles.stepAction}\r\n onClick={() => onStepChange(index)}\r\n >\r\n {content}\r\n </button>\r\n ) : (\r\n <div className={styles.stepAction}>{content}</div>\r\n )}\r\n </li>\r\n );\r\n })}\r\n </ol>\r\n );\r\n}\r\n","import type { InputHTMLAttributes } from \"react\";\r\nimport styles from \"./Form.module.css\";\r\n\r\nexport type SwitchProps = Omit<\r\n InputHTMLAttributes<HTMLInputElement>,\r\n \"type\"\r\n> & {\r\n label: string;\r\n description?: string;\r\n};\r\n\r\nexport default function Switch({\r\n label,\r\n description,\r\n className,\r\n disabled,\r\n ...rest\r\n}: SwitchProps) {\r\n return (\r\n <label\r\n className={[styles.switch, className].filter(Boolean).join(\" \")}\r\n data-disabled={disabled ? \"\" : undefined}\r\n >\r\n <span className={styles.switchTexts}>\r\n <span className={styles.choiceLabel}>{label}</span>\r\n {description ? (\r\n <span className={styles.choiceDescription}>{description}</span>\r\n ) : null}\r\n </span>\r\n <input\r\n type=\"checkbox\"\r\n role=\"switch\"\r\n className={styles.choiceInput}\r\n disabled={disabled}\r\n {...rest}\r\n />\r\n <span className={styles.switchTrack} aria-hidden=\"true\">\r\n <span className={styles.switchThumb} />\r\n </span>\r\n </label>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport {\r\n createContext,\r\n useContext,\r\n useId,\r\n useState,\r\n type KeyboardEvent,\r\n type ReactNode,\r\n} from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Tabs.module.css\";\r\n\r\nexport type TabsVariant = \"underline\" | \"pill\";\r\n\r\ntype TabsContextValue = {\r\n value: string;\r\n setValue: (value: string) => void;\r\n baseId: string;\r\n};\r\n\r\nconst TabsContext = createContext<TabsContextValue | null>(null);\r\n\r\nfunction useTabs() {\r\n const context = useContext(TabsContext);\r\n if (!context) {\r\n throw new Error(\"Tabs components must be used within <Tabs>\");\r\n }\r\n return context;\r\n}\r\n\r\nconst slug = (value: string) => value.replace(/[^a-zA-Z0-9_-]/g, \"-\");\r\n\r\ntype TabsProps = {\r\n defaultValue: string;\r\n value?: string;\r\n onValueChange?: (value: string) => void;\r\n variant?: TabsVariant;\r\n children: ReactNode;\r\n className?: string;\r\n};\r\n\r\nexport default function Tabs({\r\n defaultValue,\r\n value,\r\n onValueChange,\r\n variant = \"underline\",\r\n children,\r\n className,\r\n}: TabsProps) {\r\n const [internalValue, setInternalValue] = useState(defaultValue);\r\n const baseId = useId();\r\n const currentValue = value ?? internalValue;\r\n\r\n const setValue = (next: string) => {\r\n if (value === undefined) setInternalValue(next);\r\n onValueChange?.(next);\r\n };\r\n\r\n return (\r\n <TabsContext.Provider value={{ value: currentValue, setValue, baseId }}>\r\n <div\r\n className={[styles.tabs, className].filter(Boolean).join(\" \")}\r\n data-variant={variant}\r\n >\r\n {children}\r\n </div>\r\n </TabsContext.Provider>\r\n );\r\n}\r\n\r\ntype TabsListProps = {\r\n children: ReactNode;\r\n ariaLabel: string;\r\n className?: string;\r\n};\r\n\r\nexport function TabsList({ children, ariaLabel, className }: TabsListProps) {\r\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\r\n const keys = [\"ArrowRight\", \"ArrowLeft\", \"Home\", \"End\"];\r\n if (!keys.includes(event.key)) return;\r\n\r\n const tabs = [\r\n ...event.currentTarget.querySelectorAll<HTMLButtonElement>(\r\n '[role=\"tab\"]:not(:disabled)',\r\n ),\r\n ];\r\n if (!tabs.length) return;\r\n\r\n event.preventDefault();\r\n const currentIndex = tabs.indexOf(\r\n document.activeElement as HTMLButtonElement,\r\n );\r\n\r\n let next = currentIndex;\r\n if (event.key === \"ArrowRight\") {\r\n next = currentIndex < 0 ? 0 : (currentIndex + 1) % tabs.length;\r\n } else if (event.key === \"ArrowLeft\") {\r\n next =\r\n currentIndex < 0\r\n ? tabs.length - 1\r\n : (currentIndex - 1 + tabs.length) % tabs.length;\r\n } else if (event.key === \"Home\") {\r\n next = 0;\r\n } else if (event.key === \"End\") {\r\n next = tabs.length - 1;\r\n }\r\n\r\n tabs[next].focus();\r\n tabs[next].click();\r\n };\r\n\r\n return (\r\n <div\r\n role=\"tablist\"\r\n aria-label={ariaLabel}\r\n className={[styles.list, className].filter(Boolean).join(\" \")}\r\n onKeyDown={handleKeyDown}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\ntype TabProps = {\r\n value: string;\r\n icon?: string;\r\n badge?: ReactNode;\r\n disabled?: boolean;\r\n children: ReactNode;\r\n className?: string;\r\n};\r\n\r\nexport function Tab({\r\n value,\r\n icon,\r\n badge,\r\n disabled = false,\r\n children,\r\n className,\r\n}: TabProps) {\r\n const context = useTabs();\r\n const selected = context.value === value;\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n role=\"tab\"\r\n id={`${context.baseId}-tab-${slug(value)}`}\r\n aria-selected={selected}\r\n aria-controls={`${context.baseId}-panel-${slug(value)}`}\r\n tabIndex={selected ? 0 : -1}\r\n disabled={disabled}\r\n data-selected={selected ? \"\" : undefined}\r\n className={[styles.tab, className].filter(Boolean).join(\" \")}\r\n onClick={() => context.setValue(value)}\r\n >\r\n {icon ? <Icon name={icon} /> : null}\r\n <span>{children}</span>\r\n {badge !== undefined && badge !== null ? (\r\n <span className={styles.badge}>{badge}</span>\r\n ) : null}\r\n </button>\r\n );\r\n}\r\n\r\ntype TabPanelProps = {\r\n value: string;\r\n children: ReactNode;\r\n className?: string;\r\n};\r\n\r\nexport function TabPanel({ value, children, className }: TabPanelProps) {\r\n const context = useTabs();\r\n const selected = context.value === value;\r\n\r\n return (\r\n <div\r\n role=\"tabpanel\"\r\n id={`${context.baseId}-panel-${slug(value)}`}\r\n aria-labelledby={`${context.baseId}-tab-${slug(value)}`}\r\n hidden={!selected}\r\n tabIndex={0}\r\n className={[styles.panel, className].filter(Boolean).join(\" \")}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import type { TextareaHTMLAttributes } from \"react\";\r\nimport styles from \"./Form.module.css\";\r\n\r\nexport type TextareaProps = TextareaHTMLAttributes<HTMLTextAreaElement> & {\r\n invalid?: boolean;\r\n};\r\n\r\nexport default function Textarea({\r\n invalid = false,\r\n className,\r\n ...rest\r\n}: TextareaProps) {\r\n return (\r\n <textarea\r\n className={[styles.textarea, className].filter(Boolean).join(\" \")}\r\n data-invalid={invalid ? \"\" : undefined}\r\n aria-invalid={invalid || undefined}\r\n {...rest}\r\n />\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport {\r\n createContext,\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState,\r\n type CSSProperties,\r\n type ReactNode,\r\n} from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport styles from \"./Toast.module.css\";\r\n\r\nexport type ToastTone = \"info\" | \"success\" | \"warning\" | \"danger\";\r\n\r\nexport type ToastAction = {\r\n label: string;\r\n onClick: () => void;\r\n};\r\n\r\nexport type ToastOptions = {\r\n title: string;\r\n description?: string;\r\n tone?: ToastTone;\r\n duration?: number;\r\n action?: ToastAction;\r\n};\r\n\r\ntype ToastRecord = {\r\n id: number;\r\n title: string;\r\n description?: string;\r\n tone: ToastTone;\r\n duration: number;\r\n action?: ToastAction;\r\n};\r\n\r\ntype ToastContextValue = {\r\n toast: (options: ToastOptions) => number;\r\n dismiss: (id: number) => void;\r\n};\r\n\r\nconst ToastContext = createContext<ToastContextValue | null>(null);\r\n\r\nconst TONE_ICONS: Record<ToastTone, string> = {\r\n info: \"lucide:info\",\r\n success: \"lucide:circle-check\",\r\n warning: \"lucide:triangle-alert\",\r\n danger: \"lucide:circle-alert\",\r\n};\r\n\r\nfunction ToastCard({\r\n item,\r\n onDismiss,\r\n}: {\r\n item: ToastRecord;\r\n onDismiss: (id: number) => void;\r\n}) {\r\n useEffect(() => {\r\n if (!item.duration) return;\r\n const timer = window.setTimeout(() => onDismiss(item.id), item.duration);\r\n return () => window.clearTimeout(timer);\r\n }, [item.duration, item.id, onDismiss]);\r\n\r\n return (\r\n <div\r\n className={styles.toast}\r\n data-tone={item.tone}\r\n role=\"status\"\r\n style={{ \"--toast-duration\": `${item.duration}ms` } as CSSProperties}\r\n >\r\n <span className={styles.icon}>\r\n <Icon name={TONE_ICONS[item.tone]} />\r\n </span>\r\n <div className={styles.content}>\r\n <strong className={styles.title}>{item.title}</strong>\r\n {item.description ? (\r\n <p className={styles.description}>{item.description}</p>\r\n ) : null}\r\n {item.action ? (\r\n <button\r\n type=\"button\"\r\n className={styles.action}\r\n onClick={() => {\r\n item.action?.onClick();\r\n onDismiss(item.id);\r\n }}\r\n >\r\n {item.action.label}\r\n </button>\r\n ) : null}\r\n </div>\r\n <button\r\n type=\"button\"\r\n className={styles.close}\r\n aria-label=\"Dismiss notification\"\r\n onClick={() => onDismiss(item.id)}\r\n >\r\n <Icon name=\"lucide:x\" />\r\n </button>\r\n {item.duration ? <span className={styles.progress} aria-hidden=\"true\" /> : null}\r\n </div>\r\n );\r\n}\r\n\r\nexport function ToastProvider({ children }: { children: ReactNode }) {\r\n const [toasts, setToasts] = useState<ToastRecord[]>([]);\r\n const nextId = useRef(0);\r\n\r\n const dismiss = useCallback((id: number) => {\r\n setToasts((previous) => previous.filter((item) => item.id !== id));\r\n }, []);\r\n\r\n const toast = useCallback((options: ToastOptions) => {\r\n const id = ++nextId.current;\r\n const record: ToastRecord = {\r\n id,\r\n title: options.title,\r\n description: options.description,\r\n tone: options.tone ?? \"info\",\r\n duration: options.duration ?? 4200,\r\n action: options.action,\r\n };\r\n setToasts((previous) => [...previous.slice(-3), record]);\r\n return id;\r\n }, []);\r\n\r\n const value = useMemo(() => ({ toast, dismiss }), [toast, dismiss]);\r\n\r\n return (\r\n <ToastContext.Provider value={value}>\r\n {children}\r\n <div\r\n className={styles.viewport}\r\n aria-live=\"polite\"\r\n aria-atomic=\"false\"\r\n aria-label=\"Notifications\"\r\n >\r\n {toasts.map((item) => (\r\n <ToastCard key={item.id} item={item} onDismiss={dismiss} />\r\n ))}\r\n </div>\r\n </ToastContext.Provider>\r\n );\r\n}\r\n\r\nexport function useToast() {\r\n const context = useContext(ToastContext);\r\n if (!context) {\r\n throw new Error(\"useToast must be used within a ToastProvider\");\r\n }\r\n return context;\r\n}\r\n","\"use client\";\r\n\r\nimport {\r\n cloneElement,\r\n isValidElement,\r\n useEffect,\r\n useId,\r\n useLayoutEffect,\r\n useRef,\r\n useState,\r\n type ReactElement,\r\n type ReactNode,\r\n} from \"react\";\r\nimport styles from \"./Tooltip.module.css\";\r\n\r\nexport type TooltipPlacement = \"top\" | \"bottom\" | \"left\" | \"right\";\r\n\r\ntype TooltipChildProps = {\r\n \"aria-describedby\"?: string;\r\n};\r\n\r\ntype TooltipProps = {\r\n content: ReactNode;\r\n children: ReactNode;\r\n placement?: TooltipPlacement;\r\n delay?: number;\r\n disabled?: boolean;\r\n className?: string;\r\n};\r\n\r\nexport default function Tooltip({\r\n content,\r\n children,\r\n placement = \"top\",\r\n delay = 120,\r\n disabled = false,\r\n className,\r\n}: TooltipProps) {\r\n const [visible, setVisible] = useState(false);\r\n const timer = useRef<number | undefined>(undefined);\r\n const hovered = useRef(false);\r\n const focused = useRef(false);\r\n const wrapperRef = useRef<HTMLSpanElement>(null);\r\n const tooltipRef = useRef<HTMLSpanElement>(null);\r\n const id = useId();\r\n\r\n const clearTimer = () => {\r\n if (timer.current !== undefined) {\r\n window.clearTimeout(timer.current);\r\n timer.current = undefined;\r\n }\r\n };\r\n\r\n const show = () => {\r\n if (disabled) return;\r\n clearTimer();\r\n timer.current = window.setTimeout(() => setVisible(true), delay);\r\n };\r\n\r\n const hide = () => {\r\n clearTimer();\r\n setVisible(false);\r\n };\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (timer.current !== undefined) window.clearTimeout(timer.current);\r\n };\r\n }, []);\r\n\r\n useLayoutEffect(() => {\r\n if (!visible) return;\r\n\r\n const trigger = wrapperRef.current?.getBoundingClientRect();\r\n const tooltip = tooltipRef.current;\r\n if (!trigger || !tooltip) return;\r\n\r\n const rect = tooltip.getBoundingClientRect();\r\n const gap = 8;\r\n const margin = 8;\r\n let top = 0;\r\n let left = 0;\r\n\r\n if (placement === \"top\") {\r\n top = trigger.top - rect.height - gap;\r\n left = trigger.left + trigger.width / 2 - rect.width / 2;\r\n } else if (placement === \"bottom\") {\r\n top = trigger.bottom + gap;\r\n left = trigger.left + trigger.width / 2 - rect.width / 2;\r\n } else if (placement === \"left\") {\r\n top = trigger.top + trigger.height / 2 - rect.height / 2;\r\n left = trigger.left - rect.width - gap;\r\n } else {\r\n top = trigger.top + trigger.height / 2 - rect.height / 2;\r\n left = trigger.right + gap;\r\n }\r\n\r\n top = Math.max(margin, Math.min(top, window.innerHeight - rect.height - margin));\r\n left = Math.max(margin, Math.min(left, window.innerWidth - rect.width - margin));\r\n\r\n tooltip.style.top = `${top}px`;\r\n tooltip.style.left = `${left}px`;\r\n }, [content, placement, visible]);\r\n\r\n useEffect(() => {\r\n if (!visible) return;\r\n\r\n const hideOnMove = () => setVisible(false);\r\n window.addEventListener(\"scroll\", hideOnMove, true);\r\n window.addEventListener(\"resize\", hideOnMove);\r\n return () => {\r\n window.removeEventListener(\"scroll\", hideOnMove, true);\r\n window.removeEventListener(\"resize\", hideOnMove);\r\n };\r\n }, [visible]);\r\n\r\n const child = isValidElement(children)\r\n ? (children as ReactElement<Record<string, unknown>>)\r\n : null;\r\n const childProps = child?.props as TooltipChildProps | undefined;\r\n\r\n const describedBy = visible\r\n ? [childProps?.[\"aria-describedby\"], id].filter(Boolean).join(\" \")\r\n : childProps?.[\"aria-describedby\"];\r\n\r\n const trigger = child\r\n ? cloneElement(child, { \"aria-describedby\": describedBy })\r\n : children;\r\n\r\n return (\r\n <span\r\n ref={wrapperRef}\r\n className={[styles.wrapper, className].filter(Boolean).join(\" \")}\r\n onMouseEnter={() => {\r\n hovered.current = true;\r\n show();\r\n }}\r\n onMouseLeave={() => {\r\n hovered.current = false;\r\n if (!focused.current) hide();\r\n }}\r\n onFocus={() => {\r\n focused.current = true;\r\n show();\r\n }}\r\n onBlur={() => {\r\n focused.current = false;\r\n if (!hovered.current) hide();\r\n }}\r\n onKeyDown={(event) => {\r\n if (event.key === \"Escape\") hide();\r\n }}\r\n >\r\n {trigger}\r\n {visible ? (\r\n <span\r\n ref={tooltipRef}\r\n role=\"tooltip\"\r\n id={id}\r\n className={styles.tooltip}\r\n data-placement={placement}\r\n >\r\n {content}\r\n <span className={styles.arrow} aria-hidden=\"true\" />\r\n </span>\r\n ) : null}\r\n </span>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport { useState, type ReactNode } from \"react\";\r\nimport Icon from \"./Icon\";\r\nimport Spinner from \"./Spinner\";\r\nimport styles from \"./Trace.module.css\";\r\n\r\nexport type TraceStatus = \"done\" | \"running\" | \"error\" | \"pending\";\r\n\r\nexport type TraceItem = {\r\n id: string;\r\n title: string;\r\n description?: string;\r\n icon?: string;\r\n status?: TraceStatus;\r\n meta?: ReactNode;\r\n detail?: ReactNode;\r\n defaultOpen?: boolean;\r\n};\r\n\r\ntype TraceProps = {\r\n items: TraceItem[];\r\n ariaLabel?: string;\r\n className?: string;\r\n};\r\n\r\nconst STATUS_ICONS: Record<TraceStatus, string> = {\r\n done: \"lucide:check\",\r\n running: \"lucide:loader-circle\",\r\n error: \"lucide:x\",\r\n pending: \"lucide:circle-dashed\",\r\n};\r\n\r\nfunction TraceLine({\r\n item,\r\n status,\r\n expandable,\r\n}: {\r\n item: TraceItem;\r\n status: TraceStatus;\r\n expandable: boolean;\r\n}) {\r\n return (\r\n <span className={styles.line}>\r\n <span\r\n className={styles.icon}\r\n aria-hidden={status === \"running\" ? undefined : true}\r\n >\r\n {status === \"running\" ? (\r\n <Spinner size=\"sm\" label={`${item.title} running`} />\r\n ) : (\r\n <Icon name={item.icon ?? STATUS_ICONS[status]} />\r\n )}\r\n </span>\r\n\r\n <span className={styles.text}>\r\n <span className={styles.title}>{item.title}</span>\r\n {item.description ? (\r\n <span className={styles.description}>{item.description}</span>\r\n ) : null}\r\n </span>\r\n\r\n {item.meta ? <span className={styles.meta}>{item.meta}</span> : null}\r\n {expandable ? (\r\n <Icon name=\"lucide:chevron-down\" className={styles.chevron} />\r\n ) : null}\r\n </span>\r\n );\r\n}\r\n\r\nfunction TraceCollapsible({\r\n item,\r\n status,\r\n}: {\r\n item: TraceItem;\r\n status: TraceStatus;\r\n}) {\r\n const [open, setOpen] = useState(Boolean(item.defaultOpen));\r\n\r\n return (\r\n <details\r\n className={styles.collapsible}\r\n open={open}\r\n onToggle={(event) => setOpen(event.currentTarget.open)}\r\n >\r\n <summary className={styles.summary}>\r\n <TraceLine item={item} status={status} expandable />\r\n </summary>\r\n <div className={styles.detail}>{item.detail}</div>\r\n </details>\r\n );\r\n}\r\n\r\nexport default function Trace({\r\n items,\r\n ariaLabel = \"Trace\",\r\n className,\r\n}: TraceProps) {\r\n return (\r\n <ol\r\n className={[styles.trace, className].filter(Boolean).join(\" \")}\r\n aria-label={ariaLabel}\r\n >\r\n {items.map((item) => {\r\n const status = item.status ?? \"done\";\r\n\r\n return (\r\n <li key={item.id} className={styles.item} data-status={status}>\r\n {item.detail ? (\r\n <TraceCollapsible item={item} status={status} />\r\n ) : (\r\n <TraceLine item={item} status={status} expandable={false} />\r\n )}\r\n </li>\r\n );\r\n })}\r\n </ol>\r\n );\r\n}\r\n","import type { ElementType, ReactNode } from \"react\";\r\nimport styles from \"./Typography.module.css\";\r\n\r\nexport type TypographyVariant =\r\n | \"display\"\r\n | \"h1\"\r\n | \"h2\"\r\n | \"h3\"\r\n | \"h4\"\r\n | \"lead\"\r\n | \"body\"\r\n | \"small\"\r\n | \"muted\"\r\n | \"label\"\r\n | \"code\"\r\n | \"quote\";\r\n\r\nexport type TypographyTone =\r\n | \"default\"\r\n | \"secondary\"\r\n | \"muted\"\r\n | \"info\"\r\n | \"success\"\r\n | \"warning\"\r\n | \"danger\";\r\n\r\nexport type TypographyWeight = \"regular\" | \"medium\" | \"semibold\";\r\n\r\ntype TypographyProps = {\r\n children: ReactNode;\r\n as?: ElementType;\r\n variant?: TypographyVariant;\r\n tone?: TypographyTone;\r\n weight?: TypographyWeight;\r\n align?: \"left\" | \"center\" | \"right\";\r\n truncate?: boolean;\r\n className?: string;\r\n};\r\n\r\nconst DEFAULT_TAG: Record<TypographyVariant, ElementType> = {\r\n display: \"h1\",\r\n h1: \"h1\",\r\n h2: \"h2\",\r\n h3: \"h3\",\r\n h4: \"h4\",\r\n lead: \"p\",\r\n body: \"p\",\r\n small: \"p\",\r\n muted: \"p\",\r\n label: \"span\",\r\n code: \"code\",\r\n quote: \"blockquote\",\r\n};\r\n\r\nexport default function Typography({\r\n children,\r\n as,\r\n variant = \"body\",\r\n tone = \"default\",\r\n weight,\r\n align = \"left\",\r\n truncate = false,\r\n className,\r\n}: TypographyProps) {\r\n const Tag = as ?? DEFAULT_TAG[variant];\r\n\r\n return (\r\n <Tag\r\n className={[styles.typography, className].filter(Boolean).join(\" \")}\r\n data-variant={variant}\r\n data-tone={tone}\r\n data-weight={weight}\r\n data-align={align === \"left\" ? undefined : align}\r\n data-truncate={truncate ? \"\" : undefined}\r\n >\r\n {children}\r\n </Tag>\r\n );\r\n}\r\n","\"use client\";\n\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\n\nexport type Theme = \"light\" | \"dark\" | \"system\";\nexport type ResolvedTheme = \"light\" | \"dark\";\n\ntype ThemeContextValue = {\n theme: Theme;\n resolvedTheme: ResolvedTheme;\n setTheme: (theme: Theme) => void;\n toggleTheme: () => void;\n};\n\nconst ThemeContext = createContext<ThemeContextValue | null>(null);\n\nexport const THEME_STORAGE_KEY = \"poinqu-theme\";\n\nfunction readStoredTheme(fallback: Theme): Theme {\n if (typeof window === \"undefined\") return fallback;\n try {\n const stored = window.localStorage.getItem(THEME_STORAGE_KEY);\n if (stored === \"light\" || stored === \"dark\" || stored === \"system\") {\n return stored;\n }\n } catch {\n /* localStorage may be unavailable (private mode, sandbox). */\n }\n return fallback;\n}\n\nexport function getSystemTheme(): ResolvedTheme {\n if (typeof window === \"undefined\") return \"light\";\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\";\n}\n\nfunction resolveTheme(theme: Theme): ResolvedTheme {\n return theme === \"system\" ? getSystemTheme() : theme;\n}\n\nexport function applyTheme(theme: Theme) {\n if (typeof document === \"undefined\") return;\n const resolved = resolveTheme(theme);\n const root = document.documentElement;\n root.dataset.theme = resolved;\n root.style.colorScheme = resolved;\n}\n\ntype ThemeProviderProps = {\n children: ReactNode;\n defaultTheme?: Theme;\n};\n\nexport function ThemeProvider({\n children,\n defaultTheme = \"system\",\n}: ThemeProviderProps) {\n const [theme, setThemeState] = useState<Theme>(() =>\n readStoredTheme(defaultTheme),\n );\n const [resolvedTheme, setResolvedTheme] = useState<ResolvedTheme>(() =>\n resolveTheme(readStoredTheme(defaultTheme)),\n );\n\n useEffect(() => {\n applyTheme(theme);\n }, [theme]);\n\n useEffect(() => {\n const media = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const onChange = () => {\n if (readStoredTheme(defaultTheme) !== \"system\") return;\n setResolvedTheme(getSystemTheme());\n applyTheme(\"system\");\n };\n media.addEventListener(\"change\", onChange);\n return () => media.removeEventListener(\"change\", onChange);\n }, [defaultTheme]);\n\n const setTheme = useCallback((next: Theme) => {\n setThemeState(next);\n setResolvedTheme(resolveTheme(next));\n try {\n window.localStorage.setItem(THEME_STORAGE_KEY, next);\n } catch {\n /* Ignore storage failures; the in-memory theme still works. */\n }\n applyTheme(next);\n }, []);\n\n const toggleTheme = useCallback(() => {\n setTheme(resolvedTheme === \"dark\" ? \"light\" : \"dark\");\n }, [resolvedTheme, setTheme]);\n\n const value = useMemo(\n () => ({ theme, resolvedTheme, setTheme, toggleTheme }),\n [theme, resolvedTheme, setTheme, toggleTheme],\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n","\"use client\";\n\nimport { useEffect, useId, useRef, useState, useSyncExternalStore } from \"react\";\nimport Icon from \"@/components/ui/Icon\";\nimport { useTheme, type Theme } from \"./ThemeProvider\";\nimport styles from \"./ThemeToggle.module.css\";\n\ntype ThemeToggleProps = {\n variant?: \"icon\" | \"segmented\";\n className?: string;\n};\n\nconst OPTIONS: { value: Theme; label: string; icon: string }[] = [\n { value: \"light\", label: \"Light\", icon: \"lucide:sun\" },\n { value: \"dark\", label: \"Dark\", icon: \"lucide:moon-star\" },\n { value: \"system\", label: \"System\", icon: \"lucide:monitor\" },\n];\n\nconst subscribe = () => () => {};\nconst getClientSnapshot = () => true;\nconst getServerSnapshot = () => false;\n\nexport default function ThemeToggle({\n variant = \"icon\",\n className,\n}: ThemeToggleProps) {\n const { theme, resolvedTheme, setTheme, toggleTheme } = useTheme();\n const mounted = useSyncExternalStore(\n subscribe,\n getClientSnapshot,\n getServerSnapshot,\n );\n const [open, setOpen] = useState(false);\n const wrapRef = useRef<HTMLDivElement>(null);\n const menuId = useId();\n\n useEffect(() => {\n if (!open) return;\n const onPointerDown = (event: MouseEvent) => {\n if (!wrapRef.current?.contains(event.target as Node)) setOpen(false);\n };\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") setOpen(false);\n };\n document.addEventListener(\"mousedown\", onPointerDown);\n document.addEventListener(\"keydown\", onKeyDown);\n return () => {\n document.removeEventListener(\"mousedown\", onPointerDown);\n document.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [open]);\n\n if (variant === \"segmented\") {\n return (\n <div\n className={[styles.segmented, className].filter(Boolean).join(\" \")}\n role=\"group\"\n aria-label=\"Color theme\"\n >\n {OPTIONS.map((option) => (\n <button\n key={option.value}\n type=\"button\"\n className={styles.segment}\n data-active={mounted && theme === option.value ? \"\" : undefined}\n aria-pressed={mounted ? theme === option.value : undefined}\n onClick={() => setTheme(option.value)}\n >\n <Icon name={option.icon} />\n <span>{option.label}</span>\n </button>\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={wrapRef}\n className={[styles.wrap, className].filter(Boolean).join(\" \")}\n >\n <button\n type=\"button\"\n className={styles.iconButton}\n aria-label=\"Change color theme\"\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-controls={menuId}\n onClick={() => setOpen((value) => !value)}\n >\n <Icon\n name={\n !mounted\n ? \"lucide:circle-half\"\n : resolvedTheme === \"dark\"\n ? \"lucide:moon-star\"\n : \"lucide:sun\"\n }\n />\n </button>\n\n {open ? (\n <div id={menuId} className={styles.menu} role=\"menu\">\n <p className={styles.menuLabel}>Appearance</p>\n {OPTIONS.map((option) => (\n <button\n key={option.value}\n type=\"button\"\n role=\"menuitemradio\"\n aria-checked={theme === option.value}\n className={styles.menuItem}\n onClick={() => {\n setTheme(option.value);\n setOpen(false);\n }}\n >\n <Icon name={option.icon} />\n <span>{option.label}</span>\n {theme === option.value ? (\n <Icon name=\"lucide:check\" className={styles.check} />\n ) : null}\n </button>\n ))}\n <button\n type=\"button\"\n className={styles.quickToggle}\n onClick={() => {\n toggleTheme();\n setOpen(false);\n }}\n >\n Toggle {resolvedTheme === \"dark\" ? \"light\" : \"dark\"}\n <Icon name=\"lucide:arrow-right\" />\n </button>\n </div>\n ) : null}\n </div>\n );\n}\n","/**\n * Server-safe theme bootstrap. Inline this in the root layout so the persisted\n * theme is applied before the first paint (no flash of the wrong theme).\n */\nexport const THEME_STORAGE_KEY = \"poinqu-theme\";\n\nexport const themeScript = `(function(){try{var t=localStorage.getItem(\"${THEME_STORAGE_KEY}\");var m=window.matchMedia(\"(prefers-color-scheme: dark)\").matches;var r=t===\"dark\"||((!t||t===\"system\")&&m)?\"dark\":\"light\";document.documentElement.dataset.theme=r;document.documentElement.style.colorScheme=r;}catch(e){}})();`;\n","\"use client\";\n\nimport { themeScript } from \"./theme-script\";\n\ntype ThemeScriptProps = {\n /**\n * Optional CSP nonce. Only needed when your app uses a strict\n * Content-Security-Policy without 'unsafe-inline'.\n */\n nonce?: string;\n};\n\n/**\n * Applies the persisted theme before first paint. Render it once, as the first\n * child of <body>, to avoid a flash of the wrong theme.\n *\n * <body>\n * <ThemeScript />\n * ...\n * </body>\n */\nexport default function ThemeScript({ nonce }: ThemeScriptProps) {\n return (\n <script nonce={nonce} dangerouslySetInnerHTML={{ __html: themeScript }} />\n );\n}\n"],"names":["ICON_DATA","Icon","name","className","style","key","data","jsx","Collapse","title","description","icon","badge","tone","defaultOpen","open","onOpenChange","children","internalOpen","setInternalOpen","useState","isOpen","handleToggle","event","next","jsxs","styles","Accordion","items","type","defaultValue","value","onValueChange","internalValue","setInternalValue","currentValue","toggle","id","item","Badge","variant","size","dot","Button","label","iconRight","iconOnly","loading","fullWidth","disabled","ariaLabel","rest","Modal","onClose","presentation","footer","closeOnBackdrop","dialogRef","useRef","titleId","useId","descriptionId","useEffect","dialog","previous","rect","AccountModal","user","role","workspace","onSignOut","Fragment","TONE_ICONS","Alert","onDismiss","CONFIRM_TONES","AlertDialog","confirmLabel","cancelLabel","onConfirm","Spinner","stateDescription","state","meta","progress","Attachment","image","orientation","onOpen","onRemove","clampedProgress","AttachmentGroup","Avatar","initials","src","showName","status","Breadcrumb","separator","linkComponent","LinkComponent","index","last","ButtonGroup","Card","interactive","CardHeader","actions","as","Heading","CardBody","padding","CardFooter","align","Checkbox","indeterminate","setRef","node","CodeBlock","code","language","filename","showLineNumbers","copyable","copied","setCopied","lines","timer","copy","line","computePopoverPosition","viewportHeight","spaceBelow","spaceAbove","openAbove","available","Combobox","options","placeholder","searchPlaceholder","emptyMessage","multiple","clearable","invalid","required","ariaDescribedBy","ariaInvalid","setOpen","query","setQuery","activeIndex","setActiveIndex","position","setPosition","rootRef","controlRef","popoverRef","inputRef","suppressOpen","listId","selectedValues","useMemo","selectedOption","option","filteredOptions","normalized","groups","result","handlePointerDown","target","update","updatePosition","closeList","openList","handleFocus","selectOption","removeValue","optionValue","clearSelection","moveActive","direction","step","handleKeyDown","inputPlaceholder","inputValue","activeOption","createPortal","group","selected","Input","endAdornment","range","start","end","_","getPageItems","page","total","siblings","totalNumbers","leftSibling","rightSibling","showLeftEllipsis","showRightEllipsis","Pagination","pageCount","onPageChange","current","Table","caption","minWidth","flush","TableHead","TableBody","TableRow","TableHeaderCell","scope","TableCell","DataTable","columns","getRowId","searchable","searchText","pageSize","selectable","setPage","sort","setSort","setSelected","filtered","row","sorted","column","factor","left","right","leftValue","rightValue","currentPage","startIndex","pageRows","pageIds","allChecked","someChecked","toggleRow","togglePage","checked","handleSearch","handleSort","ariaSortFor","rangeLabel","isSelected","computeMenuPosition","estimatedWidth","maxHeight","Dropdown","menuWidth","menuRef","menuId","focusTrigger","focusItem","edge","menuItems","openMenu","closeOnOutside","closeOnEscape","handleMenuKeyDown","entry","EmptyState","action","secondaryAction","compact","FormField","hint","error","generatedId","child","isValidElement","controlId","hintId","errorId","describedBy","control","cloneElement","Kbd","ListGroup","ListGroupItem","active","SPINNER_TONES","Marker","PageHeader","eyebrow","breadcrumb","PasswordInput","props","visible","setVisible","toSize","Placeholder","width","height","animated","baseClass","commonStyle","Progress","max","showValue","clamped","percent","RadioGroup","onChange","BRAND","USER","RANGE_OPTIONS","PRIORITY_META","STATUS_META","RangeSelect","SearchField","Select","Slider","min","formatValue","internal","setInternal","Stat","trend","spark","point","StatGrid","StatusBadge","Stepper","steps","onStepChange","content","Switch","TabsContext","createContext","useTabs","context","useContext","slug","Tabs","baseId","setValue","TabsList","tabs","currentIndex","Tab","TabPanel","Textarea","ToastContext","ToastCard","ToastProvider","toasts","setToasts","nextId","dismiss","useCallback","toast","record","useToast","Tooltip","placement","delay","hovered","focused","wrapperRef","tooltipRef","clearTimer","show","hide","useLayoutEffect","trigger","tooltip","gap","margin","top","hideOnMove","childProps","STATUS_ICONS","TraceLine","expandable","TraceCollapsible","Trace","DEFAULT_TAG","Typography","weight","truncate","Tag","ThemeContext","THEME_STORAGE_KEY","readStoredTheme","fallback","stored","getSystemTheme","resolveTheme","theme","applyTheme","resolved","root","ThemeProvider","defaultTheme","setThemeState","resolvedTheme","setResolvedTheme","media","setTheme","toggleTheme","useTheme","OPTIONS","subscribe","getClientSnapshot","getServerSnapshot","ThemeToggle","mounted","useSyncExternalStore","wrapRef","onPointerDown","onKeyDown","themeScript","ThemeScript","nonce"],"mappings":"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"}